From c1cd32914b69013e73e2e81b2d29adc6c8c471e9 Mon Sep 17 00:00:00 2001 From: Steffen Neubauer Date: Mon, 6 Nov 2023 12:59:40 +0100 Subject: [PATCH] chore: switch to using JavaScript Modules (ESM) This had many different effects that derived from it, making this PR so massive. **Modules**: The first stage was to rewrite all the imports to use .js endings everywhere. Then we needed to replace and bump a bunch of dependencies to their ESM version. **Bundling**: Following that we tried to use rollup to bundle everything back into CommonJS so that we can use it in pkg since pkg does not support ESM. This was unsuccessful, and after trying several different single application solutions, we decided we will have to write our own. **Single Executable Binary**: We now use a custom Rust binary which bundles a zipped version of NodeJS, the native extensions and the bundled code. We bundle the code for tree-shaking and size reduction, but also because otherwise we had issues with how we ensure that native modules are loaded correctly and with resolving the imports correctly cross-platform. Then on first run, the binary extracts those files to the filesystem and runs node from there. There are checksum files that we bundle together with the archives and that we store on disk to see if we need to re-extract or not. This also gives us a huge performance boost in some cases - especially when lots of filesystem reads are required - since pkg was patching and proxying those methods and making things slow. **Kubernetes client**: We also had to update the Kubernetes library to the 1.0.0-rc3, with a patch from a fork that contains the changes for kubernetes-client/javascript#1341 That is because the library was using request-promise behind the scenes, which started showing up with unhandled rejection warnings and errors about req not being defined in some cases. That library update required us to change almost every k8s call since the interface now uses objects instead of positional arguments, which makes things much nicer to read and use. We also had to introduce a workaround for using custom certificates together with proxies, something that was previously globally monkey-patched by global-agent. **request-promise**: We no longer depend on request-promise and fully removed the dependency. Fixes #3841 Fixes #4898 --- .circleci/config.yml | 2 +- .circleci/continue-config.yml | 151 +- .eslintrc | 8 +- ...enerated.js => .eslintrc.autogenerated.cjs | 0 .gitignore | 4 +- bin/garden | 2 +- bin/garden-debug | 2 +- cli/.mocharc.yml | 3 +- cli/bin/garden | 44 - cli/bin/garden-debug | 3 - cli/bin/garden-debug.js | 10 + cli/bin/garden.js | 18 + cli/package.json | 32 +- cli/patches/pkg+5.7.0.patch | 13 - cli/src/add-version-files.ts | 16 +- cli/src/build-pkg.ts | 497 +- cli/src/cli.ts | 17 +- cli/src/generate-docs.ts | 14 +- cli/test/helpers.ts | 2 +- cli/test/setup.ts | 2 +- cli/test/unit/src/build-pkg.ts | 2 +- cli/test/unit/src/cli.ts | 19 +- cli/tsconfig.json | 6 +- commitlint.config.js => commitlint.config.cjs | 0 core/.gitignore | 1 + core/index.ts | 9 +- core/lib/fsevents/fsevents.js | 9 +- core/package.json | 64 +- core/src/actions/base.ts | 56 +- core/src/actions/build.ts | 40 +- core/src/actions/deploy.ts | 23 +- core/src/actions/helpers.ts | 44 +- core/src/actions/run.ts | 23 +- core/src/actions/test.ts | 23 +- core/src/actions/types.ts | 30 +- core/src/analytics/analytics.ts | 42 +- core/src/analytics/helpers.ts | 5 +- core/src/build-staging/build-staging.ts | 20 +- core/src/build-staging/helpers.ts | 24 +- core/src/build-staging/rsync.ts | 12 +- core/src/cache.ts | 6 +- core/src/cli/autocomplete.ts | 12 +- core/src/cli/cli.ts | 70 +- core/src/cli/command-line.ts | 39 +- core/src/cli/debug-logs.ts | 7 +- core/src/cli/helpers.ts | 45 +- core/src/cli/params.ts | 25 +- core/src/cloud/api.ts | 40 +- core/src/cloud/auth.ts | 22 +- core/src/cloud/buffered-event-stream.ts | 25 +- core/src/cloud/workflow-lifecycle.ts | 19 +- core/src/commands/base.ts | 74 +- core/src/commands/build.ts | 28 +- core/src/commands/cloud/cloud.ts | 10 +- core/src/commands/cloud/groups/groups.ts | 17 +- core/src/commands/cloud/helpers.ts | 14 +- .../commands/cloud/secrets/secrets-create.ts | 29 +- .../commands/cloud/secrets/secrets-delete.ts | 16 +- .../commands/cloud/secrets/secrets-list.ts | 26 +- .../commands/cloud/secrets/secrets-update.ts | 38 +- core/src/commands/cloud/secrets/secrets.ts | 10 +- core/src/commands/cloud/users/users-create.ts | 27 +- core/src/commands/cloud/users/users-delete.ts | 16 +- core/src/commands/cloud/users/users-list.ts | 24 +- core/src/commands/cloud/users/users.ts | 8 +- core/src/commands/commands.ts | 67 +- core/src/commands/community.ts | 7 +- .../config/config-analytics-enabled.ts | 7 +- core/src/commands/config/config.ts | 4 +- core/src/commands/create/create-project.ts | 24 +- core/src/commands/create/create.ts | 4 +- core/src/commands/create/helpers.ts | 3 +- core/src/commands/custom.ts | 53 +- core/src/commands/delete.ts | 26 +- core/src/commands/deploy.ts | 56 +- core/src/commands/dev.tsx | 38 +- core/src/commands/exec.ts | 21 +- .../commands/get/get-actions-subcommand.ts | 17 +- core/src/commands/get/get-actions.ts | 21 +- core/src/commands/get/get-builds.ts | 2 +- core/src/commands/get/get-config.ts | 27 +- core/src/commands/get/get-debug-info.ts | 34 +- core/src/commands/get/get-deploys.ts | 2 +- core/src/commands/get/get-doddi.ts | 12 +- core/src/commands/get/get-eysi.ts | 12 +- core/src/commands/get/get-files.ts | 11 +- core/src/commands/get/get-graph.ts | 7 +- core/src/commands/get/get-linked-repos.ts | 13 +- core/src/commands/get/get-modules.ts | 27 +- core/src/commands/get/get-outputs.ts | 14 +- core/src/commands/get/get-run-result.ts | 18 +- core/src/commands/get/get-runs.ts | 2 +- core/src/commands/get/get-status.ts | 40 +- core/src/commands/get/get-test-result.ts | 28 +- core/src/commands/get/get-tests.ts | 2 +- core/src/commands/get/get-workflows.ts | 9 +- core/src/commands/get/get.ts | 38 +- core/src/commands/helpers.ts | 58 +- core/src/commands/link/action.ts | 19 +- core/src/commands/link/link.ts | 8 +- core/src/commands/link/module.ts | 21 +- core/src/commands/link/source.ts | 23 +- core/src/commands/login.ts | 28 +- core/src/commands/logout.ts | 19 +- core/src/commands/logs.ts | 22 +- core/src/commands/options.ts | 7 +- core/src/commands/plugins.ts | 23 +- core/src/commands/publish.ts | 23 +- core/src/commands/run.ts | 31 +- core/src/commands/self-update.ts | 37 +- core/src/commands/serve.ts | 31 +- core/src/commands/set.ts | 9 +- core/src/commands/sync/sync-restart.ts | 15 +- core/src/commands/sync/sync-start.ts | 26 +- core/src/commands/sync/sync-status.ts | 30 +- core/src/commands/sync/sync-stop.ts | 13 +- core/src/commands/sync/sync.ts | 10 +- core/src/commands/test.ts | 26 +- core/src/commands/tools.ts | 23 +- core/src/commands/unlink/action.ts | 13 +- core/src/commands/unlink/module.ts | 15 +- core/src/commands/unlink/source.ts | 15 +- core/src/commands/unlink/unlink.ts | 8 +- core/src/commands/up.ts | 29 +- core/src/commands/update-remote/actions.ts | 25 +- core/src/commands/update-remote/all.ts | 18 +- core/src/commands/update-remote/helpers.ts | 16 +- core/src/commands/update-remote/modules.ts | 29 +- core/src/commands/update-remote/sources.ts | 27 +- .../commands/update-remote/update-remote.ts | 10 +- core/src/commands/util/fetch-tools.ts | 19 +- core/src/commands/util/hide-warning.ts | 5 +- core/src/commands/util/mutagen.ts | 16 +- core/src/commands/util/util.ts | 8 +- core/src/commands/util/watch-parameter.ts | 28 + core/src/commands/validate.ts | 9 +- core/src/commands/version.ts | 5 +- core/src/commands/workflow.ts | 58 +- core/src/config-store/base.ts | 11 +- core/src/config-store/global.ts | 9 +- core/src/config-store/local.ts | 9 +- core/src/config/base.ts | 43 +- core/src/config/command.ts | 10 +- core/src/config/common.ts | 28 +- core/src/config/config-template.ts | 29 +- core/src/config/group.ts | 19 +- core/src/config/module.ts | 22 +- core/src/config/project.ts | 43 +- core/src/config/provider.ts | 30 +- core/src/config/render-template.ts | 44 +- core/src/config/service.ts | 8 +- core/src/config/status.ts | 2 +- core/src/config/task.ts | 8 +- core/src/config/template-contexts/actions.ts | 35 +- core/src/config/template-contexts/base.ts | 15 +- .../template-contexts/custom-command.ts | 10 +- core/src/config/template-contexts/module.ts | 27 +- core/src/config/template-contexts/project.ts | 24 +- core/src/config/template-contexts/provider.ts | 20 +- core/src/config/template-contexts/render.ts | 8 +- core/src/config/template-contexts/workflow.ts | 15 +- core/src/config/test.ts | 6 +- core/src/config/validation.ts | 14 +- core/src/config/workflow.ts | 30 +- core/src/config/zod.ts | 154 +- core/src/constants.ts | 16 +- core/src/docs/action-type.ts | 18 +- core/src/docs/commands.ts | 8 +- core/src/docs/common.ts | 6 +- core/src/docs/config.ts | 27 +- core/src/docs/generate.ts | 58 +- core/src/docs/joi-schema.ts | 13 +- core/src/docs/json-schema.ts | 8 +- core/src/docs/module-type.ts | 18 +- core/src/docs/provider.ts | 14 +- core/src/docs/table-of-contents.ts | 17 +- core/src/docs/template-strings.ts | 28 +- core/src/events/action-status-events.ts | 10 +- core/src/events/events.ts | 28 +- core/src/events/util.ts | 16 +- core/src/exceptions.ts | 31 +- core/src/garden.ts | 198 +- core/src/graph/actions.ts | 73 +- core/src/graph/common.ts | 22 +- core/src/graph/config-graph.ts | 31 +- core/src/graph/modules.ts | 32 +- core/src/graph/nodes.ts | 13 +- core/src/graph/results.ts | 9 +- core/src/graph/solver.ts | 46 +- core/src/index.ts | 4 +- core/src/logger/log-entry.ts | 18 +- core/src/logger/logger.ts | 31 +- core/src/logger/renderers.ts | 17 +- core/src/logger/util.ts | 15 +- core/src/logger/writers/base.ts | 6 +- core/src/logger/writers/event-writer.ts | 12 +- core/src/logger/writers/file-writer.ts | 14 +- .../src/logger/writers/ink-terminal-writer.ts | 9 +- core/src/logger/writers/json-file-writer.ts | 8 +- .../logger/writers/json-terminal-writer.ts | 8 +- core/src/logger/writers/quiet-writer.ts | 2 +- core/src/logger/writers/terminal-writer.ts | 8 +- core/src/monitors/base.ts | 4 +- core/src/monitors/handler.ts | 9 +- core/src/monitors/logs.ts | 30 +- core/src/monitors/manager.ts | 14 +- core/src/monitors/port-forward.ts | 16 +- core/src/monitors/sync.ts | 16 +- core/src/mutagen.ts | 38 +- core/src/outputs.ts | 16 +- core/src/plugin-context.ts | 29 +- core/src/plugin/action-types.ts | 66 +- core/src/plugin/base.ts | 25 +- core/src/plugin/command.ts | 17 +- core/src/plugin/handlers/Build/build.ts | 14 +- core/src/plugin/handlers/Build/get-status.ts | 15 +- core/src/plugin/handlers/Build/publish.ts | 15 +- core/src/plugin/handlers/Deploy/delete.ts | 18 +- core/src/plugin/handlers/Deploy/deploy.ts | 16 +- core/src/plugin/handlers/Deploy/exec.ts | 13 +- core/src/plugin/handlers/Deploy/get-logs.ts | 17 +- .../handlers/Deploy/get-port-forward.ts | 16 +- core/src/plugin/handlers/Deploy/get-status.ts | 24 +- .../plugin/handlers/Deploy/get-sync-status.ts | 16 +- core/src/plugin/handlers/Deploy/start-sync.ts | 13 +- .../handlers/Deploy/stop-port-forward.ts | 16 +- core/src/plugin/handlers/Deploy/stop-sync.ts | 11 +- core/src/plugin/handlers/Module/configure.ts | 17 +- core/src/plugin/handlers/Module/convert.ts | 39 +- .../src/plugin/handlers/Module/get-outputs.ts | 22 +- .../plugin/handlers/Provider/augmentGraph.ts | 15 +- .../handlers/Provider/cleanupEnvironment.ts | 9 +- .../handlers/Provider/configureProvider.ts | 22 +- .../handlers/Provider/getDashboardPage.ts | 11 +- .../plugin/handlers/Provider/getDebugInfo.ts | 9 +- .../handlers/Provider/getEnvironmentStatus.ts | 9 +- .../handlers/Provider/prepareEnvironment.ts | 13 +- core/src/plugin/handlers/Run/get-result.ts | 15 +- core/src/plugin/handlers/Run/run.ts | 14 +- core/src/plugin/handlers/Test/get-result.ts | 18 +- core/src/plugin/handlers/Test/run.ts | 21 +- core/src/plugin/handlers/base/base.ts | 8 +- core/src/plugin/handlers/base/configure.ts | 21 +- core/src/plugin/handlers/base/describe.ts | 10 +- core/src/plugin/handlers/base/get-outputs.ts | 16 +- core/src/plugin/handlers/base/suggest.ts | 14 +- core/src/plugin/handlers/base/validate.ts | 13 +- core/src/plugin/module-types.ts | 28 +- core/src/plugin/plugin.ts | 48 +- core/src/plugin/providers.ts | 45 +- core/src/plugin/sdk.ts | 39 +- core/src/plugin/tools.ts | 6 +- core/src/plugins.ts | 48 +- core/src/plugins/base-volume.ts | 11 +- core/src/plugins/container/build.ts | 17 +- core/src/plugins/container/config.ts | 34 +- core/src/plugins/container/container.ts | 53 +- core/src/plugins/container/helpers.ts | 43 +- core/src/plugins/container/moduleConfig.ts | 35 +- core/src/plugins/container/publish.ts | 6 +- core/src/plugins/exec/build.ts | 14 +- core/src/plugins/exec/common.ts | 19 +- core/src/plugins/exec/config.ts | 16 +- core/src/plugins/exec/convert.ts | 11 +- core/src/plugins/exec/deploy.ts | 46 +- core/src/plugins/exec/exec.ts | 29 +- core/src/plugins/exec/logs.ts | 31 +- core/src/plugins/exec/moduleConfig.ts | 30 +- core/src/plugins/exec/run.ts | 13 +- core/src/plugins/exec/test.ts | 15 +- core/src/plugins/hadolint/hadolint.ts | 29 +- core/src/plugins/kubernetes/api.ts | 284 +- .../commands/cleanup-cluster-registry.ts | 2 +- .../kubernetes/commands/cluster-init.ts | 4 +- .../plugins/kubernetes/commands/pull-image.ts | 32 +- core/src/plugins/kubernetes/commands/sync.ts | 13 +- .../commands/uninstall-garden-services.ts | 8 +- core/src/plugins/kubernetes/config.ts | 42 +- core/src/plugins/kubernetes/constants.ts | 2 +- .../kubernetes/container/build/buildkit.ts | 45 +- .../kubernetes/container/build/common.ts | 46 +- .../kubernetes/container/build/kaniko.ts | 44 +- .../kubernetes/container/build/local.ts | 23 +- .../kubernetes/container/deployment.ts | 66 +- core/src/plugins/kubernetes/container/exec.ts | 16 +- .../kubernetes/container/extensions.ts | 44 +- .../plugins/kubernetes/container/handlers.ts | 22 +- .../plugins/kubernetes/container/ingress.ts | 31 +- core/src/plugins/kubernetes/container/logs.ts | 18 +- .../plugins/kubernetes/container/publish.ts | 10 +- core/src/plugins/kubernetes/container/run.ts | 20 +- .../plugins/kubernetes/container/service.ts | 14 +- .../plugins/kubernetes/container/status.ts | 29 +- core/src/plugins/kubernetes/container/sync.ts | 19 +- core/src/plugins/kubernetes/container/test.ts | 20 +- core/src/plugins/kubernetes/container/util.ts | 29 +- .../plugins/kubernetes/ephemeral/config.ts | 22 +- .../plugins/kubernetes/ephemeral/ephemeral.ts | 10 +- core/src/plugins/kubernetes/helm/action.ts | 27 +- core/src/plugins/kubernetes/helm/common.ts | 37 +- core/src/plugins/kubernetes/helm/config.ts | 34 +- .../src/plugins/kubernetes/helm/deployment.ts | 33 +- core/src/plugins/kubernetes/helm/exec.ts | 18 +- core/src/plugins/kubernetes/helm/handlers.ts | 27 +- core/src/plugins/kubernetes/helm/helm-cli.ts | 14 +- core/src/plugins/kubernetes/helm/helm-pod.ts | 32 +- core/src/plugins/kubernetes/helm/logs.ts | 16 +- .../plugins/kubernetes/helm/module-config.ts | 42 +- core/src/plugins/kubernetes/helm/status.ts | 38 +- core/src/plugins/kubernetes/helm/sync.ts | 14 +- core/src/plugins/kubernetes/init.ts | 56 +- core/src/plugins/kubernetes/jib-container.ts | 40 +- core/src/plugins/kubernetes/kubectl.ts | 32 +- .../kubernetes/kubernetes-type/common.ts | 43 +- .../kubernetes/kubernetes-type/config.ts | 36 +- .../kubernetes/kubernetes-type/deploy.ts | 29 +- .../kubernetes/kubernetes-type/exec.ts | 16 +- .../kubernetes/kubernetes-type/handlers.ts | 56 +- .../kubernetes-type/kubernetes-exec.ts | 45 +- .../kubernetes-type/kubernetes-pod.ts | 42 +- .../kubernetes/kubernetes-type/kustomize.ts | 4 +- .../kubernetes-type/module-config.ts | 31 +- .../kubernetes/kubernetes-type/sync.ts | 16 +- core/src/plugins/kubernetes/kubernetes.ts | 76 +- core/src/plugins/kubernetes/local-mode.ts | 48 +- core/src/plugins/kubernetes/local/config.ts | 32 +- core/src/plugins/kubernetes/local/k3s.ts | 10 +- core/src/plugins/kubernetes/local/kind.ts | 16 +- core/src/plugins/kubernetes/local/local.ts | 8 +- core/src/plugins/kubernetes/local/microk8s.ts | 16 +- core/src/plugins/kubernetes/local/minikube.ts | 4 +- core/src/plugins/kubernetes/logs.ts | 64 +- core/src/plugins/kubernetes/namespace.ts | 69 +- core/src/plugins/kubernetes/port-forward.ts | 46 +- core/src/plugins/kubernetes/retry.ts | 83 +- core/src/plugins/kubernetes/run-results.ts | 36 +- core/src/plugins/kubernetes/run.ts | 66 +- core/src/plugins/kubernetes/secrets.ts | 13 +- core/src/plugins/kubernetes/status/events.ts | 10 +- core/src/plugins/kubernetes/status/ingress.ts | 8 +- core/src/plugins/kubernetes/status/pod.ts | 54 +- core/src/plugins/kubernetes/status/service.ts | 16 +- core/src/plugins/kubernetes/status/status.ts | 42 +- .../src/plugins/kubernetes/status/workload.ts | 16 +- core/src/plugins/kubernetes/sync.ts | 68 +- core/src/plugins/kubernetes/system.ts | 22 +- core/src/plugins/kubernetes/test-results.ts | 32 +- core/src/plugins/kubernetes/types.ts | 8 +- core/src/plugins/kubernetes/util.ts | 106 +- .../plugins/kubernetes/volumes/configmap.ts | 35 +- .../volumes/persistentvolumeclaim.ts | 38 +- core/src/plugins/octant/octant.ts | 11 +- core/src/plugins/openshift/build.ts | 20 +- core/src/plugins/openshift/config.ts | 9 +- core/src/plugins/openshift/deploy.ts | 16 +- core/src/plugins/openshift/openshift.ts | 15 +- core/src/plugins/otel-collector/config.ts | 30 +- .../src/plugins/otel-collector/config/base.ts | 2 +- .../plugins/otel-collector/config/datadog.ts | 6 +- .../otel-collector/config/honeycomb.ts | 9 +- .../plugins/otel-collector/config/logging.ts | 6 +- .../plugins/otel-collector/config/newrelic.ts | 9 +- .../plugins/otel-collector/config/otlphttp.ts | 6 +- .../plugins/otel-collector/otel-collector.ts | 36 +- core/src/plugins/plugins.ts | 21 +- core/src/plugins/templated.ts | 15 +- core/src/process.ts | 8 +- core/src/proxy.ts | 32 +- core/src/resolve-module.ts | 75 +- core/src/router/base.ts | 45 +- core/src/router/build.ts | 7 +- core/src/router/deploy.ts | 9 +- core/src/router/module.ts | 37 +- core/src/router/provider.ts | 50 +- core/src/router/router.ts | 37 +- core/src/router/run.ts | 19 +- core/src/router/test.ts | 21 +- core/src/server/commands.ts | 62 +- core/src/server/helpers.ts | 6 +- core/src/server/instance-manager.ts | 43 +- core/src/server/server.ts | 74 +- core/src/tasks/base.ts | 41 +- core/src/tasks/build.ts | 24 +- core/src/tasks/delete-deploy.ts | 12 +- core/src/tasks/deploy.ts | 27 +- core/src/tasks/helpers.ts | 8 +- core/src/tasks/plugin.ts | 7 +- core/src/tasks/publish.ts | 22 +- core/src/tasks/resolve-action.ts | 34 +- core/src/tasks/resolve-provider.ts | 48 +- core/src/tasks/run.ts | 22 +- core/src/tasks/test.ts | 22 +- core/src/template-string/functions.ts | 17 +- core/src/template-string/parser.d.ts | 14 + core/src/template-string/template-string.ts | 47 +- core/src/types/module.ts | 36 +- core/src/types/service.ts | 19 +- core/src/types/task.ts | 13 +- core/src/types/test.ts | 22 +- core/src/util/archive.ts | 4 +- core/src/util/artifacts.ts | 7 +- core/src/util/events.ts | 4 +- core/src/util/ext-source-util.ts | 14 +- core/src/util/ext-tools.ts | 35 +- core/src/util/fs.ts | 19 +- core/src/util/http.ts | 8 +- core/src/util/ink-divider.tsx | 90 + core/src/util/logging.ts | 8 +- core/src/util/module-overlap.ts | 8 +- core/src/util/objects.ts | 2 +- core/src/util/open-telemetry/decorators.ts | 10 +- .../exporters/no-op-exporter.ts | 4 +- .../exporters/reconfigurable-exporter.ts | 7 +- core/src/util/open-telemetry/propagation.ts | 2 +- core/src/util/open-telemetry/spans.ts | 8 +- core/src/util/open-telemetry/tracing.ts | 12 +- core/src/util/open-telemetry/util.ts | 2 +- core/src/util/process.ts | 33 +- core/src/util/profiling.ts | 8 +- core/src/util/recoverable-process.ts | 11 +- core/src/util/serialization.ts | 12 +- core/src/util/streams.ts | 4 +- core/src/util/string.ts | 12 +- core/src/util/sync.ts | 6 +- core/src/util/testing.ts | 62 +- core/src/util/tls.ts | 40 +- core/src/util/util.ts | 62 +- core/src/util/validateInstall.ts | 8 +- core/src/vcs/file-tree.ts | 2 +- core/src/vcs/git-repo.ts | 13 +- core/src/vcs/git.ts | 37 +- core/src/vcs/vcs.ts | 52 +- core/src/warnings.ts | 2 +- core/src/watch.ts | 22 +- core/test/helpers.ts | 76 +- core/test/helpers/api.ts | 11 +- core/test/helpers/cli.ts | 9 +- core/test/helpers/constants.ts | 6 +- core/test/helpers/test-plugin.ts | 44 +- core/test/integ/helpers.ts | 2 +- .../integ/src/plugins/container/container.ts | 32 +- .../integ/src/plugins/container/helpers.ts | 2 +- core/test/integ/src/plugins/exec/exec.ts | 13 +- core/test/integ/src/plugins/exec/resolve.ts | 6 +- .../integ/src/plugins/hadolint/hadolint.ts | 23 +- core/test/integ/src/plugins/kubernetes/api.ts | 101 +- .../plugins/kubernetes/commands/pull-image.ts | 22 +- .../src/plugins/kubernetes/commands/sync.ts | 20 +- .../kubernetes/container/build/build.ts | 29 +- .../kubernetes/container/build/buildkit.ts | 52 +- .../plugins/kubernetes/container/container.ts | 36 +- .../kubernetes/container/deployment.ts | 131 +- .../plugins/kubernetes/container/ingress.ts | 55 +- .../src/plugins/kubernetes/container/logs.ts | 33 +- .../src/plugins/kubernetes/container/run.ts | 22 +- .../src/plugins/kubernetes/helm/common.ts | 28 +- .../src/plugins/kubernetes/helm/config.ts | 21 +- .../src/plugins/kubernetes/helm/deployment.ts | 41 +- .../integ/src/plugins/kubernetes/helm/run.ts | 16 +- .../integ/src/plugins/kubernetes/helm/test.ts | 14 +- .../kubernetes/kubernetes-type/common.ts | 17 +- .../kubernetes/kubernetes-type/config.ts | 9 +- .../kubernetes/kubernetes-type/handlers.ts | 45 +- .../kubernetes-type/kubernetes-exec-run.ts | 11 +- .../kubernetes-type/kubernetes-exec-test.ts | 11 +- .../kubernetes-type/kubernetes-pod-run.ts | 18 +- .../kubernetes-type/kubernetes-pod-test.ts | 16 +- .../src/plugins/kubernetes/local-mode.ts | 27 +- .../integ/src/plugins/kubernetes/namespace.ts | 66 +- core/test/integ/src/plugins/kubernetes/run.ts | 71 +- .../integ/src/plugins/kubernetes/sync-mode.ts | 41 +- .../integ/src/plugins/kubernetes/system.ts | 20 +- .../src/plugins/kubernetes/task-results.ts | 16 +- .../test/integ/src/plugins/kubernetes/util.ts | 52 +- .../plugins/kubernetes/volume/configmap.ts | 16 +- .../volume/persistentvolumeclaim.ts | 16 +- core/test/integ/src/plugins/octant/octant.ts | 4 +- .../test/integ/src/plugins/openshift/tests.ts | 16 +- core/test/setup.ts | 12 +- .../src/actions/action-configs-to-graph.ts | 13 +- core/test/unit/src/actions/build.ts | 2 +- core/test/unit/src/analytics/analytics.ts | 20 +- .../unit/src/build-staging/build-staging.ts | 28 +- core/test/unit/src/build-staging/helpers.ts | 24 +- core/test/unit/src/cache.ts | 6 +- core/test/unit/src/cli/analytics.ts | 13 +- core/test/unit/src/cli/autocomplete.ts | 13 +- core/test/unit/src/cli/cli.ts | 47 +- core/test/unit/src/cli/helpers.ts | 46 +- core/test/unit/src/cli/params.ts | 2 +- core/test/unit/src/cloud/api.ts | 12 +- .../unit/src/cloud/buffered-event-stream.ts | 9 +- core/test/unit/src/commands/base.ts | 8 +- core/test/unit/src/commands/build.ts | 20 +- .../commands/cloud/secrets/secrets-update.ts | 14 +- .../src/commands/create/create-project.ts | 19 +- core/test/unit/src/commands/custom.ts | 15 +- core/test/unit/src/commands/delete.ts | 18 +- core/test/unit/src/commands/deploy.ts | 14 +- core/test/unit/src/commands/dev.ts | 2 +- core/test/unit/src/commands/exec.ts | 4 +- .../commands/get/get-actions-subcommands.ts | 18 +- .../test/unit/src/commands/get/get-actions.ts | 20 +- core/test/unit/src/commands/get/get-config.ts | 17 +- .../unit/src/commands/get/get-debug-info.ts | 21 +- core/test/unit/src/commands/get/get-graph.ts | 4 +- .../unit/src/commands/get/get-linked-repos.ts | 12 +- .../test/unit/src/commands/get/get-modules.ts | 8 +- .../test/unit/src/commands/get/get-outputs.ts | 10 +- .../unit/src/commands/get/get-run-result.ts | 21 +- core/test/unit/src/commands/get/get-status.ts | 10 +- .../unit/src/commands/get/get-test-result.ts | 14 +- .../unit/src/commands/get/get-workflows.ts | 8 +- core/test/unit/src/commands/helpers.ts | 8 +- core/test/unit/src/commands/link.ts | 15 +- core/test/unit/src/commands/login.ts | 37 +- core/test/unit/src/commands/logout.ts | 25 +- core/test/unit/src/commands/logs.ts | 37 +- core/test/unit/src/commands/plugins.ts | 22 +- core/test/unit/src/commands/publish.ts | 21 +- core/test/unit/src/commands/run.ts | 18 +- core/test/unit/src/commands/self-update.ts | 25 +- core/test/unit/src/commands/set.ts | 7 +- core/test/unit/src/commands/test.ts | 10 +- core/test/unit/src/commands/tools.ts | 20 +- core/test/unit/src/commands/unlink.ts | 18 +- core/test/unit/src/commands/update-remote.ts | 17 +- .../unit/src/commands/util/fetch-tools.ts | 12 +- .../unit/src/commands/util/hide-warning.ts | 8 +- core/test/unit/src/commands/validate.ts | 4 +- core/test/unit/src/commands/version.ts | 12 +- core/test/unit/src/commands/workflow.ts | 26 +- core/test/unit/src/config-graph.ts | 22 +- core/test/unit/src/config-store.ts | 12 +- core/test/unit/src/config/base.ts | 20 +- core/test/unit/src/config/common.ts | 6 +- core/test/unit/src/config/project.ts | 13 +- core/test/unit/src/config/provider.ts | 7 +- core/test/unit/src/config/render-template.ts | 24 +- core/test/unit/src/config/service.ts | 4 +- .../unit/src/config/template-contexts/base.ts | 17 +- .../src/config/template-contexts/module.ts | 15 +- .../src/config/template-contexts/project.ts | 13 +- .../src/config/template-contexts/provider.ts | 6 +- .../src/config/template-contexts/workflow.ts | 15 +- core/test/unit/src/config/validation.ts | 18 +- core/test/unit/src/config/workflow.ts | 15 +- core/test/unit/src/docs/common.ts | 7 +- core/test/unit/src/docs/config.ts | 13 +- core/test/unit/src/docs/joi-schema.ts | 7 +- core/test/unit/src/docs/json-schema.ts | 2 +- core/test/unit/src/docs/table-of-contents.ts | 6 +- core/test/unit/src/docs/util.ts | 6 +- core/test/unit/src/events.ts | 4 +- core/test/unit/src/exceptions.ts | 11 +- core/test/unit/src/garden.ts | 73 +- core/test/unit/src/graph/actions.ts | 11 +- core/test/unit/src/graph/common.ts | 12 +- core/test/unit/src/graph/solver.ts | 14 +- core/test/unit/src/lib/minimist.ts | 2 +- core/test/unit/src/logger/log-entry.ts | 10 +- core/test/unit/src/logger/logger.ts | 11 +- core/test/unit/src/logger/renderers.ts | 22 +- .../unit/src/logger/writers/file-writer.ts | 9 +- .../logger/writers/json-terminal-writer.ts | 7 +- .../src/logger/writers/terminal-writer.ts | 7 +- core/test/unit/src/outputs.ts | 17 +- core/test/unit/src/plugins.ts | 15 +- core/test/unit/src/plugins/container/build.ts | 24 +- .../unit/src/plugins/container/container.ts | 41 +- .../unit/src/plugins/container/helpers.ts | 36 +- core/test/unit/src/plugins/exec/exec.ts | 63 +- core/test/unit/src/plugins/exec/logs.ts | 20 +- core/test/unit/src/plugins/invalid-name.ts | 2 +- .../kubernetes/container/build/buildkit.ts | 16 +- .../kubernetes/container/build/common.ts | 9 +- .../kubernetes/container/build/kaniko.ts | 9 +- .../plugins/kubernetes/container/service.ts | 10 +- .../src/plugins/kubernetes/container/util.ts | 2 +- .../unit/src/plugins/kubernetes/dev-mode.ts | 2 +- .../unit/src/plugins/kubernetes/ephemeral.ts | 15 +- core/test/unit/src/plugins/kubernetes/init.ts | 47 +- .../kubernetes/kubernetes-type/common.ts | 7 +- .../unit/src/plugins/kubernetes/kubernetes.ts | 15 +- .../src/plugins/kubernetes/port-forward.ts | 8 +- .../src/plugins/kubernetes/status/ingress.ts | 6 +- core/test/unit/src/plugins/kubernetes/util.ts | 10 +- core/test/unit/src/process.ts | 7 +- core/test/unit/src/resolve-module.ts | 9 +- core/test/unit/src/router/_helpers.ts | 29 +- core/test/unit/src/router/base.ts | 21 +- core/test/unit/src/router/build.ts | 15 +- core/test/unit/src/router/deploy.ts | 17 +- core/test/unit/src/router/modules.ts | 10 +- core/test/unit/src/router/provider.ts | 14 +- core/test/unit/src/router/run.ts | 16 +- core/test/unit/src/router/test.ts | 20 +- core/test/unit/src/server/server.ts | 31 +- core/test/unit/src/tasks/base.ts | 14 +- core/test/unit/src/tasks/build.ts | 15 +- core/test/unit/src/tasks/deploy.ts | 15 +- core/test/unit/src/tasks/resolve-action.ts | 18 +- core/test/unit/src/tasks/resolve-provider.ts | 24 +- core/test/unit/src/tasks/run.ts | 14 +- core/test/unit/src/tasks/test.ts | 9 +- core/test/unit/src/template-string.ts | 11 +- core/test/unit/src/types/container.ts | 4 +- core/test/unit/src/types/service.ts | 6 +- core/test/unit/src/types/task.ts | 8 +- core/test/unit/src/types/test.ts | 8 +- core/test/unit/src/util/artifacts.ts | 7 +- core/test/unit/src/util/enumerate.ts | 2 +- core/test/unit/src/util/ext-source-util.ts | 6 +- core/test/unit/src/util/fs.ts | 7 +- core/test/unit/src/util/logging.ts | 13 +- core/test/unit/src/util/module-overlap.ts | 5 +- core/test/unit/src/util/objects.ts | 2 +- core/test/unit/src/util/profiling.ts | 2 +- .../test/unit/src/util/recoverable-process.ts | 20 +- core/test/unit/src/util/streams.ts | 6 +- core/test/unit/src/util/string.ts | 2 +- core/test/unit/src/util/util.ts | 16 +- core/test/unit/src/util/validateInstall.ts | 6 +- core/test/unit/src/vcs/git-repo.ts | 4 +- core/test/unit/src/vcs/git.ts | 25 +- core/test/unit/src/vcs/vcs.ts | 40 +- core/test/unit/src/watch.ts | 14 +- core/tsconfig.json | 11 +- docs/contributing/README.md | 2 +- docs/contributing/developing-garden.md | 29 +- e2e/.mocharc.yml | 2 +- e2e/e2e-project.ts | 16 +- e2e/helpers.ts | 13 +- e2e/package.json | 5 +- e2e/run-garden.ts | 19 +- e2e/test/pre-release.ts | 11 +- e2e/tsconfig.json | 6 +- garden-sea/.gitignore | 3 + garden-sea/Cargo.lock | 585 + garden-sea/Cargo.toml | 20 + garden-sea/Cross.toml | 8 + garden-sea/README.md | 44 + garden-sea/src/artifacts.rs | 110 + garden-sea/src/cleanup.rs | 84 + garden-sea/src/extract.rs | 182 + garden-sea/src/log.rs | 15 + garden-sea/src/main.rs | 33 + garden-sea/src/node.rs | 112 + garden-sea/src/signal.rs | 81 + garden-sea/src/terminate.rs | 27 + package-lock.json | 14269 ++++++++-------- package.json | 15 +- plugins/conftest-container/package.json | 1 + plugins/conftest-container/src/index.ts | 4 +- .../test/conftest-container.ts | 22 +- plugins/conftest-container/tsconfig.json | 4 +- plugins/conftest-kubernetes/package.json | 1 + plugins/conftest-kubernetes/src/index.ts | 6 +- .../test/conftest-kubernetes.ts | 17 +- plugins/conftest-kubernetes/tsconfig.json | 4 +- plugins/conftest/package.json | 1 + plugins/conftest/src/index.ts | 37 +- plugins/conftest/test/conftest.ts | 23 +- plugins/conftest/tsconfig.json | 4 +- plugins/jib/package.json | 5 +- plugins/jib/src/build-tool-base.ts | 8 +- plugins/jib/src/gradle.ts | 12 +- plugins/jib/src/index.ts | 41 +- plugins/jib/src/maven.ts | 9 +- plugins/jib/src/mavend.ts | 9 +- plugins/jib/src/openjdk.ts | 4 +- plugins/jib/src/util.ts | 20 +- plugins/jib/test/index.ts | 22 +- plugins/jib/test/util.ts | 25 +- plugins/jib/tsconfig.json | 4 +- plugins/pulumi/package.json | 4 +- plugins/pulumi/src/action.ts | 13 +- plugins/pulumi/src/cli.ts | 10 +- plugins/pulumi/src/commands.ts | 38 +- plugins/pulumi/src/handlers.ts | 16 +- plugins/pulumi/src/helpers.ts | 29 +- plugins/pulumi/src/index.ts | 27 +- plugins/pulumi/src/module.ts | 18 +- plugins/pulumi/src/provider.ts | 9 +- plugins/pulumi/test/handlers.ts | 27 +- plugins/pulumi/tsconfig.json | 4 +- plugins/terraform/package.json | 4 +- plugins/terraform/src/action.ts | 11 +- plugins/terraform/src/cli.ts | 11 +- plugins/terraform/src/commands.ts | 17 +- plugins/terraform/src/handlers.ts | 18 +- plugins/terraform/src/helpers.ts | 30 +- plugins/terraform/src/index.ts | 36 +- plugins/terraform/src/init.ts | 10 +- plugins/terraform/src/module.ts | 19 +- plugins/terraform/src/provider.ts | 14 +- plugins/terraform/test/common.ts | 23 +- plugins/terraform/test/terraform.ts | 40 +- plugins/terraform/test/validation.ts | 17 +- plugins/terraform/tsconfig.json | 4 +- rollup.config.js | 130 + scripts/changelog.ts | 7 +- scripts/check-package-licenses.ts | 19 +- scripts/convert-jsonl-log.ts | 11 +- scripts/draft-release-notes.ts | 20 +- scripts/release.ts | 23 +- scripts/run-script.ts | 15 +- scripts/script-utils.ts | 44 +- sdk/package.json | 1 + sdk/src/constants.ts | 4 +- sdk/src/exceptions.ts | 2 +- sdk/src/index.ts | 4 +- sdk/src/testing.ts | 13 +- sdk/src/types.ts | 32 +- sdk/src/util/cli.ts | 6 +- sdk/src/util/ext-tools.ts | 4 +- sdk/src/util/fs.ts | 2 +- sdk/src/util/string.ts | 2 +- sdk/tsconfig.json | 4 +- support/alpine-builder.Dockerfile | 46 - support/alpine.Dockerfile | 3 +- support/debian.Dockerfile | 7 +- support/homebrew-formula.rb.j2 | 2 +- tsconfig.base.json | 13 +- tsconfig.json | 6 +- 725 files changed, 16860 insertions(+), 14511 deletions(-) rename .eslintrc.autogenerated.js => .eslintrc.autogenerated.cjs (100%) delete mode 100755 cli/bin/garden delete mode 100755 cli/bin/garden-debug create mode 100755 cli/bin/garden-debug.js create mode 100755 cli/bin/garden.js delete mode 100644 cli/patches/pkg+5.7.0.patch rename commitlint.config.js => commitlint.config.cjs (100%) create mode 100644 core/src/commands/util/watch-parameter.ts create mode 100644 core/src/template-string/parser.d.ts create mode 100644 core/src/util/ink-divider.tsx create mode 100644 garden-sea/.gitignore create mode 100644 garden-sea/Cargo.lock create mode 100644 garden-sea/Cargo.toml create mode 100644 garden-sea/Cross.toml create mode 100644 garden-sea/README.md create mode 100644 garden-sea/src/artifacts.rs create mode 100644 garden-sea/src/cleanup.rs create mode 100644 garden-sea/src/extract.rs create mode 100644 garden-sea/src/log.rs create mode 100644 garden-sea/src/main.rs create mode 100644 garden-sea/src/node.rs create mode 100644 garden-sea/src/signal.rs create mode 100644 garden-sea/src/terminate.rs create mode 100644 rollup.config.js delete mode 100644 support/alpine-builder.Dockerfile diff --git a/.circleci/config.yml b/.circleci/config.yml index e810dc4ee1..b39ddf6060 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -24,4 +24,4 @@ workflows: tags: only: /.*/ branches: - only: /.*/ \ No newline at end of file + only: /.*/ diff --git a/.circleci/continue-config.yml b/.circleci/continue-config.yml index 4dd4c83f3e..673ab70d6b 100644 --- a/.circleci/continue-config.yml +++ b/.circleci/continue-config.yml @@ -4,6 +4,8 @@ version: 2.1 orbs: win: circleci/windows@2.2.0 rok8s-scripts: fairwinds/rok8s-scripts@11.1.3 + node: circleci/node@5.1.0 + macos: circleci/macos@2.4.0 parameters: run-test-dockerhub: @@ -233,7 +235,24 @@ commands: command: kubectl get ns | grep -E '(d|h)$' | grep -- '-testing' | awk '{print $1}' | xargs -n 1 kubectl delete namespace --wait=false || true when: always - build_dist: + install_rust: + description: Installs Rust + steps: + - run: + name: "Install Rust and Cross" + command: | + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + + # To be able to run cargo + source "$HOME/.cargo/env" + + # Cargo builds the other targets in Docker + cargo install cross --git https://github.com/cross-rs/cross + + # So that cross can be called + source "$HOME/.cargo/env" + + run_npm_dist: description: Package built code into executables and persist to dist directory parameters: version: @@ -242,40 +261,31 @@ commands: e.g. when creating unstable releases. The script defaults to using the version from core/package.json. type: string default: "" + targets: + description: | + The version tag used when building. Use to set the version string in the generated zip file names, + e.g. when creating unstable releases. The script defaults to using the version from core/package.json. + type: string + default: "" steps: - # We need Docker for building the Alpine package - - *remote-docker - - checkout - - npm_install - *attach-workspace - - restore_cache: - keys: - - pkg-v3-{{ checksum "package-lock.json" }} - run: - name: Install Codesigning utility (needed for ARM64 on MacOS) - command: | - curl -Lo ldid https://github.com/ProcursusTeam/ldid/releases/download/v2.1.5-procursus7/ldid_linux_x86_64 - chmod +x ldid - sudo mv ldid /usr/local/bin - - run: - name: Setup buildx and qemu for cross-platform builds - command: | - sudo apt-get update - sudo apt-get install -y qemu-user-static - sudo apt-get install -y binfmt-support + name: NPM install + command: npm ci - run: name: Run dist script - command: npm run dist -- --version "<>" + command: | + # This is already done in the step that installs rust + # It also work on the native macos runner, + # but somehow it doesn't work for the docker based runner. + # We just source it again so we're sure it's available for the next steps + source "$HOME/.cargo/env" + + npm run dist -- --version "<>" <> - persist_to_workspace: root: ./ paths: - dist/ - # Needed for the alpine docker build - - tmp/pkg/ - - save_cache: - key: pkg-v3-{{ checksum "package-lock.json" }} - paths: - - tmp/pkg-fetch - run: # No need to store the raw files as artifacts, we just want the archives name: Cleanup @@ -283,6 +293,7 @@ commands: - store_artifacts: path: dist destination: dist + update_buildx: description: Update buildx to a version that supports syntax in bakefile steps: @@ -337,17 +348,54 @@ jobs: - e2e/ - fail_fast - build-dist: - <<: *node-config - resource_class: xlarge + build-dist-macos: + macos: + xcode: 15.0.0 + resource_class: macos.m1.medium.gen1 parameters: version: description: The version tag/name to set type: string default: "" steps: - - build_dist: + - checkout + - node/install: + node-version: '18.18.2' + - install_rust + # We need rosetta for running the tests for x86_64 + - macos/install-rosetta + - run: + name: "Install darwin rustup targets" + command: | + # We build these on real Apple hardware as we would otherwise violate the Apple Licensing Agreement for Xcode + rustup target add x86_64-apple-darwin + rustup target add aarch64-apple-darwin + - run_npm_dist: version: <> + targets: "macos-amd64 macos-arm64" + - fail_fast + + build-dist-linux-windows: + machine: + image: ubuntu-2204:current + docker_layer_caching: true + resource_class: large + parameters: + version: + description: The version tag/name to set + type: string + default: "" + steps: + - checkout + - node/install: + node-version: '18.18.2' + - install_rust + - run: + name: "Install rollup linux" + command: npm install --save-dev @rollup/rollup-linux-x64-gnu + - run_npm_dist: + version: <> + targets: "linux-amd64 linux-arm64 alpine-amd64 windows-amd64" - fail_fast lint: @@ -873,7 +921,7 @@ jobs: test-macos: macos: - xcode: "13.4.1" + xcode: "15.0.0" steps: - checkout - *attach-workspace @@ -989,9 +1037,11 @@ workflows: - build: # We only want to run tests on branches (e.g. for the merge queue) and pull requests. # On main we do not need to re-run all the tests, as the merge queue guarantees that tests already passed. - # For the edge release we declare the `build-edge` job below that only runs on main. + # For the edge release we declare the `build-edge` job below that only runs on main. <<: *ignore-main - - build-dist: + - build-dist-macos: + requires: [build] + - build-dist-linux-windows: requires: [build] - lint: requires: [build] @@ -1004,19 +1054,19 @@ workflows: - test-dist: # Don't attempt to run dist tests for external PRs (they won't have access to the required keys) <<: *only-internal-prs - requires: [build-dist] + requires: [build-dist-macos, build-dist-linux-windows] - test-macos: <<: *only-internal-prs - requires: [build-dist] + requires: [build-dist-macos] - test-macos-arm: <<: *only-internal-prs - requires: [build-dist] + requires: [build-dist-macos] - test-dockerhub: <<: *only-prs - requires: [build-dist] + requires: [build-dist-linux-windows] - test-windows: <<: *only-internal-prs - requires: [build-dist] + requires: [build-dist-linux-windows] # - e2e-project: # <<: *only-internal-prs @@ -1216,22 +1266,28 @@ workflows: <<: *only-main name: build-edge - - build-dist: + - build-dist-macos: <<: *only-main - name: build-dist-edge + name: build-dist-macos-edge + version: edge-bonsai + requires: [build-edge] + + - build-dist-linux-windows: + <<: *only-main + name: build-dist-linux-windows-edge version: edge-bonsai requires: [build-edge] - github-edge-prerelease: <<: *only-main version: edge-bonsai - requires: [build-dist-edge] + requires: [build-dist-macos-edge, build-dist-linux-windows] - dockerhub-release: <<: *only-main context: docker - requires: - - build-dist-edge + requires: [build-dist-macos-edge, build-dist-linux-windows] + - test-docker-gcloud: context: docker requires: [dockerhub-release] @@ -1239,13 +1295,16 @@ workflows: jobs: - build: <<: *only-tags - - build-dist: + - build-dist-macos: + <<: *only-tags + requires: [build] + - build-dist-linux-windows: <<: *only-tags requires: [build] - dockerhub-release: <<: *only-tags context: docker - requires: [build-dist] + requires: [build-dist-macos, build-dist-linux-windows] - github-release-tag: <<: *only-tags - requires: [build-dist] + requires: [build-dist-macos, build-dist-linux-windows] diff --git a/.eslintrc b/.eslintrc index 6863afa627..d4dadc9bfc 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,8 +1,8 @@ { - "extends": [".eslintrc.autogenerated.js", "plugin:@typescript-eslint/recommended", "plugin:prettier/recommended"], + "extends": [".eslintrc.autogenerated.cjs", "plugin:@typescript-eslint/recommended", "plugin:prettier/recommended"], "root": true, "plugins": ["unused-imports", "mocha", "header"], - "ignorePatterns": ["*.d.ts*"], + "ignorePatterns": ["*.d.ts*", "garden-sea/tmp/**/*"], "rules": { "@typescript-eslint/no-floating-promises": "warn", "@typescript-eslint/no-shadow": [ @@ -49,6 +49,8 @@ " * License, v. 2.0. If a copy of the MPL was not distributed with this", " * file, You can obtain one at http://mozilla.org/MPL/2.0/.", " " - ]] + ]], + "@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_", "destructuredArrayIgnorePattern": "^_" }], + "@typescript-eslint/consistent-type-imports": "error" } } diff --git a/.eslintrc.autogenerated.js b/.eslintrc.autogenerated.cjs similarity index 100% rename from .eslintrc.autogenerated.js rename to .eslintrc.autogenerated.cjs diff --git a/.gitignore b/.gitignore index 9acf8eb4ed..42d018cb97 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,8 @@ node_modules .idea *.iml .vscode +# We store specific project relevant settings in this file +!.vscode/settings.json .vs .history *~ @@ -52,4 +54,4 @@ static/**/.garden-version #debug files debug-info-* -/yarn.lock \ No newline at end of file +/yarn.lock diff --git a/bin/garden b/bin/garden index c549a10635..a971453423 100755 --- a/bin/garden +++ b/bin/garden @@ -2,4 +2,4 @@ repo_root=$(cd `dirname $0` && cd .. && pwd) -node --max-old-space-size=4096 --max-semi-space-size=64 ${repo_root}/cli/bin/garden "$@" +node --max-old-space-size=4096 --max-semi-space-size=64 ${repo_root}/cli/bin/garden.js "$@" diff --git a/bin/garden-debug b/bin/garden-debug index 33feee60cf..6af7ac26a4 120000 --- a/bin/garden-debug +++ b/bin/garden-debug @@ -1 +1 @@ -../cli/bin/garden-debug \ No newline at end of file +../cli/bin/garden-debug.js \ No newline at end of file diff --git a/cli/.mocharc.yml b/cli/.mocharc.yml index be2344d225..b97ff26a28 100644 --- a/cli/.mocharc.yml +++ b/cli/.mocharc.yml @@ -1,6 +1,7 @@ reporter: spec -spec: +require: - build/test/setup.js +spec: - build/test/**/*.js timeout: 10000 watch-files: diff --git a/cli/bin/garden b/cli/bin/garden deleted file mode 100755 index 9dce572c25..0000000000 --- a/cli/bin/garden +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env node - - -if (process.env.GARDEN_ENABLE_PROFILING === "1" || process.env.GARDEN_ENABLE_PROFILING === "true") { - // Patch require to profile module loading - const Mod = require("module") - const { performance } = require("perf_hooks") - const { basename } = require("path") - const { getDefaultProfiler } = require("@garden-io/core/build/src/util/profiling") - - const req = Mod.prototype.require - const profiler = getDefaultProfiler() - const prefix = "require:" - - Mod.prototype.require = function () { - const start = performance.now() - - // eslint-disable-next-line no-invalid-this - const mod = req.apply(this, arguments) - profiler.log("require", start) // Aggregate of all requires - - let moduleName = arguments[0] - - if (moduleName.startsWith("/")) { - // Absolute path - const split = moduleName.split("/") - profiler.log(prefix + split[split.length - 1], start) - } else { - profiler.log(prefix + moduleName, start) - // eslint-disable-next-line no-invalid-this - profiler.log(prefix + basename(this.filename) + ":" + moduleName, start) - } - - return mod - } -} - -const { initTracing } = require("@garden-io/core/build/src/util/open-telemetry/tracing") -initTracing() - -const cli = require("../build/src/cli") - -// eslint-disable-next-line @typescript-eslint/no-floating-promises -cli.runCli() diff --git a/cli/bin/garden-debug b/cli/bin/garden-debug deleted file mode 100755 index 0b5cce7e59..0000000000 --- a/cli/bin/garden-debug +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node --inspect --stack-trace-limit=1000 --max-semi-space-size=64 - -require("./garden") diff --git a/cli/bin/garden-debug.js b/cli/bin/garden-debug.js new file mode 100755 index 0000000000..50e87394fb --- /dev/null +++ b/cli/bin/garden-debug.js @@ -0,0 +1,10 @@ +#!/usr/bin/env node --inspect --stack-trace-limit=1000 --max-semi-space-size=64 +/* + * Copyright (C) 2018-2023 Garden Technologies, Inc. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +import "./garden.js" diff --git a/cli/bin/garden.js b/cli/bin/garden.js new file mode 100755 index 0000000000..65f9922342 --- /dev/null +++ b/cli/bin/garden.js @@ -0,0 +1,18 @@ +#!/usr/bin/env node +/* + * Copyright (C) 2018-2023 Garden Technologies, Inc. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +import { initTracing } from "@garden-io/core/build/src/util/open-telemetry/tracing.js" +initTracing() + +import { runCli } from "../build/src/cli.js" + +// This cannot be `await`ed because it somehow then breaks +// the dynamic imports of the plugins +void runCli() + diff --git a/cli/package.json b/cli/package.json index 4a14327cef..5a05a5b88c 100644 --- a/cli/package.json +++ b/cli/package.json @@ -2,6 +2,7 @@ "name": "@garden-io/cli", "version": "0.13.18", "description": "Cloud native testing platform for testing and developing container applications on Kubernetes", + "type": "module", "repository": { "type": "git", "url": "git+https://github.com/garden-io/garden.git" @@ -19,7 +20,7 @@ "build" ], "bin": { - "garden": "bin/garden" + "garden": "bin/garden.js" }, "dependencies": { "@garden-io/core": "*", @@ -32,24 +33,20 @@ "@scg82/exit-hook": "^3.4.1", "chalk": "^4.1.2", "node-abi": "^3.45.0", - "patch-package": "^6.5.1", - "pkg": "5.8.1", - "source-map-support": "^0.5.21" + "tar": "^6.2.0", + "undici": "^5.26.5", + "unzipper": "^0.10.14" }, "devDependencies": { "@types/chai": "^4.3.4", "@types/mocha": "^10.0.1", - "bluebird": "^3.7.2", + "@types/tar": "^6.1.7", + "@types/unzipper": "^0.10.8", "chai": "^4.3.7", - "execa": "^4.1.0", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "minimist": "^1.2.8", "mocha": "^10.2.0", - "postinstall-postinstall": "^2.1.0", - "prettier": "3.0.0", - "split2": "^4.1.0", - "typescript": "^5.1.3", - "username": "^5.1.0" + "typescript": "^5.1.3" }, "scripts": { "add-version-files": "node build/src/add-version-files.js", @@ -59,15 +56,6 @@ "fix-format": "npm run lint -- --fix --quiet", "generate-docs": "node ./build/src/generate-docs.js", "lint": "eslint --ext .ts src/", - "postinstall": "patch-package", "test": "mocha" - }, - "pkg": { - "scripts": [ - "package.json", - "build/src/cli.js", - "node_modules/@garden-io/**/*.js", - "node_modules/es-get-iterator/**/*.js" - ] } -} \ No newline at end of file +} diff --git a/cli/patches/pkg+5.7.0.patch b/cli/patches/pkg+5.7.0.patch deleted file mode 100644 index 17bd0db78f..0000000000 --- a/cli/patches/pkg+5.7.0.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/node_modules/pkg/prelude/bootstrap.js b/node_modules/pkg/prelude/bootstrap.js -index 8627ea5..bde7122 100644 ---- a/node_modules/pkg/prelude/bootstrap.js -+++ b/node_modules/pkg/prelude/bootstrap.js -@@ -2006,7 +2006,7 @@ function payloadFileSync(pointer) { - } - const opts = args[pos]; - if (!opts.env) opts.env = _extend({}, process.env); -- if (opts.env.PKG_EXECPATH === 'PKG_INVOKE_NODEJS') return; -+ if (opts.env.PKG_EXECPATH !== undefined) return; - opts.env.PKG_EXECPATH = EXECPATH; - } - diff --git a/cli/src/add-version-files.ts b/cli/src/add-version-files.ts index 09011d5ccf..566239362d 100644 --- a/cli/src/add-version-files.ts +++ b/cli/src/add-version-files.ts @@ -6,13 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { GitHandler } from "@garden-io/core/build/src/vcs/git" -import { Garden } from "@garden-io/core/build/src/garden" -import { LogLevel, RootLogger } from "@garden-io/core/build/src/logger/logger" +import { GitHandler } from "@garden-io/core/build/src/vcs/git.js" +import { Garden } from "@garden-io/core/build/src/garden.js" +import { LogLevel, RootLogger } from "@garden-io/core/build/src/logger/logger.js" import { resolve, relative } from "path" -import { STATIC_DIR, GARDEN_VERSIONFILE_NAME } from "@garden-io/core/build/src/constants" -import { writeTreeVersionFile } from "@garden-io/core/build/src/vcs/vcs" -import { TreeCache } from "@garden-io/core/build/src/cache" +import { STATIC_DIR, GARDEN_VERSIONFILE_NAME } from "@garden-io/core/build/src/constants.js" +import { writeTreeVersionFile } from "@garden-io/core/build/src/vcs/vcs.js" +import { TreeCache } from "@garden-io/core/build/src/cache.js" +import * as url from "node:url" // make sure logger is initialized RootLogger.initialize({ level: LogLevel.info, displayWriterType: "quiet", storeEntries: false }) @@ -47,7 +48,8 @@ async function addVersionFiles() { ) } -if (require.main === module) { +const modulePath = url.fileURLToPath(import.meta.url) +if (process.argv[1] === modulePath) { addVersionFiles().catch((err) => { // eslint-disable-next-line no-console console.error(err) diff --git a/cli/src/build-pkg.ts b/cli/src/build-pkg.ts index a57e30adac..f54c9c512f 100644 --- a/cli/src/build-pkg.ts +++ b/cli/src/build-pkg.ts @@ -9,47 +9,139 @@ import chalk from "chalk" import { getAbi } from "node-abi" import { resolve, relative, join } from "path" -import { STATIC_DIR, GARDEN_CLI_ROOT, GARDEN_CORE_ROOT } from "@garden-io/core/build/src/constants" -import { remove, mkdirp, copy, writeFile, readFile } from "fs-extra" -import { exec, getPackageVersion, sleep } from "@garden-io/core/build/src/util/util" -import { dedent, randomString } from "@garden-io/core/build/src/util/string" -import { pick } from "lodash" +import { STATIC_DIR, GARDEN_CLI_ROOT, GARDEN_CORE_ROOT } from "@garden-io/core/build/src/constants.js" +import fsExtra from "fs-extra" +const { remove, mkdirp, copy, writeFile, readFile } = fsExtra +import { exec, getPackageVersion } from "@garden-io/core/build/src/util/util.js" +import { dedent } from "@garden-io/core/build/src/util/string.js" +import { pick } from "lodash-es" import minimist from "minimist" -import { createHash } from "crypto" -import { createReadStream } from "fs" -import { makeTempDir } from "@garden-io/core/build/test/helpers" +import { createHash } from "node:crypto" +import { createReadStream, createWriteStream } from "fs" +import { makeTempDir } from "@garden-io/core/build/test/helpers.js" +import * as url from "node:url" +import { Readable } from "node:stream" +import { finished } from "node:stream/promises" +import type { Entry } from "unzipper" +import unzipper from "unzipper" + +// Temporary workaround for NodeJS / DOM type conflict +// See https://github.com/DefinitelyTyped/DefinitelyTyped/issues/60924 +import { fetch } from "undici" + +import tar from "tar" const repoRoot = resolve(GARDEN_CLI_ROOT, "..") -const tmpDirPath = resolve(repoRoot, "tmp", "pkg") -const tmpStaticDir = resolve(tmpDirPath, "static") -const pkgPath = resolve(repoRoot, "cli", "node_modules", ".bin", "pkg") +const gardenSeaDir = resolve(repoRoot, "garden-sea") +const distTmpDir = resolve(gardenSeaDir, "tmp") +const sourceTmpDir = resolve(distTmpDir, "source") +const rollupTmpDir = resolve(distTmpDir, "rollup") +const tmpStaticDir = resolve(distTmpDir, "static") +const nodeTmpDir = resolve(distTmpDir, "node") +const nativeModuleTmpDir = resolve(distTmpDir, "native") const distPath = resolve(repoRoot, "dist") -// Allow larger heap size than default -const nodeOptions = ["max-old-space-size=4096", "max-semi-space-size=64"] - /* eslint-disable no-console */ interface TargetHandlerParams { + spec: TargetSpec targetName: string - sourcePath: string - pkgType: string version: string } interface TargetSpec { - pkgType: string - nodeBinaryPlatform: string - handler: (params: TargetHandlerParams) => Promise + node: `${number}.${number}.${number}` + os: "macos" | "linux" | "alpine" | "win" + arch: "x64" | "arm64" + nodeBinaryPlatform: "darwin" | "linux" | "win32" + url: string + checksum: string } -const targets: { [name: string]: TargetSpec } = { - "macos-amd64": { pkgType: "node18-macos-x64", handler: pkgMacos, nodeBinaryPlatform: "darwin" }, - "macos-arm64": { pkgType: "node18-macos-arm64", handler: pkgMacos, nodeBinaryPlatform: "darwin" }, - "linux-amd64": { pkgType: "node18-linux-x64", handler: pkgLinux, nodeBinaryPlatform: "linux" }, - "linux-arm64": { pkgType: "node18-linux-arm64", handler: pkgLinux, nodeBinaryPlatform: "linux" }, - "windows-amd64": { pkgType: "node18-win-x64", handler: pkgWindows, nodeBinaryPlatform: "win32" }, - "alpine-amd64": { pkgType: "node18-alpine-x64", handler: pkgAlpine, nodeBinaryPlatform: "linuxmusl" }, +const rustArchMap: Record = { + x64: "x86_64", + arm64: "aarch64", +} + +const rustOsMap: Record = { + win: "pc-windows-gnu", + alpine: "unknown-linux-musl", + linux: "unknown-linux-gnu", + macos: "apple-darwin", +} + +function getRustTarget(spec: TargetSpec): string { + return `${rustArchMap[spec.arch]}-${rustOsMap[spec.os]}` +} + +const targets: { [name: string]: { spec: TargetSpec; handler: (p: TargetHandlerParams) => Promise } } = { + "macos-amd64": { + spec: { + os: "macos", + arch: "x64", + node: "18.18.2", + nodeBinaryPlatform: "darwin", + url: "https://nodejs.org/dist/v18.18.2/node-v18.18.2-darwin-x64.tar.gz", + checksum: "5bb8da908ed590e256a69bf2862238c8a67bc4600119f2f7721ca18a7c810c0f", + }, + handler: pkgMacos, + }, + "macos-arm64": { + spec: { + os: "macos", + arch: "arm64", + node: "18.18.2", + nodeBinaryPlatform: "darwin", + url: "https://nodejs.org/dist/v18.18.2/node-v18.18.2-darwin-arm64.tar.gz", + checksum: "9f982cc91b28778dd8638e4f94563b0c2a1da7aba62beb72bd427721035ab553", + }, + handler: pkgMacos, + }, + "linux-amd64": { + spec: { + os: "linux", + arch: "x64", + node: "18.18.2", + nodeBinaryPlatform: "linux", + url: "https://nodejs.org/dist/v18.18.2/node-v18.18.2-linux-x64.tar.gz", + checksum: "a44c3e7f8bf91e852c928e5d8bd67ca316b35e27eec1d8acbe3b9dbe03688dab", + }, + handler: pkgLinux, + }, + "linux-arm64": { + spec: { + os: "linux", + arch: "arm64", + node: "18.18.2", + nodeBinaryPlatform: "linux", + url: "https://nodejs.org/dist/v18.18.2/node-v18.18.2-linux-arm64.tar.gz", + checksum: "0c9a6502b66310cb26e12615b57304e91d92ac03d4adcb91c1906351d7928f0d", + }, + handler: pkgLinux, + }, + "alpine-amd64": { + spec: { + os: "alpine", + arch: "x64", + node: "18.18.2", + nodeBinaryPlatform: "linux", + // Alpine builds live in https://unofficial-builds.nodejs.org/download/release/ + url: "https://unofficial-builds.nodejs.org/download/release/v18.18.2/node-v18.18.2-linux-x64-musl.tar.gz", + checksum: "e71212feaa3a54c1736e173f3aa17ba777f1f189659437c589af54742d95a1d0", + }, + handler: pkgAlpine, + }, + "windows-amd64": { + spec: { + os: "win", + arch: "x64", + node: "18.18.2", + nodeBinaryPlatform: "win32", + url: "https://nodejs.org/dist/v18.18.2/node-v18.18.2-win-x64.zip", + checksum: "3bb0e51e579a41a22b3bf6cb2f3e79c03801aa17acbe0ca00fc555d1282e7acd", + }, + handler: pkgWindows, + }, } /** @@ -75,21 +167,61 @@ export type NPMWorkspaceQueryResult = { dependencies: Record } +type ZipAndHashOptions = { + targetDir: string + archiveName: string + cwd: string + fileNames: string[] + prefix?: string +} + +async function zipAndHash({ targetDir, archiveName, cwd, prefix, fileNames }: ZipAndHashOptions) { + const targetArchive = resolve(targetDir, `${archiveName}.tar.gz`) + const archiveStream = tar.c( + { + gzip: true, + prefix, + C: cwd, + strict: true, + portable: true, + }, + fileNames + ) + + const archiveHash = archiveStream.pipe(createHash("sha256")) + + await finished(archiveStream.pipe(createWriteStream(targetArchive))) + + await writeFile(resolve(targetDir, `${archiveName}.sha256`), archiveHash.digest("hex") + "\n") +} + async function buildBinaries(args: string[]) { const argv = minimist(args) const version = argv.version || getPackageVersion() const selected = argv._.length > 0 ? pick(targets, argv._) : targets + if (Object.keys(selected).length === 0) { + console.log(chalk.red("No matching targets.")) + console.log(`Available targets: ${Object.keys(targets).join(", ")}}`) + process.exit(1) + } + console.log(chalk.cyan("Building targets: ") + Object.keys(selected).join(", ")) - // (re)-create temp dir - console.log(chalk.cyan("Creating temp directory at " + tmpDirPath)) - await remove(tmpDirPath) - await mkdirp(tmpDirPath) + console.log(chalk.cyan("Creating temp source directory at " + sourceTmpDir)) + await remove(sourceTmpDir) + await mkdirp(sourceTmpDir) + + console.log(chalk.cyan("Creating temp node binary directory at " + nodeTmpDir)) + await remove(nodeTmpDir) + await mkdirp(nodeTmpDir) + + console.log(chalk.cyan("Creating static directory at " + tmpStaticDir)) + await remove(tmpStaticDir) // Copy static dir, stripping out undesired files for the dist build console.log(chalk.cyan("Copying static directory")) - await exec("rsync", ["-r", "-L", "--exclude=.garden", "--exclude=.git", STATIC_DIR, tmpDirPath]) + await exec("rsync", ["-r", "-L", "--exclude=.garden", "--exclude=.git", STATIC_DIR, distTmpDir]) await exec("git", ["init"], { cwd: tmpStaticDir }) // Copy each package to the temp dir @@ -101,7 +233,7 @@ async function buildBinaries(args: string[]) { await Promise.all( workspaces.map(async ({ name, location }: { name: string; location: string }) => { const sourcePath = resolve(repoRoot, location) - const targetPath = resolve(tmpDirPath, location) + const targetPath = resolve(sourceTmpDir, location) await remove(targetPath) await mkdirp(targetPath) await exec("rsync", [ @@ -122,7 +254,7 @@ async function buildBinaries(args: string[]) { console.log(chalk.cyan("Modifying package.json files for direct installation")) await Promise.all( workspaces.map(async ({ name, location, dependencies }) => { - const packageRoot = resolve(tmpDirPath, location) + const packageRoot = resolve(sourceTmpDir, location) const packageJsonPath = resolve(packageRoot, "package.json") const packageJson = JSON.parse(await readFile(packageJsonPath, "utf-8")) @@ -134,7 +266,7 @@ async function buildBinaries(args: string[]) { if (!depInfo) { throw new Error("Could not find workspace info for " + depName) } - const targetRoot = resolve(tmpDirPath, depInfo.location) + const targetRoot = resolve(sourceTmpDir, depInfo.location) const relPath = relative(packageRoot, targetRoot) packageJson.dependencies[depName] = "file:" + relPath } @@ -152,142 +284,187 @@ async function buildBinaries(args: string[]) { ) // Run npm install in the cli package - await copy(resolve(repoRoot, "package.json"), resolve(tmpDirPath, "package.json")) - await copy(resolve(repoRoot, "package-lock.json"), resolve(tmpDirPath, "package-lock.json")) + await copy(resolve(repoRoot, "package.json"), resolve(sourceTmpDir, "package.json")) + await copy(resolve(repoRoot, "package-lock.json"), resolve(sourceTmpDir, "package-lock.json")) // The `.npmrc` config ensures that we're not hoisting any dependencies - await copy(resolve(repoRoot, ".npmrc"), resolve(tmpDirPath, ".npmrc")) + await copy(resolve(repoRoot, ".npmrc"), resolve(sourceTmpDir, ".npmrc")) console.log("Installing all packages in workspaces") - await exec("npm", ["install", "--omit=dev"], { cwd: tmpDirPath, stdio: "inherit" }) + await exec("npm", ["install", "--omit=dev"], { cwd: sourceTmpDir, stdio: "inherit" }) + + // This is not being installed on non mac systems + // We need it to always be present though, and it should just not load if on another platform + await copy(resolve(GARDEN_CORE_ROOT, "lib", "fsevents"), resolve(sourceTmpDir, "core", "node_modules", "fsevents")) + + console.log(chalk.cyan("Bundling source code")) + + await remove(rollupTmpDir) + await exec("npm", ["run", "rollup"], { cwd: repoRoot, stdio: "inherit" }) + + await zipAndHash({ + archiveName: "source", + cwd: distTmpDir, + targetDir: distTmpDir, + fileNames: ["rollup"], + }) + + console.log(chalk.green(" ✓ Bundled source code")) + + // Dowload selected node binaries + await Promise.all( + Object.entries(selected).map(async ([targetName, { spec }]) => { + const extractionDir = resolve(nodeTmpDir, targetName) + + console.log(chalk.cyan(`Downloading node ${spec.node} for ${targetName} from ${spec.url}`)) + const response = await fetch(spec.url) + + if (!response.body) { + throw new Error(`No response body for ${spec.url}`) + } + + const body = Readable.fromWeb(response.body) + + // We know it's just those two file types, so we can hardcode this + // If we switch to other types, this needs adapting. + // Why aren't we just using `path.extname`? + // Because it doesn't do double endings like `.tar.gz`. + // Having generic code for that is still more than twice as much as this comment block and the ternary below. + const fileEnding = spec.url.endsWith("tar.gz") ? ".tar.gz" : ".zip" + + const targetFileName = resolve(nodeTmpDir, `${targetName}${fileEnding}`) + + const hash = body.pipe(createHash("sha256")) + + const writeStream = createWriteStream(targetFileName) + await finished(body.pipe(writeStream)) + + console.log(chalk.green(` ✓ Downloaded node ${spec.node} for ${targetName}`)) + + const sha256 = hash.digest("hex") + + if (sha256 !== spec.checksum) { + throw new Error(`Checksum mismatch for ${spec.url}! Expected ${spec.checksum} but got ${sha256}`) + } + console.log(chalk.green(` ✓ Verified checksum for ${targetName}`)) + + console.log(chalk.cyan(`Extracting node ${spec.node} for ${targetName}`)) + await mkdirp(extractionDir) + const nodeFileName = spec.os === "win" ? "node.exe" : "node" + if (fileEnding === ".tar.gz") { + const extractStream = tar.x({ + C: extractionDir, + // The tarball has first a toplevel directory, + // then a /bin subdirectory, then the actual files. + // We only want the flat `node` binary within the directory. + // The stripping happens after the filter so it works fine + strip: 2, + filter: (path) => { + return path.endsWith(`/bin/${nodeFileName}`) + }, + }) + await finished(createReadStream(targetFileName).pipe(extractStream)) + } else { + const zip = createReadStream(targetFileName).pipe(unzipper.Parse({ forceStream: true })) + for await (const i of zip) { + const entry = i as Entry + const fileName = entry.path + if (fileName.endsWith(`/${nodeFileName}`)) { + await finished(entry.pipe(createWriteStream(resolve(extractionDir, nodeFileName)))) + } else { + entry.autodrain() + } + } + } + + console.log(chalk.green(` ✓ Extracted node ${spec.node} for ${targetName}`)) + + console.log(chalk.cyan(`Bundling node ${spec.node} for ${targetName}`)) + + await zipAndHash({ + targetDir: extractionDir, + archiveName: "node", + cwd: extractionDir, + fileNames: [nodeFileName], + prefix: "bin", + }) + + console.log(chalk.green(` ✓ Bundled node ${spec.node} for ${targetName}`)) + }) + ) - const cliPath = resolve(tmpDirPath, workspaces.find((p) => p.name === "@garden-io/cli")!.location) - // Run pkg and pack up each platform binary console.log(chalk.cyan("Packaging garden binaries")) await Promise.all( - Object.entries(selected).map(async ([targetName, spec]) => { - await spec.handler({ targetName, sourcePath: cliPath, pkgType: spec.pkgType, version }) - await sleep(5000) // Work around concurrency bug in pkg... - console.log(chalk.green(" ✓ " + targetName)) + Object.entries(selected).map(async ([targetName, target]) => { + await pkgCommon({ + targetName, + spec: target.spec, + }) }) ) - console.log(chalk.green.bold("Done!")) -} + // cross does not support running all compilations in parallel. + for (const [targetName, target] of Object.entries(selected)) { + const distTargetDir = resolve(distPath, targetName) -let fsEventsCopied: Promise | undefined = undefined -async function pkgMacos({ targetName, sourcePath, pkgType, version }: TargetHandlerParams) { - console.log(` - ${targetName} -> fsevents`) - // Copy fsevents from lib to node_modules - // This might happen concurrently for multiple targets - // so we only do it once and then wait for that process to complete - if (!fsEventsCopied) { - fsEventsCopied = copy( - resolve(GARDEN_CORE_ROOT, "lib", "fsevents"), - resolve(tmpDirPath, "core", "node_modules", "fsevents") - ) + console.log(chalk.cyan("Cleaning " + distTargetDir)) + await remove(distTargetDir) + + console.log(chalk.cyan("Compiling garden binary for " + targetName)) + const rustTarget = getRustTarget(target.spec) + + // Run Garden SEA smoke tests. Windows tests run in a wine environment. + await exec("cross", ["test", "--target", rustTarget], { cwd: gardenSeaDir, stdio: "inherit" }) + + // Build the release binary + await exec("cross", ["build", "--target", rustTarget, "--release"], { cwd: gardenSeaDir, stdio: "inherit" }) + + const executableFilename = target.spec.os === "win" ? "garden.exe" : "garden" + const executablePath = resolve(distTargetDir, executableFilename) + await copy(resolve(gardenSeaDir, "target", rustTarget, "release", executableFilename), executablePath) + console.log(chalk.green(` ✓ Compiled garden binary for ${targetName}`)) + + await target.handler({ targetName, spec: target.spec, version }) + console.log(chalk.green(" ✓ " + targetName)) } - await fsEventsCopied - await pkgCommon({ - sourcePath, - targetName, - pkgType, - binFilename: "garden", - }) + console.log(chalk.green.bold("Done!")) +} - console.log(` - ${targetName} -> fsevents.node`) - await copy( - resolve(GARDEN_CORE_ROOT, "lib", "fsevents", "fsevents.node"), - resolve(distPath, targetName, "fsevents.node") - ) +async function pkgMacos({ targetName, version }: TargetHandlerParams) { + const executablePath = resolve(distPath, targetName, "garden") + try { + await exec("codesign", ["-f", "--sign", "-", executablePath]) + } catch { + await exec("ldid", ["-Cadhoc", "-S", executablePath]) + } await tarball(targetName, version) } -async function pkgLinux({ targetName, sourcePath, pkgType, version }: TargetHandlerParams) { - await pkgCommon({ - sourcePath, - targetName, - pkgType, - binFilename: "garden", - }) +async function pkgLinux({ targetName, version }: TargetHandlerParams) { await tarball(targetName, version) } -async function pkgWindows({ targetName, sourcePath, pkgType, version }: TargetHandlerParams) { - await pkgCommon({ - sourcePath, - targetName, - pkgType, - binFilename: "garden.exe", - }) - +async function pkgWindows({ targetName, version }: TargetHandlerParams) { console.log(` - ${targetName} -> zip`) const filename = getZipFilename(version, targetName) await exec("zip", ["-q", "-r", filename, targetName], { cwd: distPath }) } async function pkgAlpine({ targetName, version }: TargetHandlerParams) { - const targetPath = resolve(distPath, targetName) - await remove(targetPath) - await mkdirp(targetPath) - - console.log(` - ${targetName} -> docker build`) - const imageName = "garden-alpine-builder" - const containerName = "alpine-builder-" + randomString(8) - const supportDir = resolve(repoRoot, "support") - - await copy(resolve(supportDir, ".dockerignore"), resolve(tmpDirPath, ".dockerignore")) - - await exec("docker", [ - "build", - "--platform", - "linux/amd64", - "-t", - imageName, - "-f", - resolve(repoRoot, "support", "alpine-builder.Dockerfile"), - tmpDirPath, - ]) - - try { - console.log(` - ${targetName} -> docker create`) - await exec("docker", ["create", "-it", "--name", containerName, imageName, "sh"]) - - console.log(` - ${targetName} -> docker copy`) - await exec("docker", ["cp", `${containerName}:/garden/.`, targetPath]) - } finally { - await exec("docker", ["rm", "-f", containerName]) - } - await tarball(targetName, version) } -async function pkgCommon({ - sourcePath, - targetName, - pkgType, - binFilename, -}: { - sourcePath: string - targetName: string - pkgType: string - binFilename: string -}) { - const targetPath = resolve(distPath, targetName) +async function pkgCommon({ targetName, spec }: { targetName: string; spec: TargetSpec }) { + const targetPath = resolve(nativeModuleTmpDir, targetName) await remove(targetPath) await mkdirp(targetPath) - const pkgFetchTmpDir = resolve(repoRoot, "tmp", "pkg-fetch", targetName) - await mkdirp(pkgFetchTmpDir) - console.log(` - ${targetName} -> node-pty`) const abi = getAbi(process.version, "node") - // TODO: make arch configurable - const { nodeBinaryPlatform } = targets[targetName] - if (nodeBinaryPlatform === "win32") { + if (spec.nodeBinaryPlatform === "win32") { const tmpDir = await makeTempDir() // Seriously, this is so much easier than anything more native... await exec( @@ -305,49 +482,36 @@ async function pkgCommon({ await tmpDir.cleanup() } else { - const filename = nodeBinaryPlatform === "linuxmusl" ? `node.abi${abi}.musl.node` : `node.abi${abi}.node` + const filename = spec.os === "alpine" ? `node.abi${abi}.musl.node` : `node.abi${abi}.node` const abiPath = resolve( GARDEN_CORE_ROOT, "node_modules", "node-pty-prebuilt-multiarch", "prebuilds", - `${nodeBinaryPlatform}-x64`, + `${spec.nodeBinaryPlatform}-${spec.arch}`, filename ) await copy(abiPath, resolve(targetPath, "pty.node")) } - console.log(` - ${targetName} -> pkg`) - await exec( - pkgPath, - [ - "--target", - pkgType, - sourcePath, - "--compress", - "Brotli", - // We do not need to compile to bytecode and obfuscate the source - "--public", - "--public-packages", - "*", - // We include all native binaries required manually - "--no-native-build", - "--options", - nodeOptions.join(","), - "--output", - resolve(targetPath, binFilename), - ], - { env: { PKG_CACHE_PATH: pkgFetchTmpDir }, stdio: "inherit" } - ) + if (spec.os === "macos") { + await copy(resolve(GARDEN_CORE_ROOT, "lib", "fsevents", "fsevents.node"), resolve(targetPath, "fsevents.node")) + } - console.log(` - ${targetName} -> static`) - await copyStatic(targetName) -} + await zipAndHash({ + targetDir: distTmpDir, + archiveName: `${targetName}-native`, + cwd: targetPath, + fileNames: ["."], + prefix: "native", + }) -async function copyStatic(targetName: string) { - const targetPath = resolve(distPath, targetName) - console.log(` - ${targetName} -> static dir`) - await copy(tmpStaticDir, resolve(targetPath, "static")) + await zipAndHash({ + targetDir: distTmpDir, + archiveName: "static", + cwd: distTmpDir, + fileNames: ["static"], + }) } async function tarball(targetName: string, version: string): Promise { @@ -384,7 +548,8 @@ async function tarball(targetName: string, version: string): Promise { }) } -if (require.main === module) { +const modulePath = url.fileURLToPath(import.meta.url) +if (process.argv[1] === modulePath) { buildBinaries(process.argv.slice(2)).catch((err) => { console.error(chalk.red(err.message)) process.exit(1) diff --git a/cli/src/cli.ts b/cli/src/cli.ts index 0f3f1f3739..e237791645 100644 --- a/cli/src/cli.ts +++ b/cli/src/cli.ts @@ -6,14 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { shutdown } from "@garden-io/core/build/src/util/util" -import { GardenCli, RunOutput } from "@garden-io/core/build/src/cli/cli" -import { GardenPluginReference } from "@garden-io/core/build/src/plugin/plugin" -import { GlobalConfigStore } from "@garden-io/core/build/src/config-store/global" -import { getOtelSDK } from "@garden-io/core/build/src/util/open-telemetry/tracing" -import { withContextFromEnv } from "@garden-io/core/build/src/util/open-telemetry/propagation" -import { wrapActiveSpan } from "@garden-io/core/build/src/util/open-telemetry/spans" -import { InternalError } from "@garden-io/core/build/src/exceptions" +import { shutdown } from "@garden-io/core/build/src/util/util.js" +import type { RunOutput } from "@garden-io/core/build/src/cli/cli.js" +import { GardenCli } from "@garden-io/core/build/src/cli/cli.js" +import type { GardenPluginReference } from "@garden-io/core/build/src/plugin/plugin.js" +import { GlobalConfigStore } from "@garden-io/core/build/src/config-store/global.js" +import { getOtelSDK } from "@garden-io/core/build/src/util/open-telemetry/tracing.js" +import { withContextFromEnv } from "@garden-io/core/build/src/util/open-telemetry/propagation.js" +import { wrapActiveSpan } from "@garden-io/core/build/src/util/open-telemetry/spans.js" +import { InternalError } from "@garden-io/core/build/src/exceptions.js" // These plugins are always registered export const getBundledPlugins = (): GardenPluginReference[] => [ diff --git a/cli/src/generate-docs.ts b/cli/src/generate-docs.ts index fe40d4135e..41926a40b0 100644 --- a/cli/src/generate-docs.ts +++ b/cli/src/generate-docs.ts @@ -6,13 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { generateDocs } from "@garden-io/core/build/src/docs/generate" +import { generateDocs } from "@garden-io/core/build/src/docs/generate.js" import { resolve } from "path" -import { LogLevel, RootLogger } from "@garden-io/core/build/src/logger/logger" -import { GARDEN_CLI_ROOT } from "@garden-io/core/build/src/constants" -import { getBundledPlugins } from "./cli" -import { getSupportedPlugins } from "@garden-io/core/build/src/plugins/plugins" +import { LogLevel, RootLogger } from "@garden-io/core/build/src/logger/logger.js" +import { GARDEN_CLI_ROOT } from "@garden-io/core/build/src/constants.js" +import { getBundledPlugins } from "./cli.js" +import { getSupportedPlugins } from "@garden-io/core/build/src/plugins/plugins.js" import { gracefulExit } from "@scg82/exit-hook" +import * as url from "node:url" // make sure logger is initialized try { @@ -27,7 +28,8 @@ try { const getPlugins = () => [...getBundledPlugins(), ...getSupportedPlugins()] -if (require.main === module) { +const modulePath = url.fileURLToPath(import.meta.url) +if (process.argv[1] === modulePath) { generateDocs(resolve(GARDEN_CLI_ROOT, "..", "docs"), getPlugins) .then(() => { // eslint-disable-next-line no-console diff --git a/cli/test/helpers.ts b/cli/test/helpers.ts index 08da45f767..c88f44a782 100644 --- a/cli/test/helpers.ts +++ b/cli/test/helpers.ts @@ -7,6 +7,6 @@ */ import { join } from "path" -import { GARDEN_CLI_ROOT } from "@garden-io/core/build/src/constants" +import { GARDEN_CLI_ROOT } from "@garden-io/core/build/src/constants.js" export const testRoot = join(GARDEN_CLI_ROOT, "test") diff --git a/cli/test/setup.ts b/cli/test/setup.ts index f1fc4eb024..bbc80eb9c9 100644 --- a/cli/test/setup.ts +++ b/cli/test/setup.ts @@ -7,4 +7,4 @@ */ // Borrow the basic test setup from core -require("@garden-io/core/build/test/setup") +export * from "@garden-io/core/build/test/setup.js" diff --git a/cli/test/unit/src/build-pkg.ts b/cli/test/unit/src/build-pkg.ts index 01f8363d21..aa4fe1a268 100644 --- a/cli/test/unit/src/build-pkg.ts +++ b/cli/test/unit/src/build-pkg.ts @@ -7,7 +7,7 @@ */ import { expect } from "chai" -import { getTarballFilename, getZipFilename } from "../../../src/build-pkg" +import { getTarballFilename, getZipFilename } from "../../../src/build-pkg.js" describe("build-pkg", () => { const version = "0.12.44" diff --git a/cli/test/unit/src/cli.ts b/cli/test/unit/src/cli.ts index 59a5f3f410..00e4a67f1e 100644 --- a/cli/test/unit/src/cli.ts +++ b/cli/test/unit/src/cli.ts @@ -7,18 +7,19 @@ */ import { expect } from "chai" -import { find } from "lodash" +import { find } from "lodash-es" import { resolve } from "path" -import { runCli, getBundledPlugins } from "../../../src/cli" -import { testRoot } from "../../helpers" +import { runCli, getBundledPlugins } from "../../../src/cli.js" +import { testRoot } from "../../helpers.js" -import { projectRootA } from "@garden-io/core/build/test/helpers" -import { TestGardenCli } from "@garden-io/core/build/test/helpers/cli" -import { Command, CommandParams } from "@garden-io/core/build/src/commands/base" -import { randomString } from "@garden-io/core/build/src/util/string" -import { GlobalConfigStore } from "@garden-io/core/build/src/config-store/global" -import { testFlags } from "@garden-io/core/build/src/util/util" +import { projectRootA } from "@garden-io/core/build/test/helpers.js" +import { TestGardenCli } from "@garden-io/core/build/test/helpers/cli.js" +import type { CommandParams } from "@garden-io/core/build/src/commands/base.js" +import { Command } from "@garden-io/core/build/src/commands/base.js" +import { randomString } from "@garden-io/core/build/src/util/string.js" +import { GlobalConfigStore } from "@garden-io/core/build/src/config-store/global.js" +import { testFlags } from "@garden-io/core/build/src/util/util.js" describe("runCli", () => { const globalConfigStore = new GlobalConfigStore() diff --git a/cli/tsconfig.json b/cli/tsconfig.json index 22aaf09828..ddbe291773 100644 --- a/cli/tsconfig.json +++ b/cli/tsconfig.json @@ -6,7 +6,9 @@ ], "compilerOptions": { "composite": true, - "outDir": "build" + "outDir": "build", + "module": "nodenext", + "moduleResolution": "nodenext", }, "references": [ { @@ -31,4 +33,4 @@ "path": "../plugins/pulumi" } ] -} \ No newline at end of file +} diff --git a/commitlint.config.js b/commitlint.config.cjs similarity index 100% rename from commitlint.config.js rename to commitlint.config.cjs diff --git a/core/.gitignore b/core/.gitignore index e69a683d4b..0e8def88b8 100644 --- a/core/.gitignore +++ b/core/.gitignore @@ -4,6 +4,7 @@ dist/ src/**/*.js src/**/*.map src/**/*.d.ts +!src/template-string/parser.d.ts support/**/*.js support/**/*.map support/**/*.d.ts diff --git a/core/index.ts b/core/index.ts index c848196fd4..8f99d8a663 100644 --- a/core/index.ts +++ b/core/index.ts @@ -1,4 +1,11 @@ -import { GardenError as GErr } from "./src/exceptions" +/* + * Copyright (C) 2018-2023 Garden Technologies, Inc. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +import { GardenError as GErr } from "./src/exceptions.js" export namespace GardenCLI { export namespace Errors { diff --git a/core/lib/fsevents/fsevents.js b/core/lib/fsevents/fsevents.js index 0c684acfbc..e3f0ac6e96 100644 --- a/core/lib/fsevents/fsevents.js +++ b/core/lib/fsevents/fsevents.js @@ -1,6 +1,9 @@ /* - ** © 2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller - ** Licensed under MIT License. + * Copyright (C) 2018-2023 Garden Technologies, Inc. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* jshint node:true */ @@ -79,4 +82,4 @@ function getFileChanges(flags) { exports.watch = watch; exports.getInfo = getInfo; -exports.constants = events; \ No newline at end of file +exports.constants = events; diff --git a/core/package.json b/core/package.json index 73db795da2..17cc94c683 100644 --- a/core/package.json +++ b/core/package.json @@ -2,6 +2,7 @@ "name": "@garden-io/core", "version": "0.13.18", "description": "A full-featured development framework for containers and serverless", + "type": "module", "repository": { "type": "git", "url": "git+https://github.com/garden-io/garden.git" @@ -27,15 +28,16 @@ "@codenamize/codenamize": "^1.1.1", "@hapi/joi": "git+https://github.com/garden-io/joi.git#master", "@jsdevtools/readdir-enhanced": "^6.0.4", - "@kubernetes/client-node": "=0.18.0", - "@opentelemetry/api": "^1.4.1", - "@opentelemetry/exporter-trace-otlp-http": "^0.41.1", - "@opentelemetry/instrumentation-http": "^0.41.1", - "@opentelemetry/otlp-exporter-base": "^0.41.1", - "@opentelemetry/resources": "^1.14.0", - "@opentelemetry/sdk-node": "^0.41.1", - "@opentelemetry/sdk-trace-base": "^1.14.0", - "@opentelemetry/semantic-conventions": "^1.14.0", + "@kubernetes/client-node": "github:davidgamero/javascript#c17ff3193dbd111b9e5b5db939647af70005381e", + "@opentelemetry/api": "^1.6.0", + "@opentelemetry/core": "^1.17.1", + "@opentelemetry/exporter-trace-otlp-http": "0.43.0", + "@opentelemetry/instrumentation-http": "^0.44.0", + "@opentelemetry/otlp-exporter-base": "^0.44.0", + "@opentelemetry/resources": "^1.17.1", + "@opentelemetry/sdk-node": "^0.44.0", + "@opentelemetry/sdk-trace-base": "^1.17.1", + "@opentelemetry/semantic-conventions": "^1.17.1", "@scg82/exit-hook": "^3.4.1", "ajv": "^8.12.0", "ajv-formats": "^2.1.1", @@ -43,7 +45,6 @@ "archiver": "^5.3.1", "async": "^3.2.4", "async-lock": "^1.4.0", - "certpem": "^1.1.3", "chalk": "^4.1.2", "chokidar": "^3.5.3", "ci-info": "^3.8.0", @@ -66,12 +67,12 @@ "eventemitter3": "^5.0.0", "execa": "^4.1.0", "fast-copy": "^3.0.1", - "fs-extra": "^11.1.0", + "fs-extra": "^11.1.1", "get-port": "^5.1.1", "get-port-please": "^3.1.1", "glob": "^10.2.6", "global-agent": "^3.0.0", - "got": "^11.8.6", + "got": "^13.0.0", "gray-matter": "^4.0.3", "handlebars": "^4.7.7", "has-ansi": "^4.0.1", @@ -80,9 +81,8 @@ "humanize-string": "^2.1.0", "import-lazy": "^4.0.0", "indent-string": "^4.0.0", - "ink": "^3.2.0", - "ink-divider": "^3.0.0", - "ink-spinner": "^4.0.3", + "ink": "^4.4.1", + "ink-spinner": "^5.0.0", "inquirer": "^7.3.3", "ip": "^1.1.8", "is-glob": "^4.0.3", @@ -101,38 +101,39 @@ "koa-static": "^5.0.0", "koa-websocket": "^6.0.0", "linewrap": "^0.2.1", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "log-symbols": "^4.1.0", "micromatch": "^4.0.5", "mimic-fn": "^3.1.0", "minimatch": "^7.1.1", "minimist": "^1.2.8", "moment": "^2.29.4", - "node-abi": "^3.45.0", + "node-fetch": "^3.3.2", "node-forge": "^1.3.1", "node-pty-prebuilt-multiarch": "^0.10.1-pre.5", "normalize-path": "^3.0.0", "normalize-url": "^5.3.1", - "open": "^8.4.2", + "open": "^9.1.0", "p-filter": "^2.1.0", "p-limit": "^3.1.0", "p-map": "^4.0.0", "p-props": "^4.0.0", - "p-queue": "^6.0.0", + "p-queue": "^7.4.1", "p-retry": "^4.6.2", "parse-duration": "^1.0.2", "parse-git-config": "^3.0.0", "path-is-inside": "^1.0.2", "pluralize": "^8.0.0", + "prop-types": "^15.8.1", "proper-lockfile": "^4.1.2", "proper-url-join": "^2.1.1", + "proxy-agent": "^6.3.1", "qs": "^6.11.2", "query-string": "^6.14.1", "react": "^18.2.0", "readdir-enhanced": "^6.0.4", - "request": "^2.88.2", - "request-promise": "^4.2.5", "respawn": "^2.6.0", + "semver": "^7.5.4", "slash": "^3.0.0", "slice-ansi": "^4.0.0", "source-map-support": "^0.5.21", @@ -153,7 +154,7 @@ "typescript-memoize": "^1.1.1", "uniqid": "^5.4.0", "unixify": "^1.0.0", - "unzipper": "^0.10.14", + "unzip-stream": "^0.3.1", "username": "^5.1.0", "uuid": "^9.0.0", "which": "^3.0.0", @@ -201,12 +202,12 @@ "@types/koa-router": "^7.4.4", "@types/koa-static": "^4.0.2", "@types/koa-websocket": "^5.0.7", - "@types/lodash": "^4.14.191", + "@types/lodash": "^4.14.200", + "@types/lodash-es": "^4.17.9", "@types/micromatch": "^4.0.2", "@types/minimist": "^1.2.2", "@types/mocha": "^10.0.1", "@types/node": "^18", - "@types/node-fetch": "^2.6.6", "@types/node-forge": "^1.3.1", "@types/normalize-path": "^3.0.0", "@types/parse-git-config": "^3.0.1", @@ -216,8 +217,6 @@ "@types/ps-tree": "^1.1.2", "@types/qs": "^6.9.8", "@types/react": "^18.0.28", - "@types/request": "^2.48.8", - "@types/request-promise": "^4.1.48", "@types/sinon": "^10.0.14", "@types/slice-ansi": "^4.0.0", "@types/split2": "^3.2.1", @@ -227,7 +226,7 @@ "@types/touch": "^3.1.2", "@types/tough-cookie": "^4.0.2", "@types/uniqid": "^5.3.2", - "@types/unzipper": "^0.10.6", + "@types/unzip-stream": "^0.3.2", "@types/uuid": "^9.0.1", "@types/which": "^1.3.2", "@types/wrap-ansi": "^3.0.0", @@ -247,7 +246,6 @@ "md5": "^2.3.0", "mocha": "^10.2.0", "nock": "^12.0.3", - "node-fetch": "^2.7.0", "nodemon": "^3.0.1", "nyc": "^15.1.0", "p-event": "^4.2.0", @@ -266,7 +264,7 @@ "utility-types": "^3.10.0" }, "scripts": { - "build": "mkdir -p build/src/template-string && peggy src/template-string/parser.pegjs --output build/src/template-string/parser.js", + "build": "mkdir -p build/src/template-string && peggy src/template-string/parser.pegjs --output build/src/template-string/parser.js --format es", "check-package-lock": "git diff-index --quiet HEAD -- package-lock.json || (echo 'package-lock.json is dirty!' && exit 1)", "check-types": "tsc -p . --noEmit", "clean": "shx rm -rf build", @@ -275,10 +273,10 @@ "lint": "eslint --ignore-pattern 'src/lib/**' --ext .ts src/ test/", "migration:generate": "typeorm migration:generate --config ormconfig.js -n", "_integ": "mocha --config .mocharc.integ.yml", - "integ-kind": "GARDEN_INTEG_TEST_MODE=local GARDEN_SKIP_TESTS=\"cluster-buildkit cluster-buildkit-rootless kaniko remote-only\" npm run _integ", - "integ-local": "GARDEN_INTEG_TEST_MODE=local GARDEN_SKIP_TESTS=\"remote-only\" npm run _integ", - "integ-minikube": "GARDEN_INTEG_TEST_MODE=local GARDEN_SKIP_TESTS=\"remote-only\" npm run _integ", - "integ-remote": "GARDEN_INTEG_TEST_MODE=remote GARDEN_SKIP_TESTS=local-only npm run _integ", + "integ-kind": "GARDEN_INTEG_TEST_MODE=local GARDEN_SKIP_TESTS=\"cluster-buildkit cluster-buildkit-rootless kaniko remote-only\" npm run _integ --", + "integ-local": "GARDEN_INTEG_TEST_MODE=local GARDEN_SKIP_TESTS=\"remote-only\" npm run _integ --", + "integ-minikube": "GARDEN_INTEG_TEST_MODE=local GARDEN_SKIP_TESTS=\"remote-only\" npm run _integ --", + "integ-remote": "GARDEN_INTEG_TEST_MODE=remote GARDEN_SKIP_TESTS=local-only npm run _integ --", "test": "mocha", "test:silly": "GARDEN_LOGGER_TYPE=basic GARDEN_LOG_LEVEL=silly mocha" }, diff --git a/core/src/actions/base.ts b/core/src/actions/base.ts index 255a8cf44e..e345dd2099 100644 --- a/core/src/actions/base.ts +++ b/core/src/actions/base.ts @@ -8,10 +8,9 @@ import chalk from "chalk" import titleize from "titleize" -import type { ConfigGraph, GetActionOpts, ResolvedConfigGraph } from "../graph/config-graph" +import type { ConfigGraph, GetActionOpts, ResolvedConfigGraph } from "../graph/config-graph.js" +import type { ActionReference, DeepPrimitiveMap } from "../config/common.js" import { - ActionReference, - DeepPrimitiveMap, includeGuideLink, joi, joiIdentifier, @@ -22,31 +21,30 @@ import { parseActionReference, createSchema, unusedApiVersionSchema, -} from "../config/common" -import { DOCS_BASE_URL } from "../constants" -import { dedent, naturalList, stableStringify } from "../util/string" -import { ActionVersion, hashStrings, ModuleVersion, TreeVersion, versionStringPrefix } from "../vcs/vcs" -import type { BuildAction, ResolvedBuildAction } from "./build" -import type { ActionKind } from "../plugin/action-types" +} from "../config/common.js" +import { DOCS_BASE_URL } from "../constants.js" +import { dedent, naturalList, stableStringify } from "../util/string.js" +import type { ModuleVersion, TreeVersion, ActionVersion } from "../vcs/vcs.js" +import { hashStrings, versionStringPrefix } from "../vcs/vcs.js" +import type { BuildAction, ResolvedBuildAction } from "./build.js" +import type { ActionKind } from "../plugin/action-types.js" import pathIsInside from "path-is-inside" -import { actionOutputsSchema } from "../plugin/handlers/base/base" -import type { GraphResult, GraphResults } from "../graph/results" -import type { RunResult } from "../plugin/base" +import { actionOutputsSchema } from "../plugin/handlers/base/base.js" +import type { GraphResult, GraphResults } from "../graph/results.js" +import type { RunResult } from "../plugin/base.js" import { Memoize } from "typescript-memoize" import cloneDeep from "fast-copy" -import { flatten, fromPairs, isString, memoize, omit, sortBy } from "lodash" -import { ActionConfigContext, ActionSpecContext } from "../config/template-contexts/actions" +import { flatten, fromPairs, isString, memoize, omit, sortBy } from "lodash-es" +import { ActionConfigContext, ActionSpecContext } from "../config/template-contexts/actions.js" import { relative } from "path" -import { InternalError } from "../exceptions" -import { +import { InternalError } from "../exceptions.js" +import type { Action, ActionConfig, ActionDependency, - actionKinds, ActionMode, ActionModes, ActionReferenceMap, - actionStateTypes, ActionStatus, ActionWrapperParams, BaseActionConfig, @@ -55,16 +53,18 @@ import { GetOutputValueType, ResolvedAction, ResolvedActionWrapperParams, -} from "./types" -import { baseInternalFieldsSchema, varfileDescription } from "../config/base" -import { PickTypeByKind } from "../graph/config-graph" -import { DeployAction } from "./deploy" -import { TestAction } from "./test" -import { RunAction } from "./run" -import { createActionLog, Log } from "../logger/log-entry" -import { joinWithPosix } from "../util/fs" -import { LinkedSource } from "../config-store/local" -import { BaseActionTaskParams, ExecuteTask } from "../tasks/base" +} from "./types.js" +import { actionKinds, actionStateTypes } from "./types.js" +import { baseInternalFieldsSchema, varfileDescription } from "../config/base.js" +import type { PickTypeByKind } from "../graph/config-graph.js" +import type { DeployAction } from "./deploy.js" +import type { TestAction } from "./test.js" +import type { RunAction } from "./run.js" +import type { Log } from "../logger/log-entry.js" +import { createActionLog } from "../logger/log-entry.js" +import { joinWithPosix } from "../util/fs.js" +import type { LinkedSource } from "../config-store/local.js" +import type { BaseActionTaskParams, ExecuteTask } from "../tasks/base.js" // TODO: split this file diff --git a/core/src/actions/build.ts b/core/src/actions/build.ts index 1e422306ba..185fee8fce 100644 --- a/core/src/actions/build.ts +++ b/core/src/actions/build.ts @@ -7,17 +7,11 @@ */ import { join } from "path" -import { - ActionReference, - createSchema, - includeGuideLink, - joi, - joiSparseArray, - joiUserIdentifier, -} from "../config/common" -import { ActionConfigContext } from "../config/template-contexts/actions" -import type { GraphResult, GraphResults } from "../graph/results" -import { dedent } from "../util/string" +import type { ActionReference } from "../config/common.js" +import { createSchema, includeGuideLink, joi, joiSparseArray, joiUserIdentifier } from "../config/common.js" +import { ActionConfigContext } from "../config/template-contexts/actions.js" +import type { GraphResult, GraphResults } from "../graph/results.js" +import { dedent } from "../util/string.js" import type { BaseActionConfig, ResolvedActionWrapperParams, @@ -27,22 +21,16 @@ import type { ExecutedAction, ResolvedAction, GetOutputValueType, -} from "./types" -import { - baseActionConfigSchema, - BaseAction, - includeExcludeSchema, - actionReferenceToString, - ResolvedActionExtension, - ExecutedActionExtension, -} from "./base" -import { ResolvedConfigGraph } from "../graph/config-graph" -import { ActionVersion } from "../vcs/vcs" +} from "./types.js" +import type { ResolvedActionExtension, ExecutedActionExtension } from "./base.js" +import { baseActionConfigSchema, BaseAction, includeExcludeSchema, actionReferenceToString } from "./base.js" +import type { ResolvedConfigGraph } from "../graph/config-graph.js" +import type { ActionVersion } from "../vcs/vcs.js" import { Memoize } from "typescript-memoize" -import { DEFAULT_BUILD_TIMEOUT_SEC } from "../constants" -import { createBuildTask } from "../tasks/build" -import { BaseActionTaskParams, ExecuteTask } from "../tasks/base" -import { ResolveActionTask } from "../tasks/resolve-action" +import { DEFAULT_BUILD_TIMEOUT_SEC } from "../constants.js" +import { createBuildTask } from "../tasks/build.js" +import type { BaseActionTaskParams, ExecuteTask } from "../tasks/base.js" +import { ResolveActionTask } from "../tasks/resolve-action.js" export interface BuildCopyFrom { build: string diff --git a/core/src/actions/deploy.ts b/core/src/actions/deploy.ts index d67d116c7c..cf0a70e135 100644 --- a/core/src/actions/deploy.ts +++ b/core/src/actions/deploy.ts @@ -6,20 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { memoize } from "lodash" -import { joi } from "../config/common" -import { - BaseRuntimeActionConfig, - baseRuntimeActionConfigSchema, - ExecutedRuntimeAction, - ResolvedRuntimeAction, - RuntimeAction, -} from "./base" -import { Action, BaseActionConfig } from "./types" -import { DEFAULT_DEPLOY_TIMEOUT_SEC } from "../constants" -import { createDeployTask } from "../tasks/deploy" -import { BaseActionTaskParams, ExecuteTask } from "../tasks/base" -import { ResolveActionTask } from "../tasks/resolve-action" +import { memoize } from "lodash-es" +import { joi } from "../config/common.js" +import type { BaseRuntimeActionConfig } from "./base.js" +import { baseRuntimeActionConfigSchema, ExecutedRuntimeAction, ResolvedRuntimeAction, RuntimeAction } from "./base.js" +import type { Action, BaseActionConfig } from "./types.js" +import { DEFAULT_DEPLOY_TIMEOUT_SEC } from "../constants.js" +import { createDeployTask } from "../tasks/deploy.js" +import type { BaseActionTaskParams, ExecuteTask } from "../tasks/base.js" +import { ResolveActionTask } from "../tasks/resolve-action.js" export type DeployActionConfig = BaseRuntimeActionConfig<"Deploy", N, S> diff --git a/core/src/actions/helpers.ts b/core/src/actions/helpers.ts index e52fbbc43a..145761d8f3 100644 --- a/core/src/actions/helpers.ts +++ b/core/src/actions/helpers.ts @@ -7,25 +7,33 @@ */ import chalk from "chalk" -import { fromPairs, memoize } from "lodash" -import { joi } from "../config/common" -import { Garden } from "../garden" -import { createActionLog, Log } from "../logger/log-entry" -import { renderDivider } from "../logger/util" -import { getLinkedSources } from "../util/ext-source-util" -import { buildActionConfigSchema, ExecutedBuildAction, isBuildAction, ResolvedBuildAction } from "./build" -import { deployActionConfigSchema, ExecutedDeployAction, isDeployAction, ResolvedDeployAction } from "./deploy" -import { ExecutedRunAction, isRunAction, ResolvedRunAction, runActionConfigSchema } from "./run" -import { ExecutedTestAction, isTestAction, ResolvedTestAction, testActionConfigSchema } from "./test" -import type { Action, ActionState, ExecuteActionParams, Executed, ResolveActionParams, ResolvedAction } from "./types" -import { ActionRouter } from "../router/router" -import { ResolvedConfigGraph } from "../graph/config-graph" +import { fromPairs, memoize } from "lodash-es" +import { joi } from "../config/common.js" +import type { Garden } from "../garden.js" +import type { Log } from "../logger/log-entry.js" +import { createActionLog } from "../logger/log-entry.js" +import { renderDivider } from "../logger/util.js" +import { getLinkedSources } from "../util/ext-source-util.js" +import { buildActionConfigSchema, ExecutedBuildAction, isBuildAction, ResolvedBuildAction } from "./build.js" +import { deployActionConfigSchema, ExecutedDeployAction, isDeployAction, ResolvedDeployAction } from "./deploy.js" +import { ExecutedRunAction, isRunAction, ResolvedRunAction, runActionConfigSchema } from "./run.js" +import { ExecutedTestAction, isTestAction, ResolvedTestAction, testActionConfigSchema } from "./test.js" +import type { + Action, + ActionState, + ExecuteActionParams, + Executed, + ResolveActionParams, + ResolvedAction, +} from "./types.js" +import type { ActionRouter } from "../router/router.js" +import type { ResolvedConfigGraph } from "../graph/config-graph.js" import { relative, sep } from "path" -import { makeActionCompletePayload } from "../events/util" -import { ActionStatusPayload } from "../events/action-status-events" -import { BuildStatusForEventPayload } from "../plugin/handlers/Build/get-status" -import { DeployStatusForEventPayload } from "../types/service" -import { RunStatusForEventPayload } from "../plugin/plugin" +import { makeActionCompletePayload } from "../events/util.js" +import type { ActionStatusPayload } from "../events/action-status-events.js" +import type { BuildStatusForEventPayload } from "../plugin/handlers/Build/get-status.js" +import type { DeployStatusForEventPayload } from "../types/service.js" +import type { RunStatusForEventPayload } from "../plugin/plugin.js" /** * Creates a corresponding Resolved version of the given Action, given the additional parameters needed. diff --git a/core/src/actions/run.ts b/core/src/actions/run.ts index 167f316186..90d3427cae 100644 --- a/core/src/actions/run.ts +++ b/core/src/actions/run.ts @@ -6,20 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { memoize } from "lodash" -import { joi } from "../config/common" -import { - BaseRuntimeActionConfig, - baseRuntimeActionConfigSchema, - ExecutedRuntimeAction, - ResolvedRuntimeAction, - RuntimeAction, -} from "./base" -import { Action, BaseActionConfig } from "./types" -import { DEFAULT_RUN_TIMEOUT_SEC } from "../constants" -import { createRunTask } from "../tasks/run" -import { BaseActionTaskParams, ExecuteTask } from "../tasks/base" -import { ResolveActionTask } from "../tasks/resolve-action" +import { memoize } from "lodash-es" +import { joi } from "../config/common.js" +import type { BaseRuntimeActionConfig } from "./base.js" +import { baseRuntimeActionConfigSchema, ExecutedRuntimeAction, ResolvedRuntimeAction, RuntimeAction } from "./base.js" +import type { Action, BaseActionConfig } from "./types.js" +import { DEFAULT_RUN_TIMEOUT_SEC } from "../constants.js" +import { createRunTask } from "../tasks/run.js" +import type { BaseActionTaskParams, ExecuteTask } from "../tasks/base.js" +import { ResolveActionTask } from "../tasks/resolve-action.js" export type RunActionConfig = BaseRuntimeActionConfig<"Run", N, S> diff --git a/core/src/actions/test.ts b/core/src/actions/test.ts index 608d2cd5d4..6ee23ea5bb 100644 --- a/core/src/actions/test.ts +++ b/core/src/actions/test.ts @@ -6,20 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { memoize } from "lodash" -import { joi } from "../config/common" -import { - BaseRuntimeActionConfig, - baseRuntimeActionConfigSchema, - ExecutedRuntimeAction, - ResolvedRuntimeAction, - RuntimeAction, -} from "./base" -import { Action, BaseActionConfig } from "./types" -import { DEFAULT_TEST_TIMEOUT_SEC } from "../constants" -import { BaseActionTaskParams, ExecuteTask } from "../tasks/base" -import { createTestTask } from "../tasks/test" -import { ResolveActionTask } from "../tasks/resolve-action" +import { memoize } from "lodash-es" +import { joi } from "../config/common.js" +import type { BaseRuntimeActionConfig } from "./base.js" +import { baseRuntimeActionConfigSchema, ExecutedRuntimeAction, ResolvedRuntimeAction, RuntimeAction } from "./base.js" +import type { Action, BaseActionConfig } from "./types.js" +import { DEFAULT_TEST_TIMEOUT_SEC } from "../constants.js" +import type { BaseActionTaskParams, ExecuteTask } from "../tasks/base.js" +import { createTestTask } from "../tasks/test.js" +import { ResolveActionTask } from "../tasks/resolve-action.js" export type TestActionConfig = BaseRuntimeActionConfig<"Test", N, S> diff --git a/core/src/actions/types.ts b/core/src/actions/types.ts index abb4d64cf9..2e7f6aadcd 100644 --- a/core/src/actions/types.ts +++ b/core/src/actions/types.ts @@ -7,24 +7,24 @@ */ import type { ValuesType } from "utility-types" -import type { ConfigGraph, ResolvedConfigGraph } from "../graph/config-graph" -import type { ActionReference, DeepPrimitiveMap } from "../config/common" -import type { ModuleVersion, TreeVersion } from "../vcs/vcs" -import type { BuildAction, BuildActionConfig, ExecutedBuildAction, ResolvedBuildAction } from "./build" -import type { DeployAction, DeployActionConfig, ExecutedDeployAction, ResolvedDeployAction } from "./deploy" -import type { ExecutedRunAction, ResolvedRunAction, RunAction, RunActionConfig } from "./run" -import type { ExecutedTestAction, ResolvedTestAction, TestAction, TestActionConfig } from "./test" -import type { ActionKind } from "../plugin/action-types" -import type { GraphResults } from "../graph/results" -import type { BaseAction } from "./base" -import type { ValidResultType } from "../tasks/base" -import type { BaseGardenResource, GardenResourceInternalFields } from "../config/base" -import type { LinkedSource } from "../config-store/local" -import { GardenApiVersion } from "../constants" +import type { ConfigGraph, ResolvedConfigGraph } from "../graph/config-graph.js" +import type { ActionReference, DeepPrimitiveMap } from "../config/common.js" +import type { ModuleVersion, TreeVersion } from "../vcs/vcs.js" +import type { BuildAction, BuildActionConfig, ExecutedBuildAction, ResolvedBuildAction } from "./build.js" +import type { DeployAction, DeployActionConfig, ExecutedDeployAction, ResolvedDeployAction } from "./deploy.js" +import type { ExecutedRunAction, ResolvedRunAction, RunAction, RunActionConfig } from "./run.js" +import type { ExecutedTestAction, ResolvedTestAction, TestAction, TestActionConfig } from "./test.js" +import type { ActionKind } from "../plugin/action-types.js" +import type { GraphResults } from "../graph/results.js" +import type { BaseAction } from "./base.js" +import type { ValidResultType } from "../tasks/base.js" +import type { BaseGardenResource, GardenResourceInternalFields } from "../config/base.js" +import type { LinkedSource } from "../config-store/local.js" +import type { GardenApiVersion } from "../constants.js" // TODO: split this file -export type { ActionKind } from "../plugin/action-types" +export type { ActionKind } from "../plugin/action-types.js" export const actionKinds: ActionKind[] = ["Build", "Deploy", "Run", "Test"] export const actionKindsLower = actionKinds.map((k) => k.toLowerCase()) diff --git a/core/src/analytics/analytics.ts b/core/src/analytics/analytics.ts index 08d312ec82..a460828186 100644 --- a/core/src/analytics/analytics.ts +++ b/core/src/analytics/analytics.ts @@ -6,28 +6,28 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import codenamize = require("@codenamize/codenamize") +import codenamize from "@codenamize/codenamize" import { platform, release } from "os" -import ci = require("ci-info") -import { uniq } from "lodash" -import { AnalyticsGlobalConfig } from "../config-store/global" -import { getPackageVersion, sleep, getDurationMsec } from "../util/util" -import { SEGMENT_PROD_API_KEY, SEGMENT_DEV_API_KEY, gardenEnv } from "../constants" -import { Log } from "../logger/log-entry" -import hasha = require("hasha") -import { Garden } from "../garden" -import { AnalyticsCommandResult, AnalyticsEventType } from "./analytics-types" +import ci from "ci-info" +import { uniq } from "lodash-es" +import type { AnalyticsGlobalConfig } from "../config-store/global.js" +import { getPackageVersion, sleep, getDurationMsec } from "../util/util.js" +import { SEGMENT_PROD_API_KEY, SEGMENT_DEV_API_KEY, gardenEnv } from "../constants.js" +import type { Log } from "../logger/log-entry.js" +import hasha from "hasha" +import type { Garden } from "../garden.js" +import type { AnalyticsCommandResult, AnalyticsEventType } from "./analytics-types.js" import dedent from "dedent" -import { getGitHubUrl } from "../docs/common" -import { Profile } from "../util/profiling" -import { ModuleConfig } from "../config/module" -import { UserResult } from "@garden-io/platform-api-types" -import { uuidv4 } from "../util/random" -import { GardenError, NodeJSErrnoException, StackTraceMetadata } from "../exceptions" -import { ActionConfigMap } from "../actions/types" -import { actionKinds } from "../actions/types" -import { getResultErrorProperties } from "./helpers" -import segmentClient = require("analytics-node") +import { getGitHubUrl } from "../docs/common.js" +import { Profile } from "../util/profiling.js" +import type { ModuleConfig } from "../config/module.js" +import type { UserResult } from "@garden-io/platform-api-types" +import { uuidv4 } from "../util/random.js" +import type { GardenError, NodeJSErrnoException, StackTraceMetadata } from "../exceptions.js" +import type { ActionConfigMap } from "../actions/types.js" +import { actionKinds } from "../actions/types.js" +import { getResultErrorProperties } from "./helpers.js" +import segmentClient from "analytics-node" const CI_USER = "ci-user" @@ -322,7 +322,7 @@ export class AnalyticsHandler { for (const kind of actionKinds) { countByActionKind[kind] = 0 - for (const name in actionConfigs[kind]) { + for (const _name in actionConfigs[kind]) { countByActionKind[kind] = countByActionKind[kind] + 1 actionsCount++ } diff --git a/core/src/analytics/helpers.ts b/core/src/analytics/helpers.ts index 5bb79f2b21..a033dd8eed 100644 --- a/core/src/analytics/helpers.ts +++ b/core/src/analytics/helpers.ts @@ -6,8 +6,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { GardenError, getStackTraceMetadata } from "../exceptions" -import { AnalyticsGardenError, AnalyticsGardenErrorDetail } from "./analytics" +import type { GardenError } from "../exceptions.js" +import { getStackTraceMetadata } from "../exceptions.js" +import type { AnalyticsGardenError, AnalyticsGardenErrorDetail } from "./analytics.js" function getErrorDetail(error: GardenError): AnalyticsGardenErrorDetail { const stackTrace = getStackTraceMetadata(error) diff --git a/core/src/build-staging/build-staging.ts b/core/src/build-staging/build-staging.ts index 92613ad64f..3dc01ed1d8 100644 --- a/core/src/build-staging/build-staging.ts +++ b/core/src/build-staging/build-staging.ts @@ -7,19 +7,21 @@ */ import { isAbsolute, join, resolve, relative, parse, basename } from "path" -import { emptyDir, ensureDir, mkdirp, pathExists, remove } from "fs-extra" -import { ConfigurationError, InternalError, isErrnoException } from "../exceptions" -import { normalizeRelativePath, joinWithPosix } from "../util/fs" -import { Log } from "../logger/log-entry" -import { Profile } from "../util/profiling" +import fsExtra from "fs-extra" +const { emptyDir, ensureDir, mkdirp, pathExists, remove } = fsExtra +import { ConfigurationError, InternalError, isErrnoException } from "../exceptions.js" +import { normalizeRelativePath, joinWithPosix } from "../util/fs.js" +import type { Log } from "../logger/log-entry.js" +import { Profile } from "../util/profiling.js" import async from "async" import chalk from "chalk" import { hasMagic } from "glob" -import { FileStatsHelper, syncFileAsync, cloneFile, scanDirectoryForClone, MappedPaths } from "./helpers" -import { difference } from "lodash" +import type { MappedPaths } from "./helpers.js" +import { FileStatsHelper, syncFileAsync, cloneFile, scanDirectoryForClone } from "./helpers.js" +import { difference } from "lodash-es" import { unlink } from "fs" -import { BuildAction, BuildActionConfig } from "../actions/build" -import { ModuleConfig } from "../config/module" +import type { BuildAction, BuildActionConfig } from "../actions/build.js" +import type { ModuleConfig } from "../config/module.js" const fileSyncConcurrencyLimit = 100 diff --git a/core/src/build-staging/helpers.ts b/core/src/build-staging/helpers.ts index f52041f633..06d6e6e984 100644 --- a/core/src/build-staging/helpers.ts +++ b/core/src/build-staging/helpers.ts @@ -8,13 +8,15 @@ import { readlink, copyFile, constants, utimes } from "fs" import readdir from "@jsdevtools/readdir-enhanced" -import { splitLast } from "../util/string" +import { splitLast } from "../util/string.js" import { Minimatch } from "minimatch" import { isAbsolute, parse, basename, resolve } from "path" -import { ensureDir, Stats, lstat, remove } from "fs-extra" -import { FilesystemError, InternalError, isErrnoException } from "../exceptions" -import async, { AsyncResultCallback } from "async" -import { round } from "lodash" +import fsExtra from "fs-extra" +const { ensureDir, Stats, lstat, remove } = fsExtra +import { FilesystemError, InternalError, isErrnoException } from "../exceptions.js" +import type { AsyncResultCallback } from "async" +import async from "async" +import { round } from "lodash-es" import { promisify } from "util" export type MappedPaths = [string, string][] @@ -110,7 +112,7 @@ export const cloneFileAsync = promisify(cloneFile) as (params: CloneFileParams) interface CopyParams { from: string to: string - sourceStats: Stats + sourceStats: fsExtra.Stats done: SyncCallback statsHelper: FileStatsHelper resolvedSymlinkPaths?: string[] @@ -161,7 +163,7 @@ export async function scanDirectoryForClone(root: string, pattern?: string): Pro // No wildcards, so we just read and return the entire set of files from the source directory. if (!pattern) { - return (await readdir(root, { deep: true, filter: (stats) => stats.isFile() })).map((f) => [f, f]) + return (await readdir.readdirAsync(root, { deep: true, filter: (stats) => stats.isFile() })).map((f) => [f, f]) } // We have a pattern to match, so we go into the more complex routine. @@ -177,7 +179,7 @@ export async function scanDirectoryForClone(root: string, pattern?: string): Pro const mm = new Minimatch(pattern) // TODO: ignore links that points outside of `root` - await readdir(root, { + await readdir.readdirAsync(root, { deep: true, sep: "/", filter: (stats) => { @@ -225,7 +227,7 @@ export class ExtendedStats extends Stats { this.target = target } - static fromStats(stats: Stats, path: string, target?: ExtendedStats | null) { + static fromStats(stats: fsExtra.Stats, path: string, target?: ExtendedStats | null) { const o = new ExtendedStats(path, target) Object.assign(o, stats) return o @@ -251,7 +253,7 @@ type ExtendedStatsCallback = (err: NodeJS.ErrnoException | null, stats: Extended * The idea is for an instance to be used for the duration of e.g. one sync flow, but not for longer. */ export class FileStatsHelper { - private lstatCache: { [path: string]: Stats } + private lstatCache: { [path: string]: fsExtra.Stats } private extendedStatCache: { [path: string]: ExtendedStats | null } constructor() { @@ -262,7 +264,7 @@ export class FileStatsHelper { /** * Calls fs.lstat on the given path, and caches the result. */ - lstat(path: string, cb: (err: NodeJS.ErrnoException | null, stats: Stats) => void) { + lstat(path: string, cb: (err: NodeJS.ErrnoException | null, stats: fsExtra.Stats) => void) { if (this.lstatCache[path]) { cb(null, this.lstatCache[path]) } else { diff --git a/core/src/build-staging/rsync.ts b/core/src/build-staging/rsync.ts index 58dfb76216..e734c79e68 100644 --- a/core/src/build-staging/rsync.ts +++ b/core/src/build-staging/rsync.ts @@ -7,11 +7,13 @@ */ import { relative, parse } from "path" -import { ensureDir } from "fs-extra" -import { normalizeLocalRsyncPath, joinWithPosix } from "../util/fs" -import { syncWithOptions } from "../util/sync" -import { BuildStaging, SyncParams } from "./build-staging" -import { validateInstall } from "../util/validateInstall" +import fsExtra from "fs-extra" +const { ensureDir } = fsExtra +import { normalizeLocalRsyncPath, joinWithPosix } from "../util/fs.js" +import { syncWithOptions } from "../util/sync.js" +import type { SyncParams } from "./build-staging.js" +import { BuildStaging } from "./build-staging.js" +import { validateInstall } from "../util/validateInstall.js" export const minRsyncVersion = "3.1.0" const versionRegex = /rsync\s+version\s+v?(\d+.\d+.\d+)/ diff --git a/core/src/cache.ts b/core/src/cache.ts index 64eebbd774..8cd680f682 100644 --- a/core/src/cache.ts +++ b/core/src/cache.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { isEqual } from "lodash" +import { isEqual } from "lodash-es" import { normalize, parse, sep } from "path" -import { ParameterError, NotFoundError } from "./exceptions" -import { Log } from "./logger/log-entry" +import { ParameterError, NotFoundError } from "./exceptions.js" +import type { Log } from "./logger/log-entry.js" export type CacheKey = string[] export type CacheContext = string[] diff --git a/core/src/cli/autocomplete.ts b/core/src/cli/autocomplete.ts index bdc94e4082..8efa120535 100644 --- a/core/src/cli/autocomplete.ts +++ b/core/src/cli/autocomplete.ts @@ -7,11 +7,13 @@ */ import { Memoize } from "typescript-memoize" -import { Command, CommandGroup } from "../commands/base" -import { ConfigDump } from "../garden" -import { Log } from "../logger/log-entry" -import { parseCliArgs, pickCommand } from "./helpers" -import { globalDisplayOptions, globalGardenInstanceOptions, globalOptions, Parameter, ParameterObject } from "./params" +import type { Command } from "../commands/base.js" +import { CommandGroup } from "../commands/base.js" +import type { ConfigDump } from "../garden.js" +import type { Log } from "../logger/log-entry.js" +import { parseCliArgs, pickCommand } from "./helpers.js" +import type { Parameter, ParameterObject } from "./params.js" +import { globalDisplayOptions, globalGardenInstanceOptions, globalOptions } from "./params.js" import stringify from "json-stringify-safe" export interface AutocompleteSuggestion { diff --git a/core/src/cli/cli.ts b/core/src/cli/cli.ts index c0ce68e042..0c38a154e5 100644 --- a/core/src/cli/cli.ts +++ b/core/src/cli/cli.ts @@ -6,17 +6,22 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { intersection, mapValues, sortBy } from "lodash" +import { intersection, mapValues, sortBy } from "lodash-es" import { resolve, join } from "path" import chalk from "chalk" -import { pathExists } from "fs-extra" -import { getBuiltinCommands } from "../commands/commands" -import { shutdown, getPackageVersion, getCloudDistributionName } from "../util/util" -import { Command, CommandResult, BuiltinArgs, CommandGroup } from "../commands/base" -import { PluginError, toGardenError, GardenError } from "../exceptions" -import { Garden, GardenOpts, makeDummyGarden } from "../garden" -import { getRootLogger, getTerminalWriterType, LogLevel, parseLogLevel, RootLogger } from "../logger/logger" -import { FileWriter, FileWriterConfig } from "../logger/writers/file-writer" +import fsExtra from "fs-extra" +const { pathExists } = fsExtra +import { getBuiltinCommands } from "../commands/commands.js" +import { shutdown, getPackageVersion, getCloudDistributionName } from "../util/util.js" +import type { Command, CommandResult, BuiltinArgs } from "../commands/base.js" +import { CommandGroup } from "../commands/base.js" +import type { GardenError } from "../exceptions.js" +import { PluginError, toGardenError } from "../exceptions.js" +import type { GardenOpts } from "../garden.js" +import { Garden, makeDummyGarden } from "../garden.js" +import { getRootLogger, getTerminalWriterType, LogLevel, parseLogLevel, RootLogger } from "../logger/logger.js" +import type { FileWriterConfig } from "../logger/writers/file-writer.js" +import { FileWriter } from "../logger/writers/file-writer.js" import { checkForUpdates, @@ -30,28 +35,31 @@ import { checkRequirements, renderCommandErrors, cliStyles, -} from "./helpers" -import { ParameterObject, globalOptions, OUTPUT_RENDERERS, GlobalOptions, ParameterValues } from "./params" -import { ProjectConfig } from "../config/project" -import { ERROR_LOG_FILENAME, DEFAULT_GARDEN_DIR_NAME, LOGS_DIR_NAME, gardenEnv } from "../constants" -import { generateBasicDebugInfoReport } from "../commands/get/get-debug-info" -import { AnalyticsHandler } from "../analytics/analytics" -import { GardenPluginReference } from "../plugin/plugin" -import { CloudApi, CloudApiFactory, CloudApiTokenRefreshError, getGardenCloudDomain } from "../cloud/api" -import { findProjectConfig } from "../config/base" -import { pMemoizeDecorator } from "../lib/p-memoize" -import { getCustomCommands } from "../commands/custom" -import { Profile } from "../util/profiling" -import { prepareDebugLogfiles } from "./debug-logs" -import { Log } from "../logger/log-entry" -import { dedent } from "../util/string" -import { GardenProcess, GlobalConfigStore } from "../config-store/global" -import { registerProcess, waitForOutputFlush } from "../process" -import { uuidv4 } from "../util/random" -import { withSessionContext } from "../util/open-telemetry/context" -import { wrapActiveSpan } from "../util/open-telemetry/spans" -import { JsonFileWriter } from "../logger/writers/json-file-writer" -import minimist from "minimist" +} from "./helpers.js" +import type { ParameterObject, GlobalOptions, ParameterValues } from "./params.js" +import { globalOptions, OUTPUT_RENDERERS } from "./params.js" +import type { ProjectConfig } from "../config/project.js" +import { ERROR_LOG_FILENAME, DEFAULT_GARDEN_DIR_NAME, LOGS_DIR_NAME, gardenEnv } from "../constants.js" +import { generateBasicDebugInfoReport } from "../commands/get/get-debug-info.js" +import type { AnalyticsHandler } from "../analytics/analytics.js" +import type { GardenPluginReference } from "../plugin/plugin.js" +import type { CloudApiFactory } from "../cloud/api.js" +import { CloudApi, CloudApiTokenRefreshError, getGardenCloudDomain } from "../cloud/api.js" +import { findProjectConfig } from "../config/base.js" +import { pMemoizeDecorator } from "../lib/p-memoize.js" +import { getCustomCommands } from "../commands/custom.js" +import { Profile } from "../util/profiling.js" +import { prepareDebugLogfiles } from "./debug-logs.js" +import type { Log } from "../logger/log-entry.js" +import { dedent } from "../util/string.js" +import type { GardenProcess } from "../config-store/global.js" +import { GlobalConfigStore } from "../config-store/global.js" +import { registerProcess, waitForOutputFlush } from "../process.js" +import { uuidv4 } from "../util/random.js" +import { withSessionContext } from "../util/open-telemetry/context.js" +import { wrapActiveSpan } from "../util/open-telemetry/spans.js" +import { JsonFileWriter } from "../logger/writers/json-file-writer.js" +import type minimist from "minimist" export interface RunOutput { argv: any diff --git a/core/src/cli/command-line.ts b/core/src/cli/command-line.ts index c5b8d374dc..4b336b2c50 100644 --- a/core/src/cli/command-line.ts +++ b/core/src/cli/command-line.ts @@ -8,24 +8,25 @@ import chalk from "chalk" import type { Key } from "ink" -import { max } from "lodash" +import { max } from "lodash-es" import { resolve } from "path" import sliceAnsi from "slice-ansi" import stringArgv from "string-argv" import stringWidth from "string-width" -import { BuiltinArgs, Command, CommandGroup, CommandResult, PrepareParams } from "../commands/base" -import { ServeCommand } from "../commands/serve" -import { GlobalConfigStore } from "../config-store/global" -import { findProjectConfig } from "../config/base" -import { GardenError, toGardenError } from "../exceptions" -import { Garden } from "../garden" -import type { Log } from "../logger/log-entry" -import { getTermWidth, renderDivider } from "../logger/util" -import type { GardenInstanceManager } from "../server/instance-manager" -import { TypedEventEmitter } from "../util/events" -import { uuidv4 } from "../util/random" -import { sleep } from "../util/util" -import { AutocompleteSuggestion } from "./autocomplete" +import type { BuiltinArgs, Command, CommandResult, PrepareParams } from "../commands/base.js" +import { CommandGroup } from "../commands/base.js" +import type { ServeCommand } from "../commands/serve.js" +import { GlobalConfigStore } from "../config-store/global.js" +import { findProjectConfig } from "../config/base.js" +import { GardenError, toGardenError } from "../exceptions.js" +import type { Garden } from "../garden.js" +import type { Log } from "../logger/log-entry.js" +import { getTermWidth, renderDivider } from "../logger/util.js" +import type { GardenInstanceManager } from "../server/instance-manager.js" +import { TypedEventEmitter } from "../util/events.js" +import { uuidv4 } from "../util/random.js" +import { sleep } from "../util/util.js" +import type { AutocompleteSuggestion } from "./autocomplete.js" import { getOtherCommands, getPopularCommands, @@ -34,11 +35,11 @@ import { processCliArgs, renderCommandErrors, renderCommands, -} from "./helpers" -import type { GlobalOptions, ParameterObject, ParameterValues } from "./params" -import { bindActiveContext, withSessionContext } from "../util/open-telemetry/context" -import { wrapActiveSpan } from "../util/open-telemetry/spans" -import { DEFAULT_BROWSER_DIVIDER_WIDTH } from "../constants" +} from "./helpers.js" +import type { GlobalOptions, ParameterObject, ParameterValues } from "./params.js" +import { bindActiveContext, withSessionContext } from "../util/open-telemetry/context.js" +import { wrapActiveSpan } from "../util/open-telemetry/spans.js" +import { DEFAULT_BROWSER_DIVIDER_WIDTH } from "../constants.js" const defaultMessageDuration = 3000 const commandLinePrefix = chalk.yellow("🌼 > ") diff --git a/core/src/cli/debug-logs.ts b/core/src/cli/debug-logs.ts index 4ed7e522f7..5c08642b40 100644 --- a/core/src/cli/debug-logs.ts +++ b/core/src/cli/debug-logs.ts @@ -7,10 +7,11 @@ */ import moment from "moment" -import { lstat, pathExists, remove } from "fs-extra" +import fsExtra from "fs-extra" +const { lstat, pathExists, remove } = fsExtra import { join } from "path" -import { Log } from "../logger/log-entry" -import { listDirectory } from "../util/fs" +import type { Log } from "../logger/log-entry.js" +import { listDirectory } from "../util/fs.js" const logfileExpiryDays = 7 diff --git a/core/src/cli/helpers.ts b/core/src/cli/helpers.ts index 6fff15c0dd..606a5d9025 100644 --- a/core/src/cli/helpers.ts +++ b/core/src/cli/helpers.ts @@ -7,31 +7,34 @@ */ import chalk from "chalk" -import ci = require("ci-info") -import dotenv = require("dotenv") -import { pathExists } from "fs-extra" -import { range, sortBy, max, isEqual, mapValues, pickBy, memoize, indexOf } from "lodash" +import ci from "ci-info" +import dotenv from "dotenv" +import fsExtra from "fs-extra" +const { pathExists } = fsExtra +import { range, sortBy, max, isEqual, mapValues, pickBy, memoize, indexOf } from "lodash-es" import moment from "moment" import { platform, release } from "os" import qs from "qs" import stringWidth from "string-width" -import { maxBy, zip } from "lodash" -import { Logger } from "../logger/logger" - -import { ParameterValues, Parameter, ParameterObject, globalDisplayOptions } from "./params" -import { GardenError, ParameterError, RuntimeError, toGardenError } from "../exceptions" -import { getPackageVersion, removeSlice } from "../util/util" -import { Log } from "../logger/log-entry" -import { STATIC_DIR, gardenEnv, ERROR_LOG_FILENAME } from "../constants" -import { printWarningMessage } from "../logger/util" -import { GlobalConfigStore } from "../config-store/global" -import { got } from "../util/http" -import minimist = require("minimist") -import { renderTable, tablePresets, naturalList, deline } from "../util/string" -import { globalOptions, GlobalOptions } from "./params" -import { BuiltinArgs, Command, CommandGroup } from "../commands/base" -import { DeepPrimitiveMap } from "../config/common" -import { validateGitInstall } from "../vcs/vcs" +import { maxBy, zip } from "lodash-es" +import type { Logger } from "../logger/logger.js" + +import type { ParameterValues, Parameter, ParameterObject } from "./params.js" +import { globalDisplayOptions } from "./params.js" +import { GardenError, ParameterError, RuntimeError, toGardenError } from "../exceptions.js" +import { getPackageVersion, removeSlice } from "../util/util.js" +import type { Log } from "../logger/log-entry.js" +import { STATIC_DIR, gardenEnv, ERROR_LOG_FILENAME } from "../constants.js" +import { printWarningMessage } from "../logger/util.js" +import type { GlobalConfigStore } from "../config-store/global.js" +import { got } from "../util/http.js" +import minimist from "minimist" +import { renderTable, tablePresets, naturalList, deline } from "../util/string.js" +import type { GlobalOptions } from "./params.js" +import { globalOptions } from "./params.js" +import type { BuiltinArgs, Command, CommandGroup } from "../commands/base.js" +import type { DeepPrimitiveMap } from "../config/common.js" +import { validateGitInstall } from "../vcs/vcs.js" export const cliStyles = { heading: (str: string) => chalk.white.bold(str), diff --git a/core/src/cli/params.ts b/core/src/cli/params.ts index d882a55b2d..fa25e9040f 100644 --- a/core/src/cli/params.ts +++ b/core/src/cli/params.ts @@ -6,22 +6,23 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import Joi = require("@hapi/joi") +import type Joi from "@hapi/joi" import stripAnsi from "strip-ansi" import stringify from "json-stringify-safe" -import { joi, DeepPrimitiveMap } from "../config/common" -import { ParameterError } from "../exceptions" -import { parseEnvironment } from "../config/project" -import { getLogLevelChoices, LOGGER_TYPES, LogLevel } from "../logger/logger" -import { dedent, deline } from "../util/string" -import chalk = require("chalk") -import { safeDumpYaml } from "../util/serialization" +import type { DeepPrimitiveMap } from "../config/common.js" +import { joi } from "../config/common.js" +import { ParameterError } from "../exceptions.js" +import { parseEnvironment } from "../config/project.js" +import { getLogLevelChoices, LOGGER_TYPES, LogLevel } from "../logger/logger.js" +import { dedent, deline } from "../util/string.js" +import chalk from "chalk" +import { safeDumpYaml } from "../util/serialization.js" import { resolve } from "path" -import { isArray } from "lodash" -import { gardenEnv } from "../constants" -import { envSupportsEmoji } from "../logger/util" -import { ConfigDump } from "../garden" +import { isArray } from "lodash-es" +import { gardenEnv } from "../constants.js" +import { envSupportsEmoji } from "../logger/util.js" +import type { ConfigDump } from "../garden.js" export const OUTPUT_RENDERERS = { json: (data: DeepPrimitiveMap) => { diff --git a/core/src/cloud/api.ts b/core/src/cloud/api.ts index c86e14744c..c0071accd4 100644 --- a/core/src/cloud/api.ts +++ b/core/src/cloud/api.ts @@ -6,16 +6,17 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { IncomingHttpHeaders } from "http" +import type { IncomingHttpHeaders } from "http" -import { got, GotHeaders, GotHttpError, GotJsonOptions, GotResponse } from "../util/http" -import { CloudApiError, InternalError } from "../exceptions" -import { Log } from "../logger/log-entry" -import { DEFAULT_GARDEN_CLOUD_DOMAIN, gardenEnv } from "../constants" +import type { GotHeaders, GotJsonOptions, GotResponse } from "../util/http.js" +import { got, GotHttpError } from "../util/http.js" +import { CloudApiError, InternalError } from "../exceptions.js" +import type { Log } from "../logger/log-entry.js" +import { DEFAULT_GARDEN_CLOUD_DOMAIN, gardenEnv } from "../constants.js" import { Cookie } from "tough-cookie" -import { cloneDeep, isObject } from "lodash" -import { dedent, deline } from "../util/string" -import { +import { cloneDeep, isObject } from "lodash-es" +import { dedent, deline } from "../util/string.js" +import type { BaseResponse, CreateEphemeralClusterResponse, CreateProjectsForRepoResponse, @@ -25,13 +26,13 @@ import { GetProjectResponse, ListProjectsResponse, } from "@garden-io/platform-api-types" -import { getCloudDistributionName, getCloudLogSectionName, getPackageVersion } from "../util/util" -import { CommandInfo } from "../plugin-context" -import type { ClientAuthToken, GlobalConfigStore } from "../config-store/global" +import { getCloudDistributionName, getCloudLogSectionName, getPackageVersion } from "../util/util.js" +import type { CommandInfo } from "../plugin-context.js" +import type { ClientAuthToken, GlobalConfigStore } from "../config-store/global.js" import { add } from "date-fns" -import { LogLevel } from "../logger/logger" -import { makeAuthHeader } from "./auth" -import { StringMap } from "../config/common" +import { LogLevel } from "../logger/logger.js" +import { makeAuthHeader } from "./auth.js" +import type { StringMap } from "../config/common.js" import chalk from "chalk" const gardenClientName = "garden-core" @@ -175,7 +176,7 @@ export type CloudApiFactory = (params: CloudApiFactoryParams) => Promise { + (error, retryCount) => { if (error) { // Intentionally skipping search params in case they contain tokens or sensitive data. - const href = options.url.origin + options.url.pathname + const href = url.origin + url.pathname const description = retryDescription || `Request` retryLog = retryLog || this.log.createLog({ fixLevel: LogLevel.debug }) const statusCodeDescription = error.code ? ` (status code ${error.code})` : `` @@ -546,10 +549,9 @@ export class CloudApi { ], } } else { - requestOptions.retry = 0 // Disables retry + requestOptions.retry = undefined // Disables retry } - const url = new URL(`/${this.apiPrefix}/${stripLeadingSlash(path)}`, this.domain) const res = await got(url.href, requestOptions) if (!isObject(res.body)) { diff --git a/core/src/cloud/auth.ts b/core/src/cloud/auth.ts index b8e33cc523..f1594267c6 100644 --- a/core/src/cloud/auth.ts +++ b/core/src/cloud/auth.ts @@ -7,16 +7,16 @@ */ import open from "open" -import { Server } from "http" +import type { Server } from "http" import Koa from "koa" -import { EventEmitter2 } from "eventemitter2" -import bodyParser = require("koa-bodyparser") -import Router = require("koa-router") -import getPort = require("get-port") -import { Log } from "../logger/log-entry" -import { AuthTokenResponse } from "./api" -import { isArray } from "lodash" -import { gardenEnv } from "../constants" +import type EventEmitter2 from "eventemitter2" +import bodyParser from "koa-bodyparser" +import Router from "koa-router" +import getPort from "get-port" +import type { Log } from "../logger/log-entry.js" +import type { AuthTokenResponse } from "./api.js" +import { isArray } from "lodash-es" +import { gardenEnv } from "../constants.js" // If a GARDEN_AUTH_TOKEN is present and Garden is NOT running from a workflow runner pod, // switch to ci-token authentication method. @@ -31,11 +31,11 @@ export class AuthRedirectServer { private server?: Server private app?: Koa private enterpriseDomain: string - private events: EventEmitter2 + private events: EventEmitter2.EventEmitter2 constructor( enterpriseDomain: string, - events: EventEmitter2, + events: EventEmitter2.EventEmitter2, log: Log, public port?: number ) { diff --git a/core/src/cloud/buffered-event-stream.ts b/core/src/cloud/buffered-event-stream.ts index efce8dc94e..44c0fe9643 100644 --- a/core/src/cloud/buffered-event-stream.ts +++ b/core/src/cloud/buffered-event-stream.ts @@ -8,17 +8,18 @@ import stringify from "json-stringify-safe" -import { Events, EventName, GardenEventAnyListener, shouldStreamEvent } from "../events/events" -import { LogMetadata, Log, LogEntry, LogContext } from "../logger/log-entry" -import { got } from "../util/http" - -import type { LogLevel } from "../logger/logger" -import type { Garden } from "../garden" -import type { CloudSession } from "./api" -import { getSection } from "../logger/renderers" -import { registerCleanupFunction } from "../util/util" -import { makeAuthHeader } from "./auth" -import { toGardenError } from "../exceptions" +import type { Events, EventName, GardenEventAnyListener } from "../events/events.js" +import { shouldStreamEvent } from "../events/events.js" +import type { LogMetadata, Log, LogEntry, LogContext } from "../logger/log-entry.js" +import { got } from "../util/http.js" + +import type { LogLevel } from "../logger/logger.js" +import type { Garden } from "../garden.js" +import type { CloudSession } from "./api.js" +import { getSection } from "../logger/renderers.js" +import { registerCleanupFunction } from "../util/util.js" +import { makeAuthHeader } from "./auth.js" +import { toGardenError } from "../exceptions.js" const maxFlushFail = 10 // How many consecutive failures to flush events on a loop before stopping entirely /** @@ -128,7 +129,7 @@ export class BufferedEventStream { private workflowRunUid: string | undefined private garden: Garden private closed: boolean - private intervalId: NodeJS.Timer | null = null + private intervalId: NodeJS.Timeout | null = null private bufferedEvents: StreamEvent[] private bufferedLogEntries: LogEntryEventPayload[] private eventListener: GardenEventAnyListener diff --git a/core/src/cloud/workflow-lifecycle.ts b/core/src/cloud/workflow-lifecycle.ts index 62696ad8c3..2a8c986f29 100644 --- a/core/src/cloud/workflow-lifecycle.ts +++ b/core/src/cloud/workflow-lifecycle.ts @@ -6,15 +6,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { WorkflowConfig, makeRunConfig } from "../config/workflow" -import { Log } from "../logger/log-entry" -import { CloudApiError } from "../exceptions" -import { gardenEnv } from "../constants" -import { Garden } from "../garden" -import { ApiFetchResponse } from "./api" -import { CreateWorkflowRunResponse } from "@garden-io/platform-api-types" -import { dedent } from "../util/string" -import { GotHttpError } from "../util/http" +import type { WorkflowConfig } from "../config/workflow.js" +import { makeRunConfig } from "../config/workflow.js" +import type { Log } from "../logger/log-entry.js" +import { CloudApiError } from "../exceptions.js" +import { gardenEnv } from "../constants.js" +import type { Garden } from "../garden.js" +import type { ApiFetchResponse } from "./api.js" +import type { CreateWorkflowRunResponse } from "@garden-io/platform-api-types" +import { dedent } from "../util/string.js" +import { GotHttpError } from "../util/http.js" export interface RegisterWorkflowRunParams { workflowConfig: WorkflowConfig diff --git a/core/src/commands/base.ts b/core/src/commands/base.ts index 309de94883..13770eea55 100644 --- a/core/src/commands/base.ts +++ b/core/src/commands/base.ts @@ -6,56 +6,46 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import Joi from "@hapi/joi" +import type Joi from "@hapi/joi" import chalk from "chalk" import dedent from "dedent" import stripAnsi from "strip-ansi" -import { flatMap, fromPairs, mapValues, pickBy, size } from "lodash" -import { - PrimitiveMap, - createSchema, - joi, - joiArray, - joiIdentifierMap, - joiStringMap, - joiVariables, -} from "../config/common" -import { RuntimeError, GardenError, InternalError, toGardenError } from "../exceptions" -import { Garden } from "../garden" -import { Log } from "../logger/log-entry" -import { LoggerType, LoggerBase, LoggerConfigBase, eventLogLevel, LogLevel } from "../logger/logger" -import { printFooter } from "../logger/util" +import { flatMap, fromPairs, mapValues, pickBy, size } from "lodash-es" +import type { PrimitiveMap } from "../config/common.js" +import { createSchema, joi, joiArray, joiIdentifierMap, joiStringMap, joiVariables } from "../config/common.js" +import type { GardenError } from "../exceptions.js" +import { RuntimeError, InternalError, toGardenError } from "../exceptions.js" +import type { Garden } from "../garden.js" +import type { Log } from "../logger/log-entry.js" +import type { LoggerType, LoggerBase, LoggerConfigBase, LogLevel } from "../logger/logger.js" +import { eventLogLevel } from "../logger/logger.js" +import { printFooter } from "../logger/util.js" import { getCloudDistributionName, getCloudLogSectionName, getDurationMsec, getPackageVersion, userPrompt, -} from "../util/util" -import { renderOptions, renderCommands, renderArguments, cliStyles, optionsWithAliasValues } from "../cli/helpers" -import { GlobalOptions, ParameterValues, ParameterObject, globalOptions } from "../cli/params" -import { GardenCli } from "../cli/cli" -import { CommandLine } from "../cli/command-line" -import { SolveResult } from "../graph/solver" -import { waitForOutputFlush } from "../process" -import { BufferedEventStream } from "../cloud/buffered-event-stream" -import { CommandInfo } from "../plugin-context" -import type { GardenServer } from "../server/server" -import { CloudSession } from "../cloud/api" -import { - DeployState, - ForwardablePort, - ServiceIngress, - deployStates, - forwardablePortSchema, - serviceIngressSchema, -} from "../types/service" -import { GraphResultMapWithoutTask, GraphResultWithoutTask, GraphResults } from "../graph/results" -import { splitFirst } from "../util/string" -import { ActionMode } from "../actions/types" -import { AnalyticsHandler } from "../analytics/analytics" -import { withSessionContext } from "../util/open-telemetry/context" -import { wrapActiveSpan } from "../util/open-telemetry/spans" +} from "../util/util.js" +import { renderOptions, renderCommands, renderArguments, cliStyles, optionsWithAliasValues } from "../cli/helpers.js" +import type { GlobalOptions, ParameterValues, ParameterObject } from "../cli/params.js" +import { globalOptions } from "../cli/params.js" +import type { GardenCli } from "../cli/cli.js" +import type { CommandLine } from "../cli/command-line.js" +import type { SolveResult } from "../graph/solver.js" +import { waitForOutputFlush } from "../process.js" +import { BufferedEventStream } from "../cloud/buffered-event-stream.js" +import type { CommandInfo } from "../plugin-context.js" +import type { GardenServer } from "../server/server.js" +import type { CloudSession } from "../cloud/api.js" +import type { DeployState, ForwardablePort, ServiceIngress } from "../types/service.js" +import { deployStates, forwardablePortSchema, serviceIngressSchema } from "../types/service.js" +import type { GraphResultMapWithoutTask, GraphResultWithoutTask, GraphResults } from "../graph/results.js" +import { splitFirst } from "../util/string.js" +import type { ActionMode } from "../actions/types.js" +import type { AnalyticsHandler } from "../analytics/analytics.js" +import { withSessionContext } from "../util/open-telemetry/context.js" +import { wrapActiveSpan } from "../util/open-telemetry/spans.js" export interface CommandConstructor { new (parent?: CommandGroup): Command @@ -287,7 +277,6 @@ export abstract class Command< return withSessionContext({ sessionId, parentSessionId }, () => wrapActiveSpan(this.getFullName(), async () => { const commandStartTime = new Date() - const server = this.server let garden = parentGarden @@ -327,7 +316,6 @@ export abstract class Command< if (cloudSession) { const distroName = getCloudDistributionName(cloudSession.api.domain) - const userId = (await cloudSession.api.getProfile()).id const commandResultUrl = cloudSession.api.getCommandResultUrl({ sessionId: garden.sessionId, projectId: cloudSession.projectId, diff --git a/core/src/commands/build.ts b/core/src/commands/build.ts index 78990f6177..30107756c7 100644 --- a/core/src/commands/build.ts +++ b/core/src/commands/build.ts @@ -6,24 +6,18 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { - Command, - CommandResult, - CommandParams, - handleProcessResults, - ProcessCommandResult, - processCommandResultSchema, -} from "./base" +import type { CommandResult, CommandParams, ProcessCommandResult } from "./base.js" +import { Command, handleProcessResults, processCommandResultSchema } from "./base.js" import dedent from "dedent" -import { printHeader } from "../logger/util" -import { flatten } from "lodash" -import { BuildTask } from "../tasks/build" -import { StringsParameter, BooleanParameter } from "../cli/params" -import { uniqByName } from "../util/util" -import { deline } from "../util/string" -import { isBuildAction } from "../actions/build" -import { watchParameter, watchRemovedWarning } from "./helpers" -import { warnOnLinkedActions } from "../actions/helpers" +import { printHeader } from "../logger/util.js" +import { flatten } from "lodash-es" +import { BuildTask } from "../tasks/build.js" +import { StringsParameter, BooleanParameter } from "../cli/params.js" +import { uniqByName } from "../util/util.js" +import { deline } from "../util/string.js" +import { isBuildAction } from "../actions/build.js" +import { warnOnLinkedActions } from "../actions/helpers.js" +import { watchParameter, watchRemovedWarning } from "./util/watch-parameter.js" const buildArgs = { names: new StringsParameter({ diff --git a/core/src/commands/cloud/cloud.ts b/core/src/commands/cloud/cloud.ts index eba18000b4..2033f8d6de 100644 --- a/core/src/commands/cloud/cloud.ts +++ b/core/src/commands/cloud/cloud.ts @@ -6,11 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { dedent } from "../../util/string" -import { CommandGroup } from "../base" -import { GroupsCommand } from "./groups/groups" -import { SecretsCommand } from "./secrets/secrets" -import { UsersCommand } from "./users/users" +import { dedent } from "../../util/string.js" +import { CommandGroup } from "../base.js" +import { GroupsCommand } from "./groups/groups.js" +import { SecretsCommand } from "./secrets/secrets.js" +import { UsersCommand } from "./users/users.js" export class CloudCommand extends CommandGroup { name = "cloud" diff --git a/core/src/commands/cloud/groups/groups.ts b/core/src/commands/cloud/groups/groups.ts index f56a5ba932..67ada8489e 100644 --- a/core/src/commands/cloud/groups/groups.ts +++ b/core/src/commands/cloud/groups/groups.ts @@ -6,15 +6,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ListGroupsResponse } from "@garden-io/platform-api-types" +import type { ListGroupsResponse } from "@garden-io/platform-api-types" import chalk from "chalk" -import { sortBy } from "lodash" -import { StringsParameter } from "../../../cli/params" -import { ConfigurationError } from "../../../exceptions" -import { printHeader } from "../../../logger/util" -import { dedent, deline, renderTable } from "../../../util/string" -import { Command, CommandGroup, CommandParams, CommandResult } from "../../base" -import { noApiMsg, applyFilter } from "../helpers" +import { sortBy } from "lodash-es" +import { StringsParameter } from "../../../cli/params.js" +import { ConfigurationError } from "../../../exceptions.js" +import { printHeader } from "../../../logger/util.js" +import { dedent, deline, renderTable } from "../../../util/string.js" +import type { CommandParams, CommandResult } from "../../base.js" +import { Command, CommandGroup } from "../../base.js" +import { noApiMsg, applyFilter } from "../helpers.js" // TODO: Add created at and updated at timestamps. Need to add it to the API response first. interface Groups { diff --git a/core/src/commands/cloud/helpers.ts b/core/src/commands/cloud/helpers.ts index 481f0c0ad2..35bace43f4 100644 --- a/core/src/commands/cloud/helpers.ts +++ b/core/src/commands/cloud/helpers.ts @@ -6,17 +6,17 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { SecretResult as SecretResultApi, UserResult as UserResultApi } from "@garden-io/platform-api-types" -import { dedent } from "../../util/string" +import type { SecretResult as SecretResultApi, UserResult as UserResultApi } from "@garden-io/platform-api-types" +import { dedent } from "../../util/string.js" -import { Log } from "../../logger/log-entry" -import { capitalize } from "lodash" +import type { Log } from "../../logger/log-entry.js" +import { capitalize } from "lodash-es" import minimatch from "minimatch" import pluralize from "pluralize" import chalk from "chalk" -import { CommandError, toGardenError } from "../../exceptions" -import { CommandResult } from "../base" -import { userPrompt } from "../../util/util" +import { CommandError, toGardenError } from "../../exceptions.js" +import type { CommandResult } from "../base.js" +import { userPrompt } from "../../util/util.js" export interface DeleteResult { id: string | number diff --git a/core/src/commands/cloud/secrets/secrets-create.ts b/core/src/commands/cloud/secrets/secrets-create.ts index 0097a25938..f8d3f9f10c 100644 --- a/core/src/commands/cloud/secrets/secrets-create.ts +++ b/core/src/commands/cloud/secrets/secrets-create.ts @@ -6,19 +6,22 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { CommandError, ConfigurationError, CloudApiError, GardenError } from "../../../exceptions" -import { CreateSecretResponse } from "@garden-io/platform-api-types" -import { readFile } from "fs-extra" - -import { printHeader } from "../../../logger/util" -import { Command, CommandParams, CommandResult } from "../../base" -import { ApiCommandError, handleBulkOperationResult, makeSecretFromResponse, noApiMsg, SecretResult } from "../helpers" -import { dedent, deline } from "../../../util/string" -import { IntegerParameter, PathParameter, StringParameter, StringsParameter } from "../../../cli/params" -import { StringMap } from "../../../config/common" -import dotenv = require("dotenv") -import { getCloudDistributionName } from "../../../util/util" -import { CloudProject } from "../../../cloud/api" +import { CommandError, ConfigurationError, CloudApiError, GardenError } from "../../../exceptions.js" +import type { CreateSecretResponse } from "@garden-io/platform-api-types" +import fsExtra from "fs-extra" +const { readFile } = fsExtra + +import { printHeader } from "../../../logger/util.js" +import type { CommandParams, CommandResult } from "../../base.js" +import { Command } from "../../base.js" +import type { ApiCommandError, SecretResult } from "../helpers.js" +import { handleBulkOperationResult, makeSecretFromResponse, noApiMsg } from "../helpers.js" +import { dedent, deline } from "../../../util/string.js" +import { IntegerParameter, PathParameter, StringParameter, StringsParameter } from "../../../cli/params.js" +import type { StringMap } from "../../../config/common.js" +import dotenv from "dotenv" +import { getCloudDistributionName } from "../../../util/util.js" +import type { CloudProject } from "../../../cloud/api.js" export const secretsCreateArgs = { secrets: new StringsParameter({ diff --git a/core/src/commands/cloud/secrets/secrets-delete.ts b/core/src/commands/cloud/secrets/secrets-delete.ts index 2febd24d73..ab4d4e6382 100644 --- a/core/src/commands/cloud/secrets/secrets-delete.ts +++ b/core/src/commands/cloud/secrets/secrets-delete.ts @@ -6,13 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { BaseResponse } from "@garden-io/platform-api-types" -import { StringsParameter } from "../../../cli/params" -import { CommandError, ConfigurationError, GardenError } from "../../../exceptions" -import { printHeader } from "../../../logger/util" -import { dedent, deline } from "../../../util/string" -import { Command, CommandParams, CommandResult } from "../../base" -import { ApiCommandError, confirmDelete, DeleteResult, handleBulkOperationResult, noApiMsg } from "../helpers" +import type { BaseResponse } from "@garden-io/platform-api-types" +import { StringsParameter } from "../../../cli/params.js" +import { CommandError, ConfigurationError, GardenError } from "../../../exceptions.js" +import { printHeader } from "../../../logger/util.js" +import { dedent, deline } from "../../../util/string.js" +import type { CommandParams, CommandResult } from "../../base.js" +import { Command } from "../../base.js" +import type { ApiCommandError, DeleteResult } from "../helpers.js" +import { confirmDelete, handleBulkOperationResult, noApiMsg } from "../helpers.js" export const secretsDeleteArgs = { ids: new StringsParameter({ diff --git a/core/src/commands/cloud/secrets/secrets-list.ts b/core/src/commands/cloud/secrets/secrets-list.ts index a955e45bf0..b1abc31091 100644 --- a/core/src/commands/cloud/secrets/secrets-list.ts +++ b/core/src/commands/cloud/secrets/secrets-list.ts @@ -7,19 +7,21 @@ */ import { stringify } from "query-string" -import { ConfigurationError, CloudApiError } from "../../../exceptions" -import { ListSecretsResponse } from "@garden-io/platform-api-types" - -import { printHeader } from "../../../logger/util" -import { dedent, deline, renderTable } from "../../../util/string" -import { Command, CommandParams, CommandResult } from "../../base" -import { applyFilter, makeSecretFromResponse, noApiMsg, SecretResult } from "../helpers" +import { ConfigurationError, CloudApiError } from "../../../exceptions.js" +import type { ListSecretsResponse } from "@garden-io/platform-api-types" + +import { printHeader } from "../../../logger/util.js" +import { dedent, deline, renderTable } from "../../../util/string.js" +import type { CommandParams, CommandResult } from "../../base.js" +import { Command } from "../../base.js" +import type { SecretResult } from "../helpers.js" +import { applyFilter, makeSecretFromResponse, noApiMsg } from "../helpers.js" import chalk from "chalk" -import { sortBy } from "lodash" -import { StringsParameter } from "../../../cli/params" -import { getCloudDistributionName } from "../../../util/util" -import { CloudApi, CloudProject } from "../../../cloud/api" -import { Log } from "../../../logger/log-entry" +import { sortBy } from "lodash-es" +import { StringsParameter } from "../../../cli/params.js" +import { getCloudDistributionName } from "../../../util/util.js" +import type { CloudApi, CloudProject } from "../../../cloud/api.js" +import type { Log } from "../../../logger/log-entry.js" export const fetchAllSecrets = async (api: CloudApi, projectId: string, log: Log): Promise => { let page = 0 diff --git a/core/src/commands/cloud/secrets/secrets-update.ts b/core/src/commands/cloud/secrets/secrets-update.ts index e5cca679f7..b3727b5005 100644 --- a/core/src/commands/cloud/secrets/secrets-update.ts +++ b/core/src/commands/cloud/secrets/secrets-update.ts @@ -6,38 +6,39 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { CreateSecretResponse, UpdateSecretResponse } from "@garden-io/platform-api-types" -import { pickBy, sortBy, uniqBy } from "lodash" -import { BooleanParameter, PathParameter, StringParameter, StringsParameter } from "../../../cli/params" -import { CloudProject } from "../../../cloud/api" -import { StringMap } from "../../../config/common" -import { CloudApiError, CommandError, ConfigurationError, GardenError } from "../../../exceptions" -import { printHeader } from "../../../logger/util" -import { dedent, deline } from "../../../util/string" -import { getCloudDistributionName } from "../../../util/util" -import { Command, CommandParams, CommandResult } from "../../base" -import { ApiCommandError, SecretResult, handleBulkOperationResult, makeSecretFromResponse, noApiMsg } from "../helpers" -import dotenv = require("dotenv") -import { readFile } from "fs-extra" -import { fetchAllSecrets } from "./secrets-list" -import { Log } from "../../../logger/log-entry" +import type { CreateSecretResponse, UpdateSecretResponse } from "@garden-io/platform-api-types" +import { pickBy, sortBy, uniqBy } from "lodash-es" +import { BooleanParameter, PathParameter, StringParameter, StringsParameter } from "../../../cli/params.js" +import type { CloudProject } from "../../../cloud/api.js" +import type { StringMap } from "../../../config/common.js" +import { CloudApiError, CommandError, ConfigurationError, GardenError } from "../../../exceptions.js" +import { printHeader } from "../../../logger/util.js" +import { dedent, deline } from "../../../util/string.js" +import { getCloudDistributionName } from "../../../util/util.js" +import type { CommandParams, CommandResult } from "../../base.js" +import { Command } from "../../base.js" +import type { ApiCommandError, SecretResult } from "../helpers.js" +import { handleBulkOperationResult, makeSecretFromResponse, noApiMsg } from "../helpers.js" +import dotenv from "dotenv" +import fsExtra from "fs-extra" +const { readFile } = fsExtra +import { fetchAllSecrets } from "./secrets-list.js" +import type { Log } from "../../../logger/log-entry.js" export type UpdateSecretBody = SecretResult & { newValue: string } -export async function getSecretsToUpdateByName({ +export async function getSecretsToUpdateByName({ allSecrets, envName, userId, secretsToUpdateArgs, log, - args, }: { allSecrets: SecretResult[] envName?: string userId?: string secretsToUpdateArgs: StringMap log: Log - args: T }): Promise> { const filteredSecrets = sortBy(allSecrets, "name") .filter((s) => (envName ? s.environment?.name === envName : true)) @@ -221,7 +222,6 @@ export class SecretsUpdateCommand extends Command { userId, secretsToUpdateArgs, log, - args, }) if (isUpsert) { diff --git a/core/src/commands/cloud/secrets/secrets.ts b/core/src/commands/cloud/secrets/secrets.ts index 25694897bf..b316c39b7d 100644 --- a/core/src/commands/cloud/secrets/secrets.ts +++ b/core/src/commands/cloud/secrets/secrets.ts @@ -6,11 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { CommandGroup } from "../../base" -import { SecretsCreateCommand } from "./secrets-create" -import { SecretsDeleteCommand } from "./secrets-delete" -import { SecretsListCommand } from "./secrets-list" -import { SecretsUpdateCommand } from "./secrets-update" +import { CommandGroup } from "../../base.js" +import { SecretsCreateCommand } from "./secrets-create.js" +import { SecretsDeleteCommand } from "./secrets-delete.js" +import { SecretsListCommand } from "./secrets-list.js" +import { SecretsUpdateCommand } from "./secrets-update.js" export class SecretsCommand extends CommandGroup { name = "secrets" diff --git a/core/src/commands/cloud/users/users-create.ts b/core/src/commands/cloud/users/users-create.ts index 0f24826cb0..924cf76a44 100644 --- a/core/src/commands/cloud/users/users-create.ts +++ b/core/src/commands/cloud/users/users-create.ts @@ -6,22 +6,25 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { CommandError, ConfigurationError, GardenError } from "../../../exceptions" -import { +import { CommandError, ConfigurationError, GardenError } from "../../../exceptions.js" +import type { CreateUserBulkRequest, CreateUserBulkResponse, UserResult as UserResultApi, } from "@garden-io/platform-api-types" -import { readFile } from "fs-extra" - -import { printHeader } from "../../../logger/util" -import { Command, CommandParams, CommandResult } from "../../base" -import { ApiCommandError, handleBulkOperationResult, makeUserFromResponse, noApiMsg, UserResult } from "../helpers" -import { dedent, deline } from "../../../util/string" -import { PathParameter, StringsParameter } from "../../../cli/params" -import { StringMap } from "../../../config/common" -import { chunk } from "lodash" -import dotenv = require("dotenv") +import fsExtra from "fs-extra" +const { readFile } = fsExtra + +import { printHeader } from "../../../logger/util.js" +import type { CommandParams, CommandResult } from "../../base.js" +import { Command } from "../../base.js" +import type { ApiCommandError, UserResult } from "../helpers.js" +import { handleBulkOperationResult, makeUserFromResponse, noApiMsg } from "../helpers.js" +import { dedent, deline } from "../../../util/string.js" +import { PathParameter, StringsParameter } from "../../../cli/params.js" +import type { StringMap } from "../../../config/common.js" +import { chunk } from "lodash-es" +import dotenv from "dotenv" import pMap from "p-map" // This is the limit set by the API. diff --git a/core/src/commands/cloud/users/users-delete.ts b/core/src/commands/cloud/users/users-delete.ts index f52368f2b6..6ebead8538 100644 --- a/core/src/commands/cloud/users/users-delete.ts +++ b/core/src/commands/cloud/users/users-delete.ts @@ -6,13 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { BaseResponse } from "@garden-io/platform-api-types" -import { StringsParameter } from "../../../cli/params" -import { CommandError, ConfigurationError, GardenError } from "../../../exceptions" -import { printHeader } from "../../../logger/util" -import { dedent, deline } from "../../../util/string" -import { Command, CommandParams, CommandResult } from "../../base" -import { ApiCommandError, confirmDelete, DeleteResult, handleBulkOperationResult, noApiMsg } from "../helpers" +import type { BaseResponse } from "@garden-io/platform-api-types" +import { StringsParameter } from "../../../cli/params.js" +import { CommandError, ConfigurationError, GardenError } from "../../../exceptions.js" +import { printHeader } from "../../../logger/util.js" +import { dedent, deline } from "../../../util/string.js" +import type { CommandParams, CommandResult } from "../../base.js" +import { Command } from "../../base.js" +import type { ApiCommandError, DeleteResult } from "../helpers.js" +import { confirmDelete, handleBulkOperationResult, noApiMsg } from "../helpers.js" export const usersDeleteArgs = { ids: new StringsParameter({ diff --git a/core/src/commands/cloud/users/users-list.ts b/core/src/commands/cloud/users/users-list.ts index 20784be06d..1943cff349 100644 --- a/core/src/commands/cloud/users/users-list.ts +++ b/core/src/commands/cloud/users/users-list.ts @@ -6,18 +6,20 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ConfigurationError, CloudApiError } from "../../../exceptions" -import { ListUsersResponse } from "@garden-io/platform-api-types" - -import { printHeader } from "../../../logger/util" -import { dedent, deline, renderTable } from "../../../util/string" -import { Command, CommandParams, CommandResult } from "../../base" -import { applyFilter, makeUserFromResponse, noApiMsg, UserResult } from "../helpers" +import { ConfigurationError, CloudApiError } from "../../../exceptions.js" +import type { ListUsersResponse } from "@garden-io/platform-api-types" + +import { printHeader } from "../../../logger/util.js" +import { dedent, deline, renderTable } from "../../../util/string.js" +import type { CommandParams, CommandResult } from "../../base.js" +import { Command } from "../../base.js" +import type { UserResult } from "../helpers.js" +import { applyFilter, makeUserFromResponse, noApiMsg } from "../helpers.js" import chalk from "chalk" -import { sortBy } from "lodash" -import { StringsParameter } from "../../../cli/params" -import { getCloudDistributionName } from "../../../util/util" -import { CloudProject } from "../../../cloud/api" +import { sortBy } from "lodash-es" +import { StringsParameter } from "../../../cli/params.js" +import { getCloudDistributionName } from "../../../util/util.js" +import type { CloudProject } from "../../../cloud/api.js" export const usersListOpts = { "filter-names": new StringsParameter({ diff --git a/core/src/commands/cloud/users/users.ts b/core/src/commands/cloud/users/users.ts index c65ecc56e7..594e4f4f34 100644 --- a/core/src/commands/cloud/users/users.ts +++ b/core/src/commands/cloud/users/users.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { CommandGroup } from "../../base" -import { UsersCreateCommand } from "./users-create" -import { UsersDeleteCommand } from "./users-delete" -import { UsersListCommand } from "./users-list" +import { CommandGroup } from "../../base.js" +import { UsersCreateCommand } from "./users-create.js" +import { UsersDeleteCommand } from "./users-delete.js" +import { UsersListCommand } from "./users-list.js" export class UsersCommand extends CommandGroup { name = "users" diff --git a/core/src/commands/commands.ts b/core/src/commands/commands.ts index 9b07be40b8..7e4f9b9d74 100644 --- a/core/src/commands/commands.ts +++ b/core/src/commands/commands.ts @@ -6,39 +6,40 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { BuildCommand } from "./build" -import { CloudCommand } from "./cloud/cloud" -import { Command, CommandGroup } from "./base" -import { CommunityCommand } from "./community" -import { ConfigCommand } from "./config/config" -import { CreateCommand } from "./create/create" -import { DeleteCommand } from "./delete" -import { DeployCommand } from "./deploy" -import { DevCommand } from "./dev" -import { ExecCommand } from "./exec" -import { GetCommand } from "./get/get" -import { LinkCommand } from "./link/link" -import { LoginCommand } from "./login" -import { LogOutCommand } from "./logout" -import { LogsCommand } from "./logs" -import { memoize } from "lodash" -import { OptionsCommand } from "./options" -import { PluginsCommand } from "./plugins" -import { PublishCommand } from "./publish" -import { RunCommand } from "./run" -import { WorkflowCommand } from "./workflow" -import { SelfUpdateCommand } from "./self-update" -import { ServeCommand } from "./serve" -import { SetCommand } from "./set" -import { SyncCommand } from "./sync/sync" -import { TestCommand } from "./test" -import { ToolsCommand } from "./tools" -import { UnlinkCommand } from "./unlink/unlink" -import { UpdateRemoteCommand } from "./update-remote/update-remote" -import { UtilCommand } from "./util/util" -import { ValidateCommand } from "./validate" -import { UpCommand } from "./up" -import { VersionCommand } from "./version" +import { BuildCommand } from "./build.js" +import { CloudCommand } from "./cloud/cloud.js" +import type { Command } from "./base.js" +import { CommandGroup } from "./base.js" +import { CommunityCommand } from "./community.js" +import { ConfigCommand } from "./config/config.js" +import { CreateCommand } from "./create/create.js" +import { DeleteCommand } from "./delete.js" +import { DeployCommand } from "./deploy.js" +import { DevCommand } from "./dev.js" +import { ExecCommand } from "./exec.js" +import { GetCommand } from "./get/get.js" +import { LinkCommand } from "./link/link.js" +import { LoginCommand } from "./login.js" +import { LogOutCommand } from "./logout.js" +import { LogsCommand } from "./logs.js" +import { memoize } from "lodash-es" +import { OptionsCommand } from "./options.js" +import { PluginsCommand } from "./plugins.js" +import { PublishCommand } from "./publish.js" +import { RunCommand } from "./run.js" +import { WorkflowCommand } from "./workflow.js" +import { SelfUpdateCommand } from "./self-update.js" +import { ServeCommand } from "./serve.js" +import { SetCommand } from "./set.js" +import { SyncCommand } from "./sync/sync.js" +import { TestCommand } from "./test.js" +import { ToolsCommand } from "./tools.js" +import { UnlinkCommand } from "./unlink/unlink.js" +import { UpdateRemoteCommand } from "./update-remote/update-remote.js" +import { UtilCommand } from "./util/util.js" +import { ValidateCommand } from "./validate.js" +import { UpCommand } from "./up.js" +import { VersionCommand } from "./version.js" export const getCoreCommands = (): (Command | CommandGroup)[] => [ new BuildCommand(), diff --git a/core/src/commands/community.ts b/core/src/commands/community.ts index 2ebb363bcb..68913ade12 100644 --- a/core/src/commands/community.ts +++ b/core/src/commands/community.ts @@ -6,9 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Command, CommandResult } from "./base" -import dedent = require("dedent") -import { exec } from "../util/util" +import type { CommandResult } from "./base.js" +import { Command } from "./base.js" +import dedent from "dedent" +import { exec } from "../util/util.js" export class CommunityCommand extends Command { name = "community" diff --git a/core/src/commands/config/config-analytics-enabled.ts b/core/src/commands/config/config-analytics-enabled.ts index 2714ee4900..b4cc8b5053 100644 --- a/core/src/commands/config/config-analytics-enabled.ts +++ b/core/src/commands/config/config-analytics-enabled.ts @@ -6,9 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Command, CommandParams, CommandResult } from "../base" -import dedent = require("dedent") -import { BooleanParameter } from "../../cli/params" +import type { CommandParams, CommandResult } from "../base.js" +import { Command } from "../base.js" +import dedent from "dedent" +import { BooleanParameter } from "../../cli/params.js" const configAnalyticsEnabledArgs = { enable: new BooleanParameter({ diff --git a/core/src/commands/config/config.ts b/core/src/commands/config/config.ts index fa3bff938d..dfbaa09a17 100644 --- a/core/src/commands/config/config.ts +++ b/core/src/commands/config/config.ts @@ -6,8 +6,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { CommandGroup } from "../base" -import { ConfigAnalyticsEnabled } from "./config-analytics-enabled" +import { CommandGroup } from "../base.js" +import { ConfigAnalyticsEnabled } from "./config-analytics-enabled.js" export class ConfigCommand extends CommandGroup { name = "config" diff --git a/core/src/commands/create/create-project.ts b/core/src/commands/create/create-project.ts index 0d22276a54..45949cb31f 100644 --- a/core/src/commands/create/create-project.ts +++ b/core/src/commands/create/create-project.ts @@ -8,18 +8,20 @@ import chalk from "chalk" import dedent from "dedent" -import { pathExists, writeFile, copyFile } from "fs-extra" -import { Command, CommandResult, CommandParams } from "../base" -import { printHeader } from "../../logger/util" -import { isDirectory } from "../../util/fs" -import { loadConfigResources } from "../../config/base" +import fsExtra from "fs-extra" +const { pathExists, writeFile, copyFile } = fsExtra +import type { CommandResult, CommandParams } from "../base.js" +import { Command } from "../base.js" +import { printHeader } from "../../logger/util.js" +import { isDirectory } from "../../util/fs.js" +import { loadConfigResources } from "../../config/base.js" import { resolve, basename, relative, join } from "path" -import { GardenError, ParameterError } from "../../exceptions" -import { addConfig } from "./helpers" -import { wordWrap } from "../../util/string" -import { PathParameter, StringParameter, BooleanParameter, StringOption } from "../../cli/params" -import { userPrompt } from "../../util/util" -import { DOCS_BASE_URL, GardenApiVersion } from "../../constants" +import { GardenError, ParameterError } from "../../exceptions.js" +import { addConfig } from "./helpers.js" +import { wordWrap } from "../../util/string.js" +import { PathParameter, StringParameter, BooleanParameter, StringOption } from "../../cli/params.js" +import { userPrompt } from "../../util/util.js" +import { DOCS_BASE_URL, GardenApiVersion } from "../../constants.js" const ignorefileName = ".gardenignore" const defaultIgnorefile = dedent` diff --git a/core/src/commands/create/create.ts b/core/src/commands/create/create.ts index 7b3a0425c2..be67a95650 100644 --- a/core/src/commands/create/create.ts +++ b/core/src/commands/create/create.ts @@ -6,8 +6,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { CommandGroup } from "../base" -import { CreateProjectCommand } from "./create-project" +import { CommandGroup } from "../base.js" +import { CreateProjectCommand } from "./create-project.js" export class CreateCommand extends CommandGroup { name = "create" diff --git a/core/src/commands/create/helpers.ts b/core/src/commands/create/helpers.ts index 2a0d6d7ec7..e01e35e644 100644 --- a/core/src/commands/create/helpers.ts +++ b/core/src/commands/create/helpers.ts @@ -6,7 +6,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { pathExists, readFile, writeFile } from "fs-extra" +import fsExtra from "fs-extra" +const { pathExists, readFile, writeFile } = fsExtra export async function addConfig(configPath: string, yaml: string) { let output = yaml diff --git a/core/src/commands/custom.ts b/core/src/commands/custom.ts index 672b054c1f..15d87dcf24 100644 --- a/core/src/commands/custom.ts +++ b/core/src/commands/custom.ts @@ -10,37 +10,28 @@ import chalk from "chalk" import execa from "execa" import { apply as jsonMerge } from "json-merge-patch" import cloneDeep from "fast-copy" -import { keyBy, mapValues, flatten } from "lodash" -import { parseCliArgs, prepareMinimistOpts } from "../cli/helpers" -import { - BooleanParameter, - globalOptions, - IntegerParameter, - Parameter, - ParameterObject, - StringParameter, -} from "../cli/params" -import { loadConfigResources } from "../config/base" -import { - CommandResource, - customCommandExecSchema, - customCommandGardenCommandSchema, - CustomCommandOption, - customCommandSchema, -} from "../config/command" -import { joi } from "../config/common" -import { CustomCommandContext } from "../config/template-contexts/custom-command" -import { validateWithPath } from "../config/validation" -import { ConfigurationError, GardenError, RuntimeError, InternalError, toGardenError } from "../exceptions" -import { resolveTemplateStrings } from "../template-string/template-string" -import { listDirectory, isConfigFilename } from "../util/fs" -import { Command, CommandParams, CommandResult, PrintHeaderParams } from "./base" -import { customMinimist } from "../lib/minimist" -import { removeSlice } from "../util/util" +import { keyBy, mapValues, flatten } from "lodash-es" +import { parseCliArgs, prepareMinimistOpts } from "../cli/helpers.js" +import type { Parameter, ParameterObject } from "../cli/params.js" +import { BooleanParameter, globalOptions, IntegerParameter, StringParameter } from "../cli/params.js" +import { loadConfigResources } from "../config/base.js" +import type { CommandResource, CustomCommandOption } from "../config/command.js" +import { customCommandExecSchema, customCommandGardenCommandSchema, customCommandSchema } from "../config/command.js" +import { joi } from "../config/common.js" +import { CustomCommandContext } from "../config/template-contexts/custom-command.js" +import { validateWithPath } from "../config/validation.js" +import type { GardenError } from "../exceptions.js" +import { ConfigurationError, RuntimeError, InternalError, toGardenError } from "../exceptions.js" +import { resolveTemplateStrings } from "../template-string/template-string.js" +import { listDirectory, isConfigFilename } from "../util/fs.js" +import type { CommandParams, CommandResult, PrintHeaderParams } from "./base.js" +import { Command } from "./base.js" +import { customMinimist } from "../lib/minimist.js" +import { removeSlice } from "../util/util.js" import { join } from "path" -import { getBuiltinCommands } from "./commands" -import { Log } from "../logger/log-entry" -import { getTracePropagationEnvVars } from "../util/open-telemetry/propagation" +import { getBuiltinCommands } from "./commands.js" +import type { Log } from "../logger/log-entry.js" +import { getTracePropagationEnvVars } from "../util/open-telemetry/propagation.js" function convertArgSpec(spec: CustomCommandOption) { const params = { @@ -163,8 +154,6 @@ export class CustomCommandWrapper extends Command { buffer: true, env: { ...process.env, - // Workaround for https://github.com/vercel/pkg/issues/897 - PKG_EXECPATH: "", ...(exec.env || {}), ...getTracePropagationEnvVars(), }, diff --git a/core/src/commands/delete.ts b/core/src/commands/delete.ts index 852451d8ab..86cde0a065 100644 --- a/core/src/commands/delete.ts +++ b/core/src/commands/delete.ts @@ -6,19 +6,21 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Command, CommandGroup, CommandParams, CommandResult } from "./base" +import type { CommandParams, CommandResult } from "./base.js" +import { Command, CommandGroup } from "./base.js" import dedent from "dedent" -import { printHeader } from "../logger/util" -import { EnvironmentStatusMap } from "../plugin/handlers/Provider/getEnvironmentStatus" -import { DeleteDeployTask, deletedDeployStatuses } from "../tasks/delete-deploy" -import { joi, joiIdentifierMap } from "../config/common" -import { environmentStatusSchema } from "../config/status" -import { BooleanParameter, StringsParameter } from "../cli/params" -import { deline } from "../util/string" -import { uniqByName } from "../util/util" -import { isDeployAction } from "../actions/deploy" -import { omit, mapValues } from "lodash" -import { DeployStatus, DeployStatusMap, getDeployStatusSchema } from "../plugin/handlers/Deploy/get-status" +import { printHeader } from "../logger/util.js" +import type { EnvironmentStatusMap } from "../plugin/handlers/Provider/getEnvironmentStatus.js" +import { DeleteDeployTask, deletedDeployStatuses } from "../tasks/delete-deploy.js" +import { joi, joiIdentifierMap } from "../config/common.js" +import { environmentStatusSchema } from "../config/status.js" +import { BooleanParameter, StringsParameter } from "../cli/params.js" +import { deline } from "../util/string.js" +import { uniqByName } from "../util/util.js" +import { isDeployAction } from "../actions/deploy.js" +import { omit, mapValues } from "lodash-es" +import type { DeployStatus, DeployStatusMap } from "../plugin/handlers/Deploy/get-status.js" +import { getDeployStatusSchema } from "../plugin/handlers/Deploy/get-status.js" import chalk from "chalk" // TODO: rename this to CleanupCommand, and do the same for all related classes, constants, variables and functions diff --git a/core/src/commands/deploy.ts b/core/src/commands/deploy.ts index 969f1882e2..7029853d75 100644 --- a/core/src/commands/deploy.ts +++ b/core/src/commands/deploy.ts @@ -6,37 +6,31 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import deline = require("deline") -import dedent = require("dedent") -import chalk = require("chalk") - -import { - Command, - CommandParams, - CommandResult, - handleProcessResults, - PrepareParams, - processCommandResultSchema, - ProcessCommandResult, - emptyActionResults, -} from "./base" -import { printEmoji, printHeader } from "../logger/util" -import { runAsDevCommand, watchParameter, watchRemovedWarning } from "./helpers" -import { DeployTask } from "../tasks/deploy" -import { naturalList } from "../util/string" -import { StringsParameter, BooleanParameter } from "../cli/params" -import { Garden } from "../garden" -import { ActionModeMap } from "../actions/types" -import { SyncMonitor } from "../monitors/sync" -import { warnOnLinkedActions } from "../actions/helpers" -import { PluginEventBroker } from "../plugin-context" -import { HandlerMonitor } from "../monitors/handler" -import { PortForwardMonitor } from "../monitors/port-forward" -import { LogMonitor } from "../monitors/logs" -import { LoggerType, parseLogLevel } from "../logger/logger" -import { serveOpts } from "./serve" -import { gardenEnv } from "../constants" -import { DeployAction } from "../actions/deploy" +import deline from "deline" +import dedent from "dedent" +import chalk from "chalk" + +import type { CommandParams, CommandResult, PrepareParams, ProcessCommandResult } from "./base.js" +import { Command, handleProcessResults, processCommandResultSchema, emptyActionResults } from "./base.js" +import { printEmoji, printHeader } from "../logger/util.js" +import { runAsDevCommand } from "./helpers.js" +import { DeployTask } from "../tasks/deploy.js" +import { naturalList } from "../util/string.js" +import { StringsParameter, BooleanParameter } from "../cli/params.js" +import type { Garden } from "../garden.js" +import type { ActionModeMap } from "../actions/types.js" +import { SyncMonitor } from "../monitors/sync.js" +import { warnOnLinkedActions } from "../actions/helpers.js" +import { PluginEventBroker } from "../plugin-context.js" +import { HandlerMonitor } from "../monitors/handler.js" +import { PortForwardMonitor } from "../monitors/port-forward.js" +import { LogMonitor } from "../monitors/logs.js" +import type { LoggerType } from "../logger/logger.js" +import { parseLogLevel } from "../logger/logger.js" +import { serveOpts } from "./serve.js" +import { gardenEnv } from "../constants.js" +import type { DeployAction } from "../actions/deploy.js" +import { watchParameter, watchRemovedWarning } from "./util/watch-parameter.js" export const deployArgs = { names: new StringsParameter({ diff --git a/core/src/commands/dev.tsx b/core/src/commands/dev.tsx index eea4e7729f..86f3ee5780 100644 --- a/core/src/commands/dev.tsx +++ b/core/src/commands/dev.tsx @@ -6,24 +6,24 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { CommandResult, CommandParams, ConsoleCommand } from "./base" -import { renderDivider } from "../logger/util" +import { CommandResult, CommandParams, ConsoleCommand } from "./base.js" +import { renderDivider } from "../logger/util.js" import React, { FC, useState } from "react" import { Box, render, Text, useInput, useStdout } from "ink" -import { serveArgs, ServeCommand, serveOpts } from "./serve" -import { LoggerType } from "../logger/logger" -import { ParameterError, toGardenError } from "../exceptions" -import { InkTerminalWriter } from "../logger/writers/ink-terminal-writer" -import { CommandLine } from "../cli/command-line" +import { serveArgs, ServeCommand, serveOpts } from "./serve.js" +import { LoggerType } from "../logger/logger.js" +import { ParameterError, toGardenError } from "../exceptions.js" +import { InkTerminalWriter } from "../logger/writers/ink-terminal-writer.js" +import { CommandLine } from "../cli/command-line.js" import chalk from "chalk" -import { globalOptions, StringsParameter } from "../cli/params" -import { pick } from "lodash" -import Divider from "ink-divider" +import { globalOptions, StringsParameter } from "../cli/params.js" +import { pick } from "lodash-es" import moment from "moment" -import { dedent } from "../util/string" +import { dedent } from "../util/string.js" import Spinner from "ink-spinner" -import type { Log } from "../logger/log-entry" -import { bindActiveContext } from "../util/open-telemetry/context" +import type { Log } from "../logger/log-entry.js" +import { bindActiveContext } from "../util/open-telemetry/context.js" +import Divider from "../util/ink-divider.js" const devCommandArgs = { ...serveArgs, @@ -93,7 +93,9 @@ Use ${chalk.bold("up/down")} arrow keys to scroll through your command history. if (terminalWriter.type === "ink") { inkWriter = terminalWriter as InkTerminalWriter } else { - throw new ParameterError({ message: `This command can only be used with the ink logger type. Got type ${terminalWriter.type}.` }) + throw new ParameterError({ + message: `This command can only be used with the ink logger type. Got type ${terminalWriter.type}.`, + }) } const commandLine = await this.initCommandHandler(params) @@ -118,9 +120,11 @@ Use ${chalk.bold("up/down")} arrow keys to scroll through your command history. }, }) - useInput(bindActiveContext((input, key) => { - commandLine.handleInput(input, key) - })) + useInput( + bindActiveContext((input, key) => { + commandLine.handleInput(input, key) + }) + ) const width = stdout ? stdout.columns - 2 : 50 diff --git a/core/src/commands/exec.ts b/core/src/commands/exec.ts index c18501855a..d34a2f41a0 100644 --- a/core/src/commands/exec.ts +++ b/core/src/commands/exec.ts @@ -7,16 +7,19 @@ */ import chalk from "chalk" -import { printHeader } from "../logger/util" -import { Command, CommandResult, CommandParams } from "./base" +import { printHeader } from "../logger/util.js" +import type { CommandResult, CommandParams } from "./base.js" +import { Command } from "./base.js" import dedent from "dedent" -import { StringParameter, BooleanParameter, ParameterValues, StringsParameter } from "../cli/params" -import { ExecInDeployResult, execInDeployResultSchema } from "../plugin/handlers/Deploy/exec" -import { executeAction } from "../graph/actions" -import { NotFoundError } from "../exceptions" -import { DeployStatus } from "../plugin/handlers/Deploy/get-status" -import { createActionLog } from "../logger/log-entry" -import { K8_POD_DEFAULT_CONTAINER_ANNOTATION_KEY } from "../plugins/kubernetes/run" +import type { ParameterValues } from "../cli/params.js" +import { StringParameter, BooleanParameter, StringsParameter } from "../cli/params.js" +import type { ExecInDeployResult } from "../plugin/handlers/Deploy/exec.js" +import { execInDeployResultSchema } from "../plugin/handlers/Deploy/exec.js" +import { executeAction } from "../graph/actions.js" +import { NotFoundError } from "../exceptions.js" +import type { DeployStatus } from "../plugin/handlers/Deploy/get-status.js" +import { createActionLog } from "../logger/log-entry.js" +import { K8_POD_DEFAULT_CONTAINER_ANNOTATION_KEY } from "../plugins/kubernetes/run.js" const execArgs = { deploy: new StringParameter({ diff --git a/core/src/commands/get/get-actions-subcommand.ts b/core/src/commands/get/get-actions-subcommand.ts index bb94768a6f..ea4c854659 100644 --- a/core/src/commands/get/get-actions-subcommand.ts +++ b/core/src/commands/get/get-actions-subcommand.ts @@ -7,14 +7,15 @@ */ import dedent from "dedent" -import { capitalize } from "lodash" -import { BooleanParameter, ChoicesParameter, StringsParameter } from "../../cli/params" -import { joi, joiArray } from "../../config/common" -import { printHeader } from "../../logger/util" -import { ActionKind } from "../../plugin/action-types" -import { deline } from "../../util/string" -import { CommandParams, CommandResult } from "../base" -import { GetActionsCommand, GetActionsCommandResult, getActionsCmdOutputSchema } from "./get-actions" +import { capitalize } from "lodash-es" +import { BooleanParameter, ChoicesParameter, StringsParameter } from "../../cli/params.js" +import { joi, joiArray } from "../../config/common.js" +import { printHeader } from "../../logger/util.js" +import type { ActionKind } from "../../plugin/action-types.js" +import { deline } from "../../util/string.js" +import type { CommandParams, CommandResult } from "../base.js" +import type { GetActionsCommandResult } from "./get-actions.js" +import { GetActionsCommand, getActionsCmdOutputSchema } from "./get-actions.js" type Args = { names: StringsParameter diff --git a/core/src/commands/get/get-actions.ts b/core/src/commands/get/get-actions.ts index 5c81cd3e91..4361ca5ee6 100644 --- a/core/src/commands/get/get-actions.ts +++ b/core/src/commands/get/get-actions.ts @@ -7,14 +7,16 @@ */ import chalk from "chalk" -import { getActionState, getRelativeActionConfigPath } from "../../actions/helpers" -import { ActionKind, ActionState, ResolvedAction, actionKinds, actionStateTypes } from "../../actions/types" -import { BooleanParameter, ChoicesParameter, StringsParameter } from "../../cli/params" -import { createSchema, joi, joiArray } from "../../config/common" -import { printHeader } from "../../logger/util" -import { dedent, deline, renderTable } from "../../util/string" -import { Command, CommandParams, CommandResult } from "../base" -import { sortBy } from "lodash" +import { getActionState, getRelativeActionConfigPath } from "../../actions/helpers.js" +import type { ActionKind, ActionState, ResolvedAction } from "../../actions/types.js" +import { actionKinds, actionStateTypes } from "../../actions/types.js" +import { BooleanParameter, ChoicesParameter, StringsParameter } from "../../cli/params.js" +import { createSchema, joi, joiArray } from "../../config/common.js" +import { printHeader } from "../../logger/util.js" +import { dedent, deline, renderTable } from "../../util/string.js" +import type { CommandParams, CommandResult } from "../base.js" +import { Command } from "../base.js" +import { sortBy } from "lodash-es" interface GetActionsCommandResultItem { name: string @@ -101,9 +103,6 @@ const getActionsOpts = { export type Args = typeof getActionsArgs export type Opts = typeof getActionsOpts -type CmdParams = CommandParams -type foo = CmdParams["opts"] - export class GetActionsCommand extends Command { name = "actions" help = "Outputs all or specified actions." diff --git a/core/src/commands/get/get-builds.ts b/core/src/commands/get/get-builds.ts index a30242ff74..f97e410726 100644 --- a/core/src/commands/get/get-builds.ts +++ b/core/src/commands/get/get-builds.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { GetActionsSubCommand } from "./get-actions-subcommand" +import { GetActionsSubCommand } from "./get-actions-subcommand.js" export class GetBuildsCommand extends GetActionsSubCommand { constructor() { diff --git a/core/src/commands/get/get-config.ts b/core/src/commands/get/get-config.ts index bfa1a53170..81c32baa5f 100644 --- a/core/src/commands/get/get-config.ts +++ b/core/src/commands/get/get-config.ts @@ -6,19 +6,20 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Command, CommandResult, CommandParams, suggestedCommandSchema } from "../base" -import { ConfigDump } from "../../garden" -import { environmentNameSchema, projectSourceSchema } from "../../config/project" -import { joiIdentifier, joiVariables, joiArray, joi, joiStringMap } from "../../config/common" -import { providerConfigBaseSchema, providerSchema } from "../../config/provider" -import { moduleConfigSchema } from "../../config/module" -import { workflowConfigSchema } from "../../config/workflow" -import { BooleanParameter, ChoicesParameter } from "../../cli/params" -import { printHeader } from "../../logger/util" -import { buildActionConfigSchema } from "../../actions/build" -import { deployActionConfigSchema } from "../../actions/deploy" -import { runActionConfigSchema } from "../../actions/run" -import { testActionConfigSchema } from "../../actions/test" +import type { CommandResult, CommandParams } from "../base.js" +import { Command, suggestedCommandSchema } from "../base.js" +import type { ConfigDump } from "../../garden.js" +import { environmentNameSchema, projectSourceSchema } from "../../config/project.js" +import { joiIdentifier, joiVariables, joiArray, joi, joiStringMap } from "../../config/common.js" +import { providerConfigBaseSchema, providerSchema } from "../../config/provider.js" +import { moduleConfigSchema } from "../../config/module.js" +import { workflowConfigSchema } from "../../config/workflow.js" +import { BooleanParameter, ChoicesParameter } from "../../cli/params.js" +import { printHeader } from "../../logger/util.js" +import { buildActionConfigSchema } from "../../actions/build.js" +import { deployActionConfigSchema } from "../../actions/deploy.js" +import { runActionConfigSchema } from "../../actions/run.js" +import { testActionConfigSchema } from "../../actions/test.js" export const getConfigOptions = { "exclude-disabled": new BooleanParameter({ diff --git a/core/src/commands/get/get-debug-info.ts b/core/src/commands/get/get-debug-info.ts index f82b8d4fb7..4ecdc40204 100644 --- a/core/src/commands/get/get-debug-info.ts +++ b/core/src/commands/get/get-debug-info.ts @@ -6,25 +6,27 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Command, CommandParams } from "../base" -import { findProjectConfig } from "../../config/base" -import { ensureDir, copy, remove, pathExists, writeFile } from "fs-extra" -import { getPackageVersion } from "../../util/util" +import type { CommandParams } from "../base.js" +import { Command } from "../base.js" +import { findProjectConfig } from "../../config/base.js" +import fsExtra from "fs-extra" +const { ensureDir, copy, remove, pathExists, writeFile } = fsExtra +import { getPackageVersion } from "../../util/util.js" import { platform, release } from "os" import { join, relative, basename, dirname } from "path" -import { Log } from "../../logger/log-entry" -import { findConfigPathsInPath, defaultDotIgnoreFile } from "../../util/fs" -import { ERROR_LOG_FILENAME } from "../../constants" -import dedent = require("dedent") -import { Garden } from "../../garden" -import { zipFolder } from "../../util/archive" +import type { Log } from "../../logger/log-entry.js" +import { findConfigPathsInPath, defaultDotIgnoreFile } from "../../util/fs.js" +import { ERROR_LOG_FILENAME } from "../../constants.js" +import dedent from "dedent" +import type { Garden } from "../../garden.js" +import { zipFolder } from "../../util/archive.js" import chalk from "chalk" -import { GitHandler } from "../../vcs/git" -import { ValidationError } from "../../exceptions" -import { ChoicesParameter, BooleanParameter } from "../../cli/params" -import { printHeader } from "../../logger/util" -import { TreeCache } from "../../cache" -import { safeDumpYaml } from "../../util/serialization" +import { GitHandler } from "../../vcs/git.js" +import { ValidationError } from "../../exceptions.js" +import { ChoicesParameter, BooleanParameter } from "../../cli/params.js" +import { printHeader } from "../../logger/util.js" +import { TreeCache } from "../../cache.js" +import { safeDumpYaml } from "../../util/serialization.js" export const TEMP_DEBUG_ROOT = "tmp" export const SYSTEM_INFO_FILENAME_NO_EXT = "system-info" diff --git a/core/src/commands/get/get-deploys.ts b/core/src/commands/get/get-deploys.ts index 935ac83481..2354cecabb 100644 --- a/core/src/commands/get/get-deploys.ts +++ b/core/src/commands/get/get-deploys.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { GetActionsSubCommand } from "./get-actions-subcommand" +import { GetActionsSubCommand } from "./get-actions-subcommand.js" export class GetDeploysCommand extends GetActionsSubCommand { constructor() { diff --git a/core/src/commands/get/get-doddi.ts b/core/src/commands/get/get-doddi.ts index d46e39944b..8213beedec 100644 --- a/core/src/commands/get/get-doddi.ts +++ b/core/src/commands/get/get-doddi.ts @@ -6,12 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Command, CommandResult } from "../base" -import dedent = require("dedent") -import { readFile } from "fs-extra" -import { STATIC_DIR } from "../../constants" +import type { CommandResult } from "../base.js" +import { Command } from "../base.js" +import dedent from "dedent" +import fsExtra from "fs-extra" +const { readFile } = fsExtra +import { STATIC_DIR } from "../../constants.js" import { join } from "path" -import { exec } from "../../util/util" +import { exec } from "../../util/util.js" export class GetDoddiCommand extends Command { name = "doddi" diff --git a/core/src/commands/get/get-eysi.ts b/core/src/commands/get/get-eysi.ts index 1a3a308135..ba921e70b3 100644 --- a/core/src/commands/get/get-eysi.ts +++ b/core/src/commands/get/get-eysi.ts @@ -6,12 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Command, CommandResult } from "../base" -import dedent = require("dedent") -import { readFile } from "fs-extra" -import { STATIC_DIR } from "../../constants" +import type { CommandResult } from "../base.js" +import { Command } from "../base.js" +import dedent from "dedent" +import fsExtra from "fs-extra" +const { readFile } = fsExtra +import { STATIC_DIR } from "../../constants.js" import { join } from "path" -import { exec } from "../../util/util" +import { exec } from "../../util/util.js" export class GetEysiCommand extends Command { name = "eysi" diff --git a/core/src/commands/get/get-files.ts b/core/src/commands/get/get-files.ts index c267809134..294a657561 100644 --- a/core/src/commands/get/get-files.ts +++ b/core/src/commands/get/get-files.ts @@ -6,11 +6,12 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { fromPairs } from "lodash" -import { StringsParameter } from "../../cli/params" -import { joi } from "../../config/common" -import { printHeader } from "../../logger/util" -import { Command, CommandParams, CommandResult } from "../base" +import { fromPairs } from "lodash-es" +import { StringsParameter } from "../../cli/params.js" +import { joi } from "../../config/common.js" +import { printHeader } from "../../logger/util.js" +import type { CommandParams, CommandResult } from "../base.js" +import { Command } from "../base.js" import chalk from "chalk" const getFilesArgs = { diff --git a/core/src/commands/get/get-graph.ts b/core/src/commands/get/get-graph.ts index 80e849b9b4..4c182d8529 100644 --- a/core/src/commands/get/get-graph.ts +++ b/core/src/commands/get/get-graph.ts @@ -6,9 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { RenderedEdge, RenderedNode } from "../../graph/config-graph" -import { printHeader } from "../../logger/util" -import { Command, CommandResult, CommandParams } from "../base" +import type { RenderedEdge, RenderedNode } from "../../graph/config-graph.js" +import { printHeader } from "../../logger/util.js" +import type { CommandResult, CommandParams } from "../base.js" +import { Command } from "../base.js" export interface GraphOutput { nodes: RenderedNode[] diff --git a/core/src/commands/get/get-linked-repos.ts b/core/src/commands/get/get-linked-repos.ts index 26e759fda6..29e73ad715 100644 --- a/core/src/commands/get/get-linked-repos.ts +++ b/core/src/commands/get/get-linked-repos.ts @@ -7,12 +7,13 @@ */ import chalk from "chalk" -import { sortBy } from "lodash" -import { Command, CommandParams, CommandResult } from "../base" -import { LinkedSource } from "../../config-store/local" -import { printHeader } from "../../logger/util" -import { getLinkedSources } from "../../util/ext-source-util" -import { renderTable } from "../../util/string" +import { sortBy } from "lodash-es" +import type { CommandParams, CommandResult } from "../base.js" +import { Command } from "../base.js" +import type { LinkedSource } from "../../config-store/local.js" +import { printHeader } from "../../logger/util.js" +import { getLinkedSources } from "../../util/ext-source-util.js" +import { renderTable } from "../../util/string.js" const getLinkedReposArguments = {} diff --git a/core/src/commands/get/get-modules.ts b/core/src/commands/get/get-modules.ts index cdb2f6f105..472bd68fce 100644 --- a/core/src/commands/get/get-modules.ts +++ b/core/src/commands/get/get-modules.ts @@ -6,20 +6,23 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Command, CommandParams } from "../base" -import { StringsParameter, BooleanParameter } from "../../cli/params" -import { moduleSchema, GardenModule } from "../../types/module" -import { keyBy, omit, sortBy } from "lodash" -import { joiIdentifierMap, StringMap, createSchema } from "../../config/common" -import { printEmoji, printHeader, renderDivider } from "../../logger/util" -import { withoutInternalFields } from "../../util/logging" +import type { CommandParams } from "../base.js" +import { Command } from "../base.js" +import { StringsParameter, BooleanParameter } from "../../cli/params.js" +import type { GardenModule } from "../../types/module.js" +import { moduleSchema } from "../../types/module.js" +import { keyBy, omit, sortBy } from "lodash-es" +import type { StringMap } from "../../config/common.js" +import { joiIdentifierMap, createSchema } from "../../config/common.js" +import { printEmoji, printHeader, renderDivider } from "../../logger/util.js" +import { withoutInternalFields } from "../../util/logging.js" import chalk from "chalk" -import { renderTable, dedent, deline } from "../../util/string" +import { renderTable, dedent, deline } from "../../util/string.js" import { relative, sep } from "path" -import { Garden } from "../.." -import { Log } from "../../logger/log-entry" -import { highlightYaml, safeDumpYaml } from "../../util/serialization" -import { deepMap } from "../../util/objects" +import type { Garden } from "../../index.js" +import type { Log } from "../../logger/log-entry.js" +import { highlightYaml, safeDumpYaml } from "../../util/serialization.js" +import { deepMap } from "../../util/objects.js" const getModulesArgs = { modules: new StringsParameter({ diff --git a/core/src/commands/get/get-outputs.ts b/core/src/commands/get/get-outputs.ts index f1db8ed8a2..6b815013b8 100644 --- a/core/src/commands/get/get-outputs.ts +++ b/core/src/commands/get/get-outputs.ts @@ -6,13 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Command, CommandResult, CommandParams } from "../base" -import { printHeader } from "../../logger/util" -import { fromPairs } from "lodash" -import { PrimitiveMap, joiVariables } from "../../config/common" -import { renderTable, dedent } from "../../util/string" +import type { CommandResult, CommandParams } from "../base.js" +import { Command } from "../base.js" +import { printHeader } from "../../logger/util.js" +import { fromPairs } from "lodash-es" +import type { PrimitiveMap } from "../../config/common.js" +import { joiVariables } from "../../config/common.js" +import { renderTable, dedent } from "../../util/string.js" import chalk from "chalk" -import { resolveProjectOutputs } from "../../outputs" +import { resolveProjectOutputs } from "../../outputs.js" export class GetOutputsCommand extends Command { name = "outputs" diff --git a/core/src/commands/get/get-run-result.ts b/core/src/commands/get/get-run-result.ts index e499d8912d..bf230aedad 100644 --- a/core/src/commands/get/get-run-result.ts +++ b/core/src/commands/get/get-run-result.ts @@ -6,15 +6,17 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ConfigGraph } from "../../graph/config-graph" -import { Command, CommandParams } from "../base" -import { printHeader } from "../../logger/util" +import type { ConfigGraph } from "../../graph/config-graph.js" +import type { CommandParams } from "../base.js" +import { Command } from "../base.js" +import { printHeader } from "../../logger/util.js" import chalk from "chalk" -import { getArtifactFileList, getArtifactKey } from "../../util/artifacts" -import { joiArray, joi } from "../../config/common" -import { StringParameter } from "../../cli/params" -import { GetRunResult, getRunResultSchema } from "../../plugin/handlers/Run/get-result" -import { createActionLog } from "../../logger/log-entry" +import { getArtifactFileList, getArtifactKey } from "../../util/artifacts.js" +import { joiArray, joi } from "../../config/common.js" +import { StringParameter } from "../../cli/params.js" +import type { GetRunResult } from "../../plugin/handlers/Run/get-result.js" +import { getRunResultSchema } from "../../plugin/handlers/Run/get-result.js" +import { createActionLog } from "../../logger/log-entry.js" const getRunResultArgs = { name: new StringParameter({ diff --git a/core/src/commands/get/get-runs.ts b/core/src/commands/get/get-runs.ts index cde29a92ab..2c21c21979 100644 --- a/core/src/commands/get/get-runs.ts +++ b/core/src/commands/get/get-runs.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { GetActionsSubCommand } from "./get-actions-subcommand" +import { GetActionsSubCommand } from "./get-actions-subcommand.js" export class GetRunsCommand extends GetActionsSubCommand { constructor() { diff --git a/core/src/commands/get/get-status.ts b/core/src/commands/get/get-status.ts index 7639832f75..bb2b120daf 100644 --- a/core/src/commands/get/get-status.ts +++ b/core/src/commands/get/get-status.ts @@ -6,24 +6,30 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { fromPairs, omit } from "lodash" -import { deepFilter } from "../../util/objects" -import { Command, CommandResult, CommandParams } from "../base" -import { ResolvedConfigGraph } from "../../graph/config-graph" -import { createActionLog, Log } from "../../logger/log-entry" +import { fromPairs, omit } from "lodash-es" +import { deepFilter } from "../../util/objects.js" +import type { CommandResult, CommandParams } from "../base.js" +import { Command } from "../base.js" +import type { ResolvedConfigGraph } from "../../graph/config-graph.js" +import type { Log } from "../../logger/log-entry.js" +import { createActionLog } from "../../logger/log-entry.js" import chalk from "chalk" -import { deline } from "../../util/string" -import { EnvironmentStatusMap } from "../../plugin/handlers/Provider/getEnvironmentStatus" -import { joi, joiIdentifierMap, joiStringMap } from "../../config/common" -import { environmentStatusSchema } from "../../config/status" -import { printHeader } from "../../logger/util" -import { BuildStatusMap, getBuildStatusSchema } from "../../plugin/handlers/Build/get-status" -import { getTestResultSchema, TestStatusMap } from "../../plugin/handlers/Test/get-result" -import { getRunResultSchema, RunStatusMap } from "../../plugin/handlers/Run/get-result" -import { DeployStatusMap, getDeployStatusSchema } from "../../plugin/handlers/Deploy/get-status" -import { ActionRouter } from "../../router/router" -import { sanitizeValue } from "../../util/logging" -import { BooleanParameter } from "../../cli/params" +import { deline } from "../../util/string.js" +import type { EnvironmentStatusMap } from "../../plugin/handlers/Provider/getEnvironmentStatus.js" +import { joi, joiIdentifierMap, joiStringMap } from "../../config/common.js" +import { environmentStatusSchema } from "../../config/status.js" +import { printHeader } from "../../logger/util.js" +import type { BuildStatusMap } from "../../plugin/handlers/Build/get-status.js" +import { getBuildStatusSchema } from "../../plugin/handlers/Build/get-status.js" +import type { TestStatusMap } from "../../plugin/handlers/Test/get-result.js" +import { getTestResultSchema } from "../../plugin/handlers/Test/get-result.js" +import type { RunStatusMap } from "../../plugin/handlers/Run/get-result.js" +import { getRunResultSchema } from "../../plugin/handlers/Run/get-result.js" +import type { DeployStatusMap } from "../../plugin/handlers/Deploy/get-status.js" +import { getDeployStatusSchema } from "../../plugin/handlers/Deploy/get-status.js" +import type { ActionRouter } from "../../router/router.js" +import { sanitizeValue } from "../../util/logging.js" +import { BooleanParameter } from "../../cli/params.js" // Value is "completed" if the test/task has been run for the current version. export interface StatusCommandResult { diff --git a/core/src/commands/get/get-test-result.ts b/core/src/commands/get/get-test-result.ts index eb9d101ba3..5b082775d0 100644 --- a/core/src/commands/get/get-test-result.ts +++ b/core/src/commands/get/get-test-result.ts @@ -6,20 +6,24 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Command, CommandParams } from "../base" -import { printHeader } from "../../logger/util" +import type { CommandParams } from "../base.js" +import { Command } from "../base.js" +import { printHeader } from "../../logger/util.js" import chalk from "chalk" -import { getArtifactFileList, getArtifactKey } from "../../util/artifacts" -import { joi, joiArray } from "../../config/common" -import { GetTestResult, getTestResultSchema } from "../../plugin/handlers/Test/get-result" -import { ParameterValues, StringOption, StringParameter } from "../../cli/params" -import { ParameterError } from "../../exceptions" -import { ConfigGraph } from "../../graph/config-graph" -import { GardenModule, moduleTestNameToActionName } from "../../types/module" -import { findByName, getNames } from "../../util/util" -import { createActionLog } from "../../logger/log-entry" +import { getArtifactFileList, getArtifactKey } from "../../util/artifacts.js" +import { joi, joiArray } from "../../config/common.js" +import type { GetTestResult } from "../../plugin/handlers/Test/get-result.js" +import { getTestResultSchema } from "../../plugin/handlers/Test/get-result.js" +import type { ParameterValues } from "../../cli/params.js" +import { StringOption, StringParameter } from "../../cli/params.js" +import { ParameterError } from "../../exceptions.js" +import type { ConfigGraph } from "../../graph/config-graph.js" +import type { GardenModule } from "../../types/module.js" +import { moduleTestNameToActionName } from "../../types/module.js" +import { findByName, getNames } from "../../util/util.js" +import { createActionLog } from "../../logger/log-entry.js" import dedent from "dedent" -import { naturalList } from "../../util/string" +import { naturalList } from "../../util/string.js" const getTestResultArgs = { name: new StringParameter({ diff --git a/core/src/commands/get/get-tests.ts b/core/src/commands/get/get-tests.ts index 2c559e0936..d1d8a7b1bc 100644 --- a/core/src/commands/get/get-tests.ts +++ b/core/src/commands/get/get-tests.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { GetActionsSubCommand } from "./get-actions-subcommand" +import { GetActionsSubCommand } from "./get-actions-subcommand.js" export class GetTestsCommand extends GetActionsSubCommand { constructor() { diff --git a/core/src/commands/get/get-workflows.ts b/core/src/commands/get/get-workflows.ts index 78d4e33e2b..03166eb79d 100644 --- a/core/src/commands/get/get-workflows.ts +++ b/core/src/commands/get/get-workflows.ts @@ -6,10 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Command, CommandResult, CommandParams } from "../base" -import { printHeader } from "../../logger/util" -import { StringsParameter } from "../../cli/params" -import { prettyPrintWorkflow } from "../helpers" +import type { CommandResult, CommandParams } from "../base.js" +import { Command } from "../base.js" +import { printHeader } from "../../logger/util.js" +import { StringsParameter } from "../../cli/params.js" +import { prettyPrintWorkflow } from "../helpers.js" const getWorkflowsArgs = { workflows: new StringsParameter({ diff --git a/core/src/commands/get/get.ts b/core/src/commands/get/get.ts index 08e3c181e6..5f789c891e 100644 --- a/core/src/commands/get/get.ts +++ b/core/src/commands/get/get.ts @@ -6,25 +6,25 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { CommandGroup } from "../base" -import { GetGraphCommand } from "./get-graph" -import { GetConfigCommand } from "./get-config" -import { GetEysiCommand } from "./get-eysi" -import { GetStatusCommand } from "./get-status" -import { GetRunsCommand } from "./get-runs" -import { GetRunResultCommand } from "./get-run-result" -import { GetTestResultCommand } from "./get-test-result" -import { GetDebugInfoCommand } from "./get-debug-info" -import { GetLinkedReposCommand } from "./get-linked-repos" -import { GetOutputsCommand } from "./get-outputs" -import { GetDoddiCommand } from "./get-doddi" -import { GetModulesCommand } from "./get-modules" -import { GetTestsCommand } from "./get-tests" -import { GetWorkflowsCommand } from "./get-workflows" -import { GetActionsCommand } from "./get-actions" -import { GetDeploysCommand } from "./get-deploys" -import { GetBuildsCommand } from "./get-builds" -import { GetFilesCommand } from "./get-files" +import { CommandGroup } from "../base.js" +import { GetGraphCommand } from "./get-graph.js" +import { GetConfigCommand } from "./get-config.js" +import { GetEysiCommand } from "./get-eysi.js" +import { GetStatusCommand } from "./get-status.js" +import { GetRunsCommand } from "./get-runs.js" +import { GetRunResultCommand } from "./get-run-result.js" +import { GetTestResultCommand } from "./get-test-result.js" +import { GetDebugInfoCommand } from "./get-debug-info.js" +import { GetLinkedReposCommand } from "./get-linked-repos.js" +import { GetOutputsCommand } from "./get-outputs.js" +import { GetDoddiCommand } from "./get-doddi.js" +import { GetModulesCommand } from "./get-modules.js" +import { GetTestsCommand } from "./get-tests.js" +import { GetWorkflowsCommand } from "./get-workflows.js" +import { GetActionsCommand } from "./get-actions.js" +import { GetDeploysCommand } from "./get-deploys.js" +import { GetBuildsCommand } from "./get-builds.js" +import { GetFilesCommand } from "./get-files.js" export class GetCommand extends CommandGroup { name = "get" diff --git a/core/src/commands/helpers.ts b/core/src/commands/helpers.ts index 1c0271263c..f2210c311d 100644 --- a/core/src/commands/helpers.ts +++ b/core/src/commands/helpers.ts @@ -8,20 +8,16 @@ import chalk from "chalk" import indentString from "indent-string" -import type { RunAction } from "../actions/run" -import type { TestAction } from "../actions/test" -import type { WorkflowConfig } from "../config/workflow" -import type { Log } from "../logger/log-entry" -import { BooleanParameter } from "../cli/params" -import type { Garden } from "../garden" -import { ActionKind } from "../actions/types" +import type { WorkflowConfig } from "../config/workflow.js" +import type { Log } from "../logger/log-entry.js" +import type { ActionKind } from "../actions/types.js" import isGlob from "is-glob" -import { ParameterError } from "../exceptions" -import { naturalList } from "../util/string" -import { CommandParams } from "./base" -import { ServeCommandOpts } from "./serve" -import { DevCommand } from "./dev" +import { ParameterError } from "../exceptions.js" +import { naturalList } from "../util/string.js" +import type { CommandParams } from "./base.js" +import type { ServeCommandOpts } from "./serve.js" +import { DevCommand } from "./dev.js" /** * Runs a `dev` command and runs `commandName` with the args & opts provided in `params` as the first @@ -61,48 +57,10 @@ export function prettyPrintWorkflow(workflow: WorkflowConfig): string { return out } -function prettyPrintTestOrTask(action: TestAction | RunAction): string { - let out = `${chalk.cyan.bold(action.name)}` - - out += "\n" + indentString(printField("type", action.type), 2) - - const { description } = action.getConfig() - - if (description) { - out += "\n" + indentString(printField("description", description), 2) - } - - const deps = action.getDependencyReferences() - - if (deps.length) { - out += "\n" + indentString(`${chalk.gray("dependencies")}:`, 2) + "\n" - out += indentString(deps.map((ref) => `• ${ref.kind}.${ref.name}`).join("\n"), 4) - } - - return out + "\n" -} - function printField(name: string, value: string | null) { return `${chalk.gray(name)}: ${value || ""}` } -export const watchParameter = new BooleanParameter({ - help: "[REMOVED] Watch for changes and update actions automatically.", - aliases: ["w"], - cliOnly: true, - hidden: true, -}) - -export async function watchRemovedWarning(garden: Garden, log: Log) { - return garden.emitWarning({ - log, - key: "watch-flag-removed", - message: chalk.yellow( - "The -w/--watch flag has been removed. Please use other options instead, such as the --sync option for Deploy actions. If you need this feature and would like it re-introduced, please don't hesitate to reach out: https://garden.io/community" - ), - }) -} - /** * Throws if an action by name is not found. * Logs a warning if no actions are found matching wildcard arguments. diff --git a/core/src/commands/link/action.ts b/core/src/commands/link/action.ts index c235c69f81..b127029bea 100644 --- a/core/src/commands/link/action.ts +++ b/core/src/commands/link/action.ts @@ -10,15 +10,16 @@ import { resolve } from "path" import dedent from "dedent" import chalk from "chalk" -import { ParameterError } from "../../exceptions" -import { Command, CommandResult, CommandParams } from "../base" -import { LinkedSource } from "../../config-store/local" -import { printHeader } from "../../logger/util" -import { addLinkedSources } from "../../util/ext-source-util" -import { joiArray, joi } from "../../config/common" -import { StringParameter, PathParameter } from "../../cli/params" -import { linkedActionSchema } from "../../config/project" -import { actionKinds } from "../../actions/types" +import { ParameterError } from "../../exceptions.js" +import type { CommandResult, CommandParams } from "../base.js" +import { Command } from "../base.js" +import type { LinkedSource } from "../../config-store/local.js" +import { printHeader } from "../../logger/util.js" +import { addLinkedSources } from "../../util/ext-source-util.js" +import { joiArray, joi } from "../../config/common.js" +import { StringParameter, PathParameter } from "../../cli/params.js" +import { linkedActionSchema } from "../../config/project.js" +import { actionKinds } from "../../actions/types.js" const linkActionArguments = { action: new StringParameter({ diff --git a/core/src/commands/link/link.ts b/core/src/commands/link/link.ts index d7b3be1602..f2d2d8b0c2 100644 --- a/core/src/commands/link/link.ts +++ b/core/src/commands/link/link.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { CommandGroup } from "../base" -import { LinkSourceCommand } from "./source" -import { LinkModuleCommand } from "./module" -import { LinkActionCommand } from "./action" +import { CommandGroup } from "../base.js" +import { LinkSourceCommand } from "./source.js" +import { LinkModuleCommand } from "./module.js" +import { LinkActionCommand } from "./action.js" export class LinkCommand extends CommandGroup { name = "link" diff --git a/core/src/commands/link/module.ts b/core/src/commands/link/module.ts index f1b960e4e0..a2e569209c 100644 --- a/core/src/commands/link/module.ts +++ b/core/src/commands/link/module.ts @@ -7,18 +7,19 @@ */ import { resolve } from "path" -import dedent = require("dedent") +import dedent from "dedent" import chalk from "chalk" -import { ParameterError } from "../../exceptions" -import { Command, CommandResult, CommandParams } from "../base" -import { LinkedSource } from "../../config-store/local" -import { printHeader } from "../../logger/util" -import { addLinkedSources, moduleHasRemoteSource } from "../../util/ext-source-util" -import { joiArray, joi } from "../../config/common" -import { linkedModuleSchema } from "../../config/project" -import { StringParameter, PathParameter } from "../../cli/params" -import { naturalList } from "../../util/string" +import { ParameterError } from "../../exceptions.js" +import type { CommandResult, CommandParams } from "../base.js" +import { Command } from "../base.js" +import type { LinkedSource } from "../../config-store/local.js" +import { printHeader } from "../../logger/util.js" +import { addLinkedSources, moduleHasRemoteSource } from "../../util/ext-source-util.js" +import { joiArray, joi } from "../../config/common.js" +import { linkedModuleSchema } from "../../config/project.js" +import { StringParameter, PathParameter } from "../../cli/params.js" +import { naturalList } from "../../util/string.js" const linkModuleArguments = { module: new StringParameter({ diff --git a/core/src/commands/link/source.ts b/core/src/commands/link/source.ts index 51cff7f81d..8f06ae92ff 100644 --- a/core/src/commands/link/source.ts +++ b/core/src/commands/link/source.ts @@ -7,19 +7,20 @@ */ import { resolve } from "path" -import dedent = require("dedent") +import dedent from "dedent" import chalk from "chalk" -import { ParameterError } from "../../exceptions" -import { Command, CommandResult } from "../base" -import { addLinkedSources } from "../../util/ext-source-util" -import { LinkedSource } from "../../config-store/local" -import { CommandParams } from "../base" -import { printHeader } from "../../logger/util" -import { joiArray, joi } from "../../config/common" -import { linkedSourceSchema } from "../../config/project" -import { StringParameter, PathParameter } from "../../cli/params" -import { naturalList } from "../../util/string" +import { ParameterError } from "../../exceptions.js" +import type { CommandResult } from "../base.js" +import { Command } from "../base.js" +import { addLinkedSources } from "../../util/ext-source-util.js" +import type { LinkedSource } from "../../config-store/local.js" +import type { CommandParams } from "../base.js" +import { printHeader } from "../../logger/util.js" +import { joiArray, joi } from "../../config/common.js" +import { linkedSourceSchema } from "../../config/project.js" +import { StringParameter, PathParameter } from "../../cli/params.js" +import { naturalList } from "../../util/string.js" const linkSourceArguments = { source: new StringParameter({ diff --git a/core/src/commands/login.ts b/core/src/commands/login.ts index 9784ec8a53..29fac6de55 100644 --- a/core/src/commands/login.ts +++ b/core/src/commands/login.ts @@ -6,19 +6,21 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Command, CommandParams, CommandResult } from "./base" -import { printHeader } from "../logger/util" -import dedent = require("dedent") -import { AuthTokenResponse, CloudApi, getGardenCloudDomain } from "../cloud/api" -import { Log } from "../logger/log-entry" -import { ConfigurationError, TimeoutError, InternalError, CloudApiError } from "../exceptions" -import { AuthRedirectServer } from "../cloud/auth" -import { EventBus } from "../events/events" -import { getCloudDistributionName } from "../util/util" -import { ProjectConfig } from "../config/project" -import { findProjectConfig } from "../config/base" -import { BooleanParameter } from "../cli/params" -import { deline } from "../util/string" +import type { CommandParams, CommandResult } from "./base.js" +import { Command } from "./base.js" +import { printHeader } from "../logger/util.js" +import dedent from "dedent" +import type { AuthTokenResponse } from "../cloud/api.js" +import { CloudApi, getGardenCloudDomain } from "../cloud/api.js" +import type { Log } from "../logger/log-entry.js" +import { ConfigurationError, TimeoutError, InternalError, CloudApiError } from "../exceptions.js" +import { AuthRedirectServer } from "../cloud/auth.js" +import type { EventBus } from "../events/events.js" +import { getCloudDistributionName } from "../util/util.js" +import type { ProjectConfig } from "../config/project.js" +import { findProjectConfig } from "../config/base.js" +import { BooleanParameter } from "../cli/params.js" +import { deline } from "../util/string.js" const loginTimeoutSec = 60 diff --git a/core/src/commands/logout.ts b/core/src/commands/logout.ts index 001d49d182..fcc4530f3b 100644 --- a/core/src/commands/logout.ts +++ b/core/src/commands/logout.ts @@ -6,15 +6,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Command, CommandParams, CommandResult } from "./base" -import { printHeader } from "../logger/util" -import { CloudApi, getGardenCloudDomain } from "../cloud/api" -import { dedent, deline } from "../util/string" -import { getCloudDistributionName } from "../util/util" -import { ConfigurationError } from "../exceptions" -import { ProjectConfig } from "../config/project" -import { findProjectConfig } from "../config/base" -import { BooleanParameter } from "../cli/params" +import type { CommandParams, CommandResult } from "./base.js" +import { Command } from "./base.js" +import { printHeader } from "../logger/util.js" +import { CloudApi, getGardenCloudDomain } from "../cloud/api.js" +import { dedent, deline } from "../util/string.js" +import { getCloudDistributionName } from "../util/util.js" +import { ConfigurationError } from "../exceptions.js" +import type { ProjectConfig } from "../config/project.js" +import { findProjectConfig } from "../config/base.js" +import { BooleanParameter } from "../cli/params.js" export const logoutOpts = { "disable-project-check": new BooleanParameter({ diff --git a/core/src/commands/logs.ts b/core/src/commands/logs.ts index 42c3e3df72..d4bddf8c42 100644 --- a/core/src/commands/logs.ts +++ b/core/src/commands/logs.ts @@ -6,17 +6,19 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import dotenv = require("dotenv") -import { Command, CommandResult, CommandParams, PrepareParams } from "./base" +import dotenv from "dotenv" +import type { CommandResult, CommandParams, PrepareParams } from "./base.js" +import { Command } from "./base.js" import chalk from "chalk" -import { omit, sortBy } from "lodash" -import { DeployLogEntry } from "../types/service" -import { LogLevel, parseLogLevel, VoidLogger } from "../logger/logger" -import { StringsParameter, BooleanParameter, IntegerParameter, DurationParameter, TagsOption } from "../cli/params" -import { printHeader, renderDivider } from "../logger/util" -import { dedent, deline, naturalList } from "../util/string" -import { CommandError, ParameterError } from "../exceptions" -import { LogMonitor, LogsTagOrFilter } from "../monitors/logs" +import { omit, sortBy } from "lodash-es" +import type { DeployLogEntry } from "../types/service.js" +import { LogLevel, parseLogLevel, VoidLogger } from "../logger/logger.js" +import { StringsParameter, BooleanParameter, IntegerParameter, DurationParameter, TagsOption } from "../cli/params.js" +import { printHeader, renderDivider } from "../logger/util.js" +import { dedent, deline, naturalList } from "../util/string.js" +import { CommandError, ParameterError } from "../exceptions.js" +import type { LogsTagOrFilter } from "../monitors/logs.js" +import { LogMonitor } from "../monitors/logs.js" const logsArgs = { names: new StringsParameter({ diff --git a/core/src/commands/options.ts b/core/src/commands/options.ts index 10398d0db2..a65a49ce77 100644 --- a/core/src/commands/options.ts +++ b/core/src/commands/options.ts @@ -6,9 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Command, CommandParams, CommandResult } from "./base" -import { renderOptions, cliStyles } from "../cli/helpers" -import { globalOptions } from "../cli/params" +import type { CommandParams, CommandResult } from "./base.js" +import { Command } from "./base.js" +import { renderOptions, cliStyles } from "../cli/helpers.js" +import { globalOptions } from "../cli/params.js" export class OptionsCommand extends Command { name = "options" diff --git a/core/src/commands/plugins.ts b/core/src/commands/plugins.ts index 54b395ef8a..23ea56e717 100644 --- a/core/src/commands/plugins.ts +++ b/core/src/commands/plugins.ts @@ -7,17 +7,18 @@ */ import chalk from "chalk" -import { max, fromPairs, zip } from "lodash" -import { findByName, getNames } from "../util/util" -import { dedent, naturalList, renderTable, tablePresets } from "../util/string" -import { ParameterError, toGardenError } from "../exceptions" -import { Log } from "../logger/log-entry" -import { Garden } from "../garden" -import { Command, CommandResult, CommandParams } from "./base" -import { printHeader, getTerminalWidth } from "../logger/util" -import { StringOption } from "../cli/params" -import { ConfigGraph } from "../graph/config-graph" -import { ModuleGraph } from "../graph/modules" +import { max, fromPairs, zip } from "lodash-es" +import { findByName, getNames } from "../util/util.js" +import { dedent, naturalList, renderTable, tablePresets } from "../util/string.js" +import { ParameterError, toGardenError } from "../exceptions.js" +import type { Log } from "../logger/log-entry.js" +import type { Garden } from "../garden.js" +import type { CommandResult, CommandParams } from "./base.js" +import { Command } from "./base.js" +import { printHeader, getTerminalWidth } from "../logger/util.js" +import { StringOption } from "../cli/params.js" +import { ConfigGraph } from "../graph/config-graph.js" +import { ModuleGraph } from "../graph/modules.js" const pluginArgs = { plugin: new StringOption({ diff --git a/core/src/commands/publish.ts b/core/src/commands/publish.ts index 272629396d..d2f68f5c1e 100644 --- a/core/src/commands/publish.ts +++ b/core/src/commands/publish.ts @@ -6,21 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { - Command, - CommandParams, - CommandResult, - handleProcessResults, - ProcessCommandResult, - processCommandResultSchema, - resultMetadataKeys, -} from "./base" -import { PublishTask } from "../tasks/publish" -import { printHeader } from "../logger/util" -import dedent = require("dedent") -import { publishResultSchema } from "../plugin/handlers/Build/publish" -import { joiIdentifierMap } from "../config/common" -import { StringsParameter, BooleanParameter, StringOption } from "../cli/params" +import type { CommandParams, CommandResult, ProcessCommandResult } from "./base.js" +import { Command, handleProcessResults, processCommandResultSchema, resultMetadataKeys } from "./base.js" +import { PublishTask } from "../tasks/publish.js" +import { printHeader } from "../logger/util.js" +import dedent from "dedent" +import { publishResultSchema } from "../plugin/handlers/Build/publish.js" +import { joiIdentifierMap } from "../config/common.js" +import { StringsParameter, BooleanParameter, StringOption } from "../cli/params.js" export const publishArgs = { names: new StringsParameter({ diff --git a/core/src/commands/run.ts b/core/src/commands/run.ts index fc0b7a16bc..66b0833caa 100644 --- a/core/src/commands/run.ts +++ b/core/src/commands/run.ts @@ -7,24 +7,19 @@ */ import chalk from "chalk" -import { - Command, - CommandParams, - CommandResult, - handleProcessResults, - PrepareParams, - ProcessCommandResult, - processCommandResultSchema, -} from "./base" -import { RunTask } from "../tasks/run" -import { printHeader } from "../logger/util" -import { ParameterError } from "../exceptions" -import { dedent, deline } from "../util/string" -import { BooleanParameter, StringsParameter } from "../cli/params" -import { validateActionSearchResults, watchParameter, watchRemovedWarning } from "./helpers" -import { Log } from "../logger/log-entry" -import { TestCommand } from "./test" -import { WorkflowCommand, WorkflowRunOutput } from "./workflow" +import type { CommandParams, CommandResult, PrepareParams, ProcessCommandResult } from "./base.js" +import { Command, handleProcessResults, processCommandResultSchema } from "./base.js" +import { RunTask } from "../tasks/run.js" +import { printHeader } from "../logger/util.js" +import { ParameterError } from "../exceptions.js" +import { dedent, deline } from "../util/string.js" +import { BooleanParameter, StringsParameter } from "../cli/params.js" +import { validateActionSearchResults } from "./helpers.js" +import type { Log } from "../logger/log-entry.js" +import { TestCommand } from "./test.js" +import type { WorkflowRunOutput } from "./workflow.js" +import { WorkflowCommand } from "./workflow.js" +import { watchParameter, watchRemovedWarning } from "./util/watch-parameter.js" // TODO: support interactive execution for a single Run (needs implementation from RunTask through plugin handlers). diff --git a/core/src/commands/self-update.ts b/core/src/commands/self-update.ts index 18e055b7d4..8edab2c463 100644 --- a/core/src/commands/self-update.ts +++ b/core/src/commands/self-update.ts @@ -7,23 +7,27 @@ */ import tar from "tar" -import { Command, CommandParams, CommandResult } from "./base" -import { printHeader } from "../logger/util" -import { BooleanParameter, ChoicesParameter, GlobalOptions, ParameterValues, StringParameter } from "../cli/params" -import { dedent } from "../util/string" +import type { CommandParams, CommandResult } from "./base.js" +import { Command } from "./base.js" +import { printHeader } from "../logger/util.js" +import type { GlobalOptions, ParameterValues } from "../cli/params.js" +import { BooleanParameter, ChoicesParameter, StringParameter } from "../cli/params.js" +import { dedent } from "../util/string.js" import { basename, dirname, join, resolve } from "path" import chalk from "chalk" -import { Architecture, getArchitecture, isDarwinARM, getPackageVersion, getPlatform } from "../util/util" -import { RuntimeError } from "../exceptions" -import { makeTempDir } from "../util/fs" +import type { Architecture } from "../util/util.js" +import { getArchitecture, isDarwinARM, getPackageVersion, getPlatform } from "../util/util.js" +import { RuntimeError } from "../exceptions.js" +import { makeTempDir } from "../util/fs.js" import { createReadStream, createWriteStream } from "fs" -import { copy, mkdirp, move, readdir, remove } from "fs-extra" -import { GotHttpError, got } from "../util/http" +import fsExtra from "fs-extra" +const { copy, mkdirp, move, readdir, remove } = fsExtra +import { GotHttpError, got } from "../util/http.js" import { promisify } from "node:util" -import { gardenEnv } from "../constants" +import { gardenEnv } from "../constants.js" import semver from "semver" import stream from "stream" -import { Log } from "../logger/log-entry" +import type { Log } from "../logger/log-entry.js" const ARM64_INTRODUCTION_VERSION = "0.13.12" @@ -261,9 +265,10 @@ export class SelfUpdateCommand extends Command { let installationDirectory = opts["install-dir"] let platform = opts.platform + const processExecPath = process.env.GARDEN_SEA_EXECUTABLE_PATH || process.execPath if (!installationDirectory) { - installationDirectory = dirname(process.execPath) + installationDirectory = dirname(processExecPath) log.info( chalk.white( "No installation directory specified via --install-dir option. Garden will be re-installed to the current installation directory: " @@ -308,10 +313,10 @@ export class SelfUpdateCommand extends Command { // Find the executable location // -> Make sure it's an actual executable, not a script (e.g. from a local dev build) const expectedExecutableName = process.platform === "win32" ? "garden.exe" : "garden" - if (!opts["install-dir"] && basename(process.execPath) !== expectedExecutableName) { + if (!opts["install-dir"] && basename(processExecPath) !== expectedExecutableName) { log.error( chalk.redBright( - `The executable path ${process.execPath} doesn't indicate this is a normal binary installation for your platform. Perhaps you're running a local development build?` + `The executable path ${processExecPath} doesn't indicate this is a normal binary installation for your platform. Perhaps you're running a local development build?` ) ) return { @@ -440,10 +445,10 @@ export class SelfUpdateCommand extends Command { if (extension === "zip") { // Note: lazy-loading for startup performance - const { Extract } = await import("unzipper") + const { default: unzipStream } = await import("unzip-stream") await new Promise((_resolve, reject) => { - const extractor = Extract({ path: tempDir.path }) + const extractor = unzipStream.Extract({ path: tempDir.path }) extractor.on("error", reject) extractor.on("finish", _resolve) diff --git a/core/src/commands/serve.ts b/core/src/commands/serve.ts index 8e2b2a0794..501496677f 100644 --- a/core/src/commands/serve.ts +++ b/core/src/commands/serve.ts @@ -6,22 +6,23 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Command, CommandResult, CommandParams } from "./base" -import { startServer } from "../server/server" -import { IntegerParameter, StringsParameter } from "../cli/params" -import { printEmoji, printHeader } from "../logger/util" -import { dedent } from "../util/string" -import { CommandLine } from "../cli/command-line" -import { GardenInstanceManager } from "../server/instance-manager" +import type { CommandResult, CommandParams } from "./base.js" +import { Command } from "./base.js" +import { startServer } from "../server/server.js" +import { IntegerParameter, StringsParameter } from "../cli/params.js" +import { printEmoji, printHeader } from "../logger/util.js" +import { dedent } from "../util/string.js" +import type { CommandLine } from "../cli/command-line.js" +import { GardenInstanceManager } from "../server/instance-manager.js" import chalk from "chalk" -import { getCloudDistributionName, sleep } from "../util/util" -import { Log } from "../logger/log-entry" -import { findProjectConfig } from "../config/base" -import { CloudApiTokenRefreshError, getGardenCloudDomain } from "../cloud/api" -import { uuidv4 } from "../util/random" -import { Garden } from "../garden" -import { GardenPluginReference } from "../plugin/plugin" -import { CommandError, ParameterError, isEAddrInUseException, isErrnoException } from "../exceptions" +import { getCloudDistributionName, sleep } from "../util/util.js" +import type { Log } from "../logger/log-entry.js" +import { findProjectConfig } from "../config/base.js" +import { CloudApiTokenRefreshError, getGardenCloudDomain } from "../cloud/api.js" +import { uuidv4 } from "../util/random.js" +import type { Garden } from "../garden.js" +import type { GardenPluginReference } from "../plugin/plugin.js" +import { CommandError, ParameterError, isEAddrInUseException, isErrnoException } from "../exceptions.js" export const defaultServerPort = 9777 diff --git a/core/src/commands/set.ts b/core/src/commands/set.ts index fae9f9f624..356d30591f 100644 --- a/core/src/commands/set.ts +++ b/core/src/commands/set.ts @@ -7,10 +7,11 @@ */ import chalk from "chalk" -import { EnvironmentParameter } from "../cli/params" -import { dedent } from "../util/string" -import { Command, CommandGroup, CommandParams } from "./base" -import { ConfigurationError } from "../exceptions" +import { EnvironmentParameter } from "../cli/params.js" +import { dedent } from "../util/string.js" +import type { CommandParams } from "./base.js" +import { Command, CommandGroup } from "./base.js" +import { ConfigurationError } from "../exceptions.js" export class SetCommand extends CommandGroup { name = "set" diff --git a/core/src/commands/sync/sync-restart.ts b/core/src/commands/sync/sync-restart.ts index 7c13e56307..dae12f18bf 100644 --- a/core/src/commands/sync/sync-restart.ts +++ b/core/src/commands/sync/sync-restart.ts @@ -6,14 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { StringsParameter } from "../../cli/params" -import { joi } from "../../config/common" -import { printHeader } from "../../logger/util" -import { dedent, naturalList } from "../../util/string" -import { Command, CommandParams, CommandResult } from "../base" +import { StringsParameter } from "../../cli/params.js" +import { joi } from "../../config/common.js" +import { printHeader } from "../../logger/util.js" +import { dedent, naturalList } from "../../util/string.js" +import type { CommandParams, CommandResult } from "../base.js" +import { Command } from "../base.js" import chalk from "chalk" -import { createActionLog } from "../../logger/log-entry" -import { startSyncWithoutDeploy } from "./sync-start" +import { createActionLog } from "../../logger/log-entry.js" +import { startSyncWithoutDeploy } from "./sync-start.js" const syncRestartArgs = { names: new StringsParameter({ diff --git a/core/src/commands/sync/sync-start.ts b/core/src/commands/sync/sync-start.ts index 8dc8ee8f91..9b7bf5b19f 100644 --- a/core/src/commands/sync/sync-start.ts +++ b/core/src/commands/sync/sync-start.ts @@ -6,19 +6,21 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { BooleanParameter, StringsParameter } from "../../cli/params" -import { joi } from "../../config/common" -import { printHeader } from "../../logger/util" -import { DeployTask } from "../../tasks/deploy" -import { dedent, naturalList } from "../../util/string" -import { Command, CommandParams, CommandResult, PrepareParams } from "../base" +import { BooleanParameter, StringsParameter } from "../../cli/params.js" +import { joi } from "../../config/common.js" +import { printHeader } from "../../logger/util.js" +import { DeployTask } from "../../tasks/deploy.js" +import { dedent, naturalList } from "../../util/string.js" +import type { CommandParams, CommandResult, PrepareParams } from "../base.js" +import { Command } from "../base.js" import chalk from "chalk" -import { ParameterError, RuntimeError } from "../../exceptions" -import { SyncMonitor } from "../../monitors/sync" -import { Log, createActionLog } from "../../logger/log-entry" -import { DeployAction } from "../../actions/deploy" -import { ConfigGraph } from "../../graph/config-graph" -import { Garden } from "../.." +import { ParameterError, RuntimeError } from "../../exceptions.js" +import { SyncMonitor } from "../../monitors/sync.js" +import type { Log } from "../../logger/log-entry.js" +import { createActionLog } from "../../logger/log-entry.js" +import type { DeployAction } from "../../actions/deploy.js" +import type { ConfigGraph } from "../../graph/config-graph.js" +import type { Garden } from "../../index.js" const syncStartArgs = { names: new StringsParameter({ diff --git a/core/src/commands/sync/sync-status.ts b/core/src/commands/sync/sync-status.ts index efa3853c6f..b12a119029 100644 --- a/core/src/commands/sync/sync-status.ts +++ b/core/src/commands/sync/sync-status.ts @@ -8,20 +8,22 @@ import chalk from "chalk" -import { BooleanParameter, StringsParameter } from "../../cli/params" -import { joi } from "../../config/common" -import { printHeader } from "../../logger/util" -import { dedent, deline, naturalList } from "../../util/string" -import { Command, CommandParams } from "../base" -import { createActionLog, Log } from "../../logger/log-entry" -import { PluginEventBroker } from "../../plugin-context" -import { resolvedActionToExecuted } from "../../actions/helpers" -import { GetSyncStatusResult, SyncState } from "../../plugin/handlers/Deploy/get-sync-status" -import { isEmpty, omit } from "lodash" -import { Garden } from "../.." -import { ResolvedDeployAction } from "../../actions/deploy" -import { ResolvedConfigGraph } from "../../graph/config-graph" -import { DOCS_BASE_URL } from "../../constants" +import { BooleanParameter, StringsParameter } from "../../cli/params.js" +import { joi } from "../../config/common.js" +import { printHeader } from "../../logger/util.js" +import { dedent, deline, naturalList } from "../../util/string.js" +import type { CommandParams } from "../base.js" +import { Command } from "../base.js" +import type { Log } from "../../logger/log-entry.js" +import { createActionLog } from "../../logger/log-entry.js" +import { PluginEventBroker } from "../../plugin-context.js" +import { resolvedActionToExecuted } from "../../actions/helpers.js" +import type { GetSyncStatusResult, SyncState } from "../../plugin/handlers/Deploy/get-sync-status.js" +import { isEmpty, omit } from "lodash-es" +import type { Garden } from "../../index.js" +import type { ResolvedDeployAction } from "../../actions/deploy.js" +import type { ResolvedConfigGraph } from "../../graph/config-graph.js" +import { DOCS_BASE_URL } from "../../constants.js" import pMap from "p-map" const syncStatusArgs = { diff --git a/core/src/commands/sync/sync-stop.ts b/core/src/commands/sync/sync-stop.ts index f5cede6aff..749189f238 100644 --- a/core/src/commands/sync/sync-stop.ts +++ b/core/src/commands/sync/sync-stop.ts @@ -6,13 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { StringsParameter } from "../../cli/params" -import { joi } from "../../config/common" -import { printHeader } from "../../logger/util" -import { dedent, naturalList } from "../../util/string" -import { Command, CommandParams, CommandResult } from "../base" +import { StringsParameter } from "../../cli/params.js" +import { joi } from "../../config/common.js" +import { printHeader } from "../../logger/util.js" +import { dedent, naturalList } from "../../util/string.js" +import type { CommandParams, CommandResult } from "../base.js" +import { Command } from "../base.js" import chalk from "chalk" -import { createActionLog } from "../../logger/log-entry" +import { createActionLog } from "../../logger/log-entry.js" const syncStopArgs = { names: new StringsParameter({ diff --git a/core/src/commands/sync/sync.ts b/core/src/commands/sync/sync.ts index cc504b2b49..247d1a0bbc 100644 --- a/core/src/commands/sync/sync.ts +++ b/core/src/commands/sync/sync.ts @@ -6,11 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { CommandGroup } from "../base" -import { SyncRestartCommand } from "./sync-restart" -import { SyncStartCommand } from "./sync-start" -import { SyncStatusCommand } from "./sync-status" -import { SyncStopCommand } from "./sync-stop" +import { CommandGroup } from "../base.js" +import { SyncRestartCommand } from "./sync-restart.js" +import { SyncStartCommand } from "./sync-start.js" +import { SyncStatusCommand } from "./sync-status.js" +import { SyncStopCommand } from "./sync-stop.js" export class SyncCommand extends CommandGroup { name = "sync" diff --git a/core/src/commands/test.ts b/core/src/commands/test.ts index dd8903f8c9..6b69720f7b 100644 --- a/core/src/commands/test.ts +++ b/core/src/commands/test.ts @@ -6,22 +6,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { - Command, - CommandParams, - CommandResult, - handleProcessResults, - PrepareParams, - ProcessCommandResult, - processCommandResultSchema, -} from "./base" -import { TestTask } from "../tasks/test" -import { printHeader } from "../logger/util" -import { StringsParameter, BooleanParameter } from "../cli/params" -import { dedent, deline } from "../util/string" -import { ParameterError } from "../exceptions" -import { warnOnLinkedActions } from "../actions/helpers" -import { validateActionSearchResults, watchParameter, watchRemovedWarning } from "./helpers" +import type { CommandParams, CommandResult, PrepareParams, ProcessCommandResult } from "./base.js" +import { Command, handleProcessResults, processCommandResultSchema } from "./base.js" +import { TestTask } from "../tasks/test.js" +import { printHeader } from "../logger/util.js" +import { StringsParameter, BooleanParameter } from "../cli/params.js" +import { dedent, deline } from "../util/string.js" +import { ParameterError } from "../exceptions.js" +import { warnOnLinkedActions } from "../actions/helpers.js" +import { validateActionSearchResults } from "./helpers.js" +import { watchParameter, watchRemovedWarning } from "./util/watch-parameter.js" export const testArgs = { names: new StringsParameter({ diff --git a/core/src/commands/tools.ts b/core/src/commands/tools.ts index 8605b3e3c1..7004360449 100644 --- a/core/src/commands/tools.ts +++ b/core/src/commands/tools.ts @@ -7,17 +7,18 @@ */ import chalk from "chalk" -import { max, omit, sortBy } from "lodash" -import { dedent, naturalList, renderTable, tablePresets } from "../util/string" -import { Log } from "../logger/log-entry" -import { Garden, DummyGarden } from "../garden" -import { Command, CommandParams } from "./base" -import { getTerminalWidth } from "../logger/util" -import { ParameterError } from "../exceptions" -import { uniqByName, exec, shutdown } from "../util/util" -import { PluginTool } from "../util/ext-tools" -import { findProjectConfig } from "../config/base" -import { StringOption, BooleanParameter } from "../cli/params" +import { max, omit, sortBy } from "lodash-es" +import { dedent, naturalList, renderTable, tablePresets } from "../util/string.js" +import type { Log } from "../logger/log-entry.js" +import { Garden, DummyGarden } from "../garden.js" +import type { CommandParams } from "./base.js" +import { Command } from "./base.js" +import { getTerminalWidth } from "../logger/util.js" +import { ParameterError } from "../exceptions.js" +import { uniqByName, exec, shutdown } from "../util/util.js" +import { PluginTool } from "../util/ext-tools.js" +import { findProjectConfig } from "../config/base.js" +import { StringOption, BooleanParameter } from "../cli/params.js" const toolsArgs = { tool: new StringOption({ diff --git a/core/src/commands/unlink/action.ts b/core/src/commands/unlink/action.ts index 6f3b1e1eae..13e7d75033 100644 --- a/core/src/commands/unlink/action.ts +++ b/core/src/commands/unlink/action.ts @@ -8,12 +8,13 @@ import dedent from "dedent" -import { Command, CommandResult, CommandParams } from "../base" -import { removeLinkedSources } from "../../util/ext-source-util" -import { printHeader } from "../../logger/util" -import { LinkedSource } from "../../config-store/local" -import { StringsParameter, BooleanParameter } from "../../cli/params" -import { actionKinds } from "../../actions/types" +import type { CommandResult, CommandParams } from "../base.js" +import { Command } from "../base.js" +import { removeLinkedSources } from "../../util/ext-source-util.js" +import { printHeader } from "../../logger/util.js" +import type { LinkedSource } from "../../config-store/local.js" +import { StringsParameter, BooleanParameter } from "../../cli/params.js" +import { actionKinds } from "../../actions/types.js" const unlinkActionArguments = { actions: new StringsParameter({ diff --git a/core/src/commands/unlink/module.ts b/core/src/commands/unlink/module.ts index 90de0df217..ca0b0d4a3b 100644 --- a/core/src/commands/unlink/module.ts +++ b/core/src/commands/unlink/module.ts @@ -6,13 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import dedent = require("dedent") - -import { Command, CommandResult, CommandParams } from "../base" -import { removeLinkedSources } from "../../util/ext-source-util" -import { printHeader } from "../../logger/util" -import { LinkedSource } from "../../config-store/local" -import { StringsParameter, BooleanParameter } from "../../cli/params" +import dedent from "dedent" + +import type { CommandResult, CommandParams } from "../base.js" +import { Command } from "../base.js" +import { removeLinkedSources } from "../../util/ext-source-util.js" +import { printHeader } from "../../logger/util.js" +import type { LinkedSource } from "../../config-store/local.js" +import { StringsParameter, BooleanParameter } from "../../cli/params.js" const unlinkModuleArguments = { modules: new StringsParameter({ diff --git a/core/src/commands/unlink/source.ts b/core/src/commands/unlink/source.ts index fbf96d15ff..e560eda074 100644 --- a/core/src/commands/unlink/source.ts +++ b/core/src/commands/unlink/source.ts @@ -6,13 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import dedent = require("dedent") - -import { Command, CommandResult, CommandParams } from "../base" -import { removeLinkedSources } from "../../util/ext-source-util" -import { printHeader } from "../../logger/util" -import { LinkedSource } from "../../config-store/local" -import { StringsParameter, BooleanParameter } from "../../cli/params" +import dedent from "dedent" + +import type { CommandResult, CommandParams } from "../base.js" +import { Command } from "../base.js" +import { removeLinkedSources } from "../../util/ext-source-util.js" +import { printHeader } from "../../logger/util.js" +import type { LinkedSource } from "../../config-store/local.js" +import { StringsParameter, BooleanParameter } from "../../cli/params.js" const unlinkSourceArguments = { sources: new StringsParameter({ diff --git a/core/src/commands/unlink/unlink.ts b/core/src/commands/unlink/unlink.ts index f1f04faebd..6c3ac202ec 100644 --- a/core/src/commands/unlink/unlink.ts +++ b/core/src/commands/unlink/unlink.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { CommandGroup } from "../base" -import { UnlinkSourceCommand } from "./source" -import { UnlinkModuleCommand } from "./module" -import { UnlinkActionCommand } from "./action" +import { CommandGroup } from "../base.js" +import { UnlinkSourceCommand } from "./source.js" +import { UnlinkModuleCommand } from "./module.js" +import { UnlinkActionCommand } from "./action.js" export class UnlinkCommand extends CommandGroup { name = "unlink" diff --git a/core/src/commands/up.ts b/core/src/commands/up.ts index 0ee1e78630..554f056b7f 100644 --- a/core/src/commands/up.ts +++ b/core/src/commands/up.ts @@ -7,24 +7,15 @@ */ import chalk from "chalk" -import { Command, CommandParams, CommandResult } from "./base" -import { dedent } from "../util/string" -import { deployArgs, DeployCommand, deployOpts } from "./deploy" -import { serveOpts } from "./serve" -import type { LoggerType } from "../logger/logger" -import { runAsDevCommand } from "./helpers" - -const upArgs = { - ...deployArgs, -} - -const upOpts = { - ...deployOpts, - ...serveOpts, -} +import type { CommandParams, CommandResult } from "./base.js" +import { Command } from "./base.js" +import { dedent } from "../util/string.js" +import type { deployArgs, deployOpts } from "./deploy.js" +import type { serveOpts } from "./serve.js" +import type { LoggerType } from "../logger/logger.js" -type UpArgs = typeof upArgs -type UpOpts = typeof upOpts +type UpArgs = typeof deployArgs +type UpOpts = typeof deployOpts & typeof serveOpts export class UpCommand extends Command { name = "up" @@ -44,7 +35,11 @@ export class UpCommand extends Command { } async action(params: CommandParams): Promise { + const { DeployCommand } = await import("./deploy.js") if (!params.commandLine) { + // import here to avoid a circular dependency + const { runAsDevCommand } = await import("./helpers.js") + // Then we start a dev command and run `deploy --logs` as the first interactive command. return runAsDevCommand("deploy --logs", params) } diff --git a/core/src/commands/update-remote/actions.ts b/core/src/commands/update-remote/actions.ts index eae3d96475..dfaf0ace31 100644 --- a/core/src/commands/update-remote/actions.ts +++ b/core/src/commands/update-remote/actions.ts @@ -6,21 +6,24 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { difference } from "lodash" +import { difference } from "lodash-es" import dedent from "dedent" import chalk from "chalk" -import { Command, CommandResult, CommandParams } from "../base" -import { SourceConfig, actionSourceSchema } from "../../config/project" -import { ParameterError } from "../../exceptions" -import { pruneRemoteSources, updateRemoteSharedOptions } from "./helpers" -import { printHeader } from "../../logger/util" -import { Garden } from "../../garden" -import { Log } from "../../logger/log-entry" -import { joiArray, joi } from "../../config/common" -import { StringsParameter, ParameterValues } from "../../cli/params" +import type { CommandResult, CommandParams } from "../base.js" +import { Command } from "../base.js" +import type { SourceConfig } from "../../config/project.js" +import { actionSourceSchema } from "../../config/project.js" +import { ParameterError } from "../../exceptions.js" +import { pruneRemoteSources, updateRemoteSharedOptions } from "./helpers.js" +import { printHeader } from "../../logger/util.js" +import type { Garden } from "../../garden.js" +import type { Log } from "../../logger/log-entry.js" +import { joiArray, joi } from "../../config/common.js" +import type { ParameterValues } from "../../cli/params.js" +import { StringsParameter } from "../../cli/params.js" import pMap from "p-map" -import { naturalList } from "../../util/string" +import { naturalList } from "../../util/string.js" const updateRemoteActionsArguments = { actions: new StringsParameter({ diff --git a/core/src/commands/update-remote/all.ts b/core/src/commands/update-remote/all.ts index d0dc1c6dbb..d7d8efbba5 100644 --- a/core/src/commands/update-remote/all.ts +++ b/core/src/commands/update-remote/all.ts @@ -8,14 +8,16 @@ import dedent from "dedent" -import { Command, CommandResult, CommandParams } from "../base" -import { updateRemoteSources } from "./sources" -import { updateRemoteModules } from "./modules" -import { SourceConfig, projectSourceSchema, moduleSourceSchema, actionSourceSchema } from "../../config/project" -import { printHeader } from "../../logger/util" -import { joi, joiArray } from "../../config/common" -import { updateRemoteSharedOptions } from "./helpers" -import { updateRemoteActions } from "./actions" +import type { CommandResult, CommandParams } from "../base.js" +import { Command } from "../base.js" +import { updateRemoteSources } from "./sources.js" +import { updateRemoteModules } from "./modules.js" +import type { SourceConfig } from "../../config/project.js" +import { projectSourceSchema, moduleSourceSchema, actionSourceSchema } from "../../config/project.js" +import { printHeader } from "../../logger/util.js" +import { joi, joiArray } from "../../config/common.js" +import { updateRemoteSharedOptions } from "./helpers.js" +import { updateRemoteActions } from "./actions.js" export interface UpdateRemoteAllResult { projectSources: SourceConfig[] diff --git a/core/src/commands/update-remote/helpers.ts b/core/src/commands/update-remote/helpers.ts index 393fed3ed9..97b855fcf5 100644 --- a/core/src/commands/update-remote/helpers.ts +++ b/core/src/commands/update-remote/helpers.ts @@ -6,14 +6,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { difference } from "lodash" +import { difference } from "lodash-es" import { join, basename } from "path" -import { remove, pathExists } from "fs-extra" - -import { getChildDirNames } from "../../util/fs" -import { ExternalSourceType, getRemoteSourceLocalPath, getRemoteSourcesPath } from "../../util/ext-source-util" -import { SourceConfig } from "../../config/project" -import { BooleanParameter } from "../../cli/params" +import fsExtra from "fs-extra" +const { remove, pathExists } = fsExtra + +import { getChildDirNames } from "../../util/fs.js" +import type { ExternalSourceType } from "../../util/ext-source-util.js" +import { getRemoteSourceLocalPath, getRemoteSourcesPath } from "../../util/ext-source-util.js" +import type { SourceConfig } from "../../config/project.js" +import { BooleanParameter } from "../../cli/params.js" export const updateRemoteSharedOptions = { parallel: new BooleanParameter({ diff --git a/core/src/commands/update-remote/modules.ts b/core/src/commands/update-remote/modules.ts index c2618b4d55..ac198e8744 100644 --- a/core/src/commands/update-remote/modules.ts +++ b/core/src/commands/update-remote/modules.ts @@ -6,21 +6,24 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { difference } from "lodash" -import dedent = require("dedent") +import { difference } from "lodash-es" +import dedent from "dedent" import chalk from "chalk" -import { Command, CommandResult, CommandParams } from "../base" -import { SourceConfig, moduleSourceSchema } from "../../config/project" -import { ParameterError } from "../../exceptions" -import { pruneRemoteSources, updateRemoteSharedOptions } from "./helpers" -import { moduleHasRemoteSource } from "../../util/ext-source-util" -import { printHeader } from "../../logger/util" -import { Garden } from "../../garden" -import { Log } from "../../logger/log-entry" -import { joiArray, joi } from "../../config/common" -import { StringsParameter, ParameterValues } from "../../cli/params" -import { naturalList } from "../../util/string" +import type { CommandResult, CommandParams } from "../base.js" +import { Command } from "../base.js" +import type { SourceConfig } from "../../config/project.js" +import { moduleSourceSchema } from "../../config/project.js" +import { ParameterError } from "../../exceptions.js" +import { pruneRemoteSources, updateRemoteSharedOptions } from "./helpers.js" +import { moduleHasRemoteSource } from "../../util/ext-source-util.js" +import { printHeader } from "../../logger/util.js" +import type { Garden } from "../../garden.js" +import type { Log } from "../../logger/log-entry.js" +import { joiArray, joi } from "../../config/common.js" +import type { ParameterValues } from "../../cli/params.js" +import { StringsParameter } from "../../cli/params.js" +import { naturalList } from "../../util/string.js" const updateRemoteModulesArguments = { modules: new StringsParameter({ diff --git a/core/src/commands/update-remote/sources.ts b/core/src/commands/update-remote/sources.ts index aa972b8d86..ca1aeef22f 100644 --- a/core/src/commands/update-remote/sources.ts +++ b/core/src/commands/update-remote/sources.ts @@ -6,20 +6,23 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { difference } from "lodash" -import dedent = require("dedent") +import { difference } from "lodash-es" +import dedent from "dedent" import chalk from "chalk" -import { Command, CommandResult, CommandParams } from "../base" -import { ParameterError } from "../../exceptions" -import { pruneRemoteSources, updateRemoteSharedOptions } from "./helpers" -import { SourceConfig, projectSourceSchema } from "../../config/project" -import { printHeader } from "../../logger/util" -import { Garden } from "../../garden" -import { Log } from "../../logger/log-entry" -import { joiArray, joi } from "../../config/common" -import { StringsParameter, ParameterValues } from "../../cli/params" -import { naturalList } from "../../util/string" +import type { CommandResult, CommandParams } from "../base.js" +import { Command } from "../base.js" +import { ParameterError } from "../../exceptions.js" +import { pruneRemoteSources, updateRemoteSharedOptions } from "./helpers.js" +import type { SourceConfig } from "../../config/project.js" +import { projectSourceSchema } from "../../config/project.js" +import { printHeader } from "../../logger/util.js" +import type { Garden } from "../../garden.js" +import type { Log } from "../../logger/log-entry.js" +import { joiArray, joi } from "../../config/common.js" +import type { ParameterValues } from "../../cli/params.js" +import { StringsParameter } from "../../cli/params.js" +import { naturalList } from "../../util/string.js" const updateRemoteSourcesArguments = { sources: new StringsParameter({ diff --git a/core/src/commands/update-remote/update-remote.ts b/core/src/commands/update-remote/update-remote.ts index 39a7076b57..4b37ef794e 100644 --- a/core/src/commands/update-remote/update-remote.ts +++ b/core/src/commands/update-remote/update-remote.ts @@ -6,11 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { CommandGroup } from "../base" -import { UpdateRemoteSourcesCommand } from "./sources" -import { UpdateRemoteModulesCommand } from "./modules" -import { UpdateRemoteAllCommand } from "./all" -import { UpdateRemoteActionsCommand } from "./actions" +import { CommandGroup } from "../base.js" +import { UpdateRemoteSourcesCommand } from "./sources.js" +import { UpdateRemoteModulesCommand } from "./modules.js" +import { UpdateRemoteAllCommand } from "./all.js" +import { UpdateRemoteActionsCommand } from "./actions.js" export class UpdateRemoteCommand extends CommandGroup { name = "update-remote" diff --git a/core/src/commands/util/fetch-tools.ts b/core/src/commands/util/fetch-tools.ts index 79b11faf46..80c7666bcb 100644 --- a/core/src/commands/util/fetch-tools.ts +++ b/core/src/commands/util/fetch-tools.ts @@ -6,16 +6,17 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Command, CommandParams } from "../base" -import { RuntimeError } from "../../exceptions" +import type { CommandParams } from "../base.js" +import { Command } from "../base.js" +import { RuntimeError } from "../../exceptions.js" import dedent from "dedent" -import { GardenPluginSpec } from "../../plugin/plugin" -import { findProjectConfig } from "../../config/base" -import { Garden, DummyGarden } from "../../garden" -import { PluginTool } from "../../util/ext-tools" -import { fromPairs, omit, uniqBy } from "lodash" -import { printHeader, printFooter } from "../../logger/util" -import { BooleanParameter } from "../../cli/params" +import type { GardenPluginSpec } from "../../plugin/plugin.js" +import { findProjectConfig } from "../../config/base.js" +import { Garden, DummyGarden } from "../../garden.js" +import { PluginTool } from "../../util/ext-tools.js" +import { fromPairs, omit, uniqBy } from "lodash-es" +import { printHeader, printFooter } from "../../logger/util.js" +import { BooleanParameter } from "../../cli/params.js" const fetchToolsOpts = { "all": new BooleanParameter({ diff --git a/core/src/commands/util/hide-warning.ts b/core/src/commands/util/hide-warning.ts index ad6196de80..8d6ca25d3f 100644 --- a/core/src/commands/util/hide-warning.ts +++ b/core/src/commands/util/hide-warning.ts @@ -6,9 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Command, CommandParams } from "../base" +import type { CommandParams } from "../base.js" +import { Command } from "../base.js" import dedent from "dedent" -import { StringParameter } from "../../cli/params" +import { StringParameter } from "../../cli/params.js" const hideWarningArgs = { key: new StringParameter({ diff --git a/core/src/commands/util/mutagen.ts b/core/src/commands/util/mutagen.ts index d225b78d68..b25858f589 100644 --- a/core/src/commands/util/mutagen.ts +++ b/core/src/commands/util/mutagen.ts @@ -6,15 +6,17 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Command, CommandParams } from "../base" -import { RuntimeError } from "../../exceptions" +import type { CommandParams } from "../base.js" +import { Command } from "../base.js" +import { RuntimeError } from "../../exceptions.js" import dedent from "dedent" -import { findProjectConfig } from "../../config/base" -import { DEFAULT_GARDEN_DIR_NAME, MUTAGEN_DIR_NAME } from "../../constants" +import { findProjectConfig } from "../../config/base.js" +import { DEFAULT_GARDEN_DIR_NAME, MUTAGEN_DIR_NAME } from "../../constants.js" import { join } from "path" -import { exec } from "../../util/util" -import { mutagenCli } from "../../mutagen" -import { mkdirp } from "fs-extra" +import { exec } from "../../util/util.js" +import { mutagenCli } from "../../mutagen.js" +import fsExtra from "fs-extra" +const { mkdirp } = fsExtra export class MutagenCommand extends Command<{}, {}> { name = "mutagen" diff --git a/core/src/commands/util/util.ts b/core/src/commands/util/util.ts index 5c056d7ffb..dbefa23f18 100644 --- a/core/src/commands/util/util.ts +++ b/core/src/commands/util/util.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { CommandGroup } from "../base" -import { FetchToolsCommand } from "./fetch-tools" -import { HideWarningCommand } from "./hide-warning" -import { MutagenCommand } from "./mutagen" +import { CommandGroup } from "../base.js" +import { FetchToolsCommand } from "./fetch-tools.js" +import { HideWarningCommand } from "./hide-warning.js" +import { MutagenCommand } from "./mutagen.js" export class UtilCommand extends CommandGroup { name = "util" diff --git a/core/src/commands/util/watch-parameter.ts b/core/src/commands/util/watch-parameter.ts new file mode 100644 index 0000000000..b3ba1bdf5e --- /dev/null +++ b/core/src/commands/util/watch-parameter.ts @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2018-2023 Garden Technologies, Inc. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +import chalk from "chalk" +import { BooleanParameter } from "../../cli/params.js" +import type { Garden } from "../../garden.js" +import type { Log } from "../../logger/log-entry.js" + +export const watchParameter = new BooleanParameter({ + help: "[REMOVED] Watch for changes and update actions automatically.", + aliases: ["w"], + cliOnly: true, + hidden: true, +}) + +export async function watchRemovedWarning(garden: Garden, log: Log) { + return garden.emitWarning({ + log, + key: "watch-flag-removed", + message: chalk.yellow( + "The -w/--watch flag has been removed. Please use other options instead, such as the --sync option for Deploy actions. If you need this feature and would like it re-introduced, please don't hesitate to reach out: https://garden.io/community" + ), + }) +} diff --git a/core/src/commands/validate.ts b/core/src/commands/validate.ts index d9b79c777a..10537ff618 100644 --- a/core/src/commands/validate.ts +++ b/core/src/commands/validate.ts @@ -7,10 +7,11 @@ */ import chalk from "chalk" -import { Command, CommandParams, CommandResult } from "./base" -import { printEmoji, printHeader } from "../logger/util" -import { resolveWorkflowConfig } from "../config/workflow" -import { dedent } from "../util/string" +import type { CommandParams, CommandResult } from "./base.js" +import { Command } from "./base.js" +import { printEmoji, printHeader } from "../logger/util.js" +import { resolveWorkflowConfig } from "../config/workflow.js" +import { dedent } from "../util/string.js" export class ValidateCommand extends Command { name = "validate" diff --git a/core/src/commands/version.ts b/core/src/commands/version.ts index 5f3891915e..9e467b82ca 100644 --- a/core/src/commands/version.ts +++ b/core/src/commands/version.ts @@ -6,8 +6,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { getPackageVersion } from "../util/util" -import { Command, CommandParams, CommandResult } from "./base" +import { getPackageVersion } from "../util/util.js" +import type { CommandParams, CommandResult } from "./base.js" +import { Command } from "./base.js" interface VersionCommandResult { version: string diff --git a/core/src/commands/workflow.ts b/core/src/commands/workflow.ts index c654c2abfc..9de0f4c7ca 100644 --- a/core/src/commands/workflow.ts +++ b/core/src/commands/workflow.ts @@ -8,39 +8,33 @@ import chalk from "chalk" import cloneDeep from "fast-copy" -import { flatten, last, repeat, size } from "lodash" -import { printHeader, getTerminalWidth, renderMessageWithDivider, renderDuration } from "../logger/util" -import { Command, CommandParams, CommandResult } from "./base" -import { dedent, wordWrap, deline, naturalList } from "../util/string" -import { Garden } from "../garden" -import { WorkflowStepSpec, WorkflowConfig, WorkflowFileSpec } from "../config/workflow" -import { Log } from "../logger/log-entry" -import { - ChildProcessError, - GardenError, - InternalError, - RuntimeError, - WorkflowScriptError, - toGardenError, -} from "../exceptions" -import { - WorkflowConfigContext, - WorkflowStepConfigContext, - WorkflowStepResult, -} from "../config/template-contexts/workflow" -import { resolveTemplateStrings, resolveTemplateString } from "../template-string/template-string" -import { ConfigurationError, FilesystemError } from "../exceptions" +import { flatten, last, repeat, size } from "lodash-es" +import { printHeader, getTerminalWidth, renderMessageWithDivider, renderDuration } from "../logger/util.js" +import type { CommandParams, CommandResult } from "./base.js" +import { Command } from "./base.js" +import { dedent, wordWrap, deline, naturalList } from "../util/string.js" +import type { Garden } from "../garden.js" +import type { WorkflowStepSpec, WorkflowConfig, WorkflowFileSpec } from "../config/workflow.js" +import type { Log } from "../logger/log-entry.js" +import type { GardenError } from "../exceptions.js" +import { ChildProcessError, InternalError, RuntimeError, WorkflowScriptError, toGardenError } from "../exceptions.js" +import type { WorkflowStepResult } from "../config/template-contexts/workflow.js" +import { WorkflowConfigContext, WorkflowStepConfigContext } from "../config/template-contexts/workflow.js" +import { resolveTemplateStrings, resolveTemplateString } from "../template-string/template-string.js" +import { ConfigurationError, FilesystemError } from "../exceptions.js" import { posix, join } from "path" -import { ensureDir, writeFile } from "fs-extra" -import { getDurationMsec, toEnvVars } from "../util/util" -import { runScript } from "../util/util" -import { LogLevel } from "../logger/logger" -import { registerWorkflowRun } from "../cloud/workflow-lifecycle" -import { parseCliArgs, pickCommand, processCliArgs } from "../cli/helpers" -import { GlobalOptions, ParameterValues, StringParameter } from "../cli/params" -import { GardenCli } from "../cli/cli" -import { getCustomCommands } from "./custom" -import { getBuiltinCommands } from "./commands" +import fsExtra from "fs-extra" +const { ensureDir, writeFile } = fsExtra +import { getDurationMsec, toEnvVars } from "../util/util.js" +import { runScript } from "../util/util.js" +import { LogLevel } from "../logger/logger.js" +import { registerWorkflowRun } from "../cloud/workflow-lifecycle.js" +import { parseCliArgs, pickCommand, processCliArgs } from "../cli/helpers.js" +import type { GlobalOptions, ParameterValues } from "../cli/params.js" +import { StringParameter } from "../cli/params.js" +import type { GardenCli } from "../cli/cli.js" +import { getCustomCommands } from "./custom.js" +import { getBuiltinCommands } from "./commands.js" const runWorkflowArgs = { workflow: new StringParameter({ diff --git a/core/src/config-store/base.ts b/core/src/config-store/base.ts index c4e277ffb0..bbcebb4295 100644 --- a/core/src/config-store/base.ts +++ b/core/src/config-store/base.ts @@ -6,11 +6,12 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ensureFile, readFile } from "fs-extra" -import { z, ZodType } from "zod" +import fsExtra from "fs-extra" +const { ensureFile, readFile } = fsExtra +import type { z, ZodType } from "zod" import { lock } from "proper-lockfile" import writeFileAtomic from "write-file-atomic" -import { InternalError } from "../exceptions" +import { InternalError } from "../exceptions.js" // Just a shorthand to make the code below a little more compact type I> = z.infer @@ -43,7 +44,7 @@ export abstract class ConfigStore> { /** * Set the value for the given section or key in a section. */ - async set, K extends keyof I[S]>(section: S, value: I[S]): Promise + async set, _K extends keyof I[S]>(section: S, value: I[S]): Promise async set, K extends keyof I[S]>(section: S, key: K, value: I[S][K]): Promise async set, K extends keyof I[S]>(section: S, key: K | I[S], value?: I[S][K]) { const release = await this.lock() @@ -66,7 +67,7 @@ export abstract class ConfigStore> { * exist, otherwise an error is thrown. If a partial record is provided, the record is updated with the fields * given. Returns the full record after update. */ - async update, K extends keyof I[S], N extends keyof I[S][K]>( + async update, K extends keyof I[S], _N extends keyof I[S][K]>( section: S, key: K, value: Partial[S][K]> diff --git a/core/src/config-store/global.ts b/core/src/config-store/global.ts index c299b6164d..61c5351511 100644 --- a/core/src/config-store/global.ts +++ b/core/src/config-store/global.ts @@ -8,13 +8,14 @@ import { join } from "path" -import { GARDEN_GLOBAL_PATH } from "../constants" -import { ConfigStore } from "./base" +import { GARDEN_GLOBAL_PATH } from "../constants.js" +import { ConfigStore } from "./base.js" import { z } from "zod" -import { readFile } from "fs-extra" +import fsExtra from "fs-extra" +const { readFile } = fsExtra import { load } from "js-yaml" import cloneDeep from "fast-copy" -import { omit } from "lodash" +import { omit } from "lodash-es" export const legacyGlobalConfigFilename = "global-config.yml" export const globalConfigFilename = "global-config.json" diff --git a/core/src/config-store/local.ts b/core/src/config-store/local.ts index ccb1bea1bf..28115d3643 100644 --- a/core/src/config-store/local.ts +++ b/core/src/config-store/local.ts @@ -7,12 +7,13 @@ */ import { join } from "path" -import { joi } from "../config/common" -import { ConfigStore } from "./base" +import { joi } from "../config/common.js" +import { ConfigStore } from "./base.js" import { z } from "zod" -import { readFile } from "fs-extra" +import fsExtra from "fs-extra" +const { readFile } = fsExtra import { load } from "js-yaml" -import { keyBy, memoize } from "lodash" +import { keyBy, memoize } from "lodash-es" export const legacyLocalConfigFilename = "local-config.yml" export const localConfigFilename = "local-config.json" diff --git a/core/src/config/base.ts b/core/src/config/base.ts index cd46dad812..fdb4477733 100644 --- a/core/src/config/base.ts +++ b/core/src/config/base.ts @@ -6,28 +6,33 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import dotenv = require("dotenv") +import dotenv from "dotenv" import { sep, resolve, relative, basename, dirname, join } from "path" import { load } from "js-yaml" import { lint } from "yaml-lint" -import { pathExists, readFile } from "fs-extra" -import { omit, isPlainObject, isArray } from "lodash" -import { coreModuleSpecSchema, baseModuleSchemaKeys, BuildDependencyConfig, ModuleConfig } from "./module" -import { ConfigurationError, FilesystemError, ParameterError } from "../exceptions" -import { DEFAULT_BUILD_TIMEOUT_SEC, DOCS_BASE_URL, GardenApiVersion } from "../constants" -import type { ProjectConfig } from "../config/project" -import { validateWithPath } from "./validation" -import { defaultDotIgnoreFile, listDirectory } from "../util/fs" -import { isConfigFilename } from "../util/fs" -import { ConfigTemplateKind } from "./config-template" -import { isNotNull, isTruthy } from "../util/util" -import { createSchema, DeepPrimitiveMap, joi, PrimitiveMap } from "./common" -import { emitNonRepeatableWarning } from "../warnings" -import { ActionKind, actionKinds } from "../actions/types" -import { mayContainTemplateString } from "../template-string/template-string" -import { Log } from "../logger/log-entry" -import { Document, DocumentOptions, parseAllDocuments } from "yaml" -import { dedent, deline } from "../util/string" +import fsExtra from "fs-extra" +const { pathExists, readFile } = fsExtra +import { omit, isPlainObject, isArray } from "lodash-es" +import type { BuildDependencyConfig, ModuleConfig } from "./module.js" +import { coreModuleSpecSchema, baseModuleSchemaKeys } from "./module.js" +import { ConfigurationError, FilesystemError, ParameterError } from "../exceptions.js" +import { DEFAULT_BUILD_TIMEOUT_SEC, DOCS_BASE_URL, GardenApiVersion } from "../constants.js" +import type { ProjectConfig } from "../config/project.js" +import { validateWithPath } from "./validation.js" +import { defaultDotIgnoreFile, listDirectory } from "../util/fs.js" +import { isConfigFilename } from "../util/fs.js" +import type { ConfigTemplateKind } from "./config-template.js" +import { isNotNull, isTruthy } from "../util/util.js" +import type { DeepPrimitiveMap, PrimitiveMap } from "./common.js" +import { createSchema, joi } from "./common.js" +import { emitNonRepeatableWarning } from "../warnings.js" +import type { ActionKind } from "../actions/types.js" +import { actionKinds } from "../actions/types.js" +import { mayContainTemplateString } from "../template-string/template-string.js" +import type { Log } from "../logger/log-entry.js" +import type { Document, DocumentOptions } from "yaml" +import { parseAllDocuments } from "yaml" +import { dedent, deline } from "../util/string.js" export const configTemplateKind = "ConfigTemplate" export const renderTemplateKind = "RenderTemplate" diff --git a/core/src/config/command.ts b/core/src/config/command.ts index 0b68ead5e2..a09187346f 100644 --- a/core/src/config/command.ts +++ b/core/src/config/command.ts @@ -6,20 +6,20 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { memoize } from "lodash" -import { BaseGardenResource, baseInternalFieldsSchema } from "./base" +import { memoize } from "lodash-es" +import type { BaseGardenResource } from "./base.js" +import { baseInternalFieldsSchema } from "./base.js" +import type { DeepPrimitiveMap, StringMap } from "./common.js" import { - DeepPrimitiveMap, joi, joiArray, joiEnvVars, joiIdentifier, joiUserIdentifier, joiVariables, - StringMap, createSchema, unusedApiVersionSchema, -} from "./common" +} from "./common.js" interface BaseParameter { name: string diff --git a/core/src/config/common.ts b/core/src/config/common.ts index da8c669ce8..e240f517cd 100644 --- a/core/src/config/common.ts +++ b/core/src/config/common.ts @@ -6,17 +6,21 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import Joi, { SchemaLike } from "@hapi/joi" -import Ajv from "ajv" -import addFormats from "ajv-formats" -import { splitLast, deline, dedent, naturalList, titleize } from "../util/string" +import type { SchemaLike } from "@hapi/joi" +import Joi from "@hapi/joi" +import ajvPackage from "ajv" +const Ajv = ajvPackage.default +import addFormatsPackage from "ajv-formats" +const addFormats = addFormatsPackage.default +import { splitLast, deline, dedent, naturalList, titleize } from "../util/string.js" import cloneDeep from "fast-copy" -import { isArray, isPlainObject, isString, mapValues, memoize } from "lodash" -import { joiPathPlaceholder } from "./validation" -import { DOCS_BASE_URL, GardenApiVersion } from "../constants" -import { ActionKind, actionKinds, actionKindsLower } from "../actions/types" -import { ConfigurationError, InternalError } from "../exceptions" -import type { ConfigContextType } from "./template-contexts/base" +import { isArray, isPlainObject, isString, mapValues, memoize } from "lodash-es" +import { joiPathPlaceholder } from "./validation.js" +import { DOCS_BASE_URL, GardenApiVersion } from "../constants.js" +import type { ActionKind } from "../actions/types.js" +import { actionKinds, actionKindsLower } from "../actions/types.js" +import { ConfigurationError, InternalError } from "../exceptions.js" +import type { ConfigContextType } from "./template-contexts/base.js" import { z } from "zod" import { gitUrlRegex, @@ -30,10 +34,10 @@ import { userIdentifierRegex, variableNameRegex, envVarRegex, -} from "./constants" +} from "./constants.js" // Avoid chasing moved references -export * from "./constants" +export * from "./constants.js" const ajv = new Ajv({ allErrors: true, useDefaults: true, strict: false }) addFormats(ajv) diff --git a/core/src/config/config-template.ts b/core/src/config/config-template.ts index 38fc429daa..83966564e5 100644 --- a/core/src/config/config-template.ts +++ b/core/src/config/config-template.ts @@ -6,19 +6,24 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { joi, joiUserIdentifier, CustomObjectSchema, createSchema, unusedApiVersionSchema } from "./common" -import { baseModuleSpecSchema, BaseModuleSpec } from "./module" -import { dedent, naturalList } from "../util/string" -import { configTemplateKind, renderTemplateKind, BaseGardenResource, baseInternalFieldsSchema } from "./base" -import { resolveTemplateStrings } from "../template-string/template-string" -import { validateConfig } from "./validation" -import { Garden } from "../garden" -import { ConfigurationError } from "../exceptions" +import type { CustomObjectSchema } from "./common.js" +import { joi, joiUserIdentifier, createSchema, unusedApiVersionSchema } from "./common.js" +import type { BaseModuleSpec } from "./module.js" +import { baseModuleSpecSchema } from "./module.js" +import { dedent, naturalList } from "../util/string.js" +import type { BaseGardenResource } from "./base.js" +import { configTemplateKind, renderTemplateKind, baseInternalFieldsSchema } from "./base.js" +import { resolveTemplateStrings } from "../template-string/template-string.js" +import { validateConfig } from "./validation.js" +import type { Garden } from "../garden.js" +import { ConfigurationError } from "../exceptions.js" import { resolve, posix, dirname } from "path" -import { readFile } from "fs-extra" -import { ProjectConfigContext } from "./template-contexts/project" -import { ActionConfig, actionKinds } from "../actions/types" -import { WorkflowConfig } from "./workflow" +import fsExtra from "fs-extra" +const { readFile } = fsExtra +import { ProjectConfigContext } from "./template-contexts/project.js" +import type { ActionConfig } from "../actions/types.js" +import { actionKinds } from "../actions/types.js" +import type { WorkflowConfig } from "./workflow.js" const inputTemplatePattern = "${inputs.*}" const parentNameTemplate = "${parent.name}" diff --git a/core/src/config/group.ts b/core/src/config/group.ts index 5e57362988..a87318268a 100644 --- a/core/src/config/group.ts +++ b/core/src/config/group.ts @@ -7,19 +7,12 @@ */ import dedent from "dedent" -import { ActionConfig } from "../actions/types" -import { baseActionConfigSchema } from "../actions/base" -import { templateStringLiteral } from "../docs/common" -import { - createSchema, - DeepPrimitiveMap, - joi, - joiSparseArray, - joiUserIdentifier, - joiVariables, - unusedApiVersionSchema, -} from "./common" -import { varfileDescription } from "./base" +import type { ActionConfig } from "../actions/types.js" +import { baseActionConfigSchema } from "../actions/base.js" +import { templateStringLiteral } from "../docs/common.js" +import type { DeepPrimitiveMap } from "./common.js" +import { createSchema, joi, joiSparseArray, joiUserIdentifier, joiVariables, unusedApiVersionSchema } from "./common.js" +import { varfileDescription } from "./base.js" export interface GroupConfig { // Basics diff --git a/core/src/config/module.ts b/core/src/config/module.ts index 6c181a79eb..a30b004287 100644 --- a/core/src/config/module.ts +++ b/core/src/config/module.ts @@ -6,11 +6,12 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { memoize } from "lodash" -import { ServiceConfig, serviceConfigSchema } from "./service" +import { memoize } from "lodash-es" +import type { ServiceConfig } from "./service.js" +import { serviceConfigSchema } from "./service.js" +import type { DeepPrimitiveMap } from "./common.js" import { createSchema, - DeepPrimitiveMap, includeGuideLink, joi, joiArray, @@ -20,12 +21,15 @@ import { joiUserIdentifier, joiVariables, unusedApiVersionSchema, -} from "./common" -import { TestConfig, testConfigSchema } from "./test" -import { TaskConfig, taskConfigSchema } from "./task" -import { dedent, stableStringify } from "../util/string" -import { configTemplateKind, varfileDescription } from "./base" -import { DEFAULT_BUILD_TIMEOUT_SEC, GardenApiVersion } from "../constants" +} from "./common.js" +import type { TestConfig } from "./test.js" +import { testConfigSchema } from "./test.js" +import type { TaskConfig } from "./task.js" +import { taskConfigSchema } from "./task.js" +import { dedent, stableStringify } from "../util/string.js" +import { configTemplateKind, varfileDescription } from "./base.js" +import type { GardenApiVersion } from "../constants.js" +import { DEFAULT_BUILD_TIMEOUT_SEC } from "../constants.js" interface BuildCopySpec { source: string diff --git a/core/src/config/project.ts b/core/src/config/project.ts index 2b489de5fe..a9be6cf2ad 100644 --- a/core/src/config/project.ts +++ b/core/src/config/project.ts @@ -7,10 +7,10 @@ */ import { apply, merge } from "json-merge-patch" -import { dedent, deline, naturalList } from "../util/string" +import { dedent, deline, naturalList } from "../util/string.js" +import type { DeepPrimitiveMap, Primitive, PrimitiveMap } from "./common.js" import { createSchema, - DeepPrimitiveMap, includeGuideLink, joi, joiIdentifier, @@ -20,26 +20,27 @@ import { joiUserIdentifier, joiVariables, joiVariablesDescription, - Primitive, - PrimitiveMap, -} from "./common" -import { validateConfig, validateWithPath } from "./validation" -import { resolveTemplateStrings } from "../template-string/template-string" -import { EnvironmentConfigContext, ProjectConfigContext } from "./template-contexts/project" -import { findByName, getNames } from "../util/util" -import { ConfigurationError, ParameterError, ValidationError } from "../exceptions" +} from "./common.js" +import { validateConfig, validateWithPath } from "./validation.js" +import { resolveTemplateStrings } from "../template-string/template-string.js" +import { EnvironmentConfigContext, ProjectConfigContext } from "./template-contexts/project.js" +import { findByName, getNames } from "../util/util.js" +import { ConfigurationError, ParameterError, ValidationError } from "../exceptions.js" import cloneDeep from "fast-copy" -import { memoize } from "lodash" -import { GenericProviderConfig, providerConfigBaseSchema } from "./provider" -import { DOCS_BASE_URL, GardenApiVersion, GitScanMode, gitScanModes } from "../constants" -import { defaultDotIgnoreFile } from "../util/fs" -import type { CommandInfo } from "../plugin-context" -import type { VcsInfo } from "../vcs/vcs" -import { profileAsync } from "../util/profiling" -import { BaseGardenResource, baseInternalFieldsSchema, loadVarfile, varfileDescription } from "./base" -import chalk = require("chalk") -import { Log } from "../logger/log-entry" -import { renderDivider } from "../logger/util" +import { memoize } from "lodash-es" +import type { GenericProviderConfig } from "./provider.js" +import { providerConfigBaseSchema } from "./provider.js" +import type { GitScanMode } from "../constants.js" +import { DOCS_BASE_URL, GardenApiVersion, gitScanModes } from "../constants.js" +import { defaultDotIgnoreFile } from "../util/fs.js" +import type { CommandInfo } from "../plugin-context.js" +import type { VcsInfo } from "../vcs/vcs.js" +import { profileAsync } from "../util/profiling.js" +import type { BaseGardenResource } from "./base.js" +import { baseInternalFieldsSchema, loadVarfile, varfileDescription } from "./base.js" +import chalk from "chalk" +import type { Log } from "../logger/log-entry.js" +import { renderDivider } from "../logger/util.js" export const defaultVarfilePath = "garden.env" export const defaultEnvVarfilePath = (environmentName: string) => `garden.${environmentName}.env` diff --git a/core/src/config/provider.ts b/core/src/config/provider.ts index 181e160e50..6a14d94a42 100644 --- a/core/src/config/provider.ts +++ b/core/src/config/provider.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { deline } from "../util/string" +import { deline } from "../util/string.js" import { joiIdentifier, joiUserIdentifier, @@ -15,19 +15,21 @@ import { joiIdentifierMap, joiSparseArray, createSchema, -} from "./common" -import { collectTemplateReferences } from "../template-string/template-string" -import { ConfigurationError } from "../exceptions" -import { ModuleConfig, moduleConfigSchema } from "./module" -import { memoize, uniq } from "lodash" -import { GardenPluginSpec } from "../plugin/plugin" -import { EnvironmentStatus } from "../plugin/handlers/Provider/getEnvironmentStatus" -import { environmentStatusSchema } from "./status" -import { DashboardPage, dashboardPagesSchema } from "../plugin/handlers/Provider/getDashboardPage" -import type { ActionState } from "../actions/types" -import { ValidResultType } from "../tasks/base" -import { uuidv4 } from "../util/random" -import { s } from "./zod" +} from "./common.js" +import { collectTemplateReferences } from "../template-string/template-string.js" +import { ConfigurationError } from "../exceptions.js" +import type { ModuleConfig } from "./module.js" +import { moduleConfigSchema } from "./module.js" +import { memoize, uniq } from "lodash-es" +import type { GardenPluginSpec } from "../plugin/plugin.js" +import type { EnvironmentStatus } from "../plugin/handlers/Provider/getEnvironmentStatus.js" +import { environmentStatusSchema } from "./status.js" +import type { DashboardPage } from "../plugin/handlers/Provider/getDashboardPage.js" +import { dashboardPagesSchema } from "../plugin/handlers/Provider/getDashboardPage.js" +import type { ActionState } from "../actions/types.js" +import type { ValidResultType } from "../tasks/base.js" +import { uuidv4 } from "../util/random.js" +import { s } from "./zod.js" // TODO: dedupe from the joi schema below export const baseProviderConfigSchemaZod = s.object({ diff --git a/core/src/config/render-template.ts b/core/src/config/render-template.ts index b02260b712..23143cd503 100644 --- a/core/src/config/render-template.ts +++ b/core/src/config/render-template.ts @@ -7,33 +7,37 @@ */ import { Document } from "yaml" -import { ModuleConfig } from "./module" -import { dedent, deline, naturalList } from "../util/string" +import type { ModuleConfig } from "./module.js" +import { dedent, deline, naturalList } from "../util/string.js" +import type { BaseGardenResource, RenderTemplateKind, YamlDocumentWithSource } from "./base.js" import { - BaseGardenResource, baseInternalFieldsSchema, configTemplateKind, prepareModuleResource, prepareResource, - RenderTemplateKind, renderTemplateKind, - YamlDocumentWithSource, -} from "./base" -import { maybeTemplateString, resolveTemplateString, resolveTemplateStrings } from "../template-string/template-string" -import { validateWithPath } from "./validation" -import { Garden } from "../garden" -import { ConfigurationError, GardenError } from "../exceptions" +} from "./base.js" +import { + maybeTemplateString, + resolveTemplateString, + resolveTemplateStrings, +} from "../template-string/template-string.js" +import { validateWithPath } from "./validation.js" +import type { Garden } from "../garden.js" +import { ConfigurationError, GardenError } from "../exceptions.js" import { resolve, posix } from "path" -import { ensureDir } from "fs-extra" -import type { TemplatedModuleConfig } from "../plugins/templated" -import { omit } from "lodash" -import { EnvironmentConfigContext } from "./template-contexts/project" -import { ConfigTemplateConfig, TemplatableConfig, templatableKinds, templateNoTemplateFields } from "./config-template" -import { createSchema, joi, joiIdentifier, joiUserIdentifier, unusedApiVersionSchema } from "./common" -import { DeepPrimitiveMap } from "@garden-io/platform-api-types" -import { RenderTemplateConfigContext } from "./template-contexts/render" -import { Log } from "../logger/log-entry" -import { GardenApiVersion } from "../constants" +import fsExtra from "fs-extra" +const { ensureDir } = fsExtra +import type { TemplatedModuleConfig } from "../plugins/templated.js" +import { omit } from "lodash-es" +import { EnvironmentConfigContext } from "./template-contexts/project.js" +import type { ConfigTemplateConfig, TemplatableConfig } from "./config-template.js" +import { templatableKinds, templateNoTemplateFields } from "./config-template.js" +import { createSchema, joi, joiIdentifier, joiUserIdentifier, unusedApiVersionSchema } from "./common.js" +import type { DeepPrimitiveMap } from "@garden-io/platform-api-types" +import { RenderTemplateConfigContext } from "./template-contexts/render.js" +import type { Log } from "../logger/log-entry.js" +import { GardenApiVersion } from "../constants.js" export const renderTemplateConfigSchema = createSchema({ name: renderTemplateKind, diff --git a/core/src/config/service.ts b/core/src/config/service.ts index a9da213af3..521f1a8b4d 100644 --- a/core/src/config/service.ts +++ b/core/src/config/service.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { joiIdentifier, joiUserIdentifier, joi, joiVariables, joiSparseArray, createSchema } from "./common" -import { deline, dedent } from "../util/string" -import { memoize } from "lodash" -import { DEFAULT_DEPLOY_TIMEOUT_SEC } from "../constants" +import { joiIdentifier, joiUserIdentifier, joi, joiVariables, joiSparseArray, createSchema } from "./common.js" +import { deline, dedent } from "../util/string.js" +import { memoize } from "lodash-es" +import { DEFAULT_DEPLOY_TIMEOUT_SEC } from "../constants.js" /** * This interface provides a common set of Service attributes, that are also required for the higher-level diff --git a/core/src/config/status.ts b/core/src/config/status.ts index bcb383c198..c8f25b0f69 100644 --- a/core/src/config/status.ts +++ b/core/src/config/status.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { createSchema, joi, joiVariables } from "./common" +import { createSchema, joi, joiVariables } from "./common.js" export const environmentStatusSchema = createSchema({ name: "environment-status", diff --git a/core/src/config/task.ts b/core/src/config/task.ts index c07f24d1f2..928b00972f 100644 --- a/core/src/config/task.ts +++ b/core/src/config/task.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { joiUserIdentifier, joi, joiSparseArray, createSchema } from "./common" -import { deline, dedent } from "../util/string" -import { memoize } from "lodash" -import { DEFAULT_RUN_TIMEOUT_SEC } from "../constants" +import { joiUserIdentifier, joi, joiSparseArray, createSchema } from "./common.js" +import { deline, dedent } from "../util/string.js" +import { memoize } from "lodash-es" +import { DEFAULT_RUN_TIMEOUT_SEC } from "../constants.js" export type TaskSpec = object diff --git a/core/src/config/template-contexts/actions.ts b/core/src/config/template-contexts/actions.ts index 697e1b7b0a..6ee128eba1 100644 --- a/core/src/config/template-contexts/actions.ts +++ b/core/src/config/template-contexts/actions.ts @@ -7,27 +7,20 @@ */ import chalk from "chalk" -import { merge } from "lodash" -import type { ActionConfig } from "../../actions/types" -import { Action, ActionMode, ExecutedAction, ResolvedAction } from "../../actions/types" -import { Garden } from "../../garden" -import { GardenModule } from "../../types/module" -import { deline } from "../../util/string" -import { - DeepPrimitiveMap, - joi, - joiIdentifier, - joiIdentifierMap, - joiPrimitive, - joiVariables, - PrimitiveMap, -} from "../common" -import { ProviderMap } from "../provider" -import { ConfigContext, ErrorContext, ParentContext, schema, TemplateContext } from "./base" -import { exampleVersion, OutputConfigContext } from "./module" -import { TemplatableConfigContext } from "./project" -import { DOCS_BASE_URL } from "../../constants" -import type { WorkflowConfig } from "../workflow" +import { merge } from "lodash-es" +import type { ActionConfig, Action, ExecutedAction, ResolvedAction } from "../../actions/types.js" +import type { ActionMode } from "../../actions/types.js" +import type { Garden } from "../../garden.js" +import type { GardenModule } from "../../types/module.js" +import { deline } from "../../util/string.js" +import type { DeepPrimitiveMap, PrimitiveMap } from "../common.js" +import { joi, joiIdentifier, joiIdentifierMap, joiPrimitive, joiVariables } from "../common.js" +import type { ProviderMap } from "../provider.js" +import { ConfigContext, ErrorContext, ParentContext, schema, TemplateContext } from "./base.js" +import { exampleVersion, OutputConfigContext } from "./module.js" +import { TemplatableConfigContext } from "./project.js" +import { DOCS_BASE_URL } from "../../constants.js" +import type { WorkflowConfig } from "../workflow.js" function mergeVariables({ garden, variables }: { garden: Garden; variables: DeepPrimitiveMap }): DeepPrimitiveMap { const mergedVariables: DeepPrimitiveMap = {} diff --git a/core/src/config/template-contexts/base.ts b/core/src/config/template-contexts/base.ts index 3be2c1ec21..7362f95097 100644 --- a/core/src/config/template-contexts/base.ts +++ b/core/src/config/template-contexts/base.ts @@ -6,18 +6,19 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import Joi from "@hapi/joi" +import type Joi from "@hapi/joi" import chalk from "chalk" -import { isString } from "lodash" -import { ConfigurationError } from "../../exceptions" +import { isString } from "lodash-es" +import { ConfigurationError } from "../../exceptions.js" import { resolveTemplateString, TemplateStringMissingKeyException, TemplateStringPassthroughException, -} from "../../template-string/template-string" -import { CustomObjectSchema, isPrimitive, joi, joiIdentifier } from "../common" -import { KeyedSet } from "../../util/keyed-set" -import { naturalList } from "../../util/string" +} from "../../template-string/template-string.js" +import type { CustomObjectSchema } from "../common.js" +import { isPrimitive, joi, joiIdentifier } from "../common.js" +import { KeyedSet } from "../../util/keyed-set.js" +import { naturalList } from "../../util/string.js" export type ContextKeySegment = string | number export type ContextKey = ContextKeySegment[] diff --git a/core/src/config/template-contexts/custom-command.ts b/core/src/config/template-contexts/custom-command.ts index 6ef926aab6..ddbe3e7b9e 100644 --- a/core/src/config/template-contexts/custom-command.ts +++ b/core/src/config/template-contexts/custom-command.ts @@ -6,10 +6,12 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { variableNameRegex, joiPrimitive, joiArray, DeepPrimitiveMap, joiVariables, joiIdentifierMap } from "../common" -import { joi } from "../common" -import { DefaultEnvironmentContext, DefaultEnvironmentContextParams } from "./project" -import { schema } from "./base" +import type { DeepPrimitiveMap } from "../common.js" +import { variableNameRegex, joiPrimitive, joiArray, joiVariables, joiIdentifierMap } from "../common.js" +import { joi } from "../common.js" +import type { DefaultEnvironmentContextParams } from "./project.js" +import { DefaultEnvironmentContext } from "./project.js" +import { schema } from "./base.js" interface ArgsSchema { [name: string]: string | number | string[] diff --git a/core/src/config/template-contexts/module.ts b/core/src/config/template-contexts/module.ts index 289e4d90e7..d54dd12d68 100644 --- a/core/src/config/template-contexts/module.ts +++ b/core/src/config/template-contexts/module.ts @@ -7,19 +7,20 @@ */ import chalk from "chalk" -import { PrimitiveMap, joiIdentifierMap, joiPrimitive, DeepPrimitiveMap, joiVariables, joiIdentifier } from "../common" -import { ProviderMap } from "../provider" -import { Garden } from "../../garden" -import { joi } from "../common" -import { deline } from "../../util/string" -import { getModuleTypeUrl } from "../../docs/common" -import { GardenModule } from "../../types/module" -import { ConfigContext, schema, ErrorContext, ParentContext, TemplateContext } from "./base" -import { ProviderConfigContext } from "./provider" -import { GraphResultFromTask, GraphResults } from "../../graph/results" -import { DeployTask } from "../../tasks/deploy" -import { RunTask } from "../../tasks/run" -import { DOCS_BASE_URL } from "../../constants" +import type { PrimitiveMap, DeepPrimitiveMap } from "../common.js" +import { joiIdentifierMap, joiPrimitive, joiVariables, joiIdentifier } from "../common.js" +import type { ProviderMap } from "../provider.js" +import type { Garden } from "../../garden.js" +import { joi } from "../common.js" +import { deline } from "../../util/string.js" +import { getModuleTypeUrl } from "../../docs/common.js" +import type { GardenModule } from "../../types/module.js" +import { ConfigContext, schema, ErrorContext, ParentContext, TemplateContext } from "./base.js" +import { ProviderConfigContext } from "./provider.js" +import type { GraphResultFromTask, GraphResults } from "../../graph/results.js" +import type { DeployTask } from "../../tasks/deploy.js" +import type { RunTask } from "../../tasks/run.js" +import { DOCS_BASE_URL } from "../../constants.js" export const exampleVersion = "v-17ad4cb3fd" diff --git a/core/src/config/template-contexts/project.ts b/core/src/config/template-contexts/project.ts index 2cc5880f9d..2f2dee4c1e 100644 --- a/core/src/config/template-contexts/project.ts +++ b/core/src/config/template-contexts/project.ts @@ -6,17 +6,19 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { last, isEmpty } from "lodash" +import { last, isEmpty } from "lodash-es" import chalk from "chalk" -import { PrimitiveMap, joiIdentifierMap, joiStringMap, joiPrimitive, DeepPrimitiveMap, joiVariables } from "../common" -import { joi } from "../common" -import { deline, dedent } from "../../util/string" -import { schema, ConfigContext, ContextKeySegment, EnvironmentContext, ParentContext, TemplateContext } from "./base" -import { CommandInfo } from "../../plugin-context" -import { Garden } from "../../garden" -import { VcsInfo } from "../../vcs/vcs" -import type { ActionConfig } from "../../actions/types" -import type { WorkflowConfig } from "../workflow" +import type { PrimitiveMap, DeepPrimitiveMap } from "../common.js" +import { joiIdentifierMap, joiStringMap, joiPrimitive, joiVariables } from "../common.js" +import { joi } from "../common.js" +import { deline, dedent } from "../../util/string.js" +import type { ContextKeySegment } from "./base.js" +import { schema, ConfigContext, EnvironmentContext, ParentContext, TemplateContext } from "./base.js" +import type { CommandInfo } from "../../plugin-context.js" +import type { Garden } from "../../garden.js" +import type { VcsInfo } from "../../vcs/vcs.js" +import type { ActionConfig } from "../../actions/types.js" +import type { WorkflowConfig } from "../workflow.js" class LocalContext extends ConfigContext { @schema( @@ -195,8 +197,6 @@ class VcsContext extends ConfigContext { } } -const commandSyncModeExample = "${this.mode == 'sync'}" - class CommandContext extends ConfigContext { @schema( joi diff --git a/core/src/config/template-contexts/provider.ts b/core/src/config/template-contexts/provider.ts index ecc5d960e6..5749baa3bc 100644 --- a/core/src/config/template-contexts/provider.ts +++ b/core/src/config/template-contexts/provider.ts @@ -6,15 +6,17 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { mapValues } from "lodash" -import { PrimitiveMap, joiIdentifierMap, joiPrimitive, DeepPrimitiveMap } from "../common" -import { Provider, GenericProviderConfig, ProviderMap } from "../provider" -import { Garden } from "../../garden" -import { joi } from "../common" -import { deline } from "../../util/string" -import { getProviderUrl } from "../../docs/common" -import { ConfigContext, schema } from "./base" -import { WorkflowConfigContext } from "./workflow" +import { mapValues } from "lodash-es" +import type { DeepPrimitiveMap, PrimitiveMap } from "../common.js" +import { joiIdentifierMap, joiPrimitive } from "../common.js" +import type { Provider, ProviderMap } from "../provider.js" +import type { GenericProviderConfig } from "../provider.js" +import type { Garden } from "../../garden.js" +import { joi } from "../common.js" +import { deline } from "../../util/string.js" +import { getProviderUrl } from "../../docs/common.js" +import { ConfigContext, schema } from "./base.js" +import { WorkflowConfigContext } from "./workflow.js" class ProviderContext extends ConfigContext { @schema( diff --git a/core/src/config/template-contexts/render.ts b/core/src/config/template-contexts/render.ts index eb43ae0b12..0301326253 100644 --- a/core/src/config/template-contexts/render.ts +++ b/core/src/config/template-contexts/render.ts @@ -6,9 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { DeepPrimitiveMap, joiVariables } from "../common" -import { ParentContext, schema, TemplateContext } from "./base" -import { ProjectConfigContext, ProjectConfigContextParams } from "./project" +import type { DeepPrimitiveMap } from "../common.js" +import { joiVariables } from "../common.js" +import { ParentContext, schema, TemplateContext } from "./base.js" +import type { ProjectConfigContextParams } from "./project.js" +import { ProjectConfigContext } from "./project.js" export class RenderTemplateConfigContext extends ProjectConfigContext { @schema(ParentContext.getSchema().description(`Information about the templated config being resolved.`)) diff --git a/core/src/config/template-contexts/workflow.ts b/core/src/config/template-contexts/workflow.ts index 3b0d80f994..c3ecd699d9 100644 --- a/core/src/config/template-contexts/workflow.ts +++ b/core/src/config/template-contexts/workflow.ts @@ -6,13 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { joiIdentifierMap, DeepPrimitiveMap, joiVariables } from "../common" -import { Garden } from "../../garden" -import { joi } from "../common" -import { dedent } from "../../util/string" -import { RemoteSourceConfigContext, TemplatableConfigContext } from "./project" -import { schema, ConfigContext, ErrorContext } from "./base" -import type { WorkflowConfig } from "../workflow" +import type { DeepPrimitiveMap } from "../common.js" +import { joiIdentifierMap, joiVariables } from "../common.js" +import type { Garden } from "../../garden.js" +import { joi } from "../common.js" +import { dedent } from "../../util/string.js" +import { RemoteSourceConfigContext, TemplatableConfigContext } from "./project.js" +import { schema, ConfigContext, ErrorContext } from "./base.js" +import type { WorkflowConfig } from "../workflow.js" /** * This context is available for template strings in all workflow config fields except `name` and `triggers[]`. diff --git a/core/src/config/test.ts b/core/src/config/test.ts index e447fec2cc..10a0871f2e 100644 --- a/core/src/config/test.ts +++ b/core/src/config/test.ts @@ -6,9 +6,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { joiUserIdentifier, joi, joiSparseArray, createSchema } from "./common" -import { deline, dedent } from "../util/string" -import { DEFAULT_TEST_TIMEOUT_SEC } from "../constants" +import { joiUserIdentifier, joi, joiSparseArray, createSchema } from "./common.js" +import { deline, dedent } from "../util/string.js" +import { DEFAULT_TEST_TIMEOUT_SEC } from "../constants.js" export interface BaseTestSpec { name: string diff --git a/core/src/config/validation.ts b/core/src/config/validation.ts index 8b20ee6889..0477197254 100644 --- a/core/src/config/validation.ts +++ b/core/src/config/validation.ts @@ -6,15 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import Joi from "@hapi/joi" -import { ConfigurationError } from "../exceptions" +import type Joi from "@hapi/joi" +import { ConfigurationError } from "../exceptions.js" import chalk from "chalk" import { relative } from "path" -import { uuidv4 } from "../util/random" -import { profile } from "../util/profiling" -import { BaseGardenResource, YamlDocumentWithSource } from "./base" -import { ParsedNode, Range } from "yaml" -import { padEnd } from "lodash" +import { uuidv4 } from "../util/random.js" +import { profile } from "../util/profiling.js" +import type { BaseGardenResource, YamlDocumentWithSource } from "./base.js" +import type { ParsedNode, Range } from "yaml" +import { padEnd } from "lodash-es" export const joiPathPlaceholder = uuidv4() const joiPathPlaceholderRegex = new RegExp(joiPathPlaceholder, "g") diff --git a/core/src/config/workflow.ts b/core/src/config/workflow.ts index 440c85474b..69dae02204 100644 --- a/core/src/config/workflow.ts +++ b/core/src/config/workflow.ts @@ -6,29 +6,31 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { memoize, omit } from "lodash" +import { memoize, omit } from "lodash-es" +import type { PrimitiveMap } from "./common.js" import { joi, joiUserIdentifier, joiVariableName, joiIdentifier, joiEnvVars, - PrimitiveMap, joiSparseArray, createSchema, unusedApiVersionSchema, -} from "./common" -import { deline, dedent } from "../util/string" -import { ServiceLimitSpec } from "../plugins/container/moduleConfig" -import { Garden } from "../garden" -import { WorkflowConfigContext } from "./template-contexts/workflow" -import { resolveTemplateStrings } from "../template-string/template-string" -import { validateConfig } from "./validation" -import { ConfigurationError, GardenError } from "../exceptions" -import { EnvironmentConfig, getNamespace } from "./project" -import { omitUndefined } from "../util/objects" -import { BaseGardenResource, GardenResource } from "./base" -import { DOCS_BASE_URL, GardenApiVersion } from "../constants" +} from "./common.js" +import { deline, dedent } from "../util/string.js" +import type { ServiceLimitSpec } from "../plugins/container/moduleConfig.js" +import type { Garden } from "../garden.js" +import { WorkflowConfigContext } from "./template-contexts/workflow.js" +import { resolveTemplateStrings } from "../template-string/template-string.js" +import { validateConfig } from "./validation.js" +import { ConfigurationError, GardenError } from "../exceptions.js" +import type { EnvironmentConfig } from "./project.js" +import { getNamespace } from "./project.js" +import { omitUndefined } from "../util/objects.js" +import type { BaseGardenResource, GardenResource } from "./base.js" +import type { GardenApiVersion } from "../constants.js" +import { DOCS_BASE_URL } from "../constants.js" export const minimumWorkflowRequests = { cpu: 50, // 50 millicpu diff --git a/core/src/config/zod.ts b/core/src/config/zod.ts index 8177b969ca..1553708851 100644 --- a/core/src/config/zod.ts +++ b/core/src/config/zod.ts @@ -6,8 +6,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Schema, z, infer as inferZodType, ZodType } from "zod" -import { envVarRegex, identifierRegex, joiIdentifierDescription, userIdentifierRegex } from "./constants" +import type { infer as inferZodType, ZodType } from "zod" +import z, { Schema } from "zod" +import { envVarRegex, identifierRegex, joiIdentifierDescription, userIdentifierRegex } from "./constants.js" // Add metadata support to schemas. See https://github.com/colinhacks/zod/issues/273#issuecomment-1434077058 declare module "zod" { @@ -75,82 +76,83 @@ type GardenSchema = typeof z & { } // This should be imported instead of z because we augment zod with custom methods -export const s = z as GardenSchema -export type inferType> = inferZodType - -s.envVars = () => s.record(s.string().regex(envVarRegex).min(1), z.string()) - -s.posixPath = (opts: PosixPathOpts = {}) => { - return z - .string() - .superRefine((value, ctx) => { - if (opts.absoluteOnly && !value.startsWith("/")) { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - message: `Path must be absolute (i.e. start with /).`, - }) - } - if (!opts.allowGlobs && (value.includes("*") || value.includes("?"))) { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - message: "Path cannot include globs or wildcards.", +const gardenZod = Object.assign( + { + envVars: () => z.record(z.string().regex(envVarRegex).min(1), z.string()), + posixPath: (opts: PosixPathOpts = {}) => { + return z + .string() + .superRefine((value, ctx) => { + if (opts.absoluteOnly && !value.startsWith("/")) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: `Path must be absolute (i.e. start with /).`, + }) + } + if (!opts.allowGlobs && (value.includes("*") || value.includes("?"))) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: "Path cannot include globs or wildcards.", + }) + } + if (opts.filenameOnly && value.includes("/")) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: "Must be a filename (may not contain slashes).", + }) + } + if (opts.relativeOnly && value.startsWith("/")) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: "Must be a relative path (may not start with a slash).", + }) + } + if (opts.subPathOnly && value.includes("..")) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: "Must be a sub-path (may not include '..').", + }) + } }) - } - if (opts.filenameOnly && value.includes("/")) { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - message: "Must be a filename (may not contain slashes).", + .setMetadata({ + // Picked up when converting to joi schemas + posixPath: opts, }) - } - if (opts.relativeOnly && value.startsWith("/")) { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - message: "Must be a relative path (may not start with a slash).", + }, + identifier: () => { + return z + .string({ + errorMap: (issue, ctx) => { + if (issue.code === z.ZodIssueCode.invalid_string && issue.validation === "regex") { + return { message: "Expected a valid identifier. Should be a " + joiIdentifierDescription } + } + return { message: ctx.defaultError } + }, }) - } - if (opts.subPathOnly && value.includes("..")) { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - message: "Must be a sub-path (may not include '..').", + .regex(identifierRegex) + }, + userIdentifier: () => { + return z + .string({ + errorMap: (issue, ctx) => { + if (issue.code === z.ZodIssueCode.invalid_string && issue.validation === "regex") { + return { + message: + "Expected a valid identifier (that also cannot start with 'garden'). Should be a " + + joiIdentifierDescription, + } + } + return { message: ctx.defaultError } + }, }) - } - }) - .setMetadata({ - // Picked up when converting to joi schemas - posixPath: opts, - }) -} - -s.identifier = () => { - return z - .string({ - errorMap: (issue, ctx) => { - if (issue.code === z.ZodIssueCode.invalid_string && issue.validation === "regex") { - return { message: "Expected a valid identifier. Should be a " + joiIdentifierDescription } - } - return { message: ctx.defaultError } - }, - }) - .regex(identifierRegex) -} - -s.userIdentifier = () => { - return z - .string({ - errorMap: (issue, ctx) => { - if (issue.code === z.ZodIssueCode.invalid_string && issue.validation === "regex") { - return { - message: - "Expected a valid identifier (that also cannot start with 'garden'). Should be a " + - joiIdentifierDescription, - } - } - return { message: ctx.defaultError } - }, - }) - .regex(userIdentifierRegex) -} + .regex(userIdentifierRegex) + }, + sparseArray: (schema: T, params?: z.RawCreateParams) => { + return z.array(schema, params).transform((value) => value.filter((v: any) => v !== undefined && v !== null)) + }, + }, + z +) as GardenSchema +export type inferType> = inferZodType -s.sparseArray = (schema: T, params?: z.RawCreateParams) => { - return s.array(schema, params).transform((value) => value.filter((v: any) => v !== undefined && v !== null)) -} +export { gardenZod as s } diff --git a/core/src/constants.ts b/core/src/constants.ts index cbf0172c77..788c42844f 100644 --- a/core/src/constants.ts +++ b/core/src/constants.ts @@ -7,18 +7,24 @@ */ import env from "env-var" -import { join, resolve } from "path" +import { dirname, join, resolve } from "node:path" import { homedir } from "os" +import { fileURLToPath } from "node:url" -export const isPkg = !!(process).pkg +const moduleDirName = dirname(fileURLToPath(import.meta.url)) + +// This environment variable is set by the garden-sea rust wrapper and points to a temporary directory where rollup bundle and nodejs are extracted to. +const extractedRoot = process.env.GARDEN_SEA_EXTRACTED_ROOT export const gitScanModes = ["repo", "subtree"] as const export type GitScanMode = (typeof gitScanModes)[number] export const defaultGitScanMode: GitScanMode = "subtree" -export const GARDEN_CORE_ROOT = isPkg ? resolve(process.execPath, "..") : resolve(__dirname, "..", "..") -export const GARDEN_CLI_ROOT = isPkg ? resolve(process.execPath, "..") : resolve(GARDEN_CORE_ROOT, "..", "cli") -export const STATIC_DIR = isPkg ? resolve(process.execPath, "..", "static") : resolve(GARDEN_CORE_ROOT, "..", "static") +export const GARDEN_CORE_ROOT = !!extractedRoot + ? resolve(extractedRoot, "src", "core") + : resolve(moduleDirName, "..", "..") +export const GARDEN_CLI_ROOT = resolve(GARDEN_CORE_ROOT, "..", "cli") +export const STATIC_DIR = !!extractedRoot ? resolve(extractedRoot, "static") : resolve(GARDEN_CORE_ROOT, "..", "static") export const DEFAULT_GARDEN_DIR_NAME = ".garden" export const MUTAGEN_DIR_NAME = "mutagen" export const LOGS_DIR_NAME = "logs" diff --git a/core/src/docs/action-type.ts b/core/src/docs/action-type.ts index d1acf0c0e4..7a2454c420 100644 --- a/core/src/docs/action-type.ts +++ b/core/src/docs/action-type.ts @@ -8,15 +8,15 @@ import { readFileSync } from "fs" import { resolve } from "path" -import handlebars = require("handlebars") -import { joi } from "../config/common" -import { renderConfigReference, renderTemplateStringReference, TEMPLATES_DIR } from "./config" -import { ActionKind, ActionTypeDefinition } from "../plugin/action-types" -import { buildActionConfigSchema } from "../actions/build" -import { deployActionConfigSchema } from "../actions/deploy" -import { runActionConfigSchema } from "../actions/run" -import { testActionConfigSchema } from "../actions/test" -import { ActionReferenceContext } from "../config/template-contexts/actions" +import handlebars from "handlebars" +import { joi } from "../config/common.js" +import { renderConfigReference, renderTemplateStringReference, TEMPLATES_DIR } from "./config.js" +import type { ActionKind, ActionTypeDefinition } from "../plugin/action-types.js" +import { buildActionConfigSchema } from "../actions/build.js" +import { deployActionConfigSchema } from "../actions/deploy.js" +import { runActionConfigSchema } from "../actions/run.js" +import { testActionConfigSchema } from "../actions/test.js" +import { ActionReferenceContext } from "../config/template-contexts/actions.js" /** * Generates the action type reference from the action-type.hbs template. diff --git a/core/src/docs/commands.ts b/core/src/docs/commands.ts index 8abe7c2c5f..d06ef99d29 100644 --- a/core/src/docs/commands.ts +++ b/core/src/docs/commands.ts @@ -9,10 +9,10 @@ import { readFileSync, writeFileSync } from "fs" import handlebars from "handlebars" import { resolve } from "path" -import { globalOptions } from "../cli/params" -import { getCoreCommands } from "../commands/commands" -import { describeParameters, CommandGroup } from "../commands/base" -import { TEMPLATES_DIR, renderConfigReference } from "./config" +import { globalOptions } from "../cli/params.js" +import { getCoreCommands } from "../commands/commands.js" +import { describeParameters, CommandGroup } from "../commands/base.js" +import { TEMPLATES_DIR, renderConfigReference } from "./config.js" export function writeCommandReferenceDocs(docsRoot: string) { const referenceDir = resolve(docsRoot, "reference") diff --git a/core/src/docs/common.ts b/core/src/docs/common.ts index ba6564478d..7a0d9831b9 100644 --- a/core/src/docs/common.ts +++ b/core/src/docs/common.ts @@ -6,9 +6,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { padEnd, max } from "lodash" -import { DOCS_BASE_URL } from "../constants" -import { getPackageVersion } from "../util/util" +import { padEnd, max } from "lodash-es" +import { DOCS_BASE_URL } from "../constants.js" +import { getPackageVersion } from "../util/util.js" export abstract class BaseKeyDescription { abstract type: string diff --git a/core/src/docs/config.ts b/core/src/docs/config.ts index caf587cad3..2c18b82fe2 100644 --- a/core/src/docs/config.ts +++ b/core/src/docs/config.ts @@ -6,26 +6,19 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import Joi from "@hapi/joi" +import type Joi from "@hapi/joi" import { readFileSync } from "fs" import linewrap from "linewrap" import { resolve } from "path" -import { projectSchema } from "../config/project" -import { get, isFunction, isString } from "lodash" -import handlebars = require("handlebars") -import { JoiDescription } from "../config/common" -import { STATIC_DIR } from "../constants" -import { - indent, - renderMarkdownTable, - convertMarkdownLinks, - BaseKeyDescription, - NormalizeOptions, - flattenSchema, - isArrayType, -} from "./common" -import { JoiKeyDescription } from "./joi-schema" -import { safeDumpYaml } from "../util/serialization" +import { projectSchema } from "../config/project.js" +import { get, isFunction, isString } from "lodash-es" +import handlebars from "handlebars" +import type { JoiDescription } from "../config/common.js" +import { STATIC_DIR } from "../constants.js" +import type { BaseKeyDescription, NormalizeOptions } from "./common.js" +import { indent, renderMarkdownTable, convertMarkdownLinks, flattenSchema, isArrayType } from "./common.js" +import { JoiKeyDescription } from "./joi-schema.js" +import { safeDumpYaml } from "../util/serialization.js" export const TEMPLATES_DIR = resolve(STATIC_DIR, "docs", "templates") const partialTemplatePath = resolve(TEMPLATES_DIR, "config-partial.hbs") diff --git a/core/src/docs/generate.ts b/core/src/docs/generate.ts index b59ec1c3b6..85fd6fd997 100644 --- a/core/src/docs/generate.ts +++ b/core/src/docs/generate.ts @@ -6,30 +6,34 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import handlebars = require("handlebars") -import { resolve } from "path" -import { writeCommandReferenceDocs } from "./commands" -import { TEMPLATES_DIR, renderProjectConfigReference, renderConfigReference } from "./config" -import { writeTemplateStringReferenceDocs } from "./template-strings" -import { writeTableOfContents } from "./table-of-contents" -import { Garden } from "../garden" -import { defaultDotIgnoreFile } from "../util/fs" -import { keyBy } from "lodash" -import { writeFileSync, readFile, writeFile, mkdirp } from "fs-extra" -import { renderModuleTypeReference, moduleTypes } from "./module-type" -import { renderProviderReference } from "./provider" -import { defaultEnvironment, defaultNamespace } from "../config/project" -import { GardenPluginSpec, GardenPluginReference } from "../plugin/plugin" -import { workflowConfigSchema } from "../config/workflow" -import { configTemplateSchema } from "../config/config-template" -import { renderActionTypeReference } from "./action-type" -import { ActionKind } from "../plugin/action-types" -import { renderTemplateConfigSchema } from "../config/render-template" -import { pMemoizeClearAll } from "../lib/p-memoize" -import { makeDocsLinkOpts } from "./common" -import { GardenApiVersion } from "../constants" -import { actionKinds } from "../actions/types" - +import handlebars from "handlebars" +import { dirname, resolve } from "node:path" +import { writeCommandReferenceDocs } from "./commands.js" +import { TEMPLATES_DIR, renderProjectConfigReference, renderConfigReference } from "./config.js" +import { writeTemplateStringReferenceDocs } from "./template-strings.js" +import { writeTableOfContents } from "./table-of-contents.js" +import { Garden } from "../garden.js" +import { defaultDotIgnoreFile } from "../util/fs.js" +import { keyBy } from "lodash-es" +import fsExtra from "fs-extra" +const { writeFileSync, readFile, writeFile, mkdirp } = fsExtra +import { renderModuleTypeReference, moduleTypes } from "./module-type.js" +import { renderProviderReference } from "./provider.js" +import { defaultEnvironment, defaultNamespace } from "../config/project.js" +import type { GardenPluginSpec, GardenPluginReference } from "../plugin/plugin.js" +import { workflowConfigSchema } from "../config/workflow.js" +import { configTemplateSchema } from "../config/config-template.js" +import { renderActionTypeReference } from "./action-type.js" +import type { ActionKind } from "../plugin/action-types.js" +import { renderTemplateConfigSchema } from "../config/render-template.js" +import { pMemoizeClearAll } from "../lib/p-memoize.js" +import { makeDocsLinkOpts } from "./common.js" +import { GardenApiVersion } from "../constants.js" +import { actionKinds } from "../actions/types.js" + +import { fileURLToPath } from "node:url" + +const moduleDirName = dirname(fileURLToPath(import.meta.url)) /* eslint-disable no-console */ export async function generateDocs(targetDir: string, getPlugins: () => (GardenPluginSpec | GardenPluginReference)[]) { @@ -66,15 +70,15 @@ export async function writeConfigReferenceDocs( { name: "pulumi" }, ] const getFreshGarden = async () => { - return await Garden.factory(__dirname, { + return await Garden.factory(moduleDirName, { commandInfo: { name: "generate-docs", args: {}, opts: {} }, config: { - path: __dirname, + path: moduleDirName, apiVersion: GardenApiVersion.v1, kind: "Project", name: "generate-docs", internal: { - basePath: __dirname, + basePath: moduleDirName, }, defaultEnvironment, dotIgnoreFile: defaultDotIgnoreFile, diff --git a/core/src/docs/joi-schema.ts b/core/src/docs/joi-schema.ts index c538183baa..8f07960b79 100644 --- a/core/src/docs/joi-schema.ts +++ b/core/src/docs/joi-schema.ts @@ -6,12 +6,13 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { uniq, isFunction, extend, isArray, isPlainObject } from "lodash" -import { BaseKeyDescription, isArrayType } from "./common" -import { findByName } from "../util/util" -import { JsonKeyDescription } from "./json-schema" -import { JoiDescription, metadataFromDescription } from "../config/common" -import { safeDumpYaml } from "../util/serialization" +import { uniq, isFunction, extend, isArray, isPlainObject } from "lodash-es" +import { BaseKeyDescription, isArrayType } from "./common.js" +import { findByName } from "../util/util.js" +import { JsonKeyDescription } from "./json-schema.js" +import type { JoiDescription } from "../config/common.js" +import { metadataFromDescription } from "../config/common.js" +import { safeDumpYaml } from "../util/serialization.js" import { zodToJsonSchema } from "zod-to-json-schema" export class JoiKeyDescription extends BaseKeyDescription { diff --git a/core/src/docs/json-schema.ts b/core/src/docs/json-schema.ts index 0a05a92dba..44ce310aa1 100644 --- a/core/src/docs/json-schema.ts +++ b/core/src/docs/json-schema.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { isArray } from "lodash" -import { BaseKeyDescription } from "./common" -import { ValidationError } from "../exceptions" -import { safeDumpYaml } from "../util/serialization" +import { isArray } from "lodash-es" +import { BaseKeyDescription } from "./common.js" +import { ValidationError } from "../exceptions.js" +import { safeDumpYaml } from "../util/serialization.js" export class JsonKeyDescription extends BaseKeyDescription { override type: string diff --git a/core/src/docs/module-type.ts b/core/src/docs/module-type.ts index 024e5fa735..6581ea8a37 100644 --- a/core/src/docs/module-type.ts +++ b/core/src/docs/module-type.ts @@ -6,15 +6,19 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import Joi = require("@hapi/joi") +import type Joi from "@hapi/joi" import { readFileSync } from "fs" import { resolve } from "path" -import { baseModuleSpecSchema } from "../config/module" -import handlebars = require("handlebars") -import { joi } from "../config/common" -import { ModuleReferenceContext, ServiceRuntimeContext, TaskRuntimeContext } from "../config/template-contexts/module" -import { ModuleTypeDefinition } from "../plugin/plugin" -import { renderConfigReference, renderTemplateStringReference, TEMPLATES_DIR } from "./config" +import { baseModuleSpecSchema } from "../config/module.js" +import handlebars from "handlebars" +import { joi } from "../config/common.js" +import { + ModuleReferenceContext, + ServiceRuntimeContext, + TaskRuntimeContext, +} from "../config/template-contexts/module.js" +import type { ModuleTypeDefinition } from "../plugin/plugin.js" +import { renderConfigReference, renderTemplateStringReference, TEMPLATES_DIR } from "./config.js" const populateModuleSchema = (schema: Joi.ObjectSchema) => baseModuleSpecSchema().concat(schema) diff --git a/core/src/docs/provider.ts b/core/src/docs/provider.ts index 7e9d7e1f9a..591ff57157 100644 --- a/core/src/docs/provider.ts +++ b/core/src/docs/provider.ts @@ -6,15 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import Joi from "@hapi/joi" +import type Joi from "@hapi/joi" import { readFileSync } from "fs" import { resolve } from "path" -import handlebars = require("handlebars") -import { joiArray, joi } from "../config/common" -import { providerConfigBaseSchema } from "../config/provider" -import { GardenPluginSpec, PluginMap } from "../plugin/plugin" -import { getPluginBases } from "../plugins" -import { renderTemplateStringReference, renderConfigReference, TEMPLATES_DIR } from "./config" +import handlebars from "handlebars" +import { joiArray, joi } from "../config/common.js" +import { providerConfigBaseSchema } from "../config/provider.js" +import type { GardenPluginSpec, PluginMap } from "../plugin/plugin.js" +import { getPluginBases } from "../plugins.js" +import { renderTemplateStringReference, renderConfigReference, TEMPLATES_DIR } from "./config.js" const populateProviderSchema = (schema: Joi.ObjectSchema) => joi.object().keys({ diff --git a/core/src/docs/table-of-contents.ts b/core/src/docs/table-of-contents.ts index a1a3e32c82..00aca0cd24 100644 --- a/core/src/docs/table-of-contents.ts +++ b/core/src/docs/table-of-contents.ts @@ -23,16 +23,17 @@ * - For directories, put their front matter in the README.md file inside it. */ -import matter = require("gray-matter") -import dtree = require("directory-tree") -import { readFileSync, writeFile, createFile } from "fs-extra" +import matter from "gray-matter" +import dtree from "directory-tree" +import fsExtra from "fs-extra" +const { readFileSync, writeFile, createFile } = fsExtra import { resolve } from "path" import cloneDeep from "fast-copy" -import { repeat } from "lodash" -import titleize = require("titleize") -import humanizeString = require("humanize-string") -import { dedent } from "../util/string" -import { isErrnoException } from "../exceptions" +import { repeat } from "lodash-es" +import titleize from "titleize" +import humanizeString from "humanize-string" +import { dedent } from "../util/string.js" +import { isErrnoException } from "../exceptions.js" interface Metadata { order: number diff --git a/core/src/docs/template-strings.ts b/core/src/docs/template-strings.ts index 1f30b268f6..6e4b1013ce 100644 --- a/core/src/docs/template-strings.ts +++ b/core/src/docs/template-strings.ts @@ -7,24 +7,25 @@ */ import { resolve } from "path" -import { TEMPLATES_DIR, renderTemplateStringReference } from "./config" +import { TEMPLATES_DIR, renderTemplateStringReference } from "./config.js" import { readFileSync, writeFileSync } from "fs" import handlebars from "handlebars" -import { GARDEN_CORE_ROOT } from "../constants" +import { GARDEN_CORE_ROOT } from "../constants.js" import { ProjectConfigContext, EnvironmentConfigContext, RemoteSourceConfigContext, -} from "../config/template-contexts/project" -import { ProviderConfigContext } from "../config/template-contexts/provider" -import { ModuleConfigContext, OutputConfigContext } from "../config/template-contexts/module" -import { WorkflowStepConfigContext } from "../config/template-contexts/workflow" -import { getHelperFunctions } from "../template-string/functions" -import { isEqual, kebabCase, sortBy } from "lodash" -import { CustomCommandContext } from "../config/template-contexts/custom-command" -import Joi from "@hapi/joi" -import { ActionConfigContext, ActionSpecContext } from "../config/template-contexts/actions" -import { InternalError } from "../exceptions" +} from "../config/template-contexts/project.js" +import { ProviderConfigContext } from "../config/template-contexts/provider.js" +import { ModuleConfigContext, OutputConfigContext } from "../config/template-contexts/module.js" +import { WorkflowStepConfigContext } from "../config/template-contexts/workflow.js" +import { getHelperFunctions } from "../template-string/functions.js" +import { isEqual, kebabCase, sortBy } from "lodash-es" +import { CustomCommandContext } from "../config/template-contexts/custom-command.js" +import type Joi from "@hapi/joi" +import { ActionConfigContext, ActionSpecContext } from "../config/template-contexts/actions.js" +import { InternalError } from "../exceptions.js" +import * as url from "node:url" interface ContextSpec { schema: Joi.ObjectSchema @@ -183,6 +184,7 @@ export function writeTemplateStringReferenceDocs(docsRoot: string) { writeFileSync(readmeOutputPath, readmeTemplate({ contexts: annotatedContexts })) } -if (require.main === module) { +const modulePath = url.fileURLToPath(import.meta.url) +if (process.argv[1] === modulePath) { writeTemplateStringReferenceDocs(resolve(GARDEN_CORE_ROOT, "..", "docs")) } diff --git a/core/src/events/action-status-events.ts b/core/src/events/action-status-events.ts index f93df08d73..a560d0981d 100644 --- a/core/src/events/action-status-events.ts +++ b/core/src/events/action-status-events.ts @@ -6,11 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { actionStateTypes } from "../actions/types" -import { BuildState } from "../plugin/handlers/Build/get-status" -import { RunState } from "../plugin/plugin" -import { DeployState } from "../types/service" -import { PickFromUnion } from "../util/util" +import { actionStateTypes } from "../actions/types.js" +import type { BuildState } from "../plugin/handlers/Build/get-status.js" +import type { RunState } from "../plugin/plugin.js" +import type { DeployState } from "../types/service.js" +import type { PickFromUnion } from "../util/util.js" export type ActionStatusDetailedState = DeployState | BuildState | RunState diff --git a/core/src/events/events.ts b/core/src/events/events.ts index 2ccc3b320a..cbfc3dc6ff 100644 --- a/core/src/events/events.ts +++ b/core/src/events/events.ts @@ -6,19 +6,19 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { omit } from "lodash" -import { EventEmitter2 } from "eventemitter2" -import type { LogEntryEventPayload } from "../cloud/buffered-event-stream" -import type { DeployStatusForEventPayload } from "../types/service" -import type { RunStatusForEventPayload } from "../plugin/base" -import type { Omit, PickFromUnion } from "../util/util" -import type { AuthTokenResponse } from "../cloud/api" -import type { ConfigGraph, RenderedActionGraph } from "../graph/config-graph" -import type { CommandInfo } from "../plugin-context" -import type { GraphResult } from "../graph/results" -import { NamespaceStatus } from "../types/namespace" -import { BuildStatusForEventPayload } from "../plugin/handlers/Build/get-status" -import { ActionStatusPayload } from "./action-status-events" +import { omit } from "lodash-es" +import EventEmitter2 from "eventemitter2" +import type { LogEntryEventPayload } from "../cloud/buffered-event-stream.js" +import type { DeployStatusForEventPayload } from "../types/service.js" +import type { RunStatusForEventPayload } from "../plugin/base.js" +import type { Omit, PickFromUnion } from "../util/util.js" +import type { AuthTokenResponse } from "../cloud/api.js" +import type { ConfigGraph, RenderedActionGraph } from "../graph/config-graph.js" +import type { CommandInfo } from "../plugin-context.js" +import type { GraphResult } from "../graph/results.js" +import type { NamespaceStatus } from "../types/namespace.js" +import type { BuildStatusForEventPayload } from "../plugin/handlers/Build/get-status.js" +import type { ActionStatusPayload } from "./action-status-events.js" interface EventContext { gardenKey?: string @@ -36,7 +36,7 @@ export type GardenEventAnyListener = (name: E, payloa * * See below for the event interfaces. */ -export class EventBus extends EventEmitter2 { +export class EventBus extends EventEmitter2.EventEmitter2 { private keyIndex: { [key: string]: { [eventName: string]: ((payload: any) => void)[] } } diff --git a/core/src/events/util.ts b/core/src/events/util.ts index 97733618a0..1f31a14e4c 100644 --- a/core/src/events/util.ts +++ b/core/src/events/util.ts @@ -6,14 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import type { ValidExecutionActionResultType } from "../tasks/base" -import { type Action, type ActionState } from "../actions/types" -import type { DeployStatus } from "../plugin/handlers/Deploy/get-status" -import type { DeployStatusForEventPayload } from "../types/service" -import { Events, ActionStatusEventName } from "./events" -import { pick } from "lodash" -import { BuildState } from "../plugin/handlers/Build/get-status" -import { ActionStatusDetailedState, ActionCompleteState } from "./action-status-events" +import type { ValidExecutionActionResultType } from "../tasks/base.js" +import { type Action, type ActionState } from "../actions/types.js" +import type { DeployStatus } from "../plugin/handlers/Deploy/get-status.js" +import type { DeployStatusForEventPayload } from "../types/service.js" +import type { Events, ActionStatusEventName } from "./events.js" +import { pick } from "lodash-es" +import type { BuildState } from "../plugin/handlers/Build/get-status.js" +import type { ActionStatusDetailedState, ActionCompleteState } from "./action-status-events.js" type ActionKind = "build" | "deploy" | "run" | "test" diff --git a/core/src/exceptions.ts b/core/src/exceptions.ts index 246f91f354..2e58364b49 100644 --- a/core/src/exceptions.ts +++ b/core/src/exceptions.ts @@ -6,12 +6,13 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { isString, trimEnd } from "lodash" -import { SpawnOpts, getGitHubIssueLink, testFlags } from "./util/util" +import { isString, trimEnd, truncate } from "lodash-es" +import type { SpawnOpts } from "./util/util.js" +import { testFlags } from "./util/util.js" import dedent from "dedent" import chalk from "chalk" import stripAnsi from "strip-ansi" -import { Cycle } from "./graph/common" +import type { Cycle } from "./graph/common.js" import indentString from "indent-string" import { constants } from "os" import dns from "node:dns" @@ -501,3 +502,27 @@ export function getStackTraceMetadata(error: GardenError): GardenErrorStackTrace wrappedMetadata, } } + +export function getGitHubIssueLink(title: string, type: "bug" | "crash" | "feature-request") { + try { + title = encodeURIComponent( + truncate(title, { + length: 80, + omission: encodeURIComponent("..."), + }) + ).replaceAll("'", "%27") + } catch (e) { + // encodeURIComponent might throw URIError with malformed unicode strings. + // The title is not that important, we can also leave it empty in that case. + title = "" + } + + switch (type) { + case "feature-request": + return `https://github.com/garden-io/garden/issues/new?labels=feature+request&template=FEATURE_REQUEST.md&title=%5BFEATURE%5D%3A+${title}` + case "bug": + return `https://github.com/garden-io/garden/issues/new?labels=bug&template=BUG_REPORT.md&title=${title}` + case "crash": + return `https://github.com/garden-io/garden/issues/new?labels=bug,crash&template=CRASH.md&title=${title}` + } +} diff --git a/core/src/garden.ts b/core/src/garden.ts index 4dd590d809..3455d83f01 100644 --- a/core/src/garden.ts +++ b/core/src/garden.ts @@ -7,29 +7,28 @@ */ import chalk from "chalk" -import { ensureDir } from "fs-extra" +import fsExtra from "fs-extra" +const { ensureDir } = fsExtra import { platform, arch } from "os" import { relative, resolve } from "path" import cloneDeep from "fast-copy" -import { flatten, sortBy, keyBy, mapValues, groupBy, set } from "lodash" +import { flatten, sortBy, keyBy, mapValues, groupBy, set } from "lodash-es" import AsyncLock from "async-lock" -import { TreeCache } from "./cache" -import { getBuiltinPlugins } from "./plugins/plugins" -import { GardenModule, getModuleCacheContext, ModuleConfigMap, ModuleTypeMap } from "./types/module" +import { TreeCache } from "./cache.js" +import { getBuiltinPlugins } from "./plugins/plugins.js" +import type { GardenModule, ModuleConfigMap, ModuleTypeMap } from "./types/module.js" +import { getModuleCacheContext } from "./types/module.js" +import type { SourceConfig, ProjectConfig, OutputSpec, ProxyConfig } from "./config/project.js" import { - SourceConfig, - ProjectConfig, resolveProjectConfig, pickEnvironment, - OutputSpec, parseEnvironment, getDefaultEnvironmentName, projectSourcesSchema, - ProxyConfig, defaultNamespace, defaultEnvironment, -} from "./config/project" +} from "./config/project.js" import { findByName, pickKeys, @@ -39,38 +38,39 @@ import { duplicatesByKey, getCloudDistributionName, getCloudLogSectionName, -} from "./util/util" +} from "./util/util.js" +import type { GardenError } from "./exceptions.js" import { ConfigurationError, - GardenError, PluginError, RuntimeError, InternalError, toGardenError, CircularDependenciesError, CloudApiError, -} from "./exceptions" -import { VcsHandler, ModuleVersion, getModuleVersionString, VcsInfo } from "./vcs/vcs" -import { GitHandler } from "./vcs/git" -import { BuildStaging } from "./build-staging/build-staging" -import { ConfigGraph, ResolvedConfigGraph } from "./graph/config-graph" -import { getRootLogger } from "./logger/logger" -import { GardenPluginSpec } from "./plugin/plugin" -import { - loadConfigResources, - findProjectConfig, - GardenResource, - configTemplateKind, - renderTemplateKind, -} from "./config/base" -import { DeepPrimitiveMap, StringMap, PrimitiveMap, treeVersionSchema, joi, allowUnknown } from "./config/common" -import { GlobalConfigStore } from "./config-store/global" -import { LocalConfigStore, LinkedSource } from "./config-store/local" -import { getLinkedSources, ExternalSourceType } from "./util/ext-source-util" -import { ModuleConfig } from "./config/module" -import { convertModules, ModuleResolver } from "./resolve-module" -import { createPluginContext, CommandInfo, PluginEventBroker } from "./plugin-context" -import { RegisterPluginParam } from "./plugin/plugin" +} from "./exceptions.js" +import type { VcsHandler, ModuleVersion, VcsInfo } from "./vcs/vcs.js" +import { getModuleVersionString } from "./vcs/vcs.js" +import { GitHandler } from "./vcs/git.js" +import { BuildStaging } from "./build-staging/build-staging.js" +import type { ConfigGraph } from "./graph/config-graph.js" +import { ResolvedConfigGraph } from "./graph/config-graph.js" +import { getRootLogger } from "./logger/logger.js" +import type { GardenPluginSpec } from "./plugin/plugin.js" +import type { GardenResource } from "./config/base.js" +import { loadConfigResources, findProjectConfig, configTemplateKind, renderTemplateKind } from "./config/base.js" +import type { DeepPrimitiveMap, StringMap, PrimitiveMap } from "./config/common.js" +import { treeVersionSchema, joi, allowUnknown } from "./config/common.js" +import { GlobalConfigStore } from "./config-store/global.js" +import type { LinkedSource } from "./config-store/local.js" +import { LocalConfigStore } from "./config-store/local.js" +import type { ExternalSourceType } from "./util/ext-source-util.js" +import { getLinkedSources } from "./util/ext-source-util.js" +import type { ModuleConfig } from "./config/module.js" +import { convertModules, ModuleResolver } from "./resolve-module.js" +import type { CommandInfo, PluginEventBroker } from "./plugin-context.js" +import { createPluginContext } from "./plugin-context.js" +import type { RegisterPluginParam } from "./plugin/plugin.js" import { SUPPORTED_PLATFORMS, DEFAULT_GARDEN_DIR_NAME, @@ -78,89 +78,95 @@ import { SUPPORTED_ARCHITECTURES, GardenApiVersion, DOCS_BASE_URL, -} from "./constants" -import { Log } from "./logger/log-entry" -import { EventBus } from "./events/events" -import { Watcher } from "./watch" +} from "./constants.js" +import type { Log } from "./logger/log-entry.js" +import { EventBus } from "./events/events.js" +import { Watcher } from "./watch.js" import { findConfigPathsInPath, getWorkingCopyId, fixedProjectExcludes, defaultConfigFilename, defaultDotIgnoreFile, -} from "./util/fs" -import { - Provider, - GenericProviderConfig, - getAllProviderDependencyNames, - defaultProvider, - ProviderMap, -} from "./config/provider" -import { ResolveProviderTask } from "./tasks/resolve-provider" -import { ActionRouter } from "./router/router" +} from "./util/fs.js" +import type { Provider, GenericProviderConfig, ProviderMap } from "./config/provider.js" +import { getAllProviderDependencyNames, defaultProvider } from "./config/provider.js" +import { ResolveProviderTask } from "./tasks/resolve-provider.js" +import { ActionRouter } from "./router/router.js" +import type { ActionDefinitionMap, ActionTypeMap } from "./plugins.js" import { loadAndResolvePlugins, getDependencyOrder, getModuleTypes, loadPlugin, getActionTypes, - ActionDefinitionMap, getActionTypeBases, - ActionTypeMap, -} from "./plugins" -import { dedent, deline, naturalList, wordWrap } from "./util/string" -import { DependencyGraph } from "./graph/common" -import { Profile, profileAsync } from "./util/profiling" +} from "./plugins.js" +import { dedent, deline, naturalList, wordWrap } from "./util/string.js" +import { DependencyGraph } from "./graph/common.js" +import { Profile, profileAsync } from "./util/profiling.js" import username from "username" import { throwOnMissingSecretKeys, resolveTemplateString, resolveTemplateStrings, -} from "./template-string/template-string" -import { WorkflowConfig, WorkflowConfigMap, resolveWorkflowConfig, isWorkflowConfig } from "./config/workflow" -import { PluginTool, PluginTools } from "./util/ext-tools" -import { ConfigTemplateResource, resolveConfigTemplate, ConfigTemplateConfig } from "./config/config-template" -import { TemplatedModuleConfig } from "./plugins/templated" -import { BuildStagingRsync } from "./build-staging/rsync" +} from "./template-string/template-string.js" +import type { WorkflowConfig, WorkflowConfigMap } from "./config/workflow.js" +import { resolveWorkflowConfig, isWorkflowConfig } from "./config/workflow.js" +import type { PluginTools } from "./util/ext-tools.js" +import { PluginTool } from "./util/ext-tools.js" +import type { ConfigTemplateResource, ConfigTemplateConfig } from "./config/config-template.js" +import { resolveConfigTemplate } from "./config/config-template.js" +import type { TemplatedModuleConfig } from "./plugins/templated.js" +import { BuildStagingRsync } from "./build-staging/rsync.js" import { DefaultEnvironmentContext, ProjectConfigContext, RemoteSourceConfigContext, -} from "./config/template-contexts/project" -import { CloudApi, CloudProject, getGardenCloudDomain } from "./cloud/api" -import { OutputConfigContext } from "./config/template-contexts/module" -import { ProviderConfigContext } from "./config/template-contexts/provider" -import type { ConfigContext } from "./config/template-contexts/base" -import { validateSchema, validateWithPath } from "./config/validation" -import { pMemoizeDecorator } from "./lib/p-memoize" -import { ModuleGraph } from "./graph/modules" +} from "./config/template-contexts/project.js" +import type { CloudApi, CloudProject } from "./cloud/api.js" +import { getGardenCloudDomain } from "./cloud/api.js" +import { OutputConfigContext } from "./config/template-contexts/module.js" +import { ProviderConfigContext } from "./config/template-contexts/provider.js" +import type { ConfigContext } from "./config/template-contexts/base.js" +import { validateSchema, validateWithPath } from "./config/validation.js" +import { pMemoizeDecorator } from "./lib/p-memoize.js" +import { ModuleGraph } from "./graph/modules.js" import { - Action, - ActionConfigMap, - ActionConfigsByKey, - ActionKind, actionKinds, - ActionModeMap, - BaseActionConfig, -} from "./actions/types" -import { actionIsDisabled, actionReferenceToString, isActionConfig } from "./actions/base" -import { GraphSolver, SolveOpts, SolveParams, SolveResult } from "./graph/solver" -import { actionConfigsToGraph, actionFromConfig, executeAction, resolveAction, resolveActions } from "./graph/actions" -import { ActionTypeDefinition } from "./plugin/action-types" -import type { Task } from "./tasks/base" -import { GraphResultFromTask, GraphResults } from "./graph/results" -import { uuidv4 } from "./util/random" -import { convertTemplatedModuleToRender, RenderTemplateConfig, renderConfigTemplate } from "./config/render-template" -import { MonitorManager } from "./monitors/manager" -import { AnalyticsHandler } from "./analytics/analytics" -import { getGardenInstanceKey } from "./server/helpers" -import { SuggestedCommand } from "./commands/base" -import { OtelTraced } from "./util/open-telemetry/decorators" -import { wrapActiveSpan } from "./util/open-telemetry/spans" -import { GitRepoHandler } from "./vcs/git-repo" -import { configureNoOpExporter } from "./util/open-telemetry/tracing" -import { detectModuleOverlap, makeOverlapErrors } from "./util/module-overlap" -import { GotHttpError } from "./util/http" + type Action, + type ActionConfigMap, + type ActionConfigsByKey, + type ActionKind, + type ActionModeMap, + type BaseActionConfig, +} from "./actions/types.js" +import { actionIsDisabled, actionReferenceToString, isActionConfig } from "./actions/base.js" +import type { SolveOpts, SolveParams, SolveResult } from "./graph/solver.js" +import { GraphSolver } from "./graph/solver.js" +import { + actionConfigsToGraph, + actionFromConfig, + executeAction, + resolveAction, + resolveActions, +} from "./graph/actions.js" +import type { ActionTypeDefinition } from "./plugin/action-types.js" +import type { Task } from "./tasks/base.js" +import type { GraphResultFromTask, GraphResults } from "./graph/results.js" +import { uuidv4 } from "./util/random.js" +import type { RenderTemplateConfig } from "./config/render-template.js" +import { convertTemplatedModuleToRender, renderConfigTemplate } from "./config/render-template.js" +import { MonitorManager } from "./monitors/manager.js" +import { AnalyticsHandler } from "./analytics/analytics.js" +import { getGardenInstanceKey } from "./server/helpers.js" +import type { SuggestedCommand } from "./commands/base.js" +import { OtelTraced } from "./util/open-telemetry/decorators.js" +import { wrapActiveSpan } from "./util/open-telemetry/spans.js" +import { GitRepoHandler } from "./vcs/git-repo.js" +import { configureNoOpExporter } from "./util/open-telemetry/tracing.js" +import { detectModuleOverlap, makeOverlapErrors } from "./util/module-overlap.js" +import { GotHttpError } from "./util/http.js" const defaultLocalAddress = "localhost" @@ -1637,7 +1643,11 @@ export class Garden { modules.map((m) => m._config), "name" ) - workflowConfigs = (await this.getRawWorkflowConfigs()).map((config) => resolveWorkflowConfig(this, config)) + if (resolveWorkflows) { + workflowConfigs = (await this.getRawWorkflowConfigs()).map((config) => resolveWorkflowConfig(this, config)) + } else { + workflowConfigs = await this.getRawWorkflowConfigs() + } } else { providers = this.getRawProviderConfigs() moduleConfigs = await this.getRawModuleConfigs() diff --git a/core/src/graph/actions.ts b/core/src/graph/actions.ts index 90eb7df1f6..7d43e55fce 100644 --- a/core/src/graph/actions.ts +++ b/core/src/graph/actions.ts @@ -7,65 +7,68 @@ */ import cloneDeep from "fast-copy" -import { isEqual, mapValues, memoize, omit, pick, uniq } from "lodash" -import { +import { isEqual, mapValues, memoize, omit, pick, uniq } from "lodash-es" +import type { Action, ActionConfig, ActionConfigsByKey, ActionDependency, ActionDependencyAttributes, ActionKind, - actionKinds, ActionMode, ActionModeMap, ActionModes, ActionWrapperParams, Executed, Resolved, -} from "../actions/types" +} from "../actions/types.js" +import { actionKinds } from "../actions/types.js" import { actionReferenceToString, addActionDependency, baseRuntimeActionConfigSchema, describeActionConfig, describeActionConfigWithPath, -} from "../actions/base" -import { BuildAction, buildActionConfigSchema, isBuildActionConfig } from "../actions/build" -import { DeployAction, deployActionConfigSchema, isDeployActionConfig } from "../actions/deploy" -import { RunAction, runActionConfigSchema, isRunActionConfig } from "../actions/run" -import { TestAction, testActionConfigSchema, isTestActionConfig } from "../actions/test" -import { noTemplateFields } from "../config/base" -import { ActionReference, describeSchema, JoiDescription, parseActionReference } from "../config/common" -import type { GroupConfig } from "../config/group" -import { ActionConfigContext } from "../config/template-contexts/actions" -import { validateWithPath } from "../config/validation" -import { ConfigurationError, PluginError, InternalError, ValidationError, GardenError } from "../exceptions" -import { overrideVariables, type Garden } from "../garden" -import type { Log } from "../logger/log-entry" -import type { ActionTypeDefinition } from "../plugin/action-types" -import { ActionDefinitionMap, getActionTypeBases } from "../plugins" -import type { ActionRouter } from "../router/router" -import { ResolveActionTask } from "../tasks/resolve-action" +} from "../actions/base.js" +import { BuildAction, buildActionConfigSchema, isBuildActionConfig } from "../actions/build.js" +import { DeployAction, deployActionConfigSchema, isDeployActionConfig } from "../actions/deploy.js" +import { RunAction, runActionConfigSchema, isRunActionConfig } from "../actions/run.js" +import { TestAction, testActionConfigSchema, isTestActionConfig } from "../actions/test.js" +import { noTemplateFields } from "../config/base.js" +import type { ActionReference, JoiDescription } from "../config/common.js" +import { describeSchema, parseActionReference } from "../config/common.js" +import type { GroupConfig } from "../config/group.js" +import { ActionConfigContext } from "../config/template-contexts/actions.js" +import { validateWithPath } from "../config/validation.js" +import { ConfigurationError, PluginError, InternalError, ValidationError, GardenError } from "../exceptions.js" +import { overrideVariables, type Garden } from "../garden.js" +import type { Log } from "../logger/log-entry.js" +import type { ActionTypeDefinition } from "../plugin/action-types.js" +import type { ActionDefinitionMap } from "../plugins.js" +import { getActionTypeBases } from "../plugins.js" +import type { ActionRouter } from "../router/router.js" +import { ResolveActionTask } from "../tasks/resolve-action.js" import { getActionTemplateReferences, maybeTemplateString, resolveTemplateString, resolveTemplateStrings, -} from "../template-string/template-string" -import { dedent, deline, naturalList } from "../util/string" -import { mergeVariables } from "./common" -import { ConfigGraph, MutableConfigGraph } from "./config-graph" -import type { ModuleGraph } from "./modules" +} from "../template-string/template-string.js" +import { dedent, deline, naturalList } from "../util/string.js" +import { mergeVariables } from "./common.js" +import type { ConfigGraph } from "./config-graph.js" +import { MutableConfigGraph } from "./config-graph.js" +import type { ModuleGraph } from "./modules.js" import chalk from "chalk" -import type { MaybeUndefined } from "../util/util" +import type { MaybeUndefined } from "../util/util.js" import minimatch from "minimatch" -import { ConfigContext } from "../config/template-contexts/base" -import { LinkedSource, LinkedSourceMap } from "../config-store/local" +import type { ConfigContext } from "../config/template-contexts/base.js" +import type { LinkedSource, LinkedSourceMap } from "../config-store/local.js" import { relative } from "path" -import { profileAsync } from "../util/profiling" -import { uuidv4 } from "../util/random" -import { getSourcePath } from "../vcs/vcs" -import { actionIsDisabled } from "../actions/base" +import { profileAsync } from "../util/profiling.js" +import { uuidv4 } from "../util/random.js" +import { getSourcePath } from "../vcs/vcs.js" +import { actionIsDisabled } from "../actions/base.js" export const actionConfigsToGraph = profileAsync(async function actionConfigsToGraph({ garden, @@ -167,7 +170,6 @@ export const actionConfigsToGraph = profileAsync(async function actionConfigsToG garden, graph, config, - router, log, configsByKey, mode, @@ -276,7 +278,6 @@ export const actionFromConfig = profileAsync(async function actionFromConfig({ garden, graph, config, - router, log, configsByKey, mode, @@ -291,7 +292,6 @@ async function processActionConfig({ garden, graph, config, - router, log, configsByKey, mode, @@ -303,7 +303,6 @@ async function processActionConfig({ garden: Garden graph: ConfigGraph config: ActionConfig - router: ActionRouter log: Log configsByKey: ActionConfigsByKey mode: ActionMode diff --git a/core/src/graph/common.ts b/core/src/graph/common.ts index 6a57e8da43..daeacdae01 100644 --- a/core/src/graph/common.ts +++ b/core/src/graph/common.ts @@ -7,17 +7,17 @@ */ import { DepGraph } from "dependency-graph" -import { flatten, merge, uniq } from "lodash" -import { get, isEqual, join, set, uniqWith } from "lodash" -import { CircularDependenciesError } from "../exceptions" -import { GraphNodes, ConfigGraphNode } from "./config-graph" -import { Profile } from "../util/profiling" -import type { ModuleDependencyGraphNode, ModuleDependencyGraphNodeKind, ModuleGraphNodes } from "./modules" -import { ActionKind } from "../plugin/action-types" -import { loadVarfile } from "../config/base" -import { DeepPrimitiveMap } from "../config/common" -import { Task } from "../tasks/base" -import { LogMetadata, TaskLogStatus } from "../logger/log-entry" +import { flatten, merge, uniq } from "lodash-es" +import { get, isEqual, join, set, uniqWith } from "lodash-es" +import { CircularDependenciesError } from "../exceptions.js" +import type { GraphNodes, ConfigGraphNode } from "./config-graph.js" +import { Profile } from "../util/profiling.js" +import type { ModuleDependencyGraphNode, ModuleDependencyGraphNodeKind, ModuleGraphNodes } from "./modules.js" +import type { ActionKind } from "../plugin/action-types.js" +import { loadVarfile } from "../config/base.js" +import type { DeepPrimitiveMap } from "../config/common.js" +import type { Task } from "../tasks/base.js" +import type { LogMetadata, TaskLogStatus } from "../logger/log-entry.js" // Shared type used by ConfigGraph and TaskGraph to facilitate circular dependency detection export type DependencyGraphNode = { diff --git a/core/src/graph/config-graph.ts b/core/src/graph/config-graph.ts index ceda2f8fb7..d7509df302 100644 --- a/core/src/graph/config-graph.ts +++ b/core/src/graph/config-graph.ts @@ -7,22 +7,23 @@ */ import toposort from "toposort" -import { flatten, difference, mapValues, cloneDeep, find } from "lodash" -import { dedent, naturalList } from "../util/string" -import { Action, ActionDependencyAttributes, ActionKind, Resolved, ResolvedAction } from "../actions/types" -import { actionReferenceToString } from "../actions/base" -import { BuildAction } from "../actions/build" -import { ActionReference, parseActionReference } from "../config/common" -import { GardenModule } from "../types/module" -import { GetManyParams, ModuleGraph } from "./modules" -import { getNames } from "../util/util" -import { nodeKey } from "./common" -import { DeployAction } from "../actions/deploy" -import { RunAction } from "../actions/run" -import { TestAction } from "../actions/test" -import { GroupConfig } from "../config/group" +import { flatten, difference, mapValues, cloneDeep, find } from "lodash-es" +import { dedent, naturalList } from "../util/string.js" +import type { Action, ActionDependencyAttributes, ActionKind, Resolved, ResolvedAction } from "../actions/types.js" +import { actionReferenceToString } from "../actions/base.js" +import type { BuildAction } from "../actions/build.js" +import type { ActionReference } from "../config/common.js" +import { parseActionReference } from "../config/common.js" +import type { GardenModule } from "../types/module.js" +import type { GetManyParams, ModuleGraph } from "./modules.js" +import { getNames } from "../util/util.js" +import { nodeKey } from "./common.js" +import type { DeployAction } from "../actions/deploy.js" +import type { RunAction } from "../actions/run.js" +import type { TestAction } from "../actions/test.js" +import type { GroupConfig } from "../config/group.js" import minimatch from "minimatch" -import { GraphError } from "../exceptions" +import { GraphError } from "../exceptions.js" export type DependencyRelationFilterFn = (node: ConfigGraphNode) => boolean diff --git a/core/src/graph/modules.ts b/core/src/graph/modules.ts index ca772b7cf2..113b5c6161 100644 --- a/core/src/graph/modules.ts +++ b/core/src/graph/modules.ts @@ -6,20 +6,24 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { flatten, pick, uniq, sortBy, pickBy } from "lodash" -import { BuildDependencyConfig, ModuleConfig } from "../config/module" -import { GardenModule, moduleNeedsBuild, ModuleTypeMap } from "../types/module" -import { GardenService, serviceFromConfig } from "../types/service" -import { GardenTask, taskFromConfig } from "../types/task" -import { TestConfig } from "../config/test" -import { uniqByName, pickKeys } from "../util/util" -import { CircularDependenciesError, ConfigurationError } from "../exceptions" -import { dedent, deline, naturalList } from "../util/string" -import { DependencyGraph } from "./common" -import { ServiceConfig } from "../config/service" -import { TaskConfig } from "../config/task" -import { makeBaseKey } from "../tasks/base" -import { testFromModule, GardenTest, testFromConfig } from "../types/test" +import { flatten, pick, uniq, sortBy, pickBy } from "lodash-es" +import type { BuildDependencyConfig, ModuleConfig } from "../config/module.js" +import type { GardenModule, ModuleTypeMap } from "../types/module.js" +import { moduleNeedsBuild } from "../types/module.js" +import type { GardenService } from "../types/service.js" +import { serviceFromConfig } from "../types/service.js" +import type { GardenTask } from "../types/task.js" +import { taskFromConfig } from "../types/task.js" +import type { TestConfig } from "../config/test.js" +import { uniqByName, pickKeys } from "../util/util.js" +import { CircularDependenciesError, ConfigurationError } from "../exceptions.js" +import { dedent, deline, naturalList } from "../util/string.js" +import { DependencyGraph } from "./common.js" +import type { ServiceConfig } from "../config/service.js" +import type { TaskConfig } from "../config/task.js" +import { makeBaseKey } from "../tasks/base.js" +import type { GardenTest } from "../types/test.js" +import { testFromModule, testFromConfig } from "../types/test.js" import indentString from "indent-string" // Each of these types corresponds to a Task class (e.g. BuildTask, DeployTask, ...). diff --git a/core/src/graph/nodes.ts b/core/src/graph/nodes.ts index 221ea2842d..7831d31888 100644 --- a/core/src/graph/nodes.ts +++ b/core/src/graph/nodes.ts @@ -6,13 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Task, TaskResultType, ValidResultType } from "../tasks/base" -import { GraphError, InternalError, toGardenError } from "../exceptions" -import { GraphResult, GraphResultFromTask, GraphResults } from "./results" -import type { GraphSolver } from "./solver" +import type { Task, TaskResultType, ValidResultType } from "../tasks/base.js" +import { GraphError, InternalError, toGardenError } from "../exceptions.js" +import type { GraphResult, GraphResultFromTask } from "./results.js" +import { GraphResults } from "./results.js" +import type { GraphSolver } from "./solver.js" import chalk from "chalk" -import { metadataForLog } from "./common" -import { Profile } from "../util/profiling" +import { metadataForLog } from "./common.js" +import { Profile } from "../util/profiling.js" export interface InternalNodeTypes { status: StatusTaskNode diff --git a/core/src/graph/results.ts b/core/src/graph/results.ts index b70ee5dda1..bf14ee2cf0 100644 --- a/core/src/graph/results.ts +++ b/core/src/graph/results.ts @@ -6,11 +6,12 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { BaseTask, Task, TaskResultType, ValidResultType } from "../tasks/base" -import { fromPairs, omit, pick } from "lodash" -import { toGraphResultEventPayload } from "../events/events" +import type { BaseTask, Task, TaskResultType, ValidResultType } from "../tasks/base.js" +import { fromPairs, omit, pick } from "lodash-es" +import { toGraphResultEventPayload } from "../events/events.js" import CircularJSON from "circular-json" -import { GardenError, InternalError, toGardenError } from "../exceptions" +import type { GardenError } from "../exceptions.js" +import { InternalError, toGardenError } from "../exceptions.js" export interface TaskEventBase { type: string diff --git a/core/src/graph/solver.ts b/core/src/graph/solver.ts index eebc2f648d..38c5e5d11e 100644 --- a/core/src/graph/solver.ts +++ b/core/src/graph/solver.ts @@ -6,30 +6,24 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import type { BaseTask, Task, ValidResultType } from "../tasks/base" -import type { Log } from "../logger/log-entry" -import { GardenError, GardenErrorParams, GraphError, toGardenError } from "../exceptions" -import { uuidv4 } from "../util/random" -import { DependencyGraph, metadataForLog } from "./common" -import { Profile } from "../util/profiling" -import { TypedEventEmitter } from "../util/events" -import { groupBy, keyBy } from "lodash" -import { GraphResult, GraphResults, resultToString, TaskEventBase } from "./results" -import { gardenEnv } from "../constants" -import type { Garden } from "../garden" -import { GraphResultEventPayload } from "../events/events" -import { renderDivider, renderDuration, renderMessageWithDivider } from "../logger/util" +import type { BaseTask, Task, ValidResultType } from "../tasks/base.js" +import type { Log } from "../logger/log-entry.js" +import type { GardenError, GardenErrorParams } from "../exceptions.js" +import { GraphError, toGardenError } from "../exceptions.js" +import { uuidv4 } from "../util/random.js" +import { DependencyGraph, metadataForLog } from "./common.js" +import { Profile } from "../util/profiling.js" +import { TypedEventEmitter } from "../util/events.js" +import { groupBy, keyBy } from "lodash-es" +import type { GraphResult, TaskEventBase } from "./results.js" +import { GraphResults, resultToString } from "./results.js" +import { gardenEnv } from "../constants.js" +import type { Garden } from "../garden.js" +import type { GraphResultEventPayload } from "../events/events.js" +import { renderDivider, renderDuration, renderMessageWithDivider } from "../logger/util.js" import chalk from "chalk" -import { - CompleteTaskParams, - getNodeKey, - InternalNodeTypes, - ProcessTaskNode, - RequestTaskNode, - StatusTaskNode, - TaskNode, - TaskRequestParams, -} from "./nodes" +import type { CompleteTaskParams, InternalNodeTypes, TaskNode, TaskRequestParams } from "./nodes.js" +import { getNodeKey, ProcessTaskNode, RequestTaskNode, StatusTaskNode } from "./nodes.js" import AsyncLock from "async-lock" const taskStyle = chalk.cyan.bold @@ -378,13 +372,11 @@ export class GraphSolver extends TypedEventEmitter { private async processNode(node: TaskNode, startedAt: Date) { this.logTask(node) - let result: GraphResult - try { const processResult = await node.execute() - result = this.completeTask({ startedAt, error: null, result: processResult, node, aborted: false }) + this.completeTask({ startedAt, error: null, result: processResult, node, aborted: false }) } catch (error) { - result = this.completeTask({ startedAt, error: toGardenError(error), result: null, node, aborted: false }) + this.completeTask({ startedAt, error: toGardenError(error), result: null, node, aborted: false }) if (!node.task.interactive) { this.logTaskError(node, toGardenError(error)) } diff --git a/core/src/index.ts b/core/src/index.ts index d6d55a425c..959bf03303 100644 --- a/core/src/index.ts +++ b/core/src/index.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { initTracing } from "./util/open-telemetry/tracing" +import { initTracing } from "./util/open-telemetry/tracing.js" initTracing() -export { Garden } from "./garden" +export { Garden } from "./garden.js" diff --git a/core/src/logger/log-entry.ts b/core/src/logger/log-entry.ts index 6ab8a18d71..bb869d52d8 100644 --- a/core/src/logger/log-entry.ts +++ b/core/src/logger/log-entry.ts @@ -6,20 +6,20 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import logSymbols from "log-symbols" +import type logSymbols from "log-symbols" import cloneDeep from "fast-copy" -import { round } from "lodash" +import { round } from "lodash-es" -import { LogLevel } from "./logger" -import { Omit } from "../util/util" -import { Logger } from "./logger" +import { LogLevel } from "./logger.js" +import type { Omit } from "../util/util.js" +import type { Logger } from "./logger.js" import uniqid from "uniqid" import chalk from "chalk" -import { GardenError } from "../exceptions" +import type { GardenError } from "../exceptions.js" import hasAnsi from "has-ansi" -import { omitUndefined } from "../util/objects" -import { renderDuration } from "./util" -import { errorStyle, warningStyle } from "./renderers" +import { omitUndefined } from "../util/objects.js" +import { renderDuration } from "./util.js" +import { errorStyle, warningStyle } from "./renderers.js" export type LogSymbol = keyof typeof logSymbols | "empty" export type TaskLogStatus = "active" | "success" | "error" diff --git a/core/src/logger/logger.ts b/core/src/logger/logger.ts index ab755734ec..c2baaef236 100644 --- a/core/src/logger/logger.ts +++ b/core/src/logger/logger.ts @@ -6,21 +6,22 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { LogMetadata, LogEntry, CoreLog, CoreLogContext } from "./log-entry" -import { Writer } from "./writers/base" -import { CommandError, ParameterError, InternalError } from "../exceptions" -import { TerminalWriter } from "./writers/terminal-writer" -import { JsonTerminalWriter } from "./writers/json-terminal-writer" -import { EventBus } from "../events/events" -import { formatLogEntryForEventStream } from "../cloud/buffered-event-stream" -import { gardenEnv } from "../constants" -import { getEnumKeys } from "../util/util" -import { range } from "lodash" -import { InkTerminalWriter } from "./writers/ink-terminal-writer" -import { QuietWriter } from "./writers/quiet-writer" -import { PluginEventBroker } from "../plugin-context" -import { EventLogWriter } from "./writers/event-writer" -import { naturalList } from "../util/string" +import type { LogMetadata, LogEntry, CoreLogContext } from "./log-entry.js" +import { CoreLog } from "./log-entry.js" +import type { Writer } from "./writers/base.js" +import { CommandError, ParameterError, InternalError } from "../exceptions.js" +import { TerminalWriter } from "./writers/terminal-writer.js" +import { JsonTerminalWriter } from "./writers/json-terminal-writer.js" +import { EventBus } from "../events/events.js" +import { formatLogEntryForEventStream } from "../cloud/buffered-event-stream.js" +import { gardenEnv } from "../constants.js" +import { getEnumKeys } from "../util/util.js" +import { range } from "lodash-es" +import { InkTerminalWriter } from "./writers/ink-terminal-writer.js" +import { QuietWriter } from "./writers/quiet-writer.js" +import type { PluginEventBroker } from "../plugin-context.js" +import { EventLogWriter } from "./writers/event-writer.js" +import { naturalList } from "../util/string.js" export type LoggerType = "quiet" | "default" | "basic" | "json" | "ink" export const LOGGER_TYPES = new Set(["quiet", "default", "basic", "json", "ink"]) diff --git a/core/src/logger/renderers.ts b/core/src/logger/renderers.ts index 6b2dd68ae8..24e47f3903 100644 --- a/core/src/logger/renderers.ts +++ b/core/src/logger/renderers.ts @@ -10,14 +10,15 @@ import logSymbols from "log-symbols" import chalk from "chalk" import stringify from "json-stringify-safe" import stripAnsi from "strip-ansi" -import { isArray, repeat, trim } from "lodash" -import stringWidth = require("string-width") -import format from "date-fns/format" -import { LogEntry } from "./log-entry" -import { JsonLogEntry } from "./writers/json-terminal-writer" -import { highlightYaml, safeDumpYaml } from "../util/serialization" -import { Logger, logLevelMap, LogLevel } from "./logger" -import { toGardenError } from "../exceptions" +import { isArray, repeat, trim } from "lodash-es" +import stringWidth from "string-width" +import format from "date-fns/format/index.js" +import type { LogEntry } from "./log-entry.js" +import type { JsonLogEntry } from "./writers/json-terminal-writer.js" +import { highlightYaml, safeDumpYaml } from "../util/serialization.js" +import type { Logger } from "./logger.js" +import { logLevelMap, LogLevel } from "./logger.js" +import { toGardenError } from "../exceptions.js" type RenderFn = (entry: LogEntry, logger: Logger) => string diff --git a/core/src/logger/util.ts b/core/src/logger/util.ts index b6c52bc224..b0d39f2599 100644 --- a/core/src/logger/util.ts +++ b/core/src/logger/util.ts @@ -6,11 +6,12 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import chalk, { Chalk } from "chalk" +import type { Chalk } from "chalk" +import chalk from "chalk" import hasAnsi from "has-ansi" import dedent from "dedent" import stringWidth from "string-width" -import { DEFAULT_BROWSER_DIVIDER_WIDTH } from "../constants" +import { DEFAULT_BROWSER_DIVIDER_WIDTH } from "../constants.js" // Add platforms/terminals? export function envSupportsEmoji() { @@ -19,12 +20,16 @@ export function envSupportsEmoji() { ) } -export let overrideTerminalWidth: number | undefined +let _overrideTerminalWidth: number | undefined + +export function overrideTerminalWidth(width: number | undefined) { + _overrideTerminalWidth = width +} export function getTerminalWidth(stream: NodeJS.WriteStream = process.stdout) { // Used for unit tests - if (overrideTerminalWidth) { - return overrideTerminalWidth + if (_overrideTerminalWidth) { + return _overrideTerminalWidth } const columns = (stream || {}).columns diff --git a/core/src/logger/writers/base.ts b/core/src/logger/writers/base.ts index acfddf4a9f..00dfedab3a 100644 --- a/core/src/logger/writers/base.ts +++ b/core/src/logger/writers/base.ts @@ -6,9 +6,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { LogEntry } from "../log-entry" -import { Logger } from "../logger" -import { LogLevel } from "../logger" +import type { LogEntry } from "../log-entry.js" +import type { Logger } from "../logger.js" +import { LogLevel } from "../logger.js" export interface BaseWriterParams { level?: LogLevel diff --git a/core/src/logger/writers/event-writer.ts b/core/src/logger/writers/event-writer.ts index c7f0343055..ac9847e9b2 100644 --- a/core/src/logger/writers/event-writer.ts +++ b/core/src/logger/writers/event-writer.ts @@ -6,11 +6,13 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import type { PluginEventBroker } from "../../plugin-context" -import type { LogEntry } from "../log-entry" -import { Logger, logLevelToString } from "../logger" -import { formatForTerminal } from "../renderers" -import { BaseWriterParams, Writer } from "./base" +import type { PluginEventBroker } from "../../plugin-context.js" +import type { LogEntry } from "../log-entry.js" +import type { Logger } from "../logger.js" +import { logLevelToString } from "../logger.js" +import { formatForTerminal } from "../renderers.js" +import type { BaseWriterParams } from "./base.js" +import { Writer } from "./base.js" interface EventWriterParams extends BaseWriterParams { defaultOrigin?: string diff --git a/core/src/logger/writers/file-writer.ts b/core/src/logger/writers/file-writer.ts index 4af09defb7..4b5b3bcd2b 100644 --- a/core/src/logger/writers/file-writer.ts +++ b/core/src/logger/writers/file-writer.ts @@ -8,14 +8,16 @@ import winston from "winston" import { dirname, isAbsolute } from "path" -import { ensureDir, truncate } from "fs-extra" +import fsExtra from "fs-extra" +const { ensureDir, truncate } = fsExtra import stripAnsi from "strip-ansi" -import { LogLevel } from "../logger" -import { LogEntry } from "../log-entry" -import { BaseWriterParams, Writer } from "./base" -import { renderError, renderMsg } from "../renderers" -import { InternalError } from "../../exceptions" +import { LogLevel } from "../logger.js" +import type { LogEntry } from "../log-entry.js" +import type { BaseWriterParams } from "./base.js" +import { Writer } from "./base.js" +import { renderError, renderMsg } from "../renderers.js" +import { InternalError } from "../../exceptions.js" export interface FileWriterConfig extends BaseWriterParams { level: LogLevel diff --git a/core/src/logger/writers/ink-terminal-writer.ts b/core/src/logger/writers/ink-terminal-writer.ts index 67870eabe3..ca13f4d3ea 100644 --- a/core/src/logger/writers/ink-terminal-writer.ts +++ b/core/src/logger/writers/ink-terminal-writer.ts @@ -6,10 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { formatForTerminal } from "../renderers" -import { LogEntry } from "../log-entry" -import { Logger } from "../logger" -import { BaseWriterParams, Writer } from "./base" +import { formatForTerminal } from "../renderers.js" +import type { LogEntry } from "../log-entry.js" +import type { Logger } from "../logger.js" +import type { BaseWriterParams } from "./base.js" +import { Writer } from "./base.js" type WriteCallback = (data: string) => void diff --git a/core/src/logger/writers/json-file-writer.ts b/core/src/logger/writers/json-file-writer.ts index 89b315cdcc..6a5d64eb23 100644 --- a/core/src/logger/writers/json-file-writer.ts +++ b/core/src/logger/writers/json-file-writer.ts @@ -8,10 +8,10 @@ import stringify from "json-stringify-safe" import winston from "winston" -import { LogEntry } from "../log-entry" -import { LogLevel } from "../logger" -import { formatForJson } from "../renderers" -import { FileWriter, levelToStr } from "./file-writer" +import type { LogEntry } from "../log-entry.js" +import type { LogLevel } from "../logger.js" +import { formatForJson } from "../renderers.js" +import { FileWriter, levelToStr } from "./file-writer.js" export function renderAsJson(level: LogLevel, entry: LogEntry): string | null { if (level >= entry.level) { diff --git a/core/src/logger/writers/json-terminal-writer.ts b/core/src/logger/writers/json-terminal-writer.ts index 945386e9fe..56bc517ede 100644 --- a/core/src/logger/writers/json-terminal-writer.ts +++ b/core/src/logger/writers/json-terminal-writer.ts @@ -7,10 +7,10 @@ */ import stringify from "json-stringify-safe" -import { LogEntry, LogMetadata } from "../log-entry" -import { Logger } from "../logger" -import { Writer } from "./base" -import { formatForJson } from "../renderers" +import type { LogEntry, LogMetadata } from "../log-entry.js" +import type { Logger } from "../logger.js" +import { Writer } from "./base.js" +import { formatForJson } from "../renderers.js" export interface JsonLogEntry { msg: string diff --git a/core/src/logger/writers/quiet-writer.ts b/core/src/logger/writers/quiet-writer.ts index 6ecb959a77..50bef9311c 100644 --- a/core/src/logger/writers/quiet-writer.ts +++ b/core/src/logger/writers/quiet-writer.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Writer } from "./base" +import { Writer } from "./base.js" /** * The QuietWriter doesn't write any log lines as the name suggests. diff --git a/core/src/logger/writers/terminal-writer.ts b/core/src/logger/writers/terminal-writer.ts index 755eb8cd7b..ff0bb1f07f 100644 --- a/core/src/logger/writers/terminal-writer.ts +++ b/core/src/logger/writers/terminal-writer.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { LogEntry } from "../log-entry" -import { Logger } from "../logger" -import { formatForTerminal } from "../renderers" -import { Writer } from "./base" +import type { LogEntry } from "../log-entry.js" +import type { Logger } from "../logger.js" +import { formatForTerminal } from "../renderers.js" +import { Writer } from "./base.js" export class TerminalWriter extends Writer { type = "default" diff --git a/core/src/monitors/base.ts b/core/src/monitors/base.ts index feee4cedf2..7ff9676b37 100644 --- a/core/src/monitors/base.ts +++ b/core/src/monitors/base.ts @@ -6,8 +6,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import type { Command } from "../commands/base" -import type { Garden } from "../garden" +import type { Command } from "../commands/base.js" +import type { Garden } from "../garden.js" export interface MonitorBaseParams { garden: Garden diff --git a/core/src/monitors/handler.ts b/core/src/monitors/handler.ts index 6709e576cd..76ef925c21 100644 --- a/core/src/monitors/handler.ts +++ b/core/src/monitors/handler.ts @@ -6,10 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import type { Action } from "../actions/types" -import { Log } from "../logger/log-entry" -import type { PluginEventBroker } from "../plugin-context" -import { MonitorBaseParams, Monitor } from "./base" +import type { Action } from "../actions/types.js" +import type { Log } from "../logger/log-entry.js" +import type { PluginEventBroker } from "../plugin-context.js" +import type { MonitorBaseParams } from "./base.js" +import { Monitor } from "./base.js" interface HandlerMonitorParams extends MonitorBaseParams { type: string diff --git a/core/src/monitors/logs.ts b/core/src/monitors/logs.ts index 253b84a985..88142d08c8 100644 --- a/core/src/monitors/logs.ts +++ b/core/src/monitors/logs.ts @@ -8,18 +8,20 @@ import chalk from "chalk" import hasAnsi from "has-ansi" -import { every, some } from "lodash" -import Stream from "ts-stream" -import type { DeployAction } from "../actions/deploy" -import { Resolved } from "../actions/types" -import { ConfigGraph } from "../graph/config-graph" -import { createActionLog, Log } from "../logger/log-entry" -import { LogLevel, logLevelMap } from "../logger/logger" -import { padSection } from "../logger/renderers" -import { PluginEventBroker } from "../plugin-context" -import { waitForOutputFlush } from "../process" -import { DeployLogEntry } from "../types/service" -import { MonitorBaseParams, Monitor } from "./base" +import { every, some } from "lodash-es" +import { Stream } from "ts-stream" +import type { DeployAction } from "../actions/deploy.js" +import type { Resolved } from "../actions/types.js" +import type { ConfigGraph } from "../graph/config-graph.js" +import type { Log } from "../logger/log-entry.js" +import { createActionLog } from "../logger/log-entry.js" +import { LogLevel, logLevelMap } from "../logger/logger.js" +import { padSection } from "../logger/renderers.js" +import { PluginEventBroker } from "../plugin-context.js" +import { waitForOutputFlush } from "../process.js" +import type { DeployLogEntry } from "../types/service.js" +import type { MonitorBaseParams } from "./base.js" +import { Monitor } from "./base.js" export const logMonitorColors = ["green", "cyan", "magenta", "yellow", "blueBright", "blue"] @@ -116,8 +118,8 @@ export class LogMonitor extends Monitor { async start() { const stream = new Stream() - // Note: lazy-loading for startup performance - const { isMatch } = await import("micromatch") + const { default: micromatch } = await import("micromatch") + const { isMatch } = micromatch const matchTagFilters = (entry: DeployLogEntry): boolean => { if (!this.tagFilters) { diff --git a/core/src/monitors/manager.ts b/core/src/monitors/manager.ts index 82e99f7210..c94dccd9f8 100644 --- a/core/src/monitors/manager.ts +++ b/core/src/monitors/manager.ts @@ -7,13 +7,13 @@ */ import chalk from "chalk" -import type { Command } from "../commands/base" -import { EventBus } from "../events/events" -import type { Log } from "../logger/log-entry" -import { LogLevel } from "../logger/logger" -import { TypedEventEmitter } from "../util/events" -import { KeyedSet } from "../util/keyed-set" -import type { Monitor } from "./base" +import type { Command } from "../commands/base.js" +import type { EventBus } from "../events/events.js" +import type { Log } from "../logger/log-entry.js" +import { LogLevel } from "../logger/logger.js" +import { TypedEventEmitter } from "../util/events.js" +import { KeyedSet } from "../util/keyed-set.js" +import type { Monitor } from "./base.js" type MonitorStatus = "starting" | "started" | "stopping" | "stopped" diff --git a/core/src/monitors/port-forward.ts b/core/src/monitors/port-forward.ts index 86560d5d41..7f231a2cff 100644 --- a/core/src/monitors/port-forward.ts +++ b/core/src/monitors/port-forward.ts @@ -6,13 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import type { DeployAction } from "../actions/deploy" -import { Executed } from "../actions/types" -import { ConfigGraph } from "../graph/config-graph" -import { Log } from "../logger/log-entry" -import { PluginEventBroker } from "../plugin-context" -import { MonitorBaseParams, Monitor } from "./base" -import { startPortProxies, PortProxy, stopPortProxy } from "../proxy" +import type { DeployAction } from "../actions/deploy.js" +import type { Executed } from "../actions/types.js" +import type { ConfigGraph } from "../graph/config-graph.js" +import type { Log } from "../logger/log-entry.js" +import { PluginEventBroker } from "../plugin-context.js" +import type { MonitorBaseParams } from "./base.js" +import { Monitor } from "./base.js" +import type { PortProxy } from "../proxy.js" +import { startPortProxies, stopPortProxy } from "../proxy.js" import chalk from "chalk" interface PortForwardMonitorParams extends MonitorBaseParams { diff --git a/core/src/monitors/sync.ts b/core/src/monitors/sync.ts index f97bb70d95..2a92795812 100644 --- a/core/src/monitors/sync.ts +++ b/core/src/monitors/sync.ts @@ -6,13 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import type { DeployAction } from "../actions/deploy" -import { Executed } from "../actions/types" -import { ConfigGraph } from "../graph/config-graph" -import { ActionLog, createActionLog, Log } from "../logger/log-entry" -import { PluginEventBroker } from "../plugin-context" -import { ActionRouter } from "../router/router" -import { MonitorBaseParams, Monitor } from "./base" +import type { DeployAction } from "../actions/deploy.js" +import type { Executed } from "../actions/types.js" +import type { ConfigGraph } from "../graph/config-graph.js" +import type { ActionLog, Log } from "../logger/log-entry.js" +import { createActionLog } from "../logger/log-entry.js" +import { PluginEventBroker } from "../plugin-context.js" +import type { ActionRouter } from "../router/router.js" +import type { MonitorBaseParams } from "./base.js" +import { Monitor } from "./base.js" interface SyncMonitorParams extends MonitorBaseParams { action: Executed diff --git a/core/src/mutagen.ts b/core/src/mutagen.ts index 148b05afd6..8fe5fbc6f5 100644 --- a/core/src/mutagen.ts +++ b/core/src/mutagen.ts @@ -9,27 +9,28 @@ import AsyncLock from "async-lock" import chalk from "chalk" import dedent from "dedent" -import EventEmitter from "events" -import { ExecaReturnValue } from "execa" -import { mkdirp, pathExists } from "fs-extra" +import type EventEmitter from "events" +import type { ExecaReturnValue } from "execa" +import fsExtra from "fs-extra" +const { mkdirp, pathExists } = fsExtra import hasha from "hasha" import pRetry from "p-retry" import { join } from "path" import respawn from "respawn" import split2 from "split2" -import { GARDEN_GLOBAL_PATH, MUTAGEN_DIR_NAME } from "./constants" -import { ChildProcessError, GardenError } from "./exceptions" -import pMemoize from "./lib/p-memoize" -import { Log } from "./logger/log-entry" -import { PluginContext } from "./plugin-context" -import { PluginToolSpec } from "./plugin/tools" -import { syncGuideLink } from "./plugins/kubernetes/sync" -import { TypedEventEmitter } from "./util/events" -import { PluginTool } from "./util/ext-tools" -import { deline } from "./util/string" -import { registerCleanupFunction, sleep } from "./util/util" -import { emitNonRepeatableWarning } from "./warnings" -import { OctalPermissionMask } from "./plugins/kubernetes/types" +import { GARDEN_GLOBAL_PATH, MUTAGEN_DIR_NAME } from "./constants.js" +import { ChildProcessError, GardenError } from "./exceptions.js" +import pMemoize from "./lib/p-memoize.js" +import type { Log } from "./logger/log-entry.js" +import type { PluginContext } from "./plugin-context.js" +import type { PluginToolSpec } from "./plugin/tools.js" +import { syncGuideLink } from "./plugins/kubernetes/sync.js" +import { TypedEventEmitter } from "./util/events.js" +import { PluginTool } from "./util/ext-tools.js" +import { deline } from "./util/string.js" +import { registerCleanupFunction, sleep } from "./util/util.js" +import { emitNonRepeatableWarning } from "./warnings.js" +import type { OctalPermissionMask } from "./plugins/kubernetes/types.js" const maxRestarts = 10 const mutagenLogSection = "" @@ -207,7 +208,10 @@ class _MutagenMonitor extends TypedEventEmitter { await ensureDataDir(dataDir) - const proc = respawn([mutagenPath, "sync", "monitor", "--template", "{{ json . }}", "--long"], { + const mutagenOpts = [mutagenPath, "sync", "monitor", "--template", "{{ json . }}", "--long"] + log.silly(`Spawning mutagen using respawn: "${mutagenOpts.join(" ")}"`) + + const proc = respawn(mutagenOpts, { cwd: dataDir, name: "mutagen", env: { diff --git a/core/src/outputs.ts b/core/src/outputs.ts index a39287c0c9..7a75ec7e44 100644 --- a/core/src/outputs.ts +++ b/core/src/outputs.ts @@ -6,14 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Garden } from "./garden" -import { collectTemplateReferences, resolveTemplateStrings } from "./template-string/template-string" -import { OutputConfigContext } from "./config/template-contexts/module" -import { Log } from "./logger/log-entry" -import { OutputSpec } from "./config/project" -import { ActionReference } from "./config/common" -import { ActionKind } from "./plugin/action-types" -import { GraphResults } from "./graph/results" +import type { Garden } from "./garden.js" +import { collectTemplateReferences, resolveTemplateStrings } from "./template-string/template-string.js" +import { OutputConfigContext } from "./config/template-contexts/module.js" +import type { Log } from "./logger/log-entry.js" +import type { OutputSpec } from "./config/project.js" +import type { ActionReference } from "./config/common.js" +import type { ActionKind } from "./plugin/action-types.js" +import { GraphResults } from "./graph/results.js" /** * Resolves all declared project outputs. If necessary, this will resolve providers and modules, and ensure services diff --git a/core/src/plugin-context.ts b/core/src/plugin-context.ts index 289c301293..67c9f989c0 100644 --- a/core/src/plugin-context.ts +++ b/core/src/plugin-context.ts @@ -6,21 +6,24 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import type { Garden } from "./garden" -import { projectNameSchema, projectSourcesSchema, environmentNameSchema, SourceConfig } from "./config/project" -import { Provider, providerSchema, GenericProviderConfig } from "./config/provider" -import { deline } from "./util/string" -import { joi, joiVariables, joiStringMap, joiIdentifier, createSchema } from "./config/common" -import type { PluginTool } from "./util/ext-tools" -import type { ConfigContext, ContextResolveOpts } from "./config/template-contexts/base" -import { resolveTemplateStrings } from "./template-string/template-string" -import type { Log } from "./logger/log-entry" -import { logEntrySchema } from "./plugin/base" +import type { Garden } from "./garden.js" +import type { SourceConfig } from "./config/project.js" +import { projectNameSchema, projectSourcesSchema, environmentNameSchema } from "./config/project.js" +import type { Provider, GenericProviderConfig } from "./config/provider.js" +import { providerSchema } from "./config/provider.js" +import { deline } from "./util/string.js" +import { joi, joiVariables, joiStringMap, joiIdentifier, createSchema } from "./config/common.js" +import type { PluginTool } from "./util/ext-tools.js" +import type { ConfigContext, ContextResolveOpts } from "./config/template-contexts/base.js" +import { resolveTemplateStrings } from "./template-string/template-string.js" +import type { Log } from "./logger/log-entry.js" +import { logEntrySchema } from "./plugin/base.js" import { EventEmitter } from "eventemitter3" -import { CreateEventLogParams, EventLogger, LogLevel, StringLogLevel } from "./logger/logger" +import type { CreateEventLogParams, StringLogLevel } from "./logger/logger.js" +import { EventLogger, LogLevel } from "./logger/logger.js" import { Memoize } from "typescript-memoize" -import type { ParameterObject, ParameterValues } from "./cli/params" -import { NamespaceStatus } from "./types/namespace" +import type { ParameterObject, ParameterValues } from "./cli/params.js" +import type { NamespaceStatus } from "./types/namespace.js" type WrappedFromGarden = Pick< Garden, diff --git a/core/src/plugin/action-types.ts b/core/src/plugin/action-types.ts index 83575e9ca6..e5b6bf3221 100644 --- a/core/src/plugin/action-types.ts +++ b/core/src/plugin/action-types.ts @@ -6,39 +6,41 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { mapValues, memoize } from "lodash" -import { outputSchemaDocs, ResolvedActionHandlerDescription } from "./plugin" -import { ActionTypeHandlerSpec, baseHandlerSchema } from "./handlers/base/base" -import { DoBuildAction } from "./handlers/Build/build" -import { GetBuildActionStatus } from "./handlers/Build/get-status" -import { PublishBuildAction } from "./handlers/Build/publish" -import { DeleteDeploy } from "./handlers/Deploy/delete" -import { ExecInDeploy } from "./handlers/Deploy/exec" -import { GetDeployLogs } from "./handlers/Deploy/get-logs" -import { GetDeployPortForward } from "./handlers/Deploy/get-port-forward" -import { GetDeployStatus } from "./handlers/Deploy/get-status" -import { StopDeployPortForward } from "./handlers/Deploy/stop-port-forward" -import { GetRunActionResult } from "./handlers/Run/get-result" -import { RunRunAction } from "./handlers/Run/run" -import { GetTestActionResult } from "./handlers/Test/get-result" -import { RunTestAction } from "./handlers/Test/run" -import { Action } from "../actions/types" -import Joi from "@hapi/joi" -import { joi, joiArray, joiIdentifier, joiSchema, joiUserIdentifier } from "../config/common" +import { mapValues, memoize } from "lodash-es" +import type { ResolvedActionHandlerDescription } from "./plugin.js" +import { outputSchemaDocs } from "./plugin.js" +import type { ActionTypeHandlerSpec } from "./handlers/base/base.js" +import { baseHandlerSchema } from "./handlers/base/base.js" +import { DoBuildAction } from "./handlers/Build/build.js" +import { GetBuildActionStatus } from "./handlers/Build/get-status.js" +import { PublishBuildAction } from "./handlers/Build/publish.js" +import { DeleteDeploy } from "./handlers/Deploy/delete.js" +import { ExecInDeploy } from "./handlers/Deploy/exec.js" +import { GetDeployLogs } from "./handlers/Deploy/get-logs.js" +import { GetDeployPortForward } from "./handlers/Deploy/get-port-forward.js" +import { GetDeployStatus } from "./handlers/Deploy/get-status.js" +import { StopDeployPortForward } from "./handlers/Deploy/stop-port-forward.js" +import { GetRunActionResult } from "./handlers/Run/get-result.js" +import { RunRunAction } from "./handlers/Run/run.js" +import { GetTestActionResult } from "./handlers/Test/get-result.js" +import { RunTestAction } from "./handlers/Test/run.js" +import type { Action } from "../actions/types.js" +import type Joi from "@hapi/joi" +import { joi, joiArray, joiIdentifier, joiSchema, joiUserIdentifier } from "../config/common.js" import titleize from "titleize" -import { BuildAction } from "../actions/build" -import { DeployAction } from "../actions/deploy" -import { RunAction } from "../actions/run" -import { TestAction } from "../actions/test" -import { DoDeployAction } from "./handlers/Deploy/deploy" -import { dedent } from "../util/string" -import { templateStringLiteral } from "../docs/common" -import { ValidateAction } from "./handlers/base/validate" -import { ConfigureActionConfig } from "./handlers/base/configure" -import { GetActionOutputs } from "./handlers/base/get-outputs" -import { StartSync } from "./handlers/Deploy/start-sync" -import { StopSync } from "./handlers/Deploy/stop-sync" -import { GetSyncStatus } from "./handlers/Deploy/get-sync-status" +import type { BuildAction } from "../actions/build.js" +import type { DeployAction } from "../actions/deploy.js" +import type { RunAction } from "../actions/run.js" +import type { TestAction } from "../actions/test.js" +import { DoDeployAction } from "./handlers/Deploy/deploy.js" +import { dedent } from "../util/string.js" +import { templateStringLiteral } from "../docs/common.js" +import { ValidateAction } from "./handlers/base/validate.js" +import { ConfigureActionConfig } from "./handlers/base/configure.js" +import { GetActionOutputs } from "./handlers/base/get-outputs.js" +import { StartSync } from "./handlers/Deploy/start-sync.js" +import { StopSync } from "./handlers/Deploy/stop-sync.js" +import { GetSyncStatus } from "./handlers/Deploy/get-sync-status.js" // BASE // diff --git a/core/src/plugin/base.ts b/core/src/plugin/base.ts index 4b64b0a32a..19ce18413d 100644 --- a/core/src/plugin/base.ts +++ b/core/src/plugin/base.ts @@ -6,18 +6,19 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import type { ActionLog, Log } from "../logger/log-entry" -import { PluginContext, pluginContextSchema } from "../plugin-context" -import { createSchema, joi } from "../config/common" -import { dedent, deline } from "../util/string" -import type { BuildAction } from "../actions/build" -import type { DeployAction } from "../actions/deploy" -import type { RunAction } from "../actions/run" -import type { TestAction } from "../actions/test" -import { NamespaceStatus } from "../types/namespace" -import Joi from "@hapi/joi" -import { memoize } from "lodash" -import { BaseProviderConfig } from "../config/provider" +import type { ActionLog, Log } from "../logger/log-entry.js" +import type { PluginContext } from "../plugin-context.js" +import { pluginContextSchema } from "../plugin-context.js" +import { createSchema, joi } from "../config/common.js" +import { dedent, deline } from "../util/string.js" +import type { BuildAction } from "../actions/build.js" +import type { DeployAction } from "../actions/deploy.js" +import type { RunAction } from "../actions/run.js" +import type { TestAction } from "../actions/test.js" +import type { NamespaceStatus } from "../types/namespace.js" +import type Joi from "@hapi/joi" +import { memoize } from "lodash-es" +import type { BaseProviderConfig } from "../config/provider.js" export interface ActionHandlerParamsBase { base?: ActionHandler diff --git a/core/src/plugin/command.ts b/core/src/plugin/command.ts index 288a0b5dba..25f85aa467 100644 --- a/core/src/plugin/command.ts +++ b/core/src/plugin/command.ts @@ -6,14 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Log } from "../logger/log-entry" -import { PluginContext, pluginContextSchema } from "../plugin-context" -import { joi, joiArray, joiIdentifier, joiIdentifierDescription, createSchema } from "../config/common" -import { moduleSchema } from "../types/module" -import { logEntrySchema } from "./base" -import { Garden } from "../garden" -import { ConfigGraph } from "../graph/config-graph" -import { BaseProviderConfig } from "../config/provider" +import type { Log } from "../logger/log-entry.js" +import type { PluginContext } from "../plugin-context.js" +import { pluginContextSchema } from "../plugin-context.js" +import { joi, joiArray, joiIdentifier, joiIdentifierDescription, createSchema } from "../config/common.js" +import { moduleSchema } from "../types/module.js" +import { logEntrySchema } from "./base.js" +import type { Garden } from "../garden.js" +import type { ConfigGraph } from "../graph/config-graph.js" +import type { BaseProviderConfig } from "../config/provider.js" // TODO: parse args and opts with a schema export interface PluginCommandParams { diff --git a/core/src/plugin/handlers/Build/build.ts b/core/src/plugin/handlers/Build/build.ts index f417b90542..0b6b1e74a7 100644 --- a/core/src/plugin/handlers/Build/build.ts +++ b/core/src/plugin/handlers/Build/build.ts @@ -6,12 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { dedent } from "../../../util/string" -import { actionParamsSchema, PluginBuildActionParamsBase } from "../../../plugin/base" -import { BuildAction } from "../../../actions/build" -import { ActionTypeHandlerSpec } from "../base/base" -import { Resolved } from "../../../actions/types" -import { BuildStatus, getBuildStatusSchema } from "./get-status" +import { dedent } from "../../../util/string.js" +import type { PluginBuildActionParamsBase } from "../../../plugin/base.js" +import { actionParamsSchema } from "../../../plugin/base.js" +import type { BuildAction } from "../../../actions/build.js" +import { ActionTypeHandlerSpec } from "../base/base.js" +import type { Resolved } from "../../../actions/types.js" +import type { BuildStatus } from "./get-status.js" +import { getBuildStatusSchema } from "./get-status.js" export type DoBuildActionParams = PluginBuildActionParamsBase diff --git a/core/src/plugin/handlers/Build/get-status.ts b/core/src/plugin/handlers/Build/get-status.ts index 006aa19509..563fd0c6c7 100644 --- a/core/src/plugin/handlers/Build/get-status.ts +++ b/core/src/plugin/handlers/Build/get-status.ts @@ -6,13 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { dedent } from "../../../util/string" -import { actionParamsSchema, PluginBuildActionParamsBase } from "../../base" -import { BuildAction } from "../../../actions/build" -import { ActionTypeHandlerSpec } from "../base/base" -import { actionStatusSchema } from "../../../actions/base" -import { ActionStatus, ActionStatusMap, Resolved } from "../../../actions/types" -import { createSchema, joi } from "../../../config/common" +import { dedent } from "../../../util/string.js" +import type { PluginBuildActionParamsBase } from "../../base.js" +import { actionParamsSchema } from "../../base.js" +import type { BuildAction } from "../../../actions/build.js" +import { ActionTypeHandlerSpec } from "../base/base.js" +import { actionStatusSchema } from "../../../actions/base.js" +import type { ActionStatus, ActionStatusMap, Resolved } from "../../../actions/types.js" +import { createSchema, joi } from "../../../config/common.js" /** * - `fetched`: The build was fetched from a repository instead of building. diff --git a/core/src/plugin/handlers/Build/publish.ts b/core/src/plugin/handlers/Build/publish.ts index 30963ff591..958ae7e643 100644 --- a/core/src/plugin/handlers/Build/publish.ts +++ b/core/src/plugin/handlers/Build/publish.ts @@ -6,13 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { dedent } from "../../../util/string" -import { actionParamsSchema, PluginBuildActionParamsBase } from "../../../plugin/base" -import { createSchema, joi } from "../../../config/common" -import { BuildAction } from "../../../actions/build" -import { ActionTypeHandlerSpec } from "../base/base" -import { ActionStatus, Executed } from "../../../actions/types" -import { actionStatusSchema } from "../../../actions/base" +import { dedent } from "../../../util/string.js" +import type { PluginBuildActionParamsBase } from "../../../plugin/base.js" +import { actionParamsSchema } from "../../../plugin/base.js" +import { createSchema, joi } from "../../../config/common.js" +import type { BuildAction } from "../../../actions/build.js" +import { ActionTypeHandlerSpec } from "../base/base.js" +import type { ActionStatus, Executed } from "../../../actions/types.js" +import { actionStatusSchema } from "../../../actions/base.js" interface PublishActionParams extends PluginBuildActionParamsBase { tag?: string diff --git a/core/src/plugin/handlers/Deploy/delete.ts b/core/src/plugin/handlers/Deploy/delete.ts index 82908656f4..2a77360fe0 100644 --- a/core/src/plugin/handlers/Deploy/delete.ts +++ b/core/src/plugin/handlers/Deploy/delete.ts @@ -6,14 +6,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { DeployAction } from "../../../actions/deploy" -import { actionParamsSchema, PluginDeployActionParamsBase } from "../../../plugin/base" -import { dedent } from "../../../util/string" -import { ServiceStatus, serviceStatusSchema } from "../../../types/service" -import { ActionTypeHandlerSpec } from "../base/base" -import type { ActionStatus, Resolved } from "../../../actions/types" -import { createSchema } from "../../../config/common" -import { actionStatusSchema } from "../../../actions/base" +import type { DeployAction } from "../../../actions/deploy.js" +import type { PluginDeployActionParamsBase } from "../../../plugin/base.js" +import { actionParamsSchema } from "../../../plugin/base.js" +import { dedent } from "../../../util/string.js" +import type { ServiceStatus } from "../../../types/service.js" +import { serviceStatusSchema } from "../../../types/service.js" +import { ActionTypeHandlerSpec } from "../base/base.js" +import type { ActionStatus, Resolved } from "../../../actions/types.js" +import { createSchema } from "../../../config/common.js" +import { actionStatusSchema } from "../../../actions/base.js" type DeleteDeployParams = PluginDeployActionParamsBase diff --git a/core/src/plugin/handlers/Deploy/deploy.ts b/core/src/plugin/handlers/Deploy/deploy.ts index bf53881402..10beced12b 100644 --- a/core/src/plugin/handlers/Deploy/deploy.ts +++ b/core/src/plugin/handlers/Deploy/deploy.ts @@ -6,13 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { actionParamsSchema, PluginDeployActionParamsBase } from "../../base" -import { dedent } from "../../../util/string" -import { joi } from "../../../config/common" -import { ActionTypeHandlerSpec } from "../base/base" -import { DeployAction } from "../../../actions/deploy" -import { DeployStatus, getDeployStatusSchema } from "./get-status" -import { Resolved } from "../../../actions/types" +import type { PluginDeployActionParamsBase } from "../../base.js" +import { actionParamsSchema } from "../../base.js" +import { dedent } from "../../../util/string.js" +import { joi } from "../../../config/common.js" +import { ActionTypeHandlerSpec } from "../base/base.js" +import type { DeployAction } from "../../../actions/deploy.js" +import type { DeployStatus } from "./get-status.js" +import { getDeployStatusSchema } from "./get-status.js" +import type { Resolved } from "../../../actions/types.js" interface DeployParams extends PluginDeployActionParamsBase { force: boolean diff --git a/core/src/plugin/handlers/Deploy/exec.ts b/core/src/plugin/handlers/Deploy/exec.ts index ee02174165..d7a8cd2ab3 100644 --- a/core/src/plugin/handlers/Deploy/exec.ts +++ b/core/src/plugin/handlers/Deploy/exec.ts @@ -6,12 +6,13 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { actionParamsSchema, PluginDeployActionParamsBase } from "../../../plugin/base" -import { dedent } from "../../../util/string" -import { joiArray, joi, createSchema } from "../../../config/common" -import { DeployAction } from "../../../actions/deploy" -import { ActionTypeHandlerSpec } from "../base/base" -import { Executed } from "../../../actions/types" +import type { PluginDeployActionParamsBase } from "../../../plugin/base.js" +import { actionParamsSchema } from "../../../plugin/base.js" +import { dedent } from "../../../util/string.js" +import { joiArray, joi, createSchema } from "../../../config/common.js" +import type { DeployAction } from "../../../actions/deploy.js" +import { ActionTypeHandlerSpec } from "../base/base.js" +import type { Executed } from "../../../actions/types.js" interface ExecInDeployParams extends PluginDeployActionParamsBase { command: string[] diff --git a/core/src/plugin/handlers/Deploy/get-logs.ts b/core/src/plugin/handlers/Deploy/get-logs.ts index ab587dba7a..da6c00a2cf 100644 --- a/core/src/plugin/handlers/Deploy/get-logs.ts +++ b/core/src/plugin/handlers/Deploy/get-logs.ts @@ -6,14 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Stream } from "ts-stream" -import { actionParamsSchema, PluginDeployActionParamsBase } from "../../base" -import { dedent } from "../../../util/string" -import { joi } from "../../../config/common" -import { DeployAction } from "../../../actions/deploy" -import { DeployLogEntry } from "../../../types/service" -import { ActionTypeHandlerSpec } from "../base/base" -import { Resolved } from "../../../actions/types" +import type { Stream } from "ts-stream" +import type { PluginDeployActionParamsBase } from "../../base.js" +import { actionParamsSchema } from "../../base.js" +import { dedent } from "../../../util/string.js" +import { joi } from "../../../config/common.js" +import type { DeployAction } from "../../../actions/deploy.js" +import type { DeployLogEntry } from "../../../types/service.js" +import { ActionTypeHandlerSpec } from "../base/base.js" +import type { Resolved } from "../../../actions/types.js" interface GetDeployLogsParams extends PluginDeployActionParamsBase { stream: Stream diff --git a/core/src/plugin/handlers/Deploy/get-port-forward.ts b/core/src/plugin/handlers/Deploy/get-port-forward.ts index 7c941c641a..5a95a32122 100644 --- a/core/src/plugin/handlers/Deploy/get-port-forward.ts +++ b/core/src/plugin/handlers/Deploy/get-port-forward.ts @@ -6,13 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { actionParamsSchema, PluginDeployActionParamsBase } from "../../base" -import { dedent } from "../../../util/string" -import { ForwardablePort, forwardablePortKeys } from "../../../types/service" -import { joi } from "../../../config/common" -import { DeployAction } from "../../../actions/deploy" -import { ActionTypeHandlerSpec } from "../base/base" -import { Executed } from "../../../actions/types" +import type { PluginDeployActionParamsBase } from "../../base.js" +import { actionParamsSchema } from "../../base.js" +import { dedent } from "../../../util/string.js" +import type { ForwardablePort } from "../../../types/service.js" +import { forwardablePortKeys } from "../../../types/service.js" +import { joi } from "../../../config/common.js" +import type { DeployAction } from "../../../actions/deploy.js" +import { ActionTypeHandlerSpec } from "../base/base.js" +import type { Executed } from "../../../actions/types.js" type GetPortForwardParams = PluginDeployActionParamsBase & ForwardablePort diff --git a/core/src/plugin/handlers/Deploy/get-status.ts b/core/src/plugin/handlers/Deploy/get-status.ts index cc6a2d990e..fb7ee47488 100644 --- a/core/src/plugin/handlers/Deploy/get-status.ts +++ b/core/src/plugin/handlers/Deploy/get-status.ts @@ -6,14 +6,22 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { actionParamsSchema, PluginDeployActionParamsBase } from "../../base" -import { dedent } from "../../../util/string" -import type { DeployAction } from "../../../actions/deploy" -import { ActionTypeHandlerSpec } from "../base/base" -import type { ActionState, ActionStatus, ActionStatusMap, GetActionOutputType, Resolved } from "../../../actions/types" -import { actionStatusSchema } from "../../../actions/base" -import { createSchema } from "../../../config/common" -import { ServiceStatus, DeployState, serviceStatusSchema } from "../../../types/service" +import type { PluginDeployActionParamsBase } from "../../base.js" +import { actionParamsSchema } from "../../base.js" +import { dedent } from "../../../util/string.js" +import type { DeployAction } from "../../../actions/deploy.js" +import { ActionTypeHandlerSpec } from "../base/base.js" +import type { + ActionState, + ActionStatus, + ActionStatusMap, + GetActionOutputType, + Resolved, +} from "../../../actions/types.js" +import { actionStatusSchema } from "../../../actions/base.js" +import { createSchema } from "../../../config/common.js" +import type { ServiceStatus, DeployState } from "../../../types/service.js" +import { serviceStatusSchema } from "../../../types/service.js" type GetDeployStatusParams = PluginDeployActionParamsBase diff --git a/core/src/plugin/handlers/Deploy/get-sync-status.ts b/core/src/plugin/handlers/Deploy/get-sync-status.ts index d5db09ddf8..c6d97bf27f 100644 --- a/core/src/plugin/handlers/Deploy/get-sync-status.ts +++ b/core/src/plugin/handlers/Deploy/get-sync-status.ts @@ -6,13 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { actionParamsSchema, PluginDeployActionParamsBase } from "../../base" -import { dedent } from "../../../util/string" -import { createSchema, joi, joiVariables } from "../../../config/common" -import type { DeployAction } from "../../../actions/deploy" -import { ActionTypeHandlerSpec } from "../base/base" -import type { Executed } from "../../../actions/types" -import { SyncMode, syncModeSchema } from "../../../plugins/container/config" +import type { PluginDeployActionParamsBase } from "../../base.js" +import { actionParamsSchema } from "../../base.js" +import { dedent } from "../../../util/string.js" +import { createSchema, joi, joiVariables } from "../../../config/common.js" +import type { DeployAction } from "../../../actions/deploy.js" +import { ActionTypeHandlerSpec } from "../base/base.js" +import type { Executed } from "../../../actions/types.js" +import type { SyncMode } from "../../../plugins/container/config.js" +import { syncModeSchema } from "../../../plugins/container/config.js" interface GetSyncStatusParams extends PluginDeployActionParamsBase { monitor: boolean diff --git a/core/src/plugin/handlers/Deploy/start-sync.ts b/core/src/plugin/handlers/Deploy/start-sync.ts index 7636bdbca2..b16513d4c1 100644 --- a/core/src/plugin/handlers/Deploy/start-sync.ts +++ b/core/src/plugin/handlers/Deploy/start-sync.ts @@ -6,12 +6,13 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { actionParamsSchema, PluginDeployActionParamsBase } from "../../base" -import { dedent } from "../../../util/string" -import { joi } from "../../../config/common" -import { DeployAction } from "../../../actions/deploy" -import { ActionTypeHandlerSpec } from "../base/base" -import { Executed } from "../../../actions/types" +import type { PluginDeployActionParamsBase } from "../../base.js" +import { actionParamsSchema } from "../../base.js" +import { dedent } from "../../../util/string.js" +import { joi } from "../../../config/common.js" +import type { DeployAction } from "../../../actions/deploy.js" +import { ActionTypeHandlerSpec } from "../base/base.js" +import type { Executed } from "../../../actions/types.js" type StartSyncParams = PluginDeployActionParamsBase diff --git a/core/src/plugin/handlers/Deploy/stop-port-forward.ts b/core/src/plugin/handlers/Deploy/stop-port-forward.ts index 685eae217e..1f5152de3f 100644 --- a/core/src/plugin/handlers/Deploy/stop-port-forward.ts +++ b/core/src/plugin/handlers/Deploy/stop-port-forward.ts @@ -6,13 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { actionParamsSchema, PluginDeployActionParamsBase } from "../../base" -import { dedent } from "../../../util/string" -import { ForwardablePort, forwardablePortKeys } from "../../../types/service" -import { joi } from "../../../config/common" -import { DeployAction } from "../../../actions/deploy" -import { ActionTypeHandlerSpec } from "../base/base" -import { Resolved } from "../../../actions/types" +import type { PluginDeployActionParamsBase } from "../../base.js" +import { actionParamsSchema } from "../../base.js" +import { dedent } from "../../../util/string.js" +import type { ForwardablePort } from "../../../types/service.js" +import { forwardablePortKeys } from "../../../types/service.js" +import { joi } from "../../../config/common.js" +import type { DeployAction } from "../../../actions/deploy.js" +import { ActionTypeHandlerSpec } from "../base/base.js" +import type { Resolved } from "../../../actions/types.js" type StopPortForwardParams = PluginDeployActionParamsBase & ForwardablePort diff --git a/core/src/plugin/handlers/Deploy/stop-sync.ts b/core/src/plugin/handlers/Deploy/stop-sync.ts index 7a9956e0d5..1de8620945 100644 --- a/core/src/plugin/handlers/Deploy/stop-sync.ts +++ b/core/src/plugin/handlers/Deploy/stop-sync.ts @@ -6,11 +6,12 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { actionParamsSchema, PluginDeployActionParamsBase } from "../../base" -import { dedent } from "../../../util/string" -import { joi } from "../../../config/common" -import { DeployAction } from "../../../actions/deploy" -import { ActionTypeHandlerSpec } from "../base/base" +import type { PluginDeployActionParamsBase } from "../../base.js" +import { actionParamsSchema } from "../../base.js" +import { dedent } from "../../../util/string.js" +import { joi } from "../../../config/common.js" +import type { DeployAction } from "../../../actions/deploy.js" +import { ActionTypeHandlerSpec } from "../base/base.js" type StopSyncParams = PluginDeployActionParamsBase diff --git a/core/src/plugin/handlers/Module/configure.ts b/core/src/plugin/handlers/Module/configure.ts index 9e476d1798..31df0a6fd3 100644 --- a/core/src/plugin/handlers/Module/configure.ts +++ b/core/src/plugin/handlers/Module/configure.ts @@ -6,13 +6,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { dedent } from "../../../util/string" -import { GardenModule } from "../../../types/module" -import { PluginContext, pluginContextSchema } from "../../../plugin-context" -import { logEntrySchema, PluginActionContextParams } from "../../../plugin/base" -import { baseModuleSpecSchema, ModuleConfig, moduleConfigSchema } from "../../../config/module" -import { joi } from "../../../config/common" -import { Log } from "../../../logger/log-entry" +import { dedent } from "../../../util/string.js" +import type { GardenModule } from "../../../types/module.js" +import type { PluginContext } from "../../../plugin-context.js" +import { pluginContextSchema } from "../../../plugin-context.js" +import type { PluginActionContextParams } from "../../../plugin/base.js" +import { logEntrySchema } from "../../../plugin/base.js" +import type { ModuleConfig } from "../../../config/module.js" +import { baseModuleSpecSchema, moduleConfigSchema } from "../../../config/module.js" +import { joi } from "../../../config/common.js" +import type { Log } from "../../../logger/log-entry.js" export interface ConfigureModuleParams extends PluginActionContextParams { ctx: PluginContext diff --git a/core/src/plugin/handlers/Module/convert.ts b/core/src/plugin/handlers/Module/convert.ts index d9c9476345..ff87163dbf 100644 --- a/core/src/plugin/handlers/Module/convert.ts +++ b/core/src/plugin/handlers/Module/convert.ts @@ -6,21 +6,30 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { dedent } from "../../../util/string" -import { PluginContext, pluginContextSchema } from "../../../plugin-context" -import { logEntrySchema, PluginActionContextParams } from "../../base" -import { BuildDependencyConfig } from "../../../config/module" -import { ActionReference, joi, joiArray } from "../../../config/common" -import { Log } from "../../../logger/log-entry" -import { GroupConfig, groupConfig } from "../../../config/group" -import { GardenModule, moduleSchema } from "../../../types/module" -import { baseActionConfigSchema } from "../../../actions/base" -import { ActionConfig } from "../../../actions/types" -import { BuildActionConfig, buildActionConfigSchema, BuildCopyFrom } from "../../../actions/build" -import { GardenService, serviceSchema } from "../../../types/service" -import { GardenTest, testSchema } from "../../../types/test" -import { GardenTask, taskSchema } from "../../../types/task" -import { ExecBuildConfig } from "../../../plugins/exec/build" +import { dedent } from "../../../util/string.js" +import type { PluginContext } from "../../../plugin-context.js" +import { pluginContextSchema } from "../../../plugin-context.js" +import type { PluginActionContextParams } from "../../base.js" +import { logEntrySchema } from "../../base.js" +import type { BuildDependencyConfig } from "../../../config/module.js" +import type { ActionReference } from "../../../config/common.js" +import { joi, joiArray } from "../../../config/common.js" +import type { Log } from "../../../logger/log-entry.js" +import type { GroupConfig } from "../../../config/group.js" +import { groupConfig } from "../../../config/group.js" +import type { GardenModule } from "../../../types/module.js" +import { moduleSchema } from "../../../types/module.js" +import { baseActionConfigSchema } from "../../../actions/base.js" +import type { ActionConfig } from "../../../actions/types.js" +import type { BuildActionConfig, BuildCopyFrom } from "../../../actions/build.js" +import { buildActionConfigSchema } from "../../../actions/build.js" +import type { GardenService } from "../../../types/service.js" +import { serviceSchema } from "../../../types/service.js" +import type { GardenTest } from "../../../types/test.js" +import { testSchema } from "../../../types/test.js" +import type { GardenTask } from "../../../types/task.js" +import { taskSchema } from "../../../types/task.js" +import type { ExecBuildConfig } from "../../../plugins/exec/build.js" export interface ConvertModuleParams extends PluginActionContextParams { ctx: PluginContext diff --git a/core/src/plugin/handlers/Module/get-outputs.ts b/core/src/plugin/handlers/Module/get-outputs.ts index 7cc757b10d..99aad80641 100644 --- a/core/src/plugin/handlers/Module/get-outputs.ts +++ b/core/src/plugin/handlers/Module/get-outputs.ts @@ -6,16 +6,18 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { deline } from "../../../util/string" -import { GardenModule } from "../../../types/module" -import { PluginActionContextParams, logEntrySchema } from "../../base" -import { joi, PrimitiveMap, joiVariables, moduleVersionSchema } from "../../../config/common" -import { templateStringLiteral } from "../../../docs/common" -import { ModuleVersion } from "../../../vcs/vcs" -import { Log } from "../../../logger/log-entry" -import { pluginContextSchema } from "../../../plugin-context" -import { baseModuleSpecSchema } from "../../../config/module" -import { memoize } from "lodash" +import { deline } from "../../../util/string.js" +import type { GardenModule } from "../../../types/module.js" +import type { PluginActionContextParams } from "../../base.js" +import { logEntrySchema } from "../../base.js" +import type { PrimitiveMap } from "../../../config/common.js" +import { joi, joiVariables, moduleVersionSchema } from "../../../config/common.js" +import { templateStringLiteral } from "../../../docs/common.js" +import type { ModuleVersion } from "../../../vcs/vcs.js" +import type { Log } from "../../../logger/log-entry.js" +import { pluginContextSchema } from "../../../plugin-context.js" +import { baseModuleSpecSchema } from "../../../config/module.js" +import { memoize } from "lodash-es" export interface GetModuleOutputsParams extends PluginActionContextParams { log: Log diff --git a/core/src/plugin/handlers/Provider/augmentGraph.ts b/core/src/plugin/handlers/Provider/augmentGraph.ts index 49002a9e5d..4c00b58476 100644 --- a/core/src/plugin/handlers/Provider/augmentGraph.ts +++ b/core/src/plugin/handlers/Provider/augmentGraph.ts @@ -6,12 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { PluginActionParamsBase, projectActionParamsSchema } from "../../base" -import { dedent } from "../../../util/string" -import { joi, joiArray, joiIdentifierMap } from "../../../config/common" -import { providerSchema, ProviderMap, BaseProviderConfig } from "../../../config/provider" -import { BaseAction, baseActionConfigSchema } from "../../../actions/base" -import type { ActionKind, BaseActionConfig } from "../../../actions/types" +import type { PluginActionParamsBase } from "../../base.js" +import { projectActionParamsSchema } from "../../base.js" +import { dedent } from "../../../util/string.js" +import { joi, joiArray, joiIdentifierMap } from "../../../config/common.js" +import type { ProviderMap, BaseProviderConfig } from "../../../config/provider.js" +import { providerSchema } from "../../../config/provider.js" +import type { BaseAction } from "../../../actions/base.js" +import { baseActionConfigSchema } from "../../../actions/base.js" +import type { ActionKind, BaseActionConfig } from "../../../actions/types.js" export interface AugmentGraphParams extends PluginActionParamsBase { actions: BaseAction[] diff --git a/core/src/plugin/handlers/Provider/cleanupEnvironment.ts b/core/src/plugin/handlers/Provider/cleanupEnvironment.ts index 8bf150ce5d..9c56a8b07f 100644 --- a/core/src/plugin/handlers/Provider/cleanupEnvironment.ts +++ b/core/src/plugin/handlers/Provider/cleanupEnvironment.ts @@ -6,10 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { PluginActionParamsBase, projectActionParamsSchema } from "../../base" -import { dedent } from "../../../util/string" -import { joi } from "../../../config/common" -import type { BaseProviderConfig } from "../../../config/provider" +import type { PluginActionParamsBase } from "../../base.js" +import { projectActionParamsSchema } from "../../base.js" +import { dedent } from "../../../util/string.js" +import { joi } from "../../../config/common.js" +import type { BaseProviderConfig } from "../../../config/provider.js" export type CleanupEnvironmentParams = PluginActionParamsBase diff --git a/core/src/plugin/handlers/Provider/configureProvider.ts b/core/src/plugin/handlers/Provider/configureProvider.ts index 7fdbe63d6f..84c6d21bf7 100644 --- a/core/src/plugin/handlers/Provider/configureProvider.ts +++ b/core/src/plugin/handlers/Provider/configureProvider.ts @@ -6,15 +6,19 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { projectNameSchema, projectRootSchema } from "../../../config/project" -import { BaseProviderConfig, providerConfigBaseSchema, providerSchema, ProviderMap } from "../../../config/provider" -import { PluginActionParamsBase, projectActionParamsSchema } from "../../base" -import { joiArray, joi, joiIdentifier, joiIdentifierMap } from "../../../config/common" -import { moduleConfigSchema, ModuleConfig } from "../../../config/module" -import { deline, dedent } from "../../../util/string" -import { ActionHandler } from "../../plugin" -import { Log } from "../../../logger/log-entry" -import { configStoreSchema, LocalConfigStore } from "../../../config-store/local" +import { projectNameSchema, projectRootSchema } from "../../../config/project.js" +import type { BaseProviderConfig, ProviderMap } from "../../../config/provider.js" +import { providerConfigBaseSchema, providerSchema } from "../../../config/provider.js" +import type { PluginActionParamsBase } from "../../base.js" +import { projectActionParamsSchema } from "../../base.js" +import { joiArray, joi, joiIdentifier, joiIdentifierMap } from "../../../config/common.js" +import type { ModuleConfig } from "../../../config/module.js" +import { moduleConfigSchema } from "../../../config/module.js" +import { deline, dedent } from "../../../util/string.js" +import type { ActionHandler } from "../../plugin.js" +import type { Log } from "../../../logger/log-entry.js" +import type { LocalConfigStore } from "../../../config-store/local.js" +import { configStoreSchema } from "../../../config-store/local.js" // Note: These are the only plugin handler params that don't inherit from PluginActionParamsBase export interface ConfigureProviderParams extends PluginActionParamsBase { diff --git a/core/src/plugin/handlers/Provider/getDashboardPage.ts b/core/src/plugin/handlers/Provider/getDashboardPage.ts index 7148c3cd98..ecef24dffb 100644 --- a/core/src/plugin/handlers/Provider/getDashboardPage.ts +++ b/core/src/plugin/handlers/Provider/getDashboardPage.ts @@ -6,11 +6,12 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { PluginActionParamsBase, projectActionParamsSchema } from "../../base" -import { dedent } from "../../../util/string" -import { joi, joiIdentifier, joiArray, createSchema } from "../../../config/common" -import { memoize } from "lodash" -import type { BaseProviderConfig } from "../../../config/provider" +import type { PluginActionParamsBase } from "../../base.js" +import { projectActionParamsSchema } from "../../base.js" +import { dedent } from "../../../util/string.js" +import { joi, joiIdentifier, joiArray, createSchema } from "../../../config/common.js" +import { memoize } from "lodash-es" +import type { BaseProviderConfig } from "../../../config/provider.js" export interface DashboardPage { name: string diff --git a/core/src/plugin/handlers/Provider/getDebugInfo.ts b/core/src/plugin/handlers/Provider/getDebugInfo.ts index faf8020d3d..75003633ed 100644 --- a/core/src/plugin/handlers/Provider/getDebugInfo.ts +++ b/core/src/plugin/handlers/Provider/getDebugInfo.ts @@ -6,10 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { projectActionParamsSchema, PluginActionParamsBase } from "../../base" -import { dedent } from "../../../util/string" -import { joi } from "../../../config/common" -import { BaseProviderConfig } from "../../../config/provider" +import type { PluginActionParamsBase } from "../../base.js" +import { projectActionParamsSchema } from "../../base.js" +import { dedent } from "../../../util/string.js" +import { joi } from "../../../config/common.js" +import type { BaseProviderConfig } from "../../../config/provider.js" export interface DebugInfo { info: any diff --git a/core/src/plugin/handlers/Provider/getEnvironmentStatus.ts b/core/src/plugin/handlers/Provider/getEnvironmentStatus.ts index 7d15d0f69f..d25945d4ed 100644 --- a/core/src/plugin/handlers/Provider/getEnvironmentStatus.ts +++ b/core/src/plugin/handlers/Provider/getEnvironmentStatus.ts @@ -6,10 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { PluginActionParamsBase, projectActionParamsSchema } from "../../base" -import { dedent } from "../../../util/string" -import { environmentStatusSchema } from "../../../config/status" -import type { BaseProviderConfig } from "../../../config/provider" +import type { PluginActionParamsBase } from "../../base.js" +import { projectActionParamsSchema } from "../../base.js" +import { dedent } from "../../../util/string.js" +import { environmentStatusSchema } from "../../../config/status.js" +import type { BaseProviderConfig } from "../../../config/provider.js" export type GetEnvironmentStatusParams = PluginActionParamsBase diff --git a/core/src/plugin/handlers/Provider/prepareEnvironment.ts b/core/src/plugin/handlers/Provider/prepareEnvironment.ts index 173b12f930..dbcbdcb301 100644 --- a/core/src/plugin/handlers/Provider/prepareEnvironment.ts +++ b/core/src/plugin/handlers/Provider/prepareEnvironment.ts @@ -6,12 +6,13 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { PluginActionParamsBase, projectActionParamsSchema } from "../../base" -import { EnvironmentStatus } from "./getEnvironmentStatus" -import { dedent } from "../../../util/string" -import { joi } from "../../../config/common" -import { environmentStatusSchema } from "../../../config/status" -import type { GenericProviderConfig } from "../../../config/provider" +import type { PluginActionParamsBase } from "../../base.js" +import { projectActionParamsSchema } from "../../base.js" +import type { EnvironmentStatus } from "./getEnvironmentStatus.js" +import { dedent } from "../../../util/string.js" +import { joi } from "../../../config/common.js" +import { environmentStatusSchema } from "../../../config/status.js" +import type { GenericProviderConfig } from "../../../config/provider.js" export interface PrepareEnvironmentParams< C extends GenericProviderConfig = any, diff --git a/core/src/plugin/handlers/Run/get-result.ts b/core/src/plugin/handlers/Run/get-result.ts index 447f218490..c9319566a5 100644 --- a/core/src/plugin/handlers/Run/get-result.ts +++ b/core/src/plugin/handlers/Run/get-result.ts @@ -6,13 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { PluginRunActionParamsBase, actionParamsSchema, RunResult, runResultSchema } from "../../base" -import { dedent } from "../../../util/string" -import { RunAction } from "../../../actions/run" -import { ActionTypeHandlerSpec } from "../base/base" -import { actionStatusSchema } from "../../../actions/base" -import { ActionStatus, ActionStatusMap, Resolved } from "../../../actions/types" -import { createSchema } from "../../../config/common" +import type { PluginRunActionParamsBase, RunResult } from "../../base.js" +import { actionParamsSchema, runResultSchema } from "../../base.js" +import { dedent } from "../../../util/string.js" +import type { RunAction } from "../../../actions/run.js" +import { ActionTypeHandlerSpec } from "../base/base.js" +import { actionStatusSchema } from "../../../actions/base.js" +import type { ActionStatus, ActionStatusMap, Resolved } from "../../../actions/types.js" +import { createSchema } from "../../../config/common.js" type GetRunResultParams = PluginRunActionParamsBase diff --git a/core/src/plugin/handlers/Run/run.ts b/core/src/plugin/handlers/Run/run.ts index a2148036bf..fc07d66622 100644 --- a/core/src/plugin/handlers/Run/run.ts +++ b/core/src/plugin/handlers/Run/run.ts @@ -6,12 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { runBaseParams, PluginRunActionParamsBase, actionParamsSchema } from "../../../plugin/base" -import { dedent } from "../../../util/string" -import { RunAction } from "../../../actions/run" -import { ActionTypeHandlerSpec } from "../base/base" -import { GetRunResult, getRunResultSchema } from "./get-result" -import { Resolved } from "../../../actions/types" +import type { PluginRunActionParamsBase } from "../../../plugin/base.js" +import { runBaseParams, actionParamsSchema } from "../../../plugin/base.js" +import { dedent } from "../../../util/string.js" +import type { RunAction } from "../../../actions/run.js" +import { ActionTypeHandlerSpec } from "../base/base.js" +import type { GetRunResult } from "./get-result.js" +import { getRunResultSchema } from "./get-result.js" +import type { Resolved } from "../../../actions/types.js" export interface CommonRunParams { artifactsPath: string diff --git a/core/src/plugin/handlers/Test/get-result.ts b/core/src/plugin/handlers/Test/get-result.ts index 2f663ae859..846010e615 100644 --- a/core/src/plugin/handlers/Test/get-result.ts +++ b/core/src/plugin/handlers/Test/get-result.ts @@ -6,14 +6,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { dedent } from "../../../util/string" -import { PluginTestActionParamsBase, actionParamsSchema } from "../../base" -import { TestAction } from "../../../actions/test" -import { TestResult, testResultSchema } from "../../../types/test" -import { ActionTypeHandlerSpec } from "../base/base" -import { actionStatusSchema } from "../../../actions/base" -import { ActionStatus, ActionStatusMap, Resolved } from "../../../actions/types" -import { createSchema } from "../../../config/common" +import { dedent } from "../../../util/string.js" +import type { PluginTestActionParamsBase } from "../../base.js" +import { actionParamsSchema } from "../../base.js" +import type { TestAction } from "../../../actions/test.js" +import type { TestResult } from "../../../types/test.js" +import { testResultSchema } from "../../../types/test.js" +import { ActionTypeHandlerSpec } from "../base/base.js" +import { actionStatusSchema } from "../../../actions/base.js" +import type { ActionStatus, ActionStatusMap, Resolved } from "../../../actions/types.js" +import { createSchema } from "../../../config/common.js" type GetTestResultParams = PluginTestActionParamsBase diff --git a/core/src/plugin/handlers/Test/run.ts b/core/src/plugin/handlers/Test/run.ts index ecece97325..bba39fa64d 100644 --- a/core/src/plugin/handlers/Test/run.ts +++ b/core/src/plugin/handlers/Test/run.ts @@ -6,16 +6,17 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { dedent } from "../../../util/string" -import { PluginTestActionParamsBase } from "../../../plugin/base" -import { TestAction } from "../../../actions/test" -import { joi } from "../../../config/common" -import { ActionTypeHandlerSpec } from "../base/base" -import { runBaseParams } from "../../base" -import { GetTestResult, getTestResultSchema } from "./get-result" -import { CommonRunParams } from "../Run/run" -import { Resolved } from "../../../actions/types" -import { actionParamsSchema } from "../../plugin" +import { dedent } from "../../../util/string.js" +import type { PluginTestActionParamsBase } from "../../../plugin/base.js" +import type { TestAction } from "../../../actions/test.js" +import { joi } from "../../../config/common.js" +import { ActionTypeHandlerSpec } from "../base/base.js" +import { runBaseParams } from "../../base.js" +import type { GetTestResult } from "./get-result.js" +import { getTestResultSchema } from "./get-result.js" +import type { CommonRunParams } from "../Run/run.js" +import type { Resolved } from "../../../actions/types.js" +import { actionParamsSchema } from "../../plugin.js" type TestActionParams = PluginTestActionParamsBase & CommonRunParams & { diff --git a/core/src/plugin/handlers/base/base.ts b/core/src/plugin/handlers/base/base.ts index 5cc9632ad8..09eb43521b 100644 --- a/core/src/plugin/handlers/base/base.ts +++ b/core/src/plugin/handlers/base/base.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import Joi from "@hapi/joi" -import { memoize } from "lodash" -import { ActionKind } from "../../../actions/types" -import { joi, joiVariables } from "../../../config/common" +import type Joi from "@hapi/joi" +import { memoize } from "lodash-es" +import type { ActionKind } from "../../../actions/types.js" +import { joi, joiVariables } from "../../../config/common.js" export type ParamsBase<_ = any> = {} diff --git a/core/src/plugin/handlers/base/configure.ts b/core/src/plugin/handlers/base/configure.ts index 0b72ddb7da..4acfff25e3 100644 --- a/core/src/plugin/handlers/base/configure.ts +++ b/core/src/plugin/handlers/base/configure.ts @@ -6,16 +6,17 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { dedent } from "../../../util/string" -import { logEntrySchema, PluginActionContextParams } from "../../../plugin/base" -import { joi } from "../../../config/common" -import { Log } from "../../../logger/log-entry" -import { ActionModes, BaseActionConfig } from "../../../actions/types" -import { baseActionConfigSchema } from "../../../actions/base" -import { ActionTypeHandlerSpec } from "./base" -import { pluginContextSchema } from "../../../plugin-context" -import { noTemplateFields } from "../../../config/base" -import { actionConfigSchema } from "../../../actions/helpers" +import { dedent } from "../../../util/string.js" +import type { PluginActionContextParams } from "../../../plugin/base.js" +import { logEntrySchema } from "../../../plugin/base.js" +import { joi } from "../../../config/common.js" +import type { Log } from "../../../logger/log-entry.js" +import type { ActionModes, BaseActionConfig } from "../../../actions/types.js" +import { baseActionConfigSchema } from "../../../actions/base.js" +import { ActionTypeHandlerSpec } from "./base.js" +import { pluginContextSchema } from "../../../plugin-context.js" +import { noTemplateFields } from "../../../config/base.js" +import { actionConfigSchema } from "../../../actions/helpers.js" interface ConfigureActionConfigParams extends PluginActionContextParams { log: Log diff --git a/core/src/plugin/handlers/base/describe.ts b/core/src/plugin/handlers/base/describe.ts index 32acc1ee14..5bf02bc6f3 100644 --- a/core/src/plugin/handlers/base/describe.ts +++ b/core/src/plugin/handlers/base/describe.ts @@ -6,11 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import Joi = require("@hapi/joi") -import { dedent } from "../../../util/string" -import { joi } from "../../../config/common" -import { templateStringLiteral } from "../../../docs/common" -import { ActionTypeHandlerSpec } from "./base" +import type Joi from "@hapi/joi" +import { dedent } from "../../../util/string.js" +import { joi } from "../../../config/common.js" +import { templateStringLiteral } from "../../../docs/common.js" +import { ActionTypeHandlerSpec } from "./base.js" // NOTE: THIS IS CURRENTLY NOT USED diff --git a/core/src/plugin/handlers/base/get-outputs.ts b/core/src/plugin/handlers/base/get-outputs.ts index 35e7ff510b..f260c91758 100644 --- a/core/src/plugin/handlers/base/get-outputs.ts +++ b/core/src/plugin/handlers/base/get-outputs.ts @@ -6,13 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { deline } from "../../../util/string" -import { PluginActionParamsBase, actionParamsSchema } from "../../base" -import { joi, joiVariables, DeepPrimitiveMap } from "../../../config/common" -import { templateStringLiteral } from "../../../docs/common" -import { BaseAction } from "../../../actions/base" -import { Resolved } from "../../../actions/types" -import { ActionTypeHandlerSpec } from "./base" +import { deline } from "../../../util/string.js" +import type { PluginActionParamsBase } from "../../base.js" +import { actionParamsSchema } from "../../base.js" +import type { DeepPrimitiveMap } from "../../../config/common.js" +import { joi, joiVariables } from "../../../config/common.js" +import { templateStringLiteral } from "../../../docs/common.js" +import type { BaseAction } from "../../../actions/base.js" +import type { Resolved } from "../../../actions/types.js" +import { ActionTypeHandlerSpec } from "./base.js" export interface GetActionOutputsParams extends PluginActionParamsBase { action: Resolved diff --git a/core/src/plugin/handlers/base/suggest.ts b/core/src/plugin/handlers/base/suggest.ts index c28f467ba3..19ddde26bf 100644 --- a/core/src/plugin/handlers/base/suggest.ts +++ b/core/src/plugin/handlers/base/suggest.ts @@ -6,13 +6,13 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { dedent } from "../../../util/string" -import { joi, joiArray } from "../../../config/common" -import { Log } from "../../../logger/log-entry" -import { ActionHandlerParamsBase } from "../../../plugin/plugin" -import { BaseActionConfig } from "../../../actions/types" -import { baseActionConfigSchema } from "../../../actions/base" -import { ActionTypeHandlerSpec } from "./base" +import { dedent } from "../../../util/string.js" +import { joi, joiArray } from "../../../config/common.js" +import type { Log } from "../../../logger/log-entry.js" +import type { ActionHandlerParamsBase } from "../../../plugin/plugin.js" +import type { BaseActionConfig } from "../../../actions/types.js" +import { baseActionConfigSchema } from "../../../actions/base.js" +import { ActionTypeHandlerSpec } from "./base.js" export const maxDescriptionLength = 48 diff --git a/core/src/plugin/handlers/base/validate.ts b/core/src/plugin/handlers/base/validate.ts index 4c6219bc01..08d4c618d1 100644 --- a/core/src/plugin/handlers/base/validate.ts +++ b/core/src/plugin/handlers/base/validate.ts @@ -6,12 +6,13 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { dedent } from "../../../util/string" -import { actionParamsSchema, PluginActionParamsBase } from "../../../plugin/base" -import { joi } from "../../../config/common" -import { BaseAction } from "../../../actions/base" -import { Resolved } from "../../../actions/types" -import { ActionTypeHandlerSpec } from "./base" +import { dedent } from "../../../util/string.js" +import type { PluginActionParamsBase } from "../../../plugin/base.js" +import { actionParamsSchema } from "../../../plugin/base.js" +import { joi } from "../../../config/common.js" +import type { BaseAction } from "../../../actions/base.js" +import type { Resolved } from "../../../actions/types.js" +import { ActionTypeHandlerSpec } from "./base.js" interface ValidateActionParams extends PluginActionParamsBase { action: T diff --git a/core/src/plugin/module-types.ts b/core/src/plugin/module-types.ts index 42baafba61..8d2be805fd 100644 --- a/core/src/plugin/module-types.ts +++ b/core/src/plugin/module-types.ts @@ -6,18 +6,22 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import Joi = require("@hapi/joi") -import { ConfigureModuleParams, ConfigureModuleResult, configure } from "./handlers/Module/configure" -import { joiIdentifier, joi, joiSchema, createSchema } from "../config/common" -import { GardenModule } from "../types/module" -import { ActionHandlerParamsBase, outputSchemaDocs, WrappedActionHandler } from "./base" -import { mapValues, memoize } from "lodash" -import { dedent } from "../util/string" -import { templateStringLiteral } from "../docs/common" -import { GetModuleOutputsParams, GetModuleOutputsResult, getModuleOutputs } from "./handlers/Module/get-outputs" -import { convert, ConvertModuleParams, ConvertModuleResult } from "./handlers/Module/convert" -import { baseHandlerSchema } from "./handlers/base/base" -import { ResolvedActionHandlerDescriptions } from "./plugin" +import type Joi from "@hapi/joi" +import type { ConfigureModuleParams, ConfigureModuleResult } from "./handlers/Module/configure.js" +import { configure } from "./handlers/Module/configure.js" +import { joiIdentifier, joi, joiSchema, createSchema } from "../config/common.js" +import type { GardenModule } from "../types/module.js" +import type { ActionHandlerParamsBase, WrappedActionHandler } from "./base.js" +import { outputSchemaDocs } from "./base.js" +import { mapValues, memoize } from "lodash-es" +import { dedent } from "../util/string.js" +import { templateStringLiteral } from "../docs/common.js" +import type { GetModuleOutputsParams, GetModuleOutputsResult } from "./handlers/Module/get-outputs.js" +import { getModuleOutputs } from "./handlers/Module/get-outputs.js" +import type { ConvertModuleParams, ConvertModuleResult } from "./handlers/Module/convert.js" +import { convert } from "./handlers/Module/convert.js" +import { baseHandlerSchema } from "./handlers/base/base.js" +import type { ResolvedActionHandlerDescriptions } from "./plugin.js" export type ModuleActionHandler

= ((params: P) => Promise) & { handlerType?: string diff --git a/core/src/plugin/plugin.ts b/core/src/plugin/plugin.ts index 466be2e1cd..214369eb75 100644 --- a/core/src/plugin/plugin.ts +++ b/core/src/plugin/plugin.ts @@ -6,35 +6,31 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import Joi = require("@hapi/joi") -import { joiArray, joiIdentifier, joi, joiSchema, createSchema } from "../config/common" -import { mapValues } from "lodash" -import { dedent } from "../util/string" -import { pluginCommandSchema, PluginCommand } from "./command" -import { toolSchema, PluginToolSpec } from "./tools" -import { DashboardPage, dashboardPagesSchema } from "./handlers/Provider/getDashboardPage" -import { - createModuleTypeSchema, - extendModuleTypeSchema, - ModuleTypeDefinition, - ModuleTypeExtension, -} from "./module-types" -import { getProviderActionDescriptions, ProviderHandlers } from "./providers" -import { - ManyActionTypeDefinitions, - ManyActionTypeExtensions, - createActionTypesSchema, - extendActionTypesSchema, -} from "./action-types" -import { PluginContext } from "../plugin-context" +import type Joi from "@hapi/joi" +import { joiArray, joiIdentifier, joi, joiSchema, createSchema } from "../config/common.js" +import { mapValues } from "lodash-es" +import { dedent } from "../util/string.js" +import type { PluginCommand } from "./command.js" +import { pluginCommandSchema } from "./command.js" +import type { PluginToolSpec } from "./tools.js" +import { toolSchema } from "./tools.js" +import type { DashboardPage } from "./handlers/Provider/getDashboardPage.js" +import { dashboardPagesSchema } from "./handlers/Provider/getDashboardPage.js" +import type { ModuleTypeDefinition, ModuleTypeExtension } from "./module-types.js" +import { createModuleTypeSchema, extendModuleTypeSchema } from "./module-types.js" +import type { ProviderHandlers } from "./providers.js" +import { getProviderActionDescriptions } from "./providers.js" +import type { ManyActionTypeDefinitions, ManyActionTypeExtensions } from "./action-types.js" +import { createActionTypesSchema, extendActionTypesSchema } from "./action-types.js" +import type { PluginContext } from "../plugin-context.js" import { join } from "path" -import { GardenSdkPlugin } from "./sdk" -import { providerConfigBaseSchema } from "../config/provider" +import type { GardenSdkPlugin } from "./sdk.js" +import { providerConfigBaseSchema } from "../config/provider.js" // FIXME: Reduce number of import updates needed -export * from "./base" -export * from "./module-types" -export * from "./providers" +export * from "./base.js" +export * from "./module-types.js" +export * from "./providers.js" export interface PluginDependency { name: string diff --git a/core/src/plugin/providers.ts b/core/src/plugin/providers.ts index 467b978f37..0973511e92 100644 --- a/core/src/plugin/providers.ts +++ b/core/src/plugin/providers.ts @@ -6,33 +6,24 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { - CleanupEnvironmentParams, - CleanupEnvironmentResult, - cleanupEnvironment, -} from "./handlers/Provider/cleanupEnvironment" -import { - ConfigureProviderParams, - ConfigureProviderResult, - configureProvider, -} from "./handlers/Provider/configureProvider" -import { - EnvironmentStatus, - GetEnvironmentStatusParams, - getEnvironmentStatus, -} from "./handlers/Provider/getEnvironmentStatus" -import { - PrepareEnvironmentParams, - PrepareEnvironmentResult, - prepareEnvironment, -} from "./handlers/Provider/prepareEnvironment" -import { ActionHandler, ResolvedActionHandlerDescriptions } from "./base" -import { mapValues } from "lodash" -import { getDebugInfo, DebugInfo, GetDebugInfoParams } from "./handlers/Provider/getDebugInfo" -import { AugmentGraphResult, AugmentGraphParams, augmentGraph } from "./handlers/Provider/augmentGraph" -import { GetDashboardPageParams, GetDashboardPageResult, getDashboardPage } from "./handlers/Provider/getDashboardPage" -import { baseHandlerSchema } from "./handlers/base/base" -import type { BaseProviderConfig } from "../config/provider" +import type { CleanupEnvironmentParams, CleanupEnvironmentResult } from "./handlers/Provider/cleanupEnvironment.js" +import { cleanupEnvironment } from "./handlers/Provider/cleanupEnvironment.js" +import type { ConfigureProviderParams, ConfigureProviderResult } from "./handlers/Provider/configureProvider.js" +import { configureProvider } from "./handlers/Provider/configureProvider.js" +import type { EnvironmentStatus, GetEnvironmentStatusParams } from "./handlers/Provider/getEnvironmentStatus.js" +import { getEnvironmentStatus } from "./handlers/Provider/getEnvironmentStatus.js" +import type { PrepareEnvironmentParams, PrepareEnvironmentResult } from "./handlers/Provider/prepareEnvironment.js" +import { prepareEnvironment } from "./handlers/Provider/prepareEnvironment.js" +import type { ActionHandler, ResolvedActionHandlerDescriptions } from "./base.js" +import { mapValues } from "lodash-es" +import type { DebugInfo, GetDebugInfoParams } from "./handlers/Provider/getDebugInfo.js" +import { getDebugInfo } from "./handlers/Provider/getDebugInfo.js" +import type { AugmentGraphResult, AugmentGraphParams } from "./handlers/Provider/augmentGraph.js" +import { augmentGraph } from "./handlers/Provider/augmentGraph.js" +import type { GetDashboardPageParams, GetDashboardPageResult } from "./handlers/Provider/getDashboardPage.js" +import { getDashboardPage } from "./handlers/Provider/getDashboardPage.js" +import { baseHandlerSchema } from "./handlers/base/base.js" +import type { BaseProviderConfig } from "../config/provider.js" export type ProviderHandlers = { [P in keyof ProviderActionParams]: ActionHandler[P], ProviderActionOutputs[P]> diff --git a/core/src/plugin/sdk.ts b/core/src/plugin/sdk.ts index b68cf82017..4ce3a64bc2 100644 --- a/core/src/plugin/sdk.ts +++ b/core/src/plugin/sdk.ts @@ -6,16 +6,17 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { z } from "zod" -import type { BaseAction } from "../actions/base" -import type { BuildAction, BuildActionConfig } from "../actions/build" -import type { DeployAction, DeployActionConfig } from "../actions/deploy" -import type { RunAction, RunActionConfig } from "../actions/run" -import type { TestAction, TestActionConfig } from "../actions/test" -import { joi, zodObjectToJoi } from "../config/common" -import { BaseProviderConfig, baseProviderConfigSchemaZod } from "../config/provider" -import { s } from "../config/zod" -import { GardenError, ValidationError } from "../exceptions" +import type { z } from "zod" +import type { BaseAction } from "../actions/base.js" +import type { BuildAction, BuildActionConfig } from "../actions/build.js" +import type { DeployAction, DeployActionConfig } from "../actions/deploy.js" +import type { RunAction, RunActionConfig } from "../actions/run.js" +import type { TestAction, TestActionConfig } from "../actions/test.js" +import { joi, zodObjectToJoi } from "../config/common.js" +import type { BaseProviderConfig } from "../config/provider.js" +import { baseProviderConfigSchemaZod } from "../config/provider.js" +import { s } from "../config/zod.js" +import { ValidationError } from "../exceptions.js" import type { ActionKind, ActionTypeDefinition, @@ -27,9 +28,9 @@ import type { TestActionDescriptions, GetActionTypeParams, GetActionTypeResults, -} from "./action-types" -import type { PluginCommand } from "./command" -import type { DashboardPage } from "./handlers/Provider/getDashboardPage" +} from "./action-types.js" +import type { PluginCommand } from "./command.js" +import type { DashboardPage } from "./handlers/Provider/getDashboardPage.js" import type { ActionHandler, GardenPluginSpec, @@ -39,10 +40,10 @@ import type { ProviderActionOutputs, ProviderActionParams, ProviderHandlers, -} from "./plugin" -import type { PluginToolSpec } from "./tools" -import { dedent } from "../util/string" -import type { BuildStatus as _BuildStatus } from "./handlers/Build/get-status" +} from "./plugin.js" +import type { PluginToolSpec } from "./tools.js" +import { dedent } from "../util/string.js" +import type { BuildStatus as _BuildStatus } from "./handlers/Build/get-status.js" import chalk from "chalk" type ObjectBaseZod = z.ZodObject<{}> @@ -52,10 +53,6 @@ type GardenSdkPluginSpec = Pick< "name" | "docs" | "dependencies" | "createModuleTypes" | "extendModuleTypes" > -class SdkError extends GardenError { - type = "sdk" -} - export type BuildStatus = _BuildStatus export class GardenSdkPlugin { diff --git a/core/src/plugin/tools.ts b/core/src/plugin/tools.ts index 63e43c1e67..83f4c2d785 100644 --- a/core/src/plugin/tools.ts +++ b/core/src/plugin/tools.ts @@ -6,9 +6,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { createSchema, joi, joiIdentifier } from "../config/common" -import { deline } from "../util/string" -import { Architecture, Platform } from "../util/util" +import { createSchema, joi, joiIdentifier } from "../config/common.js" +import { deline } from "../util/string.js" +import type { Architecture, Platform } from "../util/util.js" export interface ToolBuildSpec { platform: Platform diff --git a/core/src/plugins.ts b/core/src/plugins.ts index 31d35ccdb0..f0818ce983 100644 --- a/core/src/plugins.ts +++ b/core/src/plugins.ts @@ -6,36 +6,42 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { +import type { PluginMap, GardenPluginSpec, ModuleTypeDefinition, ModuleTypeExtension, - pluginSchema, RegisterPluginParam, - pluginNodeModuleSchema, GardenPluginReference, -} from "./plugin/plugin" -import type { GenericProviderConfig } from "./config/provider" -import { CircularDependenciesError, ConfigurationError, PluginError, RuntimeError } from "./exceptions" -import { uniq, mapValues, fromPairs, flatten, keyBy, some, isString, sortBy, Dictionary } from "lodash" -import { findByName, pushToKey, getNames, isNotNull, MaybeUndefined } from "./util/util" -import { dedent, deline, naturalList } from "./util/string" -import { validateSchema } from "./config/validation" -import type { Log } from "./logger/log-entry" -import { DependencyGraph } from "./graph/common" +} from "./plugin/plugin.js" +import { pluginSchema, pluginNodeModuleSchema } from "./plugin/plugin.js" +import type { GenericProviderConfig } from "./config/provider.js" +import { CircularDependenciesError, ConfigurationError, PluginError, RuntimeError } from "./exceptions.js" +import { uniq, mapValues, fromPairs, flatten, keyBy, some, isString, sortBy } from "lodash-es" +import type { MaybeUndefined } from "./util/util.js" +import { findByName, pushToKey, getNames, isNotNull } from "./util/util.js" +import { dedent, deline, naturalList } from "./util/string.js" +import { validateSchema } from "./config/validation.js" +import type { Log } from "./logger/log-entry.js" +import { DependencyGraph } from "./graph/common.js" import { parse, resolve } from "path" -import { ModuleTypeMap, getModuleTypeBases } from "./types/module" -import { ActionKind, actionKinds } from "./actions/types" +import type { ModuleTypeMap } from "./types/module.js" +import { getModuleTypeBases } from "./types/module.js" +import type { ActionKind } from "./actions/types.js" +import { actionKinds } from "./actions/types.js" import type { ActionTypeDefinition, ActionTypeDefinitions, ActionTypeExtensions, ManyActionTypeDefinitions, ManyActionTypeExtensions, -} from "./plugin/action-types" -import { ObjectSchema } from "@hapi/joi" -import { GardenSdkPlugin } from "./plugin/sdk" +} from "./plugin/action-types.js" +import type { ObjectSchema } from "@hapi/joi" +import { GardenSdkPlugin } from "./plugin/sdk.js" + +interface Dictionary { + [index: string]: T +} export async function loadAndResolvePlugins( log: Log, @@ -43,9 +49,10 @@ export async function loadAndResolvePlugins( registeredPlugins: RegisterPluginParam[], configs: GenericProviderConfig[] ) { - const loadedPlugins = keyBy(await Promise.all(registeredPlugins.map((p) => loadPlugin(log, projectRoot, p))), "name") + const loadedPlugins = await Promise.all(registeredPlugins.map((p) => loadPlugin(log, projectRoot, p))) + const pluginsByName = keyBy(loadedPlugins, "name") - return resolvePlugins(log, loadedPlugins, configs) + return resolvePlugins(log, pluginsByName, configs) } export function resolvePlugins( @@ -181,6 +188,7 @@ function validateOutputSchemas( export async function loadPlugin(log: Log, projectRoot: string, nameOrPlugin: RegisterPluginParam) { let plugin: GardenPluginSpec + log.silly(`Loading plugin ${isString(nameOrPlugin) ? nameOrPlugin : nameOrPlugin.name}`) if (isString(nameOrPlugin)) { let moduleNameOrLocation = nameOrPlugin @@ -193,7 +201,7 @@ export async function loadPlugin(log: Log, projectRoot: string, nameOrPlugin: Re let pluginModule: any try { - pluginModule = require(moduleNameOrLocation) + pluginModule = await import(moduleNameOrLocation) } catch (error) { throw new ConfigurationError({ message: `Unable to load plugin "${moduleNameOrLocation}" (could not load module: ${error})`, diff --git a/core/src/plugins/base-volume.ts b/core/src/plugins/base-volume.ts index 5a0203e0f7..0b3a1b4b15 100644 --- a/core/src/plugins/base-volume.ts +++ b/core/src/plugins/base-volume.ts @@ -6,11 +6,12 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { baseModuleSpecSchema, ModuleSpec } from "../config/module" -import { createSchema, joi } from "../config/common" -import { dedent } from "../util/string" -import { createGardenPlugin } from "../plugin/plugin" -import { memoize } from "lodash" +import type { ModuleSpec } from "../config/module.js" +import { baseModuleSpecSchema } from "../config/module.js" +import { createSchema, joi } from "../config/common.js" +import { dedent } from "../util/string.js" +import { createGardenPlugin } from "../plugin/plugin.js" +import { memoize } from "lodash-es" export type VolumeAccessMode = "ReadOnlyMany" | "ReadWriteOnce" | "ReadWriteMany" diff --git a/core/src/plugins/container/build.ts b/core/src/plugins/container/build.ts index 2edeeca44e..5cb4ccad2a 100644 --- a/core/src/plugins/container/build.ts +++ b/core/src/plugins/container/build.ts @@ -6,16 +6,17 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { containerHelpers } from "./helpers" -import { ConfigurationError } from "../../exceptions" -import { PrimitiveMap } from "../../config/common" +import { containerHelpers } from "./helpers.js" +import { ConfigurationError } from "../../exceptions.js" +import type { PrimitiveMap } from "../../config/common.js" import split2 from "split2" -import { BuildActionHandler } from "../../plugin/action-types" -import { ContainerBuildAction, ContainerBuildOutputs, defaultDockerfileName } from "./config" -import { joinWithPosix } from "../../util/fs" -import { Resolved } from "../../actions/types" +import type { BuildActionHandler } from "../../plugin/action-types.js" +import type { ContainerBuildAction, ContainerBuildOutputs } from "./config.js" +import { defaultDockerfileName } from "./config.js" +import { joinWithPosix } from "../../util/fs.js" +import type { Resolved } from "../../actions/types.js" import dedent from "dedent" -import { splitFirst } from "../../util/string" +import { splitFirst } from "../../util/string.js" export const getContainerBuildStatus: BuildActionHandler<"getStatus", ContainerBuildAction> = async ({ ctx, diff --git a/core/src/plugins/container/config.ts b/core/src/plugins/container/config.ts index 711ae2a36e..7eeaba8ae0 100644 --- a/core/src/plugins/container/config.ts +++ b/core/src/plugins/container/config.ts @@ -6,6 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +import type { Primitive, PrimitiveMap, ActionReference } from "../../config/common.js" import { artifactsTargetDescription, envVarRegex, @@ -14,25 +15,22 @@ import { joiSparseArray, joiStringMap, joiUserIdentifier, - Primitive, - PrimitiveMap, createSchema, - ActionReference, -} from "../../config/common" -import { ArtifactSpec } from "../../config/validation" -import { ingressHostnameSchema, linkUrlSchema } from "../../types/service" -import { DEFAULT_PORT_PROTOCOL } from "../../constants" -import { dedent, deline } from "../../util/string" -import { syncGuideLink } from "../kubernetes/sync" -import { k8sDeploymentTimeoutSchema, runCacheResultSchema } from "../kubernetes/config" -import { localModeGuideLink } from "../kubernetes/local-mode" -import { BuildAction, BuildActionConfig } from "../../actions/build" -import { DeployAction, DeployActionConfig } from "../../actions/deploy" -import { TestAction, TestActionConfig } from "../../actions/test" -import { RunAction, RunActionConfig } from "../../actions/run" -import { memoize } from "lodash" -import Joi from "@hapi/joi" -import { OctalPermissionMask } from "../kubernetes/types" +} from "../../config/common.js" +import type { ArtifactSpec } from "../../config/validation.js" +import { ingressHostnameSchema, linkUrlSchema } from "../../types/service.js" +import { DEFAULT_PORT_PROTOCOL } from "../../constants.js" +import { dedent, deline } from "../../util/string.js" +import { syncGuideLink } from "../kubernetes/sync.js" +import { k8sDeploymentTimeoutSchema, runCacheResultSchema } from "../kubernetes/config.js" +import { localModeGuideLink } from "../kubernetes/local-mode.js" +import type { BuildAction, BuildActionConfig } from "../../actions/build.js" +import type { DeployAction, DeployActionConfig } from "../../actions/deploy.js" +import type { TestAction, TestActionConfig } from "../../actions/test.js" +import type { RunAction, RunActionConfig } from "../../actions/run.js" +import { memoize } from "lodash-es" +import type Joi from "@hapi/joi" +import type { OctalPermissionMask } from "../kubernetes/types.js" export const defaultDockerfileName = "Dockerfile" diff --git a/core/src/plugins/container/container.ts b/core/src/plugins/container/container.ts index dedfe1eb94..a4bb915d6e 100644 --- a/core/src/plugins/container/container.ts +++ b/core/src/plugins/container/container.ts @@ -6,28 +6,28 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { keyBy, omit } from "lodash" +import { keyBy, omit } from "lodash-es" -import { ConfigurationError } from "../../exceptions" -import { createGardenPlugin } from "../../plugin/plugin" -import { containerHelpers } from "./helpers" -import { +import { ConfigurationError } from "../../exceptions.js" +import { createGardenPlugin } from "../../plugin/plugin.js" +import { containerHelpers } from "./helpers.js" +import type { ContainerActionConfig, ContainerBuildActionConfig, ContainerModule, ContainerModuleVolumeSpec, ContainerRuntimeActionConfig, - containerModuleOutputsSchema, - containerModuleSpecSchema, - defaultDockerfileName, -} from "./moduleConfig" -import { buildContainer, getContainerBuildActionOutputs, getContainerBuildStatus } from "./build" -import { ConfigureModuleParams } from "../../plugin/handlers/Module/configure" -import { dedent, naturalList } from "../../util/string" -import { Provider, GenericProviderConfig, providerConfigBaseSchema } from "../../config/provider" -import { GetModuleOutputsParams } from "../../plugin/handlers/Module/get-outputs" -import { ConvertModuleParams } from "../../plugin/handlers/Module/convert" -import { ExecActionConfig } from "../exec/config" +} from "./moduleConfig.js" +import { containerModuleOutputsSchema, containerModuleSpecSchema, defaultDockerfileName } from "./moduleConfig.js" +import { buildContainer, getContainerBuildActionOutputs, getContainerBuildStatus } from "./build.js" +import type { ConfigureModuleParams } from "../../plugin/handlers/Module/configure.js" +import { dedent, naturalList } from "../../util/string.js" +import type { Provider, GenericProviderConfig } from "../../config/provider.js" +import { providerConfigBaseSchema } from "../../config/provider.js" +import type { GetModuleOutputsParams } from "../../plugin/handlers/Module/get-outputs.js" +import type { ConvertModuleParams } from "../../plugin/handlers/Module/convert.js" +import type { ExecActionConfig } from "../exec/config.js" +import type { ContainerRuntimeAction } from "./config.js" import { containerBuildOutputsSchema, containerDeploySchema, @@ -37,15 +37,13 @@ import { containerDeployOutputsSchema, containerTestOutputSchema, containerRunOutputSchema, - ContainerRuntimeAction, -} from "./config" -import { publishContainerBuild } from "./publish" -import { Resolved } from "../../actions/types" -import { getDeployedImageId } from "../kubernetes/container/util" -import { KubernetesProvider } from "../kubernetes/config" -import { DeepPrimitiveMap } from "../../config/common" -import { DEFAULT_DEPLOY_TIMEOUT_SEC } from "../../constants" -import { ExecBuildConfig } from "../exec/build" +} from "./config.js" +import { publishContainerBuild } from "./publish.js" +import type { Resolved } from "../../actions/types.js" +import { getDeployedImageId } from "../kubernetes/container/util.js" +import type { DeepPrimitiveMap } from "../../config/common.js" +import { DEFAULT_DEPLOY_TIMEOUT_SEC } from "../../constants.js" +import type { ExecBuildConfig } from "../exec/build.js" export type ContainerProviderConfig = GenericProviderConfig @@ -437,11 +435,10 @@ export const gardenPlugin = () => return {} }, - async getOutputs({ ctx, action }) { - const provider = ctx.provider as KubernetesProvider + async getOutputs({ action }) { return { outputs: { - deployedImageId: getDeployedImageId(action, provider), + deployedImageId: getDeployedImageId(action), }, } }, diff --git a/core/src/plugins/container/helpers.ts b/core/src/plugins/container/helpers.ts index 1cc636b3af..81dabf1930 100644 --- a/core/src/plugins/container/helpers.ts +++ b/core/src/plugins/container/helpers.ts @@ -7,32 +7,33 @@ */ import { join, posix } from "path" -import { readFile, pathExists, lstat } from "fs-extra" +import fsExtra from "fs-extra" +const { readFile, pathExists, lstat } = fsExtra import semver from "semver" -import { parse, CommandEntry } from "docker-file-parser" +import type { CommandEntry } from "docker-file-parser" +import { parse } from "docker-file-parser" import isGlob from "is-glob" -import { ConfigurationError, GardenError, RuntimeError } from "../../exceptions" -import { spawn, SpawnOutput } from "../../util/util" -import { - ContainerRegistryConfig, - defaultTag as _defaultTag, - defaultImageNamespace, - ContainerModuleConfig, -} from "./moduleConfig" -import { Writable } from "stream" -import { flatten, uniq, fromPairs, reduce } from "lodash" -import { ActionLog, Log } from "../../logger/log-entry" +import { ConfigurationError, GardenError, RuntimeError } from "../../exceptions.js" +import type { SpawnOutput } from "../../util/util.js" +import { spawn } from "../../util/util.js" +import type { ContainerRegistryConfig, ContainerModuleConfig } from "./moduleConfig.js" +import { defaultTag as _defaultTag, defaultImageNamespace } from "./moduleConfig.js" +import type { Writable } from "stream" +import { flatten, uniq, fromPairs, reduce } from "lodash-es" +import type { ActionLog, Log } from "../../logger/log-entry.js" + import chalk from "chalk" import isUrl from "is-url" import titleize from "titleize" -import { deline, stripQuotes, splitLast, splitFirst } from "../../util/string" -import { PluginContext } from "../../plugin-context" -import { ModuleVersion } from "../../vcs/vcs" -import { SpawnParams } from "../../util/ext-tools" -import { ContainerBuildAction, defaultDockerfileName } from "./config" -import { joinWithPosix } from "../../util/fs" -import { Resolved } from "../../actions/types" -import pMemoize from "../../lib/p-memoize" +import { deline, stripQuotes, splitLast, splitFirst } from "../../util/string.js" +import type { PluginContext } from "../../plugin-context.js" +import type { ModuleVersion } from "../../vcs/vcs.js" +import type { SpawnParams } from "../../util/ext-tools.js" +import type { ContainerBuildAction } from "./config.js" +import { defaultDockerfileName } from "./config.js" +import { joinWithPosix } from "../../util/fs.js" +import type { Resolved } from "../../actions/types.js" +import pMemoize from "../../lib/p-memoize.js" interface DockerVersion { client?: string diff --git a/core/src/plugins/container/moduleConfig.ts b/core/src/plugins/container/moduleConfig.ts index a44ceccf40..cb65743a1c 100644 --- a/core/src/plugins/container/moduleConfig.ts +++ b/core/src/plugins/container/moduleConfig.ts @@ -6,28 +6,35 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { GardenModule } from "../../types/module" -import { PrimitiveMap, joi, joiModuleIncludeDirective, joiSparseArray, joiIdentifier } from "../../config/common" -import { ModuleSpec, ModuleConfig, baseBuildSpecSchema } from "../../config/module" -import { baseServiceSpecSchema, CommonServiceSpec } from "../../config/service" -import { baseTaskSpecSchema, BaseTaskSpec } from "../../config/task" -import { baseTestSpecSchema, BaseTestSpec } from "../../config/test" -import { dedent, deline } from "../../util/string" +import type { GardenModule } from "../../types/module.js" +import type { PrimitiveMap } from "../../config/common.js" +import { joi, joiModuleIncludeDirective, joiSparseArray, joiIdentifier } from "../../config/common.js" +import type { ModuleSpec, ModuleConfig } from "../../config/module.js" +import { baseBuildSpecSchema } from "../../config/module.js" +import type { CommonServiceSpec } from "../../config/service.js" +import { baseServiceSpecSchema } from "../../config/service.js" +import type { BaseTaskSpec } from "../../config/task.js" +import { baseTaskSpecSchema } from "../../config/task.js" +import type { BaseTestSpec } from "../../config/test.js" +import { baseTestSpecSchema } from "../../config/test.js" +import { dedent, deline } from "../../util/string.js" +import type { + ContainerCommonDeploySpec, + ContainerRunActionSpec, + ContainerTestActionSpec, + ContainerVolumeSpecBase, +} from "./config.js" import { containerBuildOutputSchemaKeys, containerCommonBuildSpecKeys, - ContainerCommonDeploySpec, containerDeploySchemaKeys, containerSyncPathSchema, - ContainerRunActionSpec, containerRunSpecKeys, - ContainerTestActionSpec, containerTestSpecKeys, - ContainerVolumeSpecBase, getContainerVolumesSchema, volumeSchemaBase, -} from "./config" -import { kebabCase, mapKeys } from "lodash" +} from "./config.js" +import { kebabCase, mapKeys } from "lodash-es" /** * PLEASE DO NOT UPDATE THESE SCHEMAS UNLESS ABSOLUTELY NECESSARY, AND IF YOU DO, MAKE SURE @@ -35,7 +42,7 @@ import { kebabCase, mapKeys } from "lodash" */ // To reduce the amount of edits to make before removing module configs -export * from "./config" +export * from "./config.js" export interface ContainerModuleVolumeSpec extends ContainerVolumeSpecBase { module?: string diff --git a/core/src/plugins/container/publish.ts b/core/src/plugins/container/publish.ts index 32f18daa7d..55083661cb 100644 --- a/core/src/plugins/container/publish.ts +++ b/core/src/plugins/container/publish.ts @@ -6,9 +6,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ContainerBuildAction } from "./moduleConfig" -import { containerHelpers } from "./helpers" -import { BuildActionHandler } from "../../plugin/action-types" +import type { ContainerBuildAction } from "./moduleConfig.js" +import { containerHelpers } from "./helpers.js" +import type { BuildActionHandler } from "../../plugin/action-types.js" export const publishContainerBuild: BuildActionHandler<"publish", ContainerBuildAction> = async ({ ctx, diff --git a/core/src/plugins/exec/build.ts b/core/src/plugins/exec/build.ts index 5fbd588049..f746f39291 100644 --- a/core/src/plugins/exec/build.ts +++ b/core/src/plugins/exec/build.ts @@ -6,16 +6,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { renderMessageWithDivider } from "../../logger/util" -import { +import { renderMessageWithDivider } from "../../logger/util.js" +import type { GardenSdkActionDefinitionActionType, GardenSdkActionDefinitionConfigType, BuildStatus, - sdk, -} from "../../plugin/sdk" -import { execRunCommand } from "./common" -import { execCommonSchema, execEnvVarDoc, execRuntimeOutputsSchema, execStaticOutputsSchema } from "./config" -import { execProvider } from "./exec" +} from "../../plugin/sdk.js" +import { sdk } from "../../plugin/sdk.js" +import { execRunCommand } from "./common.js" +import { execCommonSchema, execEnvVarDoc, execRuntimeOutputsSchema, execStaticOutputsSchema } from "./config.js" +import { execProvider } from "./exec.js" const s = sdk.schema diff --git a/core/src/plugins/exec/common.ts b/core/src/plugins/exec/common.ts index c6f55f934a..5a879534de 100644 --- a/core/src/plugins/exec/common.ts +++ b/core/src/plugins/exec/common.ts @@ -6,21 +6,20 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { mapValues } from "lodash" +import { mapValues } from "lodash-es" import { join } from "path" -import split2 = require("split2") -import { PrimitiveMap } from "../../config/common" -import { ArtifactSpec } from "../../config/validation" -import { exec, ExecOpts } from "../../util/util" -import { Log } from "../../logger/log-entry" -import { PluginContext } from "../../plugin-context" -import { ResolvedExecAction } from "./config" +import split2 from "split2" +import type { PrimitiveMap } from "../../config/common.js" +import type { ArtifactSpec } from "../../config/validation.js" +import type { ExecOpts } from "../../util/util.js" +import { exec } from "../../util/util.js" +import type { Log } from "../../logger/log-entry.js" +import type { PluginContext } from "../../plugin-context.js" +import type { ResolvedExecAction } from "./config.js" export function getDefaultEnvVars(action: ResolvedExecAction) { return { ...process.env, - // Workaround for https://github.com/vercel/pkg/issues/897 - PKG_EXECPATH: "", ...action.getEnvVars(), ...action.getSpec().env, } diff --git a/core/src/plugins/exec/config.ts b/core/src/plugins/exec/config.ts index 8b62a5e6b4..9798424f99 100644 --- a/core/src/plugins/exec/config.ts +++ b/core/src/plugins/exec/config.ts @@ -6,14 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Resolved } from "../../actions/types" -import { artifactsTargetDescription } from "../../config/common" -import { dedent } from "../../util/string" -import { sdk } from "../../plugin/sdk" -import type { ExecBuild, ExecBuildConfig } from "./build" -import type { ExecTest, ExecTestConfig } from "./test" -import type { ExecRun, ExecRunConfig } from "./run" -import type { ExecDeploy, ExecDeployConfig } from "./deploy" +import type { Resolved } from "../../actions/types.js" +import { artifactsTargetDescription } from "../../config/common.js" +import { dedent } from "../../util/string.js" +import { sdk } from "../../plugin/sdk.js" +import type { ExecBuild, ExecBuildConfig } from "./build.js" +import type { ExecTest, ExecTestConfig } from "./test.js" +import type { ExecRun, ExecRunConfig } from "./run.js" +import type { ExecDeploy, ExecDeployConfig } from "./deploy.js" const s = sdk.schema diff --git a/core/src/plugins/exec/convert.ts b/core/src/plugins/exec/convert.ts index 34f9d0a63f..40f7f128b8 100644 --- a/core/src/plugins/exec/convert.ts +++ b/core/src/plugins/exec/convert.ts @@ -6,11 +6,12 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ActionReference, StringMap } from "../../config/common" -import { ConvertModuleParams } from "../../plugin/handlers/Module/convert" -import { ExecBuildConfig } from "./build" -import { ExecActionConfig, defaultStatusTimeout } from "./config" -import { ExecModule } from "./moduleConfig" +import type { ActionReference, StringMap } from "../../config/common.js" +import type { ConvertModuleParams } from "../../plugin/handlers/Module/convert.js" +import type { ExecBuildConfig } from "./build.js" +import type { ExecActionConfig } from "./config.js" +import { defaultStatusTimeout } from "./config.js" +import type { ExecModule } from "./moduleConfig.js" export function prepareExecBuildAction(params: ConvertModuleParams): ExecBuildConfig | undefined { const { module, convertBuildDependency, dummyBuild } = params diff --git a/core/src/plugins/exec/deploy.ts b/core/src/plugins/exec/deploy.ts index 3ba65d3246..6c0c3ef677 100644 --- a/core/src/plugins/exec/deploy.ts +++ b/core/src/plugins/exec/deploy.ts @@ -6,38 +6,42 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { mapValues } from "lodash" +import { mapValues } from "lodash-es" import { join } from "path" -import split2 = require("split2") -import { PrimitiveMap } from "../../config/common" -import { dedent } from "../../util/string" -import { ExecOpts, sleep } from "../../util/util" -import { TimeoutError } from "../../exceptions" -import { Log } from "../../logger/log-entry" +import split2 from "split2" +import type { PrimitiveMap } from "../../config/common.js" +import { dedent } from "../../util/string.js" +import type { ExecOpts } from "../../util/util.js" +import { sleep } from "../../util/util.js" +import { TimeoutError } from "../../exceptions.js" +import type { Log } from "../../logger/log-entry.js" import execa from "execa" import chalk from "chalk" -import { renderMessageWithDivider } from "../../logger/util" -import { LogLevel } from "../../logger/logger" +import { renderMessageWithDivider } from "../../logger/util.js" +import { LogLevel } from "../../logger/logger.js" import { createWriteStream } from "fs" -import { ensureFile, readFile, remove, writeFile } from "fs-extra" +import fsExtra from "fs-extra" +const { ensureFile, readFile, remove, writeFile } = fsExtra import { Transform } from "stream" -import { ExecLogsFollower } from "./logs" -import { PluginContext } from "../../plugin-context" +import { ExecLogsFollower } from "./logs.js" +import type { PluginContext } from "../../plugin-context.js" import { defaultStatusTimeout, execCommonSchema, execPathDoc, execRuntimeOutputsSchema, execStaticOutputsSchema, -} from "./config" -import { deployStateToActionState, DeployStatus } from "../../plugin/handlers/Deploy/get-status" -import { ActionState, Resolved } from "../../actions/types" -import { convertCommandSpec, execRunCommand, getDefaultEnvVars } from "./common" -import { isRunning, killRecursive } from "../../process" -import { GardenSdkActionDefinitionActionType, GardenSdkActionDefinitionConfigType, sdk } from "../../plugin/sdk" -import { execProvider } from "./exec" -import { getTracePropagationEnvVars } from "../../util/open-telemetry/propagation" -import { DeployState } from "../../types/service" +} from "./config.js" +import type { DeployStatus } from "../../plugin/handlers/Deploy/get-status.js" +import { deployStateToActionState } from "../../plugin/handlers/Deploy/get-status.js" +import type { ActionState, Resolved } from "../../actions/types.js" +import { convertCommandSpec, execRunCommand, getDefaultEnvVars } from "./common.js" +import { isRunning, killRecursive } from "../../process.js" +import type { GardenSdkActionDefinitionActionType, GardenSdkActionDefinitionConfigType } from "../../plugin/sdk.js" +import { sdk } from "../../plugin/sdk.js" +import { execProvider } from "./exec.js" +import { getTracePropagationEnvVars } from "../../util/open-telemetry/propagation.js" +import type { DeployState } from "../../types/service.js" const persistentLocalProcRetryIntervalMs = 2500 diff --git a/core/src/plugins/exec/exec.ts b/core/src/plugins/exec/exec.ts index a5f230ff1d..628b168852 100644 --- a/core/src/plugins/exec/exec.ts +++ b/core/src/plugins/exec/exec.ts @@ -6,14 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { joi } from "../../config/common" -import { dedent } from "../../util/string" -import { runScript } from "../../util/util" -import { ChildProcessError, RuntimeError } from "../../exceptions" -import { GenericProviderConfig, Provider } from "../../config/provider" -import { configureExecModule, execModuleSpecSchema } from "./moduleConfig" -import { convertExecModule } from "./convert" -import { sdk } from "../../plugin/sdk" +import { joi } from "../../config/common.js" +import { dedent } from "../../util/string.js" +import { runScript } from "../../util/util.js" +import { ChildProcessError, RuntimeError } from "../../exceptions.js" +import type { GenericProviderConfig, Provider } from "../../config/provider.js" +import { configureExecModule, execModuleSpecSchema } from "./moduleConfig.js" +import { convertExecModule } from "./convert.js" +import { sdk } from "../../plugin/sdk.js" export type ExecProviderConfig = GenericProviderConfig @@ -113,10 +113,11 @@ execProvider.addHandler("prepareEnvironment", async ({ ctx, log }) => { return { status: { ready: true, outputs: {} } } }) -// Attach the action types -require("./build") -require("./deploy") -require("./run") -require("./test") - export const gardenPlugin = execPlugin +export const initializeActionTypes = async () => { + // Attach the action types + await import("./build.js") + await import("./deploy.js") + await import("./run.js") + await import("./test.js") +} diff --git a/core/src/plugins/exec/logs.ts b/core/src/plugins/exec/logs.ts index 6a5efb59f3..dff21c20d9 100644 --- a/core/src/plugins/exec/logs.ts +++ b/core/src/plugins/exec/logs.ts @@ -6,20 +6,23 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import Stream from "ts-stream" -import split2 = require("split2") +import type { Stream } from "ts-stream" +import split2 from "split2" -import { Log } from "../../logger/log-entry" -import { DeployLogEntry } from "../../types/service" -import { pathExists, stat, watch } from "fs-extra" +import type { Log } from "../../logger/log-entry.js" +import type { DeployLogEntry } from "../../types/service.js" +import fsExtra from "fs-extra" +const { pathExists, stat, watch } = fsExtra import parseDuration from "parse-duration" -import { validateSchema } from "../../config/validation" -import { createReadStream, FSWatcher, ReadStream } from "fs" -import { EventEmitter2 } from "eventemitter2" -import { getGitHubIssueLink, sleep } from "../../util/util" -import { dedent } from "../../util/string" -import { LogLevel } from "../../logger/logger" -import { deployLogEntrySchema } from "../../types/service" +import { validateSchema } from "../../config/validation.js" +import type { FSWatcher, ReadStream } from "fs" +import { createReadStream } from "fs" +import EventEmitter2 from "eventemitter2" +import { sleep } from "../../util/util.js" +import { dedent } from "../../util/string.js" +import type { LogLevel } from "../../logger/logger.js" +import { deployLogEntrySchema } from "../../types/service.js" +import { getGitHubIssueLink } from "../../exceptions.js" const defaultRetryIntervalMs = 5000 const watcherShelfLifeSec = 15 @@ -72,7 +75,7 @@ interface StreamEvents { type StreamEventName = keyof StreamEvents -class StreamEventBus extends EventEmitter2 { +class StreamEventBus extends EventEmitter2.EventEmitter2 { constructor() { super() } @@ -90,7 +93,7 @@ export class ExecLogsFollower { private deployName: string private stream: Stream private log: Log - private intervalId: NodeJS.Timer | null + private intervalId: NodeJS.Timeout | null private resolve: ((val: unknown) => void) | null private retryIntervalMs: number private logFilePath: string diff --git a/core/src/plugins/exec/moduleConfig.ts b/core/src/plugins/exec/moduleConfig.ts index b492c46b3b..254eca7943 100644 --- a/core/src/plugins/exec/moduleConfig.ts +++ b/core/src/plugins/exec/moduleConfig.ts @@ -18,19 +18,23 @@ import { joiSparseArray, createSchema, artifactsTargetDescription, -} from "../../config/common" -import { ArtifactSpec } from "../../config/validation" -import { GardenModule } from "../../types/module" -import { baseServiceSpecSchema, CommonServiceSpec } from "../../config/service" -import { BaseTestSpec, baseTestSpecSchema } from "../../config/test" -import { ModuleSpec, baseBuildSpecSchema, ModuleConfig } from "../../config/module" -import { BaseTaskSpec, baseTaskSpecSchema } from "../../config/task" -import { dedent } from "../../util/string" -import { ExecSyncModeSpec } from "./config" -import { ConfigureModuleParams, ConfigureModuleResult } from "../../plugin/handlers/Module/configure" -import { ConfigurationError } from "../../exceptions" -import { memoize, omit } from "lodash" -import { DEFAULT_RUN_TIMEOUT_SEC } from "../../constants" +} from "../../config/common.js" +import type { ArtifactSpec } from "../../config/validation.js" +import type { GardenModule } from "../../types/module.js" +import type { CommonServiceSpec } from "../../config/service.js" +import { baseServiceSpecSchema } from "../../config/service.js" +import type { BaseTestSpec } from "../../config/test.js" +import { baseTestSpecSchema } from "../../config/test.js" +import type { ModuleSpec, ModuleConfig } from "../../config/module.js" +import { baseBuildSpecSchema } from "../../config/module.js" +import type { BaseTaskSpec } from "../../config/task.js" +import { baseTaskSpecSchema } from "../../config/task.js" +import { dedent } from "../../util/string.js" +import type { ExecSyncModeSpec } from "./config.js" +import type { ConfigureModuleParams, ConfigureModuleResult } from "../../plugin/handlers/Module/configure.js" +import { ConfigurationError } from "../../exceptions.js" +import { memoize, omit } from "lodash-es" +import { DEFAULT_RUN_TIMEOUT_SEC } from "../../constants.js" const execPathDoc = dedent` By default, the command is run inside the Garden build directory (under .garden/build/). diff --git a/core/src/plugins/exec/run.ts b/core/src/plugins/exec/run.ts index 3f63625d65..190cf5d003 100644 --- a/core/src/plugins/exec/run.ts +++ b/core/src/plugins/exec/run.ts @@ -6,12 +6,13 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { runResultToActionState } from "../../actions/base" -import { renderMessageWithDivider } from "../../logger/util" -import { GardenSdkActionDefinitionActionType, GardenSdkActionDefinitionConfigType, sdk } from "../../plugin/sdk" -import { copyArtifacts, execRunCommand } from "./common" -import { execRunSpecSchema, execRuntimeOutputsSchema, execStaticOutputsSchema } from "./config" -import { execProvider } from "./exec" +import { runResultToActionState } from "../../actions/base.js" +import { renderMessageWithDivider } from "../../logger/util.js" +import type { GardenSdkActionDefinitionActionType, GardenSdkActionDefinitionConfigType } from "../../plugin/sdk.js" +import { sdk } from "../../plugin/sdk.js" +import { copyArtifacts, execRunCommand } from "./common.js" +import { execRunSpecSchema, execRuntimeOutputsSchema, execStaticOutputsSchema } from "./config.js" +import { execProvider } from "./exec.js" export const execRun = execProvider.createActionType({ kind: "Run", diff --git a/core/src/plugins/exec/test.ts b/core/src/plugins/exec/test.ts index 0a7f6ee36b..b1af2ce9fb 100644 --- a/core/src/plugins/exec/test.ts +++ b/core/src/plugins/exec/test.ts @@ -6,14 +6,13 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { runResultToActionState } from "../../actions/base" -import { renderMessageWithDivider } from "../../logger/util" -import { GardenSdkActionDefinitionActionType, GardenSdkActionDefinitionConfigType, sdk } from "../../plugin/sdk" -import { copyArtifacts, execRunCommand } from "./common" -import { execRunSpecSchema, execRuntimeOutputsSchema, execStaticOutputsSchema } from "./config" -import { execProvider } from "./exec" - -const s = sdk.schema +import { runResultToActionState } from "../../actions/base.js" +import { renderMessageWithDivider } from "../../logger/util.js" +import type { GardenSdkActionDefinitionActionType, GardenSdkActionDefinitionConfigType } from "../../plugin/sdk.js" +import { sdk } from "../../plugin/sdk.js" +import { copyArtifacts, execRunCommand } from "./common.js" +import { execRunSpecSchema, execRuntimeOutputsSchema, execStaticOutputsSchema } from "./config.js" +import { execProvider } from "./exec.js" export const execTestSpecSchema = execRunSpecSchema diff --git a/core/src/plugins/hadolint/hadolint.ts b/core/src/plugins/hadolint/hadolint.ts index c4ef382ea7..8e318e2d6f 100644 --- a/core/src/plugins/hadolint/hadolint.ts +++ b/core/src/plugins/hadolint/hadolint.ts @@ -7,21 +7,22 @@ */ import { join, resolve } from "path" -import { pathExists, readFile } from "fs-extra" -import { joi } from "../../config/common" -import { dedent, splitLines, naturalList } from "../../util/string" -import { STATIC_DIR } from "../../constants" -import { padStart, padEnd } from "lodash" +import fsExtra from "fs-extra" +const { pathExists, readFile } = fsExtra +import { joi } from "../../config/common.js" +import { dedent, splitLines, naturalList } from "../../util/string.js" +import { STATIC_DIR } from "../../constants.js" +import { padStart, padEnd } from "lodash-es" import chalk from "chalk" -import { ConfigurationError, GardenError } from "../../exceptions" -import { defaultDockerfileName } from "../container/config" -import { baseBuildSpecSchema } from "../../config/module" -import { getGitHubUrl } from "../../docs/common" -import { TestAction, TestActionConfig } from "../../actions/test" -import { mayContainTemplateString } from "../../template-string/template-string" -import { BaseAction } from "../../actions/base" -import { BuildAction } from "../../actions/build" -import { sdk } from "../../plugin/sdk" +import { ConfigurationError, GardenError } from "../../exceptions.js" +import { defaultDockerfileName } from "../container/config.js" +import { baseBuildSpecSchema } from "../../config/module.js" +import { getGitHubUrl } from "../../docs/common.js" +import type { TestAction, TestActionConfig } from "../../actions/test.js" +import { mayContainTemplateString } from "../../template-string/template-string.js" +import type { BaseAction } from "../../actions/base.js" +import type { BuildAction } from "../../actions/build.js" +import { sdk } from "../../plugin/sdk.js" const defaultConfigPath = join(STATIC_DIR, "hadolint", "default.hadolint.yaml") const configFilename = ".hadolint.yaml" diff --git a/core/src/plugins/kubernetes/api.ts b/core/src/plugins/kubernetes/api.ts index bb4e3e64e2..4396ee5239 100644 --- a/core/src/plugins/kubernetes/api.ts +++ b/core/src/plugins/kubernetes/api.ts @@ -6,8 +6,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { IncomingMessage } from "http" -import { ReadStream } from "tty" +import type { ReadStream } from "tty" +import type { + ApiType, + AuthMethodsConfiguration, + Configuration, + KubernetesObject, + V1APIGroup, + V1APIResource, + V1APIVersions, +} from "@kubernetes/client-node" import { ApiextensionsV1Api, ApisApi, @@ -16,46 +24,52 @@ import { CoreV1Api, Exec, KubeConfig, - KubernetesObject, Log as K8sLog, NetworkingV1Api, PolicyV1Api, RbacAuthorizationV1Api, - V1APIGroup, - V1APIResource, - V1APIVersions, V1Deployment, V1Secret, V1Service, + ServerConfiguration, + createConfiguration, } from "@kubernetes/client-node" import { load } from "js-yaml" -import { readFile } from "fs-extra" -import WebSocket from "isomorphic-ws" +import fsExtra from "fs-extra" +const { readFile } = fsExtra +import type WebSocket from "isomorphic-ws" import pRetry from "p-retry" -import { Omit, StringCollector } from "../../util/util" -import { flatten, isPlainObject, keyBy } from "lodash" -import { ConfigurationError, GardenError, GardenErrorParams, RuntimeError } from "../../exceptions" -import { +import { StringCollector } from "../../util/util.js" +import { flatten, keyBy } from "lodash-es" +import type { GardenErrorParams, NodeJSErrnoException } from "../../exceptions.js" +import { ConfigurationError, GardenError, InternalError, RuntimeError } from "../../exceptions.js" +import type { BaseResource, KubernetesList, KubernetesPod, KubernetesResource, KubernetesServerList, KubernetesServerResource, -} from "./types" -import { Log } from "../../logger/log-entry" -import { kubectl } from "./kubectl" -import { urlJoin } from "../../util/string" -import { KubernetesProvider } from "./config" -import { StringMap } from "../../config/common" -import { PluginContext } from "../../plugin-context" -import { PassThrough, Readable, Writable } from "stream" -import { getExecExitCode } from "./status/pod" -import { labelSelectorToString } from "./util" -import { safeDumpYaml } from "../../util/serialization" +} from "./types.js" +import type { Log } from "../../logger/log-entry.js" +import { kubectl } from "./kubectl.js" +import type { KubernetesProvider } from "./config.js" +import type { StringMap } from "../../config/common.js" +import type { PluginContext } from "../../plugin-context.js" +import type { Readable, Writable } from "stream" +import { PassThrough } from "stream" +import { getExecExitCode } from "./status/pod.js" +import { labelSelectorToString } from "./util.js" +import { safeDumpYaml } from "../../util/serialization.js" import AsyncLock from "async-lock" -import { requestWithRetry, RetryOpts, toKubernetesError } from "./retry" -import request = require("request-promise") +import type { RetryOpts } from "./retry.js" +import { requestWithRetry, toKubernetesError } from "./retry.js" +import type { Response, RequestInit } from "node-fetch" +import fetch, { FetchError } from "node-fetch" +import type { RequestOptions } from "http" +import https from "node:https" +import http from "node:http" +import { ProxyAgent } from "proxy-agent" interface ApiGroupMap { [groupVersion: string]: V1APIGroup @@ -154,7 +168,7 @@ type WrappedList = T["items"] extends Array = { // Wrap each API method [P in keyof T]: - T[P] extends (...args: infer A) => Promise<{ response: IncomingMessage; body: infer U }> + T[P] extends (...args: infer A) => Promise ? ( // If so we wrap it and return the `body` part of the output directly and... // If it's a list, we cast to a KubernetesServerList, which in turn wraps the array type @@ -206,6 +220,63 @@ async function nullIfNotFound(fn: () => Promise) { } } +/** + * The ProxyAgent class ensures that HTTP_PROXY, NO_PROXY and HTTPS_PROXY environment variables are respected. + * + * @param agent http.Agent | https.Agent | undefined + * @returns ProxyAgent + */ +async function createProxyAgent(agent: RequestInit["agent"]): Promise { + if (agent instanceof https.Agent) { + return new ProxyAgent(agent.options) + } else if (agent instanceof http.Agent || agent === undefined) { + // no options to apply + return new ProxyAgent() + } else { + throw new InternalError({ message: `createProxyAgent: Unhandled agent type: ${agent}` }) + } +} + +type ApiConstructor = new (config: Configuration) => T + +function makeApiClient(kubeConfig: KubeConfig, apiClientType: ApiConstructor): T { + const cluster = kubeConfig.getCurrentCluster() + if (!cluster) { + throw new InternalError({ message: "No active cluster" }) + } + const authConfig: AuthMethodsConfiguration = { + default: kubeConfig, + } + const baseServerConfig: ServerConfiguration<{}> = new ServerConfiguration<{}>(cluster.server, {}) + const config: Configuration = createConfiguration({ + baseServer: baseServerConfig, + authMethods: authConfig, + promiseMiddleware: [ + { + pre: async (context) => { + // patch the patch bug... (https://github.com/kubernetes-client/javascript/issues/19) + // See also https://github.com/kubernetes-client/javascript/pull/1341 (That's why we have to use the fork) + if (context.getHttpMethod() === "PATCH") { + // this does not work because it lowercases the header param: + // context.setHeaderParam("Content-Type", "application/merge-patch+json") + context["headers"]["Content-Type"] = "application/merge-patch+json" + } + + const agent = await createProxyAgent(context.getAgent()) + context.setAgent(agent) + + return context + }, + post: async (context) => context, + }, + ], + }) + + const apiClient = new apiClientType(config) + + return apiClient +} + export class KubeApi { public apis: WrappedApi public apps: WrappedApi @@ -229,14 +300,16 @@ export class KubeApi { }) } - this.apis = this.wrapApi(log, new ApisApi(cluster.server), this.config) - this.apps = this.wrapApi(log, new AppsV1Api(cluster.server), this.config) - this.core = this.wrapApi(log, new CoreV1Api(cluster.server), this.config) - this.coreApi = this.wrapApi(log, new CoreApi(cluster.server), this.config) - this.extensions = this.wrapApi(log, new ApiextensionsV1Api(cluster.server), this.config) - this.networking = this.wrapApi(log, new NetworkingV1Api(cluster.server), this.config) - this.policy = this.wrapApi(log, new PolicyV1Api(cluster.server), this.config) - this.rbac = this.wrapApi(log, new RbacAuthorizationV1Api(cluster.server), this.config) + this.apis = this.wrapApi(log, makeApiClient(config, ApisApi)) + + this.apis = this.wrapApi(log, makeApiClient(config, ApisApi)) + this.apps = this.wrapApi(log, makeApiClient(config, AppsV1Api)) + this.core = this.wrapApi(log, makeApiClient(config, CoreV1Api)) + this.coreApi = this.wrapApi(log, makeApiClient(config, CoreApi)) + this.extensions = this.wrapApi(log, makeApiClient(config, ApiextensionsV1Api)) + this.networking = this.wrapApi(log, makeApiClient(config, NetworkingV1Api)) + this.policy = this.wrapApi(log, makeApiClient(config, PolicyV1Api)) + this.rbac = this.wrapApi(log, makeApiClient(config, RbacAuthorizationV1Api)) } static async factory(log: Log, ctx: PluginContext, provider: KubernetesProvider) { @@ -310,9 +383,10 @@ export class KubeApi { try { const res = await this.request({ log, path: getGroupBasePath(apiVersion) }) + const body = (await res.json()) as any // We're only interested in the entities themselves, not the sub-resources - const resources = res.body.resources.filter((r: any) => !r.name.includes("/")) + const resources = body.resources.filter((r: any) => !r.name.includes("/")) apiResources[apiVersion] = keyBy(resources, "kind") return apiResources[apiVersion] @@ -340,33 +414,80 @@ export class KubeApi { }: { log: Log path: string - opts?: Omit + opts?: { body?: any; method?: string; query?: Record } retryOpts?: RetryOpts - }): Promise { + }): Promise { const baseUrl = this.config.getCurrentCluster()!.server - const url = urlJoin(baseUrl, path) - - // set some default values - const requestOpts = { - url, - method: "get", - json: true, - resolveWithFullResponse: true, - ...opts, - } + const url = new URL(path, baseUrl) - // apply auth - await this.config.applyToRequest(requestOpts) + for (const [key, value] of Object.entries(opts.query ?? {})) { + url.searchParams.set(key, value) + } - const context = `Kubernetes API: ${path}` + const context = `Kubernetes API: ${url}` return await requestWithRetry( log, context, async () => { + // set some default values + const requestOptions: RequestOptions & { method: string } = { + method: opts.method ?? "GET", + } + + // apply auth + const fetchOptions = await this.config.applyToFetchOptions(requestOptions) + + if (opts.body) { + fetchOptions.body = JSON.stringify(opts.body) + // We can't use instanceof, because the kubernetes client uses a different version of node-fetch + if (typeof fetchOptions.headers?.["set"] !== "function") { + // The kubernetes client library returns Headers instance, instead of a plain object (the type is wrong) + // might change when we update the library in the future, hence the internal error. + throw new InternalError({ message: `Expected Headers instance, got ${fetchOptions.headers}` }) + } + ;(fetchOptions.headers as unknown as Headers).set("content-type", "application/json") + } + + fetchOptions.agent = await createProxyAgent(fetchOptions.agent) + try { - log.silly(`${requestOpts.method.toUpperCase()} ${url}`) - return await request(requestOpts) + log.silly(`${requestOptions.method.toUpperCase()} ${url}`) + const response = await fetch(url, fetchOptions) + + if (response.status >= 400) { + const body = (await response.text()) as any + let message: string + try { + const parsedBody = JSON.parse(body) + message = parsedBody.message + } catch (err) { + if (err instanceof SyntaxError) { + message = body + } else { + throw err + } + } + throw new KubernetesError({ + message: `Request failed with response code ${response.status}: ${context}. Message from the API: ${message}`, + responseStatusCode: response.status, + apiMessage: message, + }) + } + + return response } catch (err) { + if (err instanceof FetchError) { + if (err.cause) { + throw toKubernetesError(err.cause, context) + } else { + throw new KubernetesError({ + message: `Request failed: ${context}: ${err.message}`, + code: err.code as NodeJSErrnoException["code"], + }) + } + } + + // use toKubernetesError for all other errors throw toKubernetesError(err, context) } }, @@ -390,7 +511,8 @@ export class KubeApi { const apiPath = typePath + "/" + name const res = await this.request({ log, path: apiPath }) - return res.body as KubernetesResource + const body = (await res.json()) as KubernetesResource + return body } async readOrNull(params: ReadParams): Promise { @@ -406,7 +528,8 @@ export class KubeApi { const apiPath = await this.getResourceApiPathFromManifest({ manifest, log, namespace }) const res = await this.request({ log, path: apiPath }) - return res.body as KubernetesResource + const body = (await res.json()) as KubernetesResource + return body } /** @@ -432,8 +555,12 @@ export class KubeApi { const apiPath = await this.getResourceTypeApiPath({ log, apiVersion, kind, namespace }) const labelSelectorString = labelSelector ? labelSelectorToString(labelSelector) : undefined - const res = await this.request({ log, path: apiPath, opts: { qs: { labelSelector: labelSelectorString } } }) - const list = res.body as KubernetesList + const res = await this.request({ + log, + path: apiPath, + opts: { query: labelSelectorString ? { labelSelector: labelSelectorString } : undefined }, + }) + const list = (await res.json()) as KubernetesList // This fixes an odd issue where apiVersion and kind are sometimes missing from list items coming from the API :/ list.items = list.items.map((r) => ({ @@ -503,7 +630,7 @@ export class KubeApi { const apiPath = await this.getResourceApiPathFromManifest({ manifest: resource, log, namespace }) const res = await this.request({ log, path: apiPath, opts: { method: "put", body: resource } }) - return res.body + return res } /** @@ -624,12 +751,12 @@ export class KubeApi { log.debug(`Upserting ${kind} ${namespace}/${name}`) const replace = async () => { - await api[crudMap[kind].read](name, namespace) + await api[crudMap[kind].read]({ name, namespace }) if (api[crudMap[kind].replace]) { - await api[crudMap[kind].replace](name, namespace, obj) + await api[crudMap[kind].replace]({ name, namespace, body: obj }) log.debug(`Replaced ${kind} ${namespace}/${name}`) } else { - await api[crudMap[kind].patch](name, namespace, obj) + await api[crudMap[kind].patch]({ name, namespace, body: obj }) log.debug(`Patched ${kind} ${namespace}/${name}`) } } @@ -642,7 +769,7 @@ export class KubeApi { } if (replaceError.responseStatusCode === 404) { try { - await api[crudMap[kind].create](namespace, obj) + await api[crudMap[kind].create]({ namespace, body: obj }) log.debug(`Created ${kind} ${namespace}/${name}`) } catch (createError) { if (!(createError instanceof KubernetesError)) { @@ -663,9 +790,7 @@ export class KubeApi { /** * Wrapping the API objects to deal with bugs. */ - private wrapApi(log: Log, api: T, config: KubeConfig): WrappedApi { - api.setDefaultAuthentication(config) - + private wrapApi(log: Log, api: T): WrappedApi { return new Proxy(api, { get: (target: T, name: string, receiver) => { if (!(name in Object.getPrototypeOf(target))) { @@ -674,35 +799,24 @@ export class KubeApi { } return (...args: any[]) => { - const defaultHeaders = target["defaultHeaders"] - - if (name.startsWith("patch")) { - // patch the patch bug... (https://github.com/kubernetes-client/javascript/issues/19) - target["defaultHeaders"] = { ...defaultHeaders, "content-type": "application/merge-patch+json" } - } - return requestWithRetry(log, `Kubernetes API: ${name}`, () => { const output = target[name](...args) - target["defaultHeaders"] = defaultHeaders if (typeof output.then === "function") { return ( output // return the result body directly if applicable .then((res: any) => { - if (isPlainObject(res) && res.hasOwnProperty("body")) { - // inexplicably, this API sometimes returns apiVersion and kind as undefined... - if (name === "listNamespacedPod" && res.body.items) { - res.body.items = res.body.items.map((pod: any) => { - pod.apiVersion = "v1" - pod.kind = "Pod" - return pod - }) - } - return res["body"] - } else { - return res + // inexplicably, this API sometimes returns apiVersion and kind as undefined... + if (name === "listNamespacedPod" && res !== undefined && res.kind === "PodList") { + res.items = res.items.map((pod: any) => { + pod.apiVersion = "v1" + pod.kind = "Pod" + return pod + }) } + + return res }) // the API errors are not properly formed Error objects .catch((err: Error) => { @@ -869,7 +983,7 @@ export class KubeApi { async createPod(namespace: string, pod: KubernetesPod) { await pRetry( async () => { - await this.core.createNamespacedPod(namespace, pod) + await this.core.createNamespacedPod({ namespace, body: pod }) }, { retries: 3, diff --git a/core/src/plugins/kubernetes/commands/cleanup-cluster-registry.ts b/core/src/plugins/kubernetes/commands/cleanup-cluster-registry.ts index 6a6bc319b9..97347ce414 100644 --- a/core/src/plugins/kubernetes/commands/cleanup-cluster-registry.ts +++ b/core/src/plugins/kubernetes/commands/cleanup-cluster-registry.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { PluginCommand } from "../../../plugin/command" +import type { PluginCommand } from "../../../plugin/command.js" export const cleanupClusterRegistry: PluginCommand = { name: "cleanup-cluster-registry", diff --git a/core/src/plugins/kubernetes/commands/cluster-init.ts b/core/src/plugins/kubernetes/commands/cluster-init.ts index a3a2c4f71a..e325a53805 100644 --- a/core/src/plugins/kubernetes/commands/cluster-init.ts +++ b/core/src/plugins/kubernetes/commands/cluster-init.ts @@ -6,8 +6,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { PluginCommand } from "../../../plugin/command" -import { prepareSystem, getEnvironmentStatus } from "../init" +import type { PluginCommand } from "../../../plugin/command.js" +import { prepareSystem, getEnvironmentStatus } from "../init.js" import chalk from "chalk" export const clusterInit: PluginCommand = { diff --git a/core/src/plugins/kubernetes/commands/pull-image.ts b/core/src/plugins/kubernetes/commands/pull-image.ts index b984cf0892..bf47510026 100644 --- a/core/src/plugins/kubernetes/commands/pull-image.ts +++ b/core/src/plugins/kubernetes/commands/pull-image.ts @@ -8,23 +8,23 @@ import fs from "fs" import tmp from "tmp-promise" -import { KubernetesPluginContext } from "../config" -import { PluginError, ParameterError, GardenError } from "../../../exceptions" -import { PluginCommand } from "../../../plugin/command" +import type { KubernetesPluginContext } from "../config.js" +import { PluginError, ParameterError, GardenError } from "../../../exceptions.js" +import type { PluginCommand } from "../../../plugin/command.js" import chalk from "chalk" -import { KubeApi } from "../api" -import { Log } from "../../../logger/log-entry" -import { containerHelpers } from "../../container/helpers" -import { RuntimeError } from "../../../exceptions" -import { PodRunner } from "../run" -import { dockerAuthSecretKey, systemDockerAuthSecretName, k8sUtilImageName } from "../constants" -import { getAppNamespace, getSystemNamespace } from "../namespace" -import { randomString } from "../../../util/string" -import { PluginContext } from "../../../plugin-context" -import { ensureBuilderSecret } from "../container/build/common" -import { ContainerBuildAction } from "../../container/config" -import { k8sGetContainerBuildActionOutputs } from "../container/handlers" -import { Resolved } from "../../../actions/types" +import { KubeApi } from "../api.js" +import type { Log } from "../../../logger/log-entry.js" +import { containerHelpers } from "../../container/helpers.js" +import { RuntimeError } from "../../../exceptions.js" +import { PodRunner } from "../run.js" +import { dockerAuthSecretKey, systemDockerAuthSecretName, k8sUtilImageName } from "../constants.js" +import { getAppNamespace, getSystemNamespace } from "../namespace.js" +import { randomString } from "../../../util/string.js" +import type { PluginContext } from "../../../plugin-context.js" +import { ensureBuilderSecret } from "../container/build/common.js" +import type { ContainerBuildAction } from "../../container/config.js" +import { k8sGetContainerBuildActionOutputs } from "../container/handlers.js" +import type { Resolved } from "../../../actions/types.js" const tmpTarPath = "/tmp/image.tar" const imagePullTimeoutSeconds = 60 * 20 diff --git a/core/src/plugins/kubernetes/commands/sync.ts b/core/src/plugins/kubernetes/commands/sync.ts index e2dc54c897..3f92003c0b 100644 --- a/core/src/plugins/kubernetes/commands/sync.ts +++ b/core/src/plugins/kubernetes/commands/sync.ts @@ -7,12 +7,13 @@ */ import chalk from "chalk" -import { getMutagenDataDir, getMutagenEnv, mutagenCliSpec, parseSyncListResult } from "../../../mutagen" -import { pathExists } from "fs-extra" -import { dedent } from "../../../util/string" -import { Log } from "../../../logger/log-entry" -import { PluginTool } from "../../../util/ext-tools" -import { PluginCommand } from "../../../plugin/command" +import { getMutagenDataDir, getMutagenEnv, mutagenCliSpec, parseSyncListResult } from "../../../mutagen.js" +import fsExtra from "fs-extra" +const { pathExists } = fsExtra +import { dedent } from "../../../util/string.js" +import type { Log } from "../../../logger/log-entry.js" +import { PluginTool } from "../../../util/ext-tools.js" +import type { PluginCommand } from "../../../plugin/command.js" const logSuccess = (log: Log) => log.info({ msg: chalk.green("\nDone!") }) diff --git a/core/src/plugins/kubernetes/commands/uninstall-garden-services.ts b/core/src/plugins/kubernetes/commands/uninstall-garden-services.ts index 354ea7f0ad..45a42133e4 100644 --- a/core/src/plugins/kubernetes/commands/uninstall-garden-services.ts +++ b/core/src/plugins/kubernetes/commands/uninstall-garden-services.ts @@ -7,10 +7,10 @@ */ import chalk from "chalk" -import { PluginCommand } from "../../../plugin/command" -import { getKubernetesSystemVariables } from "../init" -import { KubernetesPluginContext } from "../config" -import { getSystemGarden } from "../system" +import type { PluginCommand } from "../../../plugin/command.js" +import { getKubernetesSystemVariables } from "../init.js" +import type { KubernetesPluginContext } from "../config.js" +import { getSystemGarden } from "../system.js" export const uninstallGardenServices: PluginCommand = { name: "uninstall-garden-services", diff --git a/core/src/plugins/kubernetes/config.ts b/core/src/plugins/kubernetes/config.ts index 4ffeba6b12..9419723512 100644 --- a/core/src/plugins/kubernetes/config.ts +++ b/core/src/plugins/kubernetes/config.ts @@ -6,6 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +import type { StringMap } from "../../config/common.js" import { joi, joiArray, @@ -14,31 +15,34 @@ import { joiProviderName, joiSparseArray, joiStringMap, - StringMap, -} from "../../config/common" -import { BaseProviderConfig, Provider, providerConfigBaseSchema } from "../../config/provider" +} from "../../config/common.js" +import type { BaseProviderConfig, Provider } from "../../config/provider.js" +import { providerConfigBaseSchema } from "../../config/provider.js" +import type { ContainerEnvVars, ContainerRegistryConfig } from "../container/moduleConfig.js" import { artifactsDescription, commandExample, containerArtifactSchema, - ContainerEnvVars, containerEnvVarsSchema, - ContainerRegistryConfig, containerRegistryConfigSchema, -} from "../container/moduleConfig" -import { PluginContext } from "../../plugin-context" -import { dedent, deline } from "../../util/string" -import { defaultSystemNamespace } from "./system" -import { SyncableKind, syncableKinds } from "./types" -import { BaseTaskSpec, baseTaskSpecSchema, cacheResultSchema } from "../../config/task" -import { BaseTestSpec, baseTestSpecSchema } from "../../config/test" -import { ArtifactSpec } from "../../config/validation" -import { V1Toleration } from "@kubernetes/client-node" -import { runPodSpecIncludeFields } from "./run" -import { SyncDefaults, syncDefaultsSchema } from "./sync" -import { KUBECTL_DEFAULT_TIMEOUT } from "./kubectl" -import { DOCS_BASE_URL } from "../../constants" -import { defaultKanikoImageName } from "./constants" +} from "../container/moduleConfig.js" +import type { PluginContext } from "../../plugin-context.js" +import { dedent, deline } from "../../util/string.js" +import { defaultSystemNamespace } from "./system.js" +import type { SyncableKind } from "./types.js" +import { syncableKinds } from "./types.js" +import type { BaseTaskSpec } from "../../config/task.js" +import { baseTaskSpecSchema, cacheResultSchema } from "../../config/task.js" +import type { BaseTestSpec } from "../../config/test.js" +import { baseTestSpecSchema } from "../../config/test.js" +import type { ArtifactSpec } from "../../config/validation.js" +import type { V1Toleration } from "@kubernetes/client-node" +import { runPodSpecIncludeFields } from "./run.js" +import type { SyncDefaults } from "./sync.js" +import { syncDefaultsSchema } from "./sync.js" +import { KUBECTL_DEFAULT_TIMEOUT } from "./kubectl.js" +import { DOCS_BASE_URL } from "../../constants.js" +import { defaultKanikoImageName } from "./constants.js" export interface ProviderSecretRef { name: string diff --git a/core/src/plugins/kubernetes/constants.ts b/core/src/plugins/kubernetes/constants.ts index 481c7170a7..22414c5f41 100644 --- a/core/src/plugins/kubernetes/constants.ts +++ b/core/src/plugins/kubernetes/constants.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { DockerImageWithDigest } from "../../util/string" +import type { DockerImageWithDigest } from "../../util/string.js" export const rsyncPortName = "garden-rsync" export const buildSyncVolumeName = `garden-sync` diff --git a/core/src/plugins/kubernetes/container/build/buildkit.ts b/core/src/plugins/kubernetes/container/build/buildkit.ts index bbca8ad435..b03d3d54b1 100644 --- a/core/src/plugins/kubernetes/container/build/buildkit.ts +++ b/core/src/plugins/kubernetes/container/build/buildkit.ts @@ -8,8 +8,8 @@ import AsyncLock from "async-lock" import chalk from "chalk" -import split2 = require("split2") -import { isEmpty } from "lodash" +import split2 from "split2" +import { isEmpty } from "lodash-es" import { buildSyncVolumeName, buildkitContainerName, @@ -17,33 +17,32 @@ import { buildkitImageName, buildkitRootlessImageName, dockerAuthSecretKey, -} from "../../constants" -import { KubeApi } from "../../api" -import { KubernetesDeployment } from "../../types" -import { Log } from "../../../../logger/log-entry" -import { waitForResources, compareDeployedResources } from "../../status/status" -import { KubernetesProvider, KubernetesPluginContext, ClusterBuildkitCacheConfig } from "../../config" -import { PluginContext } from "../../../../plugin-context" +} from "../../constants.js" +import { KubeApi } from "../../api.js" +import type { KubernetesDeployment } from "../../types.js" +import type { Log } from "../../../../logger/log-entry.js" +import { waitForResources, compareDeployedResources } from "../../status/status.js" +import type { KubernetesProvider, KubernetesPluginContext, ClusterBuildkitCacheConfig } from "../../config.js" +import type { PluginContext } from "../../../../plugin-context.js" +import type { BuildStatusHandler, BuildHandler } from "./common.js" import { - BuildStatusHandler, skopeoBuildStatus, - BuildHandler, syncToBuildSync, getUtilContainer, ensureBuilderSecret, builderToleration, -} from "./common" -import { getNamespaceStatus } from "../../namespace" -import { sleep } from "../../../../util/util" -import { ContainerBuildAction, ContainerModuleOutputs } from "../../../container/moduleConfig" -import { getDockerBuildArgs } from "../../../container/build" -import { Resolved } from "../../../../actions/types" -import { PodRunner } from "../../run" -import { prepareSecrets } from "../../secrets" -import { getRunningDeploymentPod } from "../../util" -import { defaultDockerfileName } from "../../../container/config" -import { k8sGetContainerBuildActionOutputs } from "../handlers" -import { stringifyResources } from "../util" +} from "./common.js" +import { getNamespaceStatus } from "../../namespace.js" +import { sleep } from "../../../../util/util.js" +import type { ContainerBuildAction, ContainerModuleOutputs } from "../../../container/moduleConfig.js" +import { getDockerBuildArgs } from "../../../container/build.js" +import type { Resolved } from "../../../../actions/types.js" +import { PodRunner } from "../../run.js" +import { prepareSecrets } from "../../secrets.js" +import { getRunningDeploymentPod } from "../../util.js" +import { defaultDockerfileName } from "../../../container/config.js" +import { k8sGetContainerBuildActionOutputs } from "../handlers.js" +import { stringifyResources } from "../util.js" const deployLock = new AsyncLock() diff --git a/core/src/plugins/kubernetes/container/build/common.ts b/core/src/plugins/kubernetes/container/build/common.ts index 9eebe96ebe..b7efa33188 100644 --- a/core/src/plugins/kubernetes/container/build/common.ts +++ b/core/src/plugins/kubernetes/container/build/common.ts @@ -7,30 +7,30 @@ */ import AsyncLock from "async-lock" -import { ContainerBuildAction, ContainerRegistryConfig } from "../../../container/moduleConfig" -import { KubeApi } from "../../api" -import { KubernetesPluginContext, KubernetesProvider } from "../../config" -import { PodRunner, PodRunnerError } from "../../run" -import { PluginContext } from "../../../../plugin-context" -import { hashString, sleep } from "../../../../util/util" -import { InternalError, RuntimeError } from "../../../../exceptions" -import { Log } from "../../../../logger/log-entry" -import { prepareDockerAuth } from "../../init" -import { prepareSecrets } from "../../secrets" +import type { ContainerBuildAction, ContainerRegistryConfig } from "../../../container/moduleConfig.js" +import type { KubeApi } from "../../api.js" +import type { KubernetesPluginContext, KubernetesProvider } from "../../config.js" +import { PodRunner, PodRunnerError } from "../../run.js" +import type { PluginContext } from "../../../../plugin-context.js" +import { hashString, sleep } from "../../../../util/util.js" +import { InternalError, RuntimeError } from "../../../../exceptions.js" +import type { Log } from "../../../../logger/log-entry.js" +import { prepareDockerAuth } from "../../init.js" +import { prepareSecrets } from "../../secrets.js" import chalk from "chalk" -import { Mutagen } from "../../../../mutagen" -import { randomString } from "../../../../util/string" -import { V1Container, V1Service } from "@kubernetes/client-node" -import { cloneDeep, isEmpty } from "lodash" -import { compareDeployedResources, waitForResources } from "../../status/status" -import { KubernetesDeployment, KubernetesResource } from "../../types" -import { BuildActionHandler, BuildActionResults } from "../../../../plugin/action-types" -import { k8sGetContainerBuildActionOutputs } from "../handlers" -import { Resolved } from "../../../../actions/types" -import { stringifyResources } from "../util" -import { getKubectlExecDestination } from "../../sync" -import { getRunningDeploymentPod } from "../../util" -import { buildSyncVolumeName, dockerAuthSecretKey, k8sUtilImageName, rsyncPortName } from "../../constants" +import { Mutagen } from "../../../../mutagen.js" +import { randomString } from "../../../../util/string.js" +import type { V1Container, V1Service } from "@kubernetes/client-node" +import { cloneDeep, isEmpty } from "lodash-es" +import { compareDeployedResources, waitForResources } from "../../status/status.js" +import type { KubernetesDeployment, KubernetesResource } from "../../types.js" +import type { BuildActionHandler, BuildActionResults } from "../../../../plugin/action-types.js" +import { k8sGetContainerBuildActionOutputs } from "../handlers.js" +import type { Resolved } from "../../../../actions/types.js" +import { stringifyResources } from "../util.js" +import { getKubectlExecDestination } from "../../sync.js" +import { getRunningDeploymentPod } from "../../util.js" +import { buildSyncVolumeName, dockerAuthSecretKey, k8sUtilImageName, rsyncPortName } from "../../constants.js" export const utilContainerName = "util" export const utilRsyncPort = 8730 diff --git a/core/src/plugins/kubernetes/container/build/kaniko.ts b/core/src/plugins/kubernetes/container/build/kaniko.ts index 8785dd09a7..05a52aaff8 100644 --- a/core/src/plugins/kubernetes/container/build/kaniko.ts +++ b/core/src/plugins/kubernetes/container/build/kaniko.ts @@ -6,28 +6,27 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { V1PodSpec } from "@kubernetes/client-node" +import type { V1PodSpec } from "@kubernetes/client-node" import { skopeoDaemonContainerName, dockerAuthSecretKey, k8sUtilImageName, defaultKanikoImageName, -} from "../../constants" -import { KubeApi } from "../../api" -import { Log } from "../../../../logger/log-entry" -import { KubernetesProvider, KubernetesPluginContext } from "../../config" -import { BuildError, ConfigurationError } from "../../../../exceptions" -import { PodRunner } from "../../run" -import { ensureNamespace, getNamespaceStatus, getSystemNamespace } from "../../namespace" -import { prepareSecrets } from "../../secrets" -import { dedent } from "../../../../util/string" -import { RunResult } from "../../../../plugin/base" -import { PluginContext } from "../../../../plugin-context" -import { KubernetesPod } from "../../types" +} from "../../constants.js" +import { KubeApi } from "../../api.js" +import type { Log } from "../../../../logger/log-entry.js" +import type { KubernetesProvider, KubernetesPluginContext } from "../../config.js" +import { BuildError, ConfigurationError } from "../../../../exceptions.js" +import { PodRunner } from "../../run.js" +import { ensureNamespace, getNamespaceStatus, getSystemNamespace } from "../../namespace.js" +import { prepareSecrets } from "../../secrets.js" +import { dedent } from "../../../../util/string.js" +import type { RunResult } from "../../../../plugin/base.js" +import type { PluginContext } from "../../../../plugin-context.js" +import type { KubernetesPod } from "../../types.js" +import type { BuildStatusHandler, BuildHandler } from "./common.js" import { - BuildStatusHandler, skopeoBuildStatus, - BuildHandler, utilRsyncPort, syncToBuildSync, ensureBuilderSecret, @@ -35,14 +34,15 @@ import { builderToleration, ensureUtilDeployment, utilDeploymentName, -} from "./common" -import { differenceBy, isEmpty } from "lodash" +} from "./common.js" +import { differenceBy, isEmpty } from "lodash-es" import chalk from "chalk" -import { getDockerBuildFlags } from "../../../container/build" -import { k8sGetContainerBuildActionOutputs } from "../handlers" -import { stringifyResources } from "../util" -import { makePodName } from "../../util" -import { defaultDockerfileName, ContainerBuildAction } from "../../../container/config" +import { getDockerBuildFlags } from "../../../container/build.js" +import { k8sGetContainerBuildActionOutputs } from "../handlers.js" +import { stringifyResources } from "../util.js" +import { makePodName } from "../../util.js" +import type { ContainerBuildAction } from "../../../container/config.js" +import { defaultDockerfileName } from "../../../container/config.js" export const DEFAULT_KANIKO_FLAGS = ["--cache=true"] diff --git a/core/src/plugins/kubernetes/container/build/local.ts b/core/src/plugins/kubernetes/container/build/local.ts index aa5558e986..c5c618883f 100644 --- a/core/src/plugins/kubernetes/container/build/local.ts +++ b/core/src/plugins/kubernetes/container/build/local.ts @@ -6,17 +6,18 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { containerHelpers } from "../../../container/helpers" -import { buildContainer, getContainerBuildStatus } from "../../../container/build" -import { KubernetesProvider, KubernetesPluginContext } from "../../config" -import { loadImageToKind, getKindImageStatus } from "../../local/kind" -import chalk = require("chalk") -import { loadImageToMicrok8s, getMicrok8sImageStatus } from "../../local/microk8s" -import { ContainerProvider } from "../../../container/container" -import { BuildHandler, BuildStatusHandler, BuildStatusResult, getManifestInspectArgs } from "./common" -import { ContainerBuildAction } from "../../../container/moduleConfig" -import { BuildActionParams } from "../../../../plugin/action-types" -import { k8sGetContainerBuildActionOutputs } from "../handlers" +import { containerHelpers } from "../../../container/helpers.js" +import { buildContainer, getContainerBuildStatus } from "../../../container/build.js" +import type { KubernetesProvider, KubernetesPluginContext } from "../../config.js" +import { loadImageToKind, getKindImageStatus } from "../../local/kind.js" +import chalk from "chalk" +import { loadImageToMicrok8s, getMicrok8sImageStatus } from "../../local/microk8s.js" +import type { ContainerProvider } from "../../../container/container.js" +import type { BuildHandler, BuildStatusHandler, BuildStatusResult } from "./common.js" +import { getManifestInspectArgs } from "./common.js" +import type { ContainerBuildAction } from "../../../container/moduleConfig.js" +import type { BuildActionParams } from "../../../../plugin/action-types.js" +import { k8sGetContainerBuildActionOutputs } from "../handlers.js" export const getLocalBuildStatus: BuildStatusHandler = async (params) => { const { ctx, action, log } = params diff --git a/core/src/plugins/kubernetes/container/deployment.ts b/core/src/plugins/kubernetes/container/deployment.ts index 839080c574..2961764db8 100644 --- a/core/src/plugins/kubernetes/container/deployment.ts +++ b/core/src/plugins/kubernetes/container/deployment.ts @@ -7,40 +7,48 @@ */ import chalk from "chalk" -import { V1Affinity, V1Container, V1DaemonSet, V1Deployment, V1PodSpec, V1VolumeMount } from "@kubernetes/client-node" -import { extend, keyBy, omit, set } from "lodash" -import { ContainerDeployAction, ContainerDeploySpec, ContainerVolumeSpec } from "../../container/moduleConfig" -import { createIngressResources } from "./ingress" -import { createServiceResources } from "./service" -import { waitForResources } from "../status/status" -import { apply, deleteObjectsBySelector, deleteResourceKeys, KUBECTL_DEFAULT_TIMEOUT } from "../kubectl" -import { getAppNamespace, getNamespaceStatus } from "../namespace" -import { PluginContext } from "../../../plugin-context" -import { KubeApi } from "../api" -import { KubernetesPluginContext, KubernetesProvider } from "../config" -import { ActionLog, Log } from "../../../logger/log-entry" -import { prepareEnvVars } from "../util" -import { deline, gardenAnnotationKey } from "../../../util/string" +import type { + V1Affinity, + V1Container, + V1DaemonSet, + V1Deployment, + V1PodSpec, + V1VolumeMount, +} from "@kubernetes/client-node" +import { extend, keyBy, omit, set } from "lodash-es" +import type { ContainerDeployAction, ContainerDeploySpec, ContainerVolumeSpec } from "../../container/moduleConfig.js" +import { createIngressResources } from "./ingress.js" +import { createServiceResources } from "./service.js" +import { waitForResources } from "../status/status.js" +import { apply, deleteObjectsBySelector, deleteResourceKeys, KUBECTL_DEFAULT_TIMEOUT } from "../kubectl.js" +import { getAppNamespace, getNamespaceStatus } from "../namespace.js" +import type { PluginContext } from "../../../plugin-context.js" +import { KubeApi } from "../api.js" +import type { KubernetesPluginContext, KubernetesProvider } from "../config.js" +import type { ActionLog, Log } from "../../../logger/log-entry.js" +import { prepareEnvVars } from "../util.js" +import { deline, gardenAnnotationKey } from "../../../util/string.js" import { resolve } from "path" -import { killPortForwards } from "../port-forward" -import { prepareSecrets } from "../secrets" -import { configureSyncMode, convertContainerSyncSpec } from "../sync" -import { getDeployedImageId, getResourceRequirements, getSecurityContext } from "./util" -import { configureLocalMode, convertContainerLocalModeSpec, startServiceInLocalMode } from "../local-mode" -import { DeployActionHandler, DeployActionParams } from "../../../plugin/action-types" -import { ActionMode, Resolved } from "../../../actions/types" -import { ConfigurationError, DeploymentError } from "../../../exceptions" -import { +import { killPortForwards } from "../port-forward.js" +import { prepareSecrets } from "../secrets.js" +import { configureSyncMode, convertContainerSyncSpec } from "../sync.js" +import { getDeployedImageId, getResourceRequirements, getSecurityContext } from "./util.js" +import { configureLocalMode, convertContainerLocalModeSpec, startServiceInLocalMode } from "../local-mode.js" +import type { DeployActionHandler, DeployActionParams } from "../../../plugin/action-types.js" +import type { ActionMode, Resolved } from "../../../actions/types.js" +import { ConfigurationError, DeploymentError } from "../../../exceptions.js" +import type { SyncableKind, - syncableKinds, SyncableResource, KubernetesWorkload, KubernetesResource, SupportedRuntimeAction, -} from "../types" -import { k8sGetContainerDeployStatus, ContainerServiceStatus } from "./status" -import { emitNonRepeatableWarning } from "../../../warnings" -import { K8_POD_DEFAULT_CONTAINER_ANNOTATION_KEY } from "../run" +} from "../types.js" +import { syncableKinds } from "../types.js" +import type { ContainerServiceStatus } from "./status.js" +import { k8sGetContainerDeployStatus } from "./status.js" +import { emitNonRepeatableWarning } from "../../../warnings.js" +import { K8_POD_DEFAULT_CONTAINER_ANNOTATION_KEY } from "../run.js" export const REVISION_HISTORY_LIMIT_PROD = 10 export const REVISION_HISTORY_LIMIT_DEFAULT = 3 @@ -54,7 +62,7 @@ export const k8sContainerDeploy: DeployActionHandler<"deploy", ContainerDeployAc const { deploymentStrategy } = k8sCtx.provider.config const api = await KubeApi.factory(log, k8sCtx, k8sCtx.provider) - const imageId = getDeployedImageId(action, k8sCtx.provider) + const imageId = getDeployedImageId(action) const status = await k8sGetContainerDeployStatus(params) const specChangedResourceKeys: string[] = status.detail?.detail.selectorChangedResourceKeys || [] diff --git a/core/src/plugins/kubernetes/container/exec.ts b/core/src/plugins/kubernetes/container/exec.ts index f5f46cf4eb..13be0d5c23 100644 --- a/core/src/plugins/kubernetes/container/exec.ts +++ b/core/src/plugins/kubernetes/container/exec.ts @@ -6,14 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { includes } from "lodash" -import { DeploymentError } from "../../../exceptions" -import { ContainerDeployAction } from "../../container/moduleConfig" -import { getAppNamespace } from "../namespace" -import { KubernetesPluginContext } from "../config" -import { execInWorkload } from "../util" -import { DeployActionHandler } from "../../../plugin/action-types" -import { k8sGetContainerDeployStatus } from "./status" +import { includes } from "lodash-es" +import { DeploymentError } from "../../../exceptions.js" +import type { ContainerDeployAction } from "../../container/moduleConfig.js" +import { getAppNamespace } from "../namespace.js" +import type { KubernetesPluginContext } from "../config.js" +import { execInWorkload } from "../util.js" +import type { DeployActionHandler } from "../../../plugin/action-types.js" +import { k8sGetContainerDeployStatus } from "./status.js" export const execInContainer: DeployActionHandler<"exec", ContainerDeployAction> = async (params) => { const { ctx, log, action, command, interactive, target: containerName } = params diff --git a/core/src/plugins/kubernetes/container/extensions.ts b/core/src/plugins/kubernetes/container/extensions.ts index 427479fc67..86d2236de2 100644 --- a/core/src/plugins/kubernetes/container/extensions.ts +++ b/core/src/plugins/kubernetes/container/extensions.ts @@ -6,36 +6,36 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { DeepPrimitiveMap } from "../../../config/common" -import { +import type { DeepPrimitiveMap } from "../../../config/common.js" +import type { BuildActionExtension, DeployActionExtension, RunActionExtension, TestActionExtension, -} from "../../../plugin/action-types" -import { +} from "../../../plugin/action-types.js" +import type { ContainerBuildAction, ContainerDeployAction, ContainerRunAction, ContainerTestAction, -} from "../../container/config" -import { ContainerBuildMode, KubernetesProvider } from "../config" -import { getPortForwardHandler } from "../port-forward" -import { k8sGetRunResult } from "../run-results" -import { k8sGetTestResult } from "../test-results" -import { getBuildkitBuildStatus, buildkitBuildHandler } from "./build/buildkit" -import { BuildStatusHandler, BuildHandler } from "./build/common" -import { getKanikoBuildStatus, kanikoBuild } from "./build/kaniko" -import { getLocalBuildStatus, localBuild } from "./build/local" -import { deleteContainerDeploy, k8sContainerDeploy } from "./deployment" -import { execInContainer } from "./exec" -import { k8sGetContainerBuildActionOutputs, validateDeploySpec } from "./handlers" -import { k8sGetContainerDeployLogs } from "./logs" -import { k8sPublishContainerBuild } from "./publish" -import { k8sContainerRun } from "./run" -import { k8sGetContainerDeployStatus } from "./status" -import { k8sContainerGetSyncStatus, k8sContainerStartSync, k8sContainerStopSync } from "./sync" -import { k8sContainerTest } from "./test" +} from "../../container/config.js" +import type { ContainerBuildMode, KubernetesProvider } from "../config.js" +import { getPortForwardHandler } from "../port-forward.js" +import { k8sGetRunResult } from "../run-results.js" +import { k8sGetTestResult } from "../test-results.js" +import { getBuildkitBuildStatus, buildkitBuildHandler } from "./build/buildkit.js" +import type { BuildStatusHandler, BuildHandler } from "./build/common.js" +import { getKanikoBuildStatus, kanikoBuild } from "./build/kaniko.js" +import { getLocalBuildStatus, localBuild } from "./build/local.js" +import { deleteContainerDeploy, k8sContainerDeploy } from "./deployment.js" +import { execInContainer } from "./exec.js" +import { k8sGetContainerBuildActionOutputs, validateDeploySpec } from "./handlers.js" +import { k8sGetContainerDeployLogs } from "./logs.js" +import { k8sPublishContainerBuild } from "./publish.js" +import { k8sContainerRun } from "./run.js" +import { k8sGetContainerDeployStatus } from "./status.js" +import { k8sContainerGetSyncStatus, k8sContainerStartSync, k8sContainerStopSync } from "./sync.js" +import { k8sContainerTest } from "./test.js" export const k8sContainerBuildExtension = (): BuildActionExtension => ({ name: "container", diff --git a/core/src/plugins/kubernetes/container/handlers.ts b/core/src/plugins/kubernetes/container/handlers.ts index 420c5f7e38..95fa626b68 100644 --- a/core/src/plugins/kubernetes/container/handlers.ts +++ b/core/src/plugins/kubernetes/container/handlers.ts @@ -6,22 +6,22 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ConfigurationError } from "../../../exceptions" -import { KubernetesProvider } from "../config" -import { ConfigureModuleParams } from "../../../plugin/handlers/Module/configure" -import { +import { ConfigurationError } from "../../../exceptions.js" +import type { KubernetesProvider } from "../config.js" +import type { ConfigureModuleParams } from "../../../plugin/handlers/Module/configure.js" +import type { ContainerBuildAction, ContainerBuildOutputs, ContainerDeploySpec, ContainerModule, ContainerServiceSpec, -} from "../../container/moduleConfig" -import { GetModuleOutputsParams } from "../../../plugin/handlers/Module/get-outputs" -import { containerHelpers } from "../../container/helpers" -import { getContainerModuleOutputs } from "../../container/container" -import { getContainerBuildActionOutputs } from "../../container/build" -import { Resolved } from "../../../actions/types" -import { splitFirst } from "../../../util/string" +} from "../../container/moduleConfig.js" +import type { GetModuleOutputsParams } from "../../../plugin/handlers/Module/get-outputs.js" +import { containerHelpers } from "../../container/helpers.js" +import { getContainerModuleOutputs } from "../../container/container.js" +import { getContainerBuildActionOutputs } from "../../container/build.js" +import type { Resolved } from "../../../actions/types.js" +import { splitFirst } from "../../../util/string.js" async function configure(params: ConfigureModuleParams) { const { moduleConfig } = await params.base!(params) diff --git a/core/src/plugins/kubernetes/container/ingress.ts b/core/src/plugins/kubernetes/container/ingress.ts index 9362c9df6b..78c7f80dae 100644 --- a/core/src/plugins/kubernetes/container/ingress.ts +++ b/core/src/plugins/kubernetes/container/ingress.ts @@ -6,21 +6,22 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { extend } from "lodash" -import { findByName } from "../../../util/util" -import { ContainerIngressSpec, ContainerDeployAction } from "../../container/moduleConfig" -import { IngressTlsCertificate, KubernetesProvider } from "../config" -import { ServiceIngress, ServiceProtocol } from "../../../types/service" -import { KubeApi, KubernetesError } from "../api" -import { ConfigurationError, PluginError } from "../../../exceptions" -import { ensureSecret } from "../secrets" -import { getHostnamesFromPem } from "../../../util/tls" -import { KubernetesResource } from "../types" -import { V1Ingress, V1Secret } from "@kubernetes/client-node" -import { Log } from "../../../logger/log-entry" +import { extend } from "lodash-es" +import { findByName } from "../../../util/util.js" +import type { ContainerIngressSpec, ContainerDeployAction } from "../../container/moduleConfig.js" +import type { IngressTlsCertificate, KubernetesProvider } from "../config.js" +import type { ServiceIngress, ServiceProtocol } from "../../../types/service.js" +import type { KubeApi } from "../api.js" +import { KubernetesError } from "../api.js" +import { ConfigurationError, PluginError } from "../../../exceptions.js" +import { ensureSecret } from "../secrets.js" +import { getHostnamesFromPem } from "../../../util/tls.js" +import type { KubernetesResource } from "../types.js" +import type { V1Ingress, V1Secret } from "@kubernetes/client-node" +import type { Log } from "../../../logger/log-entry.js" import chalk from "chalk" -import { Resolved } from "../../../actions/types" -import { isProviderEphemeralKubernetes } from "../ephemeral/ephemeral" +import type { Resolved } from "../../../actions/types.js" +import { isProviderEphemeralKubernetes } from "../ephemeral/ephemeral.js" // Ingress API versions in descending order of preference export const supportedIngressApiVersions = ["networking.k8s.io/v1", "networking.k8s.io/v1beta1", "extensions/v1beta1"] @@ -239,7 +240,7 @@ async function getCertificateHostnames(api: KubeApi, cert: IngressTlsCertificate let secret: KubernetesResource try { - secret = await api.core.readNamespacedSecret(cert.secretRef.name, cert.secretRef.namespace) + secret = await api.core.readNamespacedSecret({ name: cert.secretRef.name, namespace: cert.secretRef.namespace }) } catch (err) { if (!(err instanceof KubernetesError)) { throw err diff --git a/core/src/plugins/kubernetes/container/logs.ts b/core/src/plugins/kubernetes/container/logs.ts index 804e182138..272391d10e 100644 --- a/core/src/plugins/kubernetes/container/logs.ts +++ b/core/src/plugins/kubernetes/container/logs.ts @@ -6,14 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ContainerDeployAction } from "../../container/moduleConfig" -import { getAppNamespace } from "../namespace" -import { streamK8sLogs } from "../logs" -import { KubernetesPluginContext } from "../config" -import { createWorkloadManifest } from "./deployment" -import { KubeApi } from "../api" -import { DeployActionHandler } from "../../../plugin/action-types" -import { getDeployedImageId } from "./util" +import type { ContainerDeployAction } from "../../container/moduleConfig.js" +import { getAppNamespace } from "../namespace.js" +import { streamK8sLogs } from "../logs.js" +import type { KubernetesPluginContext } from "../config.js" +import { createWorkloadManifest } from "./deployment.js" +import { KubeApi } from "../api.js" +import type { DeployActionHandler } from "../../../plugin/action-types.js" +import { getDeployedImageId } from "./util.js" export const k8sGetContainerDeployLogs: DeployActionHandler<"getLogs", ContainerDeployAction> = async (params) => { const { ctx, log, action } = params @@ -22,7 +22,7 @@ export const k8sGetContainerDeployLogs: DeployActionHandler<"getLogs", Container const namespace = await getAppNamespace(k8sCtx, log, provider) const api = await KubeApi.factory(log, ctx, provider) - const imageId = getDeployedImageId(action, provider) + const imageId = getDeployedImageId(action) const resources = [ await createWorkloadManifest({ diff --git a/core/src/plugins/kubernetes/container/publish.ts b/core/src/plugins/kubernetes/container/publish.ts index 42e1319fca..3fdd8e265d 100644 --- a/core/src/plugins/kubernetes/container/publish.ts +++ b/core/src/plugins/kubernetes/container/publish.ts @@ -6,11 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ContainerBuildAction } from "../../container/moduleConfig" -import { KubernetesPluginContext } from "../config" -import { pullBuild } from "../commands/pull-image" -import { BuildActionHandler } from "../../../plugin/action-types" -import { containerHelpers } from "../../container/helpers" +import type { ContainerBuildAction } from "../../container/moduleConfig.js" +import type { KubernetesPluginContext } from "../config.js" +import { pullBuild } from "../commands/pull-image.js" +import type { BuildActionHandler } from "../../../plugin/action-types.js" +import { containerHelpers } from "../../container/helpers.js" export const k8sPublishContainerBuild: BuildActionHandler<"publish", ContainerBuildAction> = async (params) => { const { ctx, action, log, tag } = params diff --git a/core/src/plugins/kubernetes/container/run.ts b/core/src/plugins/kubernetes/container/run.ts index 5281cbd048..5b1bf73453 100644 --- a/core/src/plugins/kubernetes/container/run.ts +++ b/core/src/plugins/kubernetes/container/run.ts @@ -6,15 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ContainerRunAction } from "../../container/moduleConfig" -import { runAndCopy } from "../run" -import { KubernetesPluginContext } from "../config" -import { storeRunResult } from "../run-results" -import { makePodName } from "../util" -import { getNamespaceStatus } from "../namespace" -import { RunActionHandler } from "../../../plugin/action-types" -import { getDeployedImageId } from "./util" -import { runResultToActionState } from "../../../actions/base" +import type { ContainerRunAction } from "../../container/moduleConfig.js" +import { runAndCopy } from "../run.js" +import type { KubernetesPluginContext } from "../config.js" +import { storeRunResult } from "../run-results.js" +import { makePodName } from "../util.js" +import { getNamespaceStatus } from "../namespace.js" +import type { RunActionHandler } from "../../../plugin/action-types.js" +import { getDeployedImageId } from "./util.js" +import { runResultToActionState } from "../../../actions/base.js" export const k8sContainerRun: RunActionHandler<"run", ContainerRunAction> = async (params) => { const { ctx, log, action } = params @@ -34,7 +34,7 @@ export const k8sContainerRun: RunActionHandler<"run", ContainerRunAction> = asyn const timeout = action.getConfig("timeout") const k8sCtx = ctx as KubernetesPluginContext - const image = getDeployedImageId(action, k8sCtx.provider) + const image = getDeployedImageId(action) const namespaceStatus = await getNamespaceStatus({ ctx: k8sCtx, log, provider: k8sCtx.provider }) const runResult = await runAndCopy({ diff --git a/core/src/plugins/kubernetes/container/service.ts b/core/src/plugins/kubernetes/container/service.ts index be2ba8b1d0..c4dce286a9 100644 --- a/core/src/plugins/kubernetes/container/service.ts +++ b/core/src/plugins/kubernetes/container/service.ts @@ -6,13 +6,13 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { V1Service, V1ServicePort } from "@kubernetes/client-node" -import { ServicePortSpec } from "../../container/moduleConfig" -import { ContainerDeployAction } from "../../container/moduleConfig" -import { getDeploymentSelector } from "./deployment" -import { KubernetesResource } from "../types" -import { find } from "lodash" -import { Resolved } from "../../../actions/types" +import type { V1Service, V1ServicePort } from "@kubernetes/client-node" +import type { ServicePortSpec } from "../../container/moduleConfig.js" +import type { ContainerDeployAction } from "../../container/moduleConfig.js" +import { getDeploymentSelector } from "./deployment.js" +import type { KubernetesResource } from "../types.js" +import { find } from "lodash-es" +import type { Resolved } from "../../../actions/types.js" function toServicePort(portSpec: ServicePortSpec): V1ServicePort { const port: V1ServicePort = { diff --git a/core/src/plugins/kubernetes/container/status.ts b/core/src/plugins/kubernetes/container/status.ts index e1cbf7bd86..64dc406733 100644 --- a/core/src/plugins/kubernetes/container/status.ts +++ b/core/src/plugins/kubernetes/container/status.ts @@ -6,19 +6,20 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ServiceStatus, ForwardablePort, DeployState, ServiceIngress } from "../../../types/service" -import { createContainerManifests } from "./deployment" -import { ContainerDeployAction, ContainerDeployOutputs } from "../../container/moduleConfig" -import { KubeApi } from "../api" -import { compareDeployedResources } from "../status/status" -import { getIngresses } from "./ingress" -import { getNamespaceStatus } from "../namespace" -import { KubernetesPluginContext } from "../config" -import { KubernetesServerResource, KubernetesWorkload } from "../types" -import { DeployActionHandler } from "../../../plugin/action-types" -import { getDeployedImageId } from "./util" -import { ActionMode, Resolved } from "../../../actions/types" -import { deployStateToActionState, DeployStatus } from "../../../plugin/handlers/Deploy/get-status" +import type { ServiceStatus, ForwardablePort, DeployState, ServiceIngress } from "../../../types/service.js" +import { createContainerManifests } from "./deployment.js" +import type { ContainerDeployAction, ContainerDeployOutputs } from "../../container/moduleConfig.js" +import { KubeApi } from "../api.js" +import { compareDeployedResources } from "../status/status.js" +import { getIngresses } from "./ingress.js" +import { getNamespaceStatus } from "../namespace.js" +import type { KubernetesPluginContext } from "../config.js" +import type { KubernetesServerResource, KubernetesWorkload } from "../types.js" +import type { DeployActionHandler } from "../../../plugin/action-types.js" +import { getDeployedImageId } from "./util.js" +import type { ActionMode, Resolved } from "../../../actions/types.js" +import type { DeployStatus } from "../../../plugin/handlers/Deploy/get-status.js" +import { deployStateToActionState } from "../../../plugin/handlers/Deploy/get-status.js" interface ContainerStatusDetail { remoteResources: KubernetesServerResource[] @@ -37,7 +38,7 @@ export const k8sGetContainerDeployStatus: DeployActionHandler<"getStatus", Conta const api = await KubeApi.factory(log, ctx, provider) const namespaceStatus = await getNamespaceStatus({ ctx: k8sCtx, log, provider: k8sCtx.provider }) const namespace = namespaceStatus.namespaceName - const imageId = getDeployedImageId(action, provider) + const imageId = getDeployedImageId(action) // FIXME: [objects, matched] and ingresses can be run in parallel const { workload, manifests } = await createContainerManifests({ diff --git a/core/src/plugins/kubernetes/container/sync.ts b/core/src/plugins/kubernetes/container/sync.ts index 855c689234..dfd01a1ddc 100644 --- a/core/src/plugins/kubernetes/container/sync.ts +++ b/core/src/plugins/kubernetes/container/sync.ts @@ -6,15 +6,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ContainerDeployAction } from "../../container/moduleConfig" -import { getAppNamespace } from "../namespace" -import { KubernetesPluginContext, KubernetesTargetResourceSpec } from "../config" -import { getSyncStatus, KubernetesDeployDevModeSyncSpec, startSyncs, stopSyncs } from "../sync" -import { DeployActionHandler } from "../../../plugin/action-types" -import { KubernetesResource, SyncableKind } from "../types" -import { KubernetesDeployAction } from "../kubernetes-type/config" -import { HelmDeployAction } from "../helm/config" -import { Executed } from "../../../actions/types" +import type { ContainerDeployAction } from "../../container/moduleConfig.js" +import { getAppNamespace } from "../namespace.js" +import type { KubernetesPluginContext, KubernetesTargetResourceSpec } from "../config.js" +import type { KubernetesDeployDevModeSyncSpec } from "../sync.js" +import { getSyncStatus, startSyncs, stopSyncs } from "../sync.js" +import type { DeployActionHandler } from "../../../plugin/action-types.js" +import type { KubernetesResource, SyncableKind } from "../types.js" +import type { KubernetesDeployAction } from "../kubernetes-type/config.js" +import type { HelmDeployAction } from "../helm/config.js" +import type { Executed } from "../../../actions/types.js" export const k8sContainerStartSync: DeployActionHandler<"startSync", ContainerDeployAction> = async (params) => { const { ctx, action, log } = params diff --git a/core/src/plugins/kubernetes/container/test.ts b/core/src/plugins/kubernetes/container/test.ts index 693690d639..fc50b7f862 100644 --- a/core/src/plugins/kubernetes/container/test.ts +++ b/core/src/plugins/kubernetes/container/test.ts @@ -6,15 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ContainerTestAction } from "../../container/moduleConfig" -import { storeTestResult } from "../test-results" -import { runAndCopy } from "../run" -import { makePodName } from "../util" -import { getNamespaceStatus } from "../namespace" -import { KubernetesPluginContext } from "../config" -import { TestActionHandler } from "../../../plugin/action-types" -import { getDeployedImageId } from "./util" -import { runResultToActionState } from "../../../actions/base" +import type { ContainerTestAction } from "../../container/moduleConfig.js" +import { storeTestResult } from "../test-results.js" +import { runAndCopy } from "../run.js" +import { makePodName } from "../util.js" +import { getNamespaceStatus } from "../namespace.js" +import type { KubernetesPluginContext } from "../config.js" +import type { TestActionHandler } from "../../../plugin/action-types.js" +import { getDeployedImageId } from "./util.js" +import { runResultToActionState } from "../../../actions/base.js" export const k8sContainerTest: TestActionHandler<"run", ContainerTestAction> = async (params) => { const { ctx, action, log } = params @@ -23,7 +23,7 @@ export const k8sContainerTest: TestActionHandler<"run", ContainerTestAction> = a const timeout = action.getConfig("timeout") const k8sCtx = ctx as KubernetesPluginContext - const image = getDeployedImageId(action, k8sCtx.provider) + const image = getDeployedImageId(action) const namespaceStatus = await getNamespaceStatus({ ctx: k8sCtx, log, provider: k8sCtx.provider }) const res = await runAndCopy({ diff --git a/core/src/plugins/kubernetes/container/util.ts b/core/src/plugins/kubernetes/container/util.ts index dc51f15993..eb1dae09a2 100644 --- a/core/src/plugins/kubernetes/container/util.ts +++ b/core/src/plugins/kubernetes/container/util.ts @@ -6,28 +6,23 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { getPortForward } from "../port-forward" -import { CLUSTER_REGISTRY_DEPLOYMENT_NAME, CLUSTER_REGISTRY_PORT } from "../constants" -import { Log } from "../../../logger/log-entry" -import { - KubernetesResourceConfig, - KubernetesPluginContext, - KubernetesProvider, - KubernetesResourceSpec, -} from "../config" -import { getSystemNamespace } from "../namespace" -import { +import { getPortForward } from "../port-forward.js" +import { CLUSTER_REGISTRY_DEPLOYMENT_NAME, CLUSTER_REGISTRY_PORT } from "../constants.js" +import type { Log } from "../../../logger/log-entry.js" +import type { KubernetesResourceConfig, KubernetesPluginContext, KubernetesResourceSpec } from "../config.js" +import { getSystemNamespace } from "../namespace.js" +import type { ContainerBuildAction, ContainerResourcesSpec, ContainerRuntimeAction, ServiceLimitSpec, -} from "../../container/moduleConfig" -import { V1ResourceRequirements, V1SecurityContext } from "@kubernetes/client-node" -import { ConfigurationError } from "../../../exceptions" -import { Resolved } from "../../../actions/types" -import { kilobytesToString, megabytesToString, millicpuToString } from "../util" +} from "../../container/moduleConfig.js" +import type { V1ResourceRequirements, V1SecurityContext } from "@kubernetes/client-node" +import { ConfigurationError } from "../../../exceptions.js" +import type { Resolved } from "../../../actions/types.js" +import { kilobytesToString, megabytesToString, millicpuToString } from "../util.js" -export function getDeployedImageId(action: Resolved, provider: KubernetesProvider): string { +export function getDeployedImageId(action: Resolved): string { const explicitImage = action.getSpec().image const build = action.getResolvedBuildAction>() diff --git a/core/src/plugins/kubernetes/ephemeral/config.ts b/core/src/plugins/kubernetes/ephemeral/config.ts index 21da5f5a38..883e7022f2 100644 --- a/core/src/plugins/kubernetes/ephemeral/config.ts +++ b/core/src/plugins/kubernetes/ephemeral/config.ts @@ -7,19 +7,21 @@ */ import chalk from "chalk" -import { mkdirp, writeFile } from "fs-extra" +import fsExtra from "fs-extra" +const { mkdirp, writeFile } = fsExtra import { load } from "js-yaml" -import { remove } from "lodash" +import { remove } from "lodash-es" import moment from "moment" import { join } from "path" -import { joi, joiProviderName } from "../../../config/common" -import { providerConfigBaseSchema } from "../../../config/provider" -import { ConfigurationError } from "../../../exceptions" -import { ConfigureProviderParams } from "../../../plugin/handlers/Provider/configureProvider" -import { dedent } from "../../../util/string" -import { KubernetesConfig, namespaceSchema } from "../config" -import { EPHEMERAL_KUBERNETES_PROVIDER_NAME } from "./ephemeral" -import { DEFAULT_GARDEN_CLOUD_DOMAIN } from "../../../constants" +import { joi, joiProviderName } from "../../../config/common.js" +import { providerConfigBaseSchema } from "../../../config/provider.js" +import { ConfigurationError } from "../../../exceptions.js" +import type { ConfigureProviderParams } from "../../../plugin/handlers/Provider/configureProvider.js" +import { dedent } from "../../../util/string.js" +import type { KubernetesConfig } from "../config.js" +import { namespaceSchema } from "../config.js" +import { EPHEMERAL_KUBERNETES_PROVIDER_NAME } from "./ephemeral.js" +import { DEFAULT_GARDEN_CLOUD_DOMAIN } from "../../../constants.js" export const configSchema = () => providerConfigBaseSchema() diff --git a/core/src/plugins/kubernetes/ephemeral/ephemeral.ts b/core/src/plugins/kubernetes/ephemeral/ephemeral.ts index 7bfedcb4ac..abeca190b5 100644 --- a/core/src/plugins/kubernetes/ephemeral/ephemeral.ts +++ b/core/src/plugins/kubernetes/ephemeral/ephemeral.ts @@ -6,11 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { configureProvider, configSchema } from "./config" -import { createGardenPlugin } from "../../../plugin/plugin" -import { dedent } from "../../../util/string" -import { KubernetesProvider } from "../config" -import { joi, joiIdentifier } from "../../../config/common" +import { configureProvider, configSchema } from "./config.js" +import { createGardenPlugin } from "../../../plugin/plugin.js" +import { dedent } from "../../../util/string.js" +import type { KubernetesProvider } from "../config.js" +import { joi, joiIdentifier } from "../../../config/common.js" const providerUrl = "./kubernetes.md" export const EPHEMERAL_KUBERNETES_PROVIDER_NAME = "ephemeral-kubernetes" diff --git a/core/src/plugins/kubernetes/helm/action.ts b/core/src/plugins/kubernetes/helm/action.ts index f910f31c70..b9a5171121 100644 --- a/core/src/plugins/kubernetes/helm/action.ts +++ b/core/src/plugins/kubernetes/helm/action.ts @@ -6,20 +6,21 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { DeployActionDefinition } from "../../../plugin/action-types" -import { dedent } from "../../../util/string" -import { KubernetesPluginContext } from "../config" -import { getPortForwardHandler } from "../port-forward" -import { getActionNamespace } from "../namespace" -import { HelmDeployAction, helmDeploySchema } from "./config" -import { deleteHelmDeploy, helmDeploy } from "./deployment" -import { execInHelmDeploy } from "./exec" -import { getHelmDeployLogs } from "./logs" -import { getHelmDeployStatus } from "./status" +import type { DeployActionDefinition } from "../../../plugin/action-types.js" +import { dedent } from "../../../util/string.js" +import type { KubernetesPluginContext } from "../config.js" +import { getPortForwardHandler } from "../port-forward.js" +import { getActionNamespace } from "../namespace.js" +import type { HelmDeployAction } from "./config.js" +import { helmDeploySchema } from "./config.js" +import { deleteHelmDeploy, helmDeploy } from "./deployment.js" +import { execInHelmDeploy } from "./exec.js" +import { getHelmDeployLogs } from "./logs.js" +import { getHelmDeployStatus } from "./status.js" import { posix } from "path" -import { k8sContainerStopSync } from "../container/sync" -import { helmGetSyncStatus, helmStartSync } from "./sync" -import { makeDocsLink } from "../../../docs/common" +import { k8sContainerStopSync } from "../container/sync.js" +import { helmGetSyncStatus, helmStartSync } from "./sync.js" +import { makeDocsLink } from "../../../docs/common.js" export const getHelmDeployDocs = () => dedent` Specify a Helm chart (either in your repository or remote from a registry) to deploy. diff --git a/core/src/plugins/kubernetes/helm/common.ts b/core/src/plugins/kubernetes/helm/common.ts index f600ef7865..8e7629e6a1 100644 --- a/core/src/plugins/kubernetes/helm/common.ts +++ b/core/src/plugins/kubernetes/helm/common.ts @@ -6,28 +6,29 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { flatten, isPlainObject } from "lodash" +import { flatten, isPlainObject } from "lodash-es" import { join, resolve } from "path" -import { pathExists, readFile, remove, writeFile } from "fs-extra" +import fsExtra from "fs-extra" +const { pathExists, readFile, remove, writeFile } = fsExtra import tempy from "tempy" -import cryptoRandomString = require("crypto-random-string") +import cryptoRandomString from "crypto-random-string" -import { PluginContext } from "../../../plugin-context" -import { Log } from "../../../logger/log-entry" -import { getActionNamespace } from "../namespace" -import { HelmRuntimeAction, KubernetesResource } from "../types" +import type { PluginContext } from "../../../plugin-context.js" +import type { Log } from "../../../logger/log-entry.js" +import { getActionNamespace } from "../namespace.js" +import type { HelmRuntimeAction, KubernetesResource } from "../types.js" import { loadAll } from "js-yaml" -import { helm } from "./helm-cli" -import { HelmModule } from "./module-config" -import { ConfigurationError, PluginError } from "../../../exceptions" -import { deline, tailString } from "../../../util/string" -import { flattenResources, getAnnotation } from "../util" -import { KubernetesPluginContext } from "../config" -import { RunResult } from "../../../plugin/base" -import { MAX_RUN_RESULT_LOG_LENGTH } from "../constants" -import { safeDumpYaml } from "../../../util/serialization" -import { HelmDeployAction } from "./config" -import { Resolved } from "../../../actions/types" +import { helm } from "./helm-cli.js" +import type { HelmModule } from "./module-config.js" +import { ConfigurationError, PluginError } from "../../../exceptions.js" +import { deline, tailString } from "../../../util/string.js" +import { flattenResources, getAnnotation } from "../util.js" +import type { KubernetesPluginContext } from "../config.js" +import type { RunResult } from "../../../plugin/base.js" +import { MAX_RUN_RESULT_LOG_LENGTH } from "../constants.js" +import { safeDumpYaml } from "../../../util/serialization.js" +import type { HelmDeployAction } from "./config.js" +import type { Resolved } from "../../../actions/types.js" export const helmChartYamlFilename = "Chart.yaml" diff --git a/core/src/plugins/kubernetes/helm/config.ts b/core/src/plugins/kubernetes/helm/config.ts index ffef33a4d6..6fc70fa810 100644 --- a/core/src/plugins/kubernetes/helm/config.ts +++ b/core/src/plugins/kubernetes/helm/config.ts @@ -6,32 +6,26 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { - createSchema, - DeepPrimitiveMap, - joi, - joiIdentifier, - joiPrimitive, - joiSparseArray, -} from "../../../config/common" +import type { DeepPrimitiveMap } from "../../../config/common.js" +import { createSchema, joi, joiIdentifier, joiPrimitive, joiSparseArray } from "../../../config/common.js" +import type { KubernetesCommonRunSpec, KubernetesTargetResourceSpec, PortForwardSpec } from "../config.js" import { kubernetesCommonRunSchemaKeys, - KubernetesCommonRunSpec, - KubernetesTargetResourceSpec, namespaceNameSchema, - PortForwardSpec, portForwardsSchema, runPodResourceSchema, targetResourceSpecSchema, -} from "../config" -import { kubernetesDeploySyncSchema, KubernetesDeploySyncSpec } from "../sync" -import { DeployAction, DeployActionConfig } from "../../../actions/deploy" -import { dedent, deline } from "../../../util/string" -import { kubernetesLocalModeSchema, KubernetesLocalModeSpec } from "../local-mode" -import { RunActionConfig, RunAction } from "../../../actions/run" -import { TestAction, TestActionConfig } from "../../../actions/test" -import { ObjectSchema } from "@hapi/joi" -import { KubernetesRunOutputs } from "../kubernetes-type/config" +} from "../config.js" +import type { KubernetesDeploySyncSpec } from "../sync.js" +import { kubernetesDeploySyncSchema } from "../sync.js" +import type { DeployAction, DeployActionConfig } from "../../../actions/deploy.js" +import { dedent, deline } from "../../../util/string.js" +import type { KubernetesLocalModeSpec } from "../local-mode.js" +import { kubernetesLocalModeSchema } from "../local-mode.js" +import type { RunActionConfig, RunAction } from "../../../actions/run.js" +import type { TestAction, TestActionConfig } from "../../../actions/test.js" +import type { ObjectSchema } from "@hapi/joi" +import type { KubernetesRunOutputs } from "../kubernetes-type/config.js" // DEPLOY // diff --git a/core/src/plugins/kubernetes/helm/deployment.ts b/core/src/plugins/kubernetes/helm/deployment.ts index bc91dc8157..0e02641fbc 100644 --- a/core/src/plugins/kubernetes/helm/deployment.ts +++ b/core/src/plugins/kubernetes/helm/deployment.ts @@ -6,22 +6,23 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { waitForResources } from "../status/status" -import { helm } from "./helm-cli" -import { filterManifests, getReleaseName, getValueArgs, prepareManifests, prepareTemplates } from "./common" -import { gardenCloudAECPauseAnnotation, getPausedResources, getReleaseStatus, getRenderedResources } from "./status" -import { apply, deleteResources } from "../kubectl" -import { KubernetesPluginContext } from "../config" -import { getForwardablePorts, killPortForwards } from "../port-forward" -import { getActionNamespace, getActionNamespaceStatus } from "../namespace" -import { configureSyncMode } from "../sync" -import { KubeApi } from "../api" -import { ConfiguredLocalMode, configureLocalMode, startServiceInLocalMode } from "../local-mode" -import { DeployActionHandler } from "../../../plugin/action-types" -import { HelmDeployAction } from "./config" -import { isEmpty } from "lodash" -import { getK8sIngresses } from "../status/ingress" -import { toGardenError } from "../../../exceptions" +import { waitForResources } from "../status/status.js" +import { helm } from "./helm-cli.js" +import { filterManifests, getReleaseName, getValueArgs, prepareManifests, prepareTemplates } from "./common.js" +import { gardenCloudAECPauseAnnotation, getPausedResources, getReleaseStatus, getRenderedResources } from "./status.js" +import { apply, deleteResources } from "../kubectl.js" +import type { KubernetesPluginContext } from "../config.js" +import { getForwardablePorts, killPortForwards } from "../port-forward.js" +import { getActionNamespace, getActionNamespaceStatus } from "../namespace.js" +import { configureSyncMode } from "../sync.js" +import { KubeApi } from "../api.js" +import type { ConfiguredLocalMode } from "../local-mode.js" +import { configureLocalMode, startServiceInLocalMode } from "../local-mode.js" +import type { DeployActionHandler } from "../../../plugin/action-types.js" +import type { HelmDeployAction } from "./config.js" +import { isEmpty } from "lodash-es" +import { getK8sIngresses } from "../status/ingress.js" +import { toGardenError } from "../../../exceptions.js" export const helmDeploy: DeployActionHandler<"deploy", HelmDeployAction> = async (params) => { const { ctx, action, log, force } = params diff --git a/core/src/plugins/kubernetes/helm/exec.ts b/core/src/plugins/kubernetes/helm/exec.ts index 9e7101b759..9cf077f9dd 100644 --- a/core/src/plugins/kubernetes/helm/exec.ts +++ b/core/src/plugins/kubernetes/helm/exec.ts @@ -6,15 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { includes } from "lodash" -import { ConfigurationError, DeploymentError } from "../../../exceptions" -import { getAppNamespace } from "../namespace" -import { KubernetesPluginContext } from "../config" -import { execInWorkload, getTargetResource } from "../util" -import { getHelmDeployStatus } from "./status" -import { getChartResources } from "./common" -import { DeployActionHandler } from "../../../plugin/action-types" -import { HelmDeployAction } from "./config" +import { includes } from "lodash-es" +import { ConfigurationError, DeploymentError } from "../../../exceptions.js" +import { getAppNamespace } from "../namespace.js" +import type { KubernetesPluginContext } from "../config.js" +import { execInWorkload, getTargetResource } from "../util.js" +import { getHelmDeployStatus } from "./status.js" +import { getChartResources } from "./common.js" +import type { DeployActionHandler } from "../../../plugin/action-types.js" +import type { HelmDeployAction } from "./config.js" import chalk from "chalk" export const execInHelmDeploy: DeployActionHandler<"exec", HelmDeployAction> = async (params) => { diff --git a/core/src/plugins/kubernetes/helm/handlers.ts b/core/src/plugins/kubernetes/helm/handlers.ts index ef21746256..877721d9c7 100644 --- a/core/src/plugins/kubernetes/helm/handlers.ts +++ b/core/src/plugins/kubernetes/helm/handlers.ts @@ -6,20 +6,21 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ModuleActionHandlers } from "../../../plugin/plugin" -import { HelmModule, configureHelmModule, HelmService } from "./module-config" -import { getBaseModule } from "./common" -import { ExecBuildConfig } from "../../exec/build" -import { HelmActionConfig, HelmDeployConfig, HelmPodTestConfig } from "./config" -import { getServiceResourceSpec } from "../util" -import { jsonMerge } from "../../../util/util" +import type { ModuleActionHandlers } from "../../../plugin/plugin.js" +import type { HelmModule, HelmService } from "./module-config.js" +import { configureHelmModule } from "./module-config.js" +import { getBaseModule } from "./common.js" +import type { ExecBuildConfig } from "../../exec/build.js" +import type { HelmActionConfig, HelmDeployConfig, HelmPodTestConfig } from "./config.js" +import { getServiceResourceSpec } from "../util.js" +import { jsonMerge } from "../../../util/util.js" import cloneDeep from "fast-copy" -import { omit } from "lodash" -import { DeepPrimitiveMap } from "../../../config/common" -import { convertServiceResource } from "../kubernetes-type/common" -import { ConvertModuleParams } from "../../../plugin/handlers/Module/convert" -import { makeDummyBuild } from "../../../resolve-module" -import { convertKubernetesModuleDevModeSpec } from "../sync" +import { omit } from "lodash-es" +import type { DeepPrimitiveMap } from "../../../config/common.js" +import { convertServiceResource } from "../kubernetes-type/common.js" +import type { ConvertModuleParams } from "../../../plugin/handlers/Module/convert.js" +import { makeDummyBuild } from "../../../resolve-module.js" +import { convertKubernetesModuleDevModeSpec } from "../sync.js" export const helmModuleHandlers: Partial> = { configure: configureHelmModule, diff --git a/core/src/plugins/kubernetes/helm/helm-cli.ts b/core/src/plugins/kubernetes/helm/helm-cli.ts index 76e0f09e19..d6a5e29439 100644 --- a/core/src/plugins/kubernetes/helm/helm-cli.ts +++ b/core/src/plugins/kubernetes/helm/helm-cli.ts @@ -6,12 +6,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Log } from "../../../logger/log-entry" -import { KubernetesPluginContext } from "../config" -import { StringMap } from "../../../config/common" -import { PluginToolSpec } from "../../../plugin/tools" +import type { Log } from "../../../logger/log-entry.js" +import type { KubernetesPluginContext } from "../config.js" +import type { StringMap } from "../../../config/common.js" +import type { PluginToolSpec } from "../../../plugin/tools.js" import split2 from "split2" -import { Dictionary, pickBy } from "lodash" +import { pickBy } from "lodash-es" + +interface Dictionary { + [index: string]: T +} export const HELM_VERSION = "3.12.0" diff --git a/core/src/plugins/kubernetes/helm/helm-pod.ts b/core/src/plugins/kubernetes/helm/helm-pod.ts index 1d83215d06..2022642c7b 100644 --- a/core/src/plugins/kubernetes/helm/helm-pod.ts +++ b/core/src/plugins/kubernetes/helm/helm-pod.ts @@ -7,21 +7,22 @@ */ import dedent from "dedent" -import { runResultToActionState } from "../../../actions/base" -import { Resolved } from "../../../actions/types" -import { ConfigurationError } from "../../../exceptions" -import { Log } from "../../../logger/log-entry" -import { RunActionDefinition, TestActionDefinition } from "../../../plugin/action-types" -import { CommonRunParams } from "../../../plugin/handlers/Run/run" -import { KubernetesPluginContext } from "../config" -import { getActionNamespaceStatus } from "../namespace" -import { k8sGetRunResult, storeRunResult } from "../run-results" -import { getResourceContainer, getResourcePodSpec, getTargetResource, makePodName } from "../util" -import { HelmPodRunAction, helmPodRunSchema, HelmPodTestAction } from "./config" -import { runAndCopy } from "../run" -import { filterManifests, prepareManifests, prepareTemplates } from "./common" -import { storeTestResult } from "../test-results" -import { kubernetesRunOutputsSchema } from "../kubernetes-type/config" +import { runResultToActionState } from "../../../actions/base.js" +import type { Resolved } from "../../../actions/types.js" +import { ConfigurationError } from "../../../exceptions.js" +import type { Log } from "../../../logger/log-entry.js" +import type { RunActionDefinition, TestActionDefinition } from "../../../plugin/action-types.js" +import type { CommonRunParams } from "../../../plugin/handlers/Run/run.js" +import type { KubernetesPluginContext } from "../config.js" +import { getActionNamespaceStatus } from "../namespace.js" +import { k8sGetRunResult, storeRunResult } from "../run-results.js" +import { getResourceContainer, getResourcePodSpec, getTargetResource, makePodName } from "../util.js" +import type { HelmPodRunAction, HelmPodTestAction } from "./config.js" +import { helmPodRunSchema } from "./config.js" +import { runAndCopy } from "../run.js" +import { filterManifests, prepareManifests, prepareTemplates } from "./common.js" +import { storeTestResult } from "../test-results.js" +import { kubernetesRunOutputsSchema } from "../kubernetes-type/config.js" const helmRunPodOutputsSchema = kubernetesRunOutputsSchema const helmTestPodOutputsSchema = helmRunPodOutputsSchema @@ -133,7 +134,6 @@ export async function runOrTestWithChart( const { ctx, action, log, namespace } = params // Get the container spec to use for running const spec = action.getSpec() - const version = action.versionString() const resourceSpec = spec.resource diff --git a/core/src/plugins/kubernetes/helm/logs.ts b/core/src/plugins/kubernetes/helm/logs.ts index 1ce47397ab..eb7307798f 100644 --- a/core/src/plugins/kubernetes/helm/logs.ts +++ b/core/src/plugins/kubernetes/helm/logs.ts @@ -6,14 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { streamK8sLogs } from "../logs" -import { KubernetesPluginContext } from "../config" -import { getReleaseName } from "./common" -import { getActionNamespace } from "../namespace" -import { getDeployedChartResources } from "./status" -import { sleep } from "../../../util/util" -import { DeployActionHandler } from "../../../plugin/action-types" -import { HelmDeployAction } from "./config" +import { streamK8sLogs } from "../logs.js" +import type { KubernetesPluginContext } from "../config.js" +import { getReleaseName } from "./common.js" +import { getActionNamespace } from "../namespace.js" +import { getDeployedChartResources } from "./status.js" +import { sleep } from "../../../util/util.js" +import type { DeployActionHandler } from "../../../plugin/action-types.js" +import type { HelmDeployAction } from "./config.js" export const getHelmDeployLogs: DeployActionHandler<"getLogs", HelmDeployAction> = async (params) => { const { ctx, action, log } = params diff --git a/core/src/plugins/kubernetes/helm/module-config.ts b/core/src/plugins/kubernetes/helm/module-config.ts index 667d760e20..69e8e962f7 100644 --- a/core/src/plugins/kubernetes/helm/module-config.ts +++ b/core/src/plugins/kubernetes/helm/module-config.ts @@ -6,40 +6,40 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +import type { DeepPrimitiveMap } from "../../../config/common.js" import { - DeepPrimitiveMap, joi, joiIdentifier, joiModuleIncludeDirective, joiSparseArray, joiUserIdentifier, -} from "../../../config/common" -import { GardenModule } from "../../../types/module" -import { ConfigurationError } from "../../../exceptions" -import { dedent, deline } from "../../../util/string" -import { GardenService } from "../../../types/service" -import { ContainerModule } from "../../container/moduleConfig" -import { baseBuildSpecSchema } from "../../../config/module" -import { ConfigureModuleParams, ConfigureModuleResult } from "../../../plugin/handlers/Module/configure" +} from "../../../config/common.js" +import type { GardenModule } from "../../../types/module.js" +import { ConfigurationError } from "../../../exceptions.js" +import { dedent, deline } from "../../../util/string.js" +import type { GardenService } from "../../../types/service.js" +import type { ContainerModule } from "../../container/moduleConfig.js" +import { baseBuildSpecSchema } from "../../../config/module.js" +import type { ConfigureModuleParams, ConfigureModuleResult } from "../../../plugin/handlers/Module/configure.js" +import type { KubernetesTaskSpec, KubernetesTestSpec, PortForwardSpec, ServiceResourceSpec } from "../config.js" import { containerModuleSchema, kubernetesTaskSchema, - KubernetesTaskSpec, kubernetesTestSchema, - KubernetesTestSpec, - PortForwardSpec, serviceResourceDescription, serviceResourceSchema, - ServiceResourceSpec, -} from "../config" +} from "../config.js" import { join, posix } from "path" -import { runPodSpecIncludeFields } from "../run" -import { omit } from "lodash" -import { kubernetesModuleSyncSchema, KubernetesModuleDevModeSpec } from "../sync" -import { helmChartNameSchema, helmChartRepoSchema, helmChartVersionSchema, helmCommonSchemaKeys } from "./config" -import { pathExists } from "fs-extra" -import { helmChartYamlFilename } from "./common" -import { kubernetesLocalModeSchema, KubernetesLocalModeSpec } from "../local-mode" +import { runPodSpecIncludeFields } from "../run.js" +import { omit } from "lodash-es" +import type { KubernetesModuleDevModeSpec } from "../sync.js" +import { kubernetesModuleSyncSchema } from "../sync.js" +import { helmChartNameSchema, helmChartRepoSchema, helmChartVersionSchema, helmCommonSchemaKeys } from "./config.js" +import fsExtra from "fs-extra" +const { pathExists } = fsExtra +import { helmChartYamlFilename } from "./common.js" +import type { KubernetesLocalModeSpec } from "../local-mode.js" +import { kubernetesLocalModeSchema } from "../local-mode.js" export const defaultHelmTimeout = 300 diff --git a/core/src/plugins/kubernetes/helm/status.ts b/core/src/plugins/kubernetes/helm/status.ts index 92e7b7db70..ef099a4ce9 100644 --- a/core/src/plugins/kubernetes/helm/status.ts +++ b/core/src/plugins/kubernetes/helm/status.ts @@ -6,25 +6,25 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ForwardablePort, ServiceIngress, DeployState, ServiceStatus } from "../../../types/service" -import { Log } from "../../../logger/log-entry" -import { helm } from "./helm-cli" -import { getReleaseName, loadTemplate } from "./common" -import { KubernetesPluginContext } from "../config" -import { getForwardablePorts } from "../port-forward" -import { KubernetesResource, KubernetesServerResource } from "../types" -import { getActionNamespace } from "../namespace" -import { getTargetResource, isWorkload } from "../util" -import { getDeployedResource, isConfiguredForLocalMode } from "../status/status" -import { KubeApi } from "../api" -import { getK8sIngresses } from "../status/ingress" -import { DeployActionHandler } from "../../../plugin/action-types" -import { HelmDeployAction } from "./config" -import { ActionMode, Resolved } from "../../../actions/types" -import { deployStateToActionState } from "../../../plugin/handlers/Deploy/get-status" -import { isTruthy } from "../../../util/util" -import { ChildProcessError } from "../../../exceptions" -import { gardenAnnotationKey } from "../../../util/string" +import type { ForwardablePort, ServiceIngress, DeployState, ServiceStatus } from "../../../types/service.js" +import type { Log } from "../../../logger/log-entry.js" +import { helm } from "./helm-cli.js" +import { getReleaseName, loadTemplate } from "./common.js" +import type { KubernetesPluginContext } from "../config.js" +import { getForwardablePorts } from "../port-forward.js" +import type { KubernetesResource, KubernetesServerResource } from "../types.js" +import { getActionNamespace } from "../namespace.js" +import { getTargetResource, isWorkload } from "../util.js" +import { getDeployedResource, isConfiguredForLocalMode } from "../status/status.js" +import { KubeApi } from "../api.js" +import { getK8sIngresses } from "../status/ingress.js" +import type { DeployActionHandler } from "../../../plugin/action-types.js" +import type { HelmDeployAction } from "./config.js" +import type { ActionMode, Resolved } from "../../../actions/types.js" +import { deployStateToActionState } from "../../../plugin/handlers/Deploy/get-status.js" +import { isTruthy } from "../../../util/util.js" +import { ChildProcessError } from "../../../exceptions.js" +import { gardenAnnotationKey } from "../../../util/string.js" export const gardenCloudAECPauseAnnotation = gardenAnnotationKey("aec-status") diff --git a/core/src/plugins/kubernetes/helm/sync.ts b/core/src/plugins/kubernetes/helm/sync.ts index 5597431078..ea399f2446 100644 --- a/core/src/plugins/kubernetes/helm/sync.ts +++ b/core/src/plugins/kubernetes/helm/sync.ts @@ -6,13 +6,13 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { DeployActionHandler } from "../../../plugin/action-types" -import { KubernetesPluginContext } from "../config" -import { getActionNamespace } from "../namespace" -import { getSyncStatus, startSyncs } from "../sync" -import { getReleaseName } from "./common" -import { HelmDeployAction } from "./config" -import { getDeployedChartResources } from "./status" +import type { DeployActionHandler } from "../../../plugin/action-types.js" +import type { KubernetesPluginContext } from "../config.js" +import { getActionNamespace } from "../namespace.js" +import { getSyncStatus, startSyncs } from "../sync.js" +import { getReleaseName } from "./common.js" +import type { HelmDeployAction } from "./config.js" +import { getDeployedChartResources } from "./status.js" export const helmStartSync: DeployActionHandler<"startSync", HelmDeployAction> = async (params) => { const { ctx, log, action } = params diff --git a/core/src/plugins/kubernetes/init.ts b/core/src/plugins/kubernetes/init.ts index dc306ed7f7..519980ae09 100644 --- a/core/src/plugins/kubernetes/init.ts +++ b/core/src/plugins/kubernetes/init.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { KubeApi, KubernetesError } from "./api" +import { KubeApi, KubernetesError } from "./api.js" import { getAppNamespace, prepareNamespaces, @@ -14,28 +14,38 @@ import { getSystemNamespace, getNamespaceStatus, clearNamespaceCache, -} from "./namespace" -import { KubernetesPluginContext, KubernetesConfig, KubernetesProvider, ProviderSecretRef } from "./config" -import { prepareSystemServices, getSystemServiceStatus, getSystemGarden } from "./system" -import { GetEnvironmentStatusParams, EnvironmentStatus } from "../../plugin/handlers/Provider/getEnvironmentStatus" -import { PrepareEnvironmentParams, PrepareEnvironmentResult } from "../../plugin/handlers/Provider/prepareEnvironment" -import { CleanupEnvironmentParams, CleanupEnvironmentResult } from "../../plugin/handlers/Provider/cleanupEnvironment" -import { millicpuToString, megabytesToString } from "./util" +} from "./namespace.js" +import type { KubernetesPluginContext, KubernetesConfig, KubernetesProvider, ProviderSecretRef } from "./config.js" +import { prepareSystemServices, getSystemServiceStatus, getSystemGarden } from "./system.js" +import type { + GetEnvironmentStatusParams, + EnvironmentStatus, +} from "../../plugin/handlers/Provider/getEnvironmentStatus.js" +import type { + PrepareEnvironmentParams, + PrepareEnvironmentResult, +} from "../../plugin/handlers/Provider/prepareEnvironment.js" +import type { + CleanupEnvironmentParams, + CleanupEnvironmentResult, +} from "../../plugin/handlers/Provider/cleanupEnvironment.js" +import { millicpuToString, megabytesToString } from "./util.js" import chalk from "chalk" -import { deline, dedent, gardenAnnotationKey } from "../../util/string" -import { combineStates, DeployState } from "../../types/service" -import { ConfigurationError } from "../../exceptions" -import { readSecret } from "./secrets" -import { systemDockerAuthSecretName, dockerAuthSecretKey } from "./constants" -import { V1IngressClass, V1Secret, V1Toleration } from "@kubernetes/client-node" -import { KubernetesResource } from "./types" -import { compareDeployedResources } from "./status/status" -import { PrimitiveMap } from "../../config/common" -import { mapValues, omit } from "lodash" -import { getIngressApiVersion, supportedIngressApiVersions } from "./container/ingress" -import { Log } from "../../logger/log-entry" -import { DeployStatusMap } from "../../plugin/handlers/Deploy/get-status" -import { isProviderEphemeralKubernetes } from "./ephemeral/ephemeral" +import { deline, dedent, gardenAnnotationKey } from "../../util/string.js" +import type { DeployState } from "../../types/service.js" +import { combineStates } from "../../types/service.js" +import { ConfigurationError } from "../../exceptions.js" +import { readSecret } from "./secrets.js" +import { systemDockerAuthSecretName, dockerAuthSecretKey } from "./constants.js" +import type { V1IngressClass, V1Secret, V1Toleration } from "@kubernetes/client-node" +import type { KubernetesResource } from "./types.js" +import { compareDeployedResources } from "./status/status.js" +import type { PrimitiveMap } from "../../config/common.js" +import { mapValues, omit } from "lodash-es" +import { getIngressApiVersion, supportedIngressApiVersions } from "./container/ingress.js" +import type { Log } from "../../logger/log-entry.js" +import type { DeployStatusMap } from "../../plugin/handlers/Deploy/get-status.js" +import { isProviderEphemeralKubernetes } from "./ephemeral/ephemeral.js" const dockerAuthSecretType = "kubernetes.io/dockerconfigjson" const dockerAuthDocsLink = ` @@ -309,7 +319,7 @@ export async function cleanupEnvironment({ await Promise.all( [namespace].map(async (ns) => { try { - const annotations = (await api.core.readNamespace(ns)).metadata.annotations || {} + const annotations = (await api.core.readNamespace({ name: ns })).metadata.annotations || {} return annotations[gardenAnnotationKey("generated")] === "true" ? ns : null } catch (err) { if (!(err instanceof KubernetesError)) { diff --git a/core/src/plugins/kubernetes/jib-container.ts b/core/src/plugins/kubernetes/jib-container.ts index bbd99ed0b7..bf0015d2a5 100644 --- a/core/src/plugins/kubernetes/jib-container.ts +++ b/core/src/plugins/kubernetes/jib-container.ts @@ -6,25 +6,31 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { mkdirp } from "fs-extra" +import fsExtra from "fs-extra" +const { mkdirp } = fsExtra import { resolve } from "path" import tar from "tar" -import { ConfigurationError, PluginError } from "../../exceptions" -import { ModuleActionHandlers } from "../../plugin/plugin" -import { makeTempDir } from "../../util/fs" -import { KubeApi } from "./api" -import { KubernetesPluginContext, KubernetesProvider } from "./config" -import { ensureBuildkit } from "./container/build/buildkit" -import { ensureUtilDeployment, syncToBuildSync, utilContainerName, utilDeploymentName } from "./container/build/common" -import { loadToLocalK8s } from "./container/build/local" -import { containerHandlers } from "./container/handlers" -import { getNamespaceStatus } from "./namespace" -import { PodRunner } from "./run" -import { getRunningDeploymentPod } from "./util" -import { BuildActionExtension, BuildActionParams } from "../../plugin/action-types" -import { ContainerBuildAction } from "../container/config" -import { buildkitDeploymentName } from "./constants" -import { naturalList } from "../../util/string" +import { ConfigurationError, PluginError } from "../../exceptions.js" +import type { ModuleActionHandlers } from "../../plugin/plugin.js" +import { makeTempDir } from "../../util/fs.js" +import { KubeApi } from "./api.js" +import type { KubernetesPluginContext, KubernetesProvider } from "./config.js" +import { ensureBuildkit } from "./container/build/buildkit.js" +import { + ensureUtilDeployment, + syncToBuildSync, + utilContainerName, + utilDeploymentName, +} from "./container/build/common.js" +import { loadToLocalK8s } from "./container/build/local.js" +import { containerHandlers } from "./container/handlers.js" +import { getNamespaceStatus } from "./namespace.js" +import { PodRunner } from "./run.js" +import { getRunningDeploymentPod } from "./util.js" +import type { BuildActionExtension, BuildActionParams } from "../../plugin/action-types.js" +import type { ContainerBuildAction } from "../container/config.js" +import { buildkitDeploymentName } from "./constants.js" +import { naturalList } from "../../util/string.js" export const jibContainerHandlers: Partial = { ...containerHandlers, diff --git a/core/src/plugins/kubernetes/kubectl.ts b/core/src/plugins/kubernetes/kubectl.ts index 880d6cc83d..a5fbe3694e 100644 --- a/core/src/plugins/kubernetes/kubectl.ts +++ b/core/src/plugins/kubernetes/kubectl.ts @@ -6,20 +6,24 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { encodeYamlMulti } from "../../util/serialization" -import { ExecParams, PluginTool } from "../../util/ext-tools" -import { Log } from "../../logger/log-entry" -import { KubernetesProvider } from "./config" -import { KubernetesResource } from "./types" -import { dedent } from "../../util/string" -import { getResourceKey, hashManifest } from "./util" -import { PluginToolSpec } from "../../plugin/tools" -import { PluginContext } from "../../plugin-context" -import { KUBECTL_RETRY_OPTS, KubeApi, KubernetesError } from "./api" -import { pathExists } from "fs-extra" -import { ChildProcessError, ConfigurationError } from "../../exceptions" -import { requestWithRetry, RetryOpts } from "./retry" -import { k8sManifestHashAnnotationKey } from "./status/status" +import { encodeYamlMulti } from "../../util/serialization.js" +import type { ExecParams } from "../../util/ext-tools.js" +import { PluginTool } from "../../util/ext-tools.js" +import type { Log } from "../../logger/log-entry.js" +import type { KubernetesProvider } from "./config.js" +import type { KubernetesResource } from "./types.js" +import { dedent } from "../../util/string.js" +import { getResourceKey, hashManifest } from "./util.js" +import type { PluginToolSpec } from "../../plugin/tools.js" +import type { PluginContext } from "../../plugin-context.js" +import type { KubeApi } from "./api.js" +import { KUBECTL_RETRY_OPTS, KubernetesError } from "./api.js" +import fsExtra from "fs-extra" +const { pathExists } = fsExtra +import { ChildProcessError, ConfigurationError } from "../../exceptions.js" +import type { RetryOpts } from "./retry.js" +import { requestWithRetry } from "./retry.js" +import { k8sManifestHashAnnotationKey } from "./status/status.js" // Corresponds to the default prune whitelist in `kubectl`. // See: https://github.com/kubernetes/kubectl/blob/master/pkg/cmd/apply/prune.go#L176-L192 diff --git a/core/src/plugins/kubernetes/kubernetes-type/common.ts b/core/src/plugins/kubernetes/kubernetes-type/common.ts index e58f2553f0..d5436d7859 100644 --- a/core/src/plugins/kubernetes/kubernetes-type/common.ts +++ b/core/src/plugins/kubernetes/kubernetes-type/common.ts @@ -7,30 +7,30 @@ */ import { basename, dirname, join, resolve } from "path" -import { pathExists, readFile } from "fs-extra" -import { flatten, isEmpty, keyBy, set } from "lodash" - -import { KubernetesModule } from "./module-config" -import { KubernetesResource } from "../types" -import { KubeApi } from "../api" -import { dedent, gardenAnnotationKey, naturalList, stableStringify } from "../../../util/string" -import { Log } from "../../../logger/log-entry" -import { PluginContext } from "../../../plugin-context" -import { ConfigurationError, GardenError, PluginError } from "../../../exceptions" -import { KubernetesPluginContext, KubernetesTargetResourceSpec, ServiceResourceSpec } from "../config" -import { HelmModule } from "../helm/module-config" -import { KubernetesDeployAction } from "./config" -import { CommonRunParams } from "../../../plugin/handlers/Run/run" -import { runAndCopy } from "../run" -import { getResourceContainer, getResourceKey, getResourcePodSpec, getTargetResource, makePodName } from "../util" -import { ActionMode, Resolved } from "../../../actions/types" -import { KubernetesPodRunAction, KubernetesPodTestAction } from "./kubernetes-pod" -import { V1ConfigMap } from "@kubernetes/client-node" +import fsExtra from "fs-extra" +const { pathExists, readFile } = fsExtra +import { flatten, isEmpty, keyBy, set } from "lodash-es" +import type { KubernetesModule } from "./module-config.js" +import type { KubernetesResource } from "../types.js" +import { KubeApi } from "../api.js" +import { dedent, gardenAnnotationKey, naturalList, stableStringify } from "../../../util/string.js" +import type { Log } from "../../../logger/log-entry.js" +import type { PluginContext } from "../../../plugin-context.js" +import { ConfigurationError, GardenError, PluginError } from "../../../exceptions.js" +import type { KubernetesPluginContext, KubernetesTargetResourceSpec, ServiceResourceSpec } from "../config.js" +import type { HelmModule } from "../helm/module-config.js" +import type { KubernetesDeployAction } from "./config.js" +import type { CommonRunParams } from "../../../plugin/handlers/Run/run.js" +import { runAndCopy } from "../run.js" +import { getResourceContainer, getResourceKey, getResourcePodSpec, getTargetResource, makePodName } from "../util.js" +import type { ActionMode, Resolved } from "../../../actions/types.js" +import type { KubernetesPodRunAction, KubernetesPodTestAction } from "./kubernetes-pod.js" +import type { V1ConfigMap } from "@kubernetes/client-node" import { glob } from "glob" import isGlob from "is-glob" import pFilter from "p-filter" -import { kubectl } from "../kubectl" -import { loadAndValidateYaml } from "../../../config/base" +import { kubectl } from "../kubectl.js" +import { loadAndValidateYaml } from "../../../config/base.js" /** * "DeployFile": Manifest has been read from one of the files declared in Garden Deploy `spec.files` @@ -538,7 +538,6 @@ export async function runOrTestWithPod( const { ctx, action, log, namespace } = params // Get the container spec to use for running const spec = action.getSpec() - const version = action.versionString() let podSpec = spec.podSpec let container = spec.podSpec?.containers[0] diff --git a/core/src/plugins/kubernetes/kubernetes-type/config.ts b/core/src/plugins/kubernetes/kubernetes-type/config.ts index b116b3c28f..f0ab0a6fe5 100644 --- a/core/src/plugins/kubernetes/kubernetes-type/config.ts +++ b/core/src/plugins/kubernetes/kubernetes-type/config.ts @@ -6,34 +6,32 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { joi, joiSparseArray } from "../../../config/common" -import { - portForwardsSchema, - PortForwardSpec, - KubernetesTargetResourceSpec, - k8sDeploymentTimeoutSchema, - namespaceNameSchema, -} from "../config" -import { kubernetesDeploySyncSchema, KubernetesDeploySyncSpec } from "../sync" -import { KubernetesKustomizeSpec, kustomizeSpecSchema } from "./kustomize" -import type { KubernetesPatchResource, KubernetesResource } from "../types" -import type { DeployAction, DeployActionConfig } from "../../../actions/deploy" -import { defaultTargetSchema } from "../helm/config" +import { joi, joiSparseArray } from "../../../config/common.js" +import type { PortForwardSpec, KubernetesTargetResourceSpec } from "../config.js" +import { portForwardsSchema, k8sDeploymentTimeoutSchema, namespaceNameSchema } from "../config.js" +import type { KubernetesDeploySyncSpec } from "../sync.js" +import { kubernetesDeploySyncSchema } from "../sync.js" +import type { KubernetesKustomizeSpec } from "./kustomize.js" +import { kustomizeSpecSchema } from "./kustomize.js" +import type { KubernetesPatchResource, KubernetesResource } from "../types.js" +import type { DeployAction, DeployActionConfig } from "../../../actions/deploy.js" +import { defaultTargetSchema } from "../helm/config.js" import type { KubernetesPodRunAction, KubernetesPodRunActionConfig, KubernetesPodTestAction, KubernetesPodTestActionConfig, -} from "./kubernetes-pod" -import { kubernetesLocalModeSchema, KubernetesLocalModeSpec } from "../local-mode" -import { containerRunOutputSchema } from "../../container/config" -import { +} from "./kubernetes-pod.js" +import type { KubernetesLocalModeSpec } from "../local-mode.js" +import { kubernetesLocalModeSchema } from "../local-mode.js" +import { containerRunOutputSchema } from "../../container/config.js" +import type { KubernetesExecRunAction, KubernetesExecRunActionConfig, KubernetesExecTestAction, KubernetesExecTestActionConfig, -} from "./kubernetes-exec" -import { dedent } from "../../../util/string" +} from "./kubernetes-exec.js" +import { dedent } from "../../../util/string.js" export interface KubernetesTypeCommonDeploySpec { files: string[] diff --git a/core/src/plugins/kubernetes/kubernetes-type/deploy.ts b/core/src/plugins/kubernetes/kubernetes-type/deploy.ts index 329249b2d1..75a66562d0 100644 --- a/core/src/plugins/kubernetes/kubernetes-type/deploy.ts +++ b/core/src/plugins/kubernetes/kubernetes-type/deploy.ts @@ -6,25 +6,26 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { DeployActionDefinition } from "../../../plugin/action-types" -import { dedent } from "../../../util/string" -import { KubernetesPluginContext } from "../config" -import { getPortForwardHandler } from "../port-forward" -import { getActionNamespace } from "../namespace" -import { KubernetesDeployAction, kubernetesDeploySchema } from "./config" -import { execInKubernetesDeploy } from "./exec" +import type { DeployActionDefinition } from "../../../plugin/action-types.js" +import { dedent } from "../../../util/string.js" +import type { KubernetesPluginContext } from "../config.js" +import { getPortForwardHandler } from "../port-forward.js" +import { getActionNamespace } from "../namespace.js" +import type { KubernetesDeployAction } from "./config.js" +import { kubernetesDeploySchema } from "./config.js" +import { execInKubernetesDeploy } from "./exec.js" import { deleteKubernetesDeploy, getKubernetesDeployLogs, getKubernetesDeployStatus, kubernetesDeploy, -} from "./handlers" -import { ConfigurationError, GardenError } from "../../../exceptions" -import { uniq } from "lodash" -import { DOCS_BASE_URL } from "../../../constants" -import { kubernetesGetSyncStatus, kubernetesStartSync } from "./sync" -import { k8sContainerStopSync } from "../container/sync" -import { isTruthy } from "../../../util/util" +} from "./handlers.js" +import { ConfigurationError, GardenError } from "../../../exceptions.js" +import { uniq } from "lodash-es" +import { DOCS_BASE_URL } from "../../../constants.js" +import { kubernetesGetSyncStatus, kubernetesStartSync } from "./sync.js" +import { k8sContainerStopSync } from "../container/sync.js" +import { isTruthy } from "../../../util/util.js" export const kubernetesDeployDocs = dedent` Specify one or more Kubernetes manifests to deploy. diff --git a/core/src/plugins/kubernetes/kubernetes-type/exec.ts b/core/src/plugins/kubernetes/kubernetes-type/exec.ts index 4de60eefcc..d7f97451cc 100644 --- a/core/src/plugins/kubernetes/kubernetes-type/exec.ts +++ b/core/src/plugins/kubernetes/kubernetes-type/exec.ts @@ -6,14 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { includes } from "lodash" -import { ConfigurationError, DeploymentError } from "../../../exceptions" -import { getAppNamespace } from "../namespace" -import { KubernetesPluginContext } from "../config" -import { execInWorkload, getTargetResource } from "../util" -import { DeployActionHandler } from "../../../plugin/action-types" -import { KubernetesDeployAction } from "./config" -import { getKubernetesDeployStatus } from "./handlers" +import { includes } from "lodash-es" +import { ConfigurationError, DeploymentError } from "../../../exceptions.js" +import { getAppNamespace } from "../namespace.js" +import type { KubernetesPluginContext } from "../config.js" +import { execInWorkload, getTargetResource } from "../util.js" +import type { DeployActionHandler } from "../../../plugin/action-types.js" +import type { KubernetesDeployAction } from "./config.js" +import { getKubernetesDeployStatus } from "./handlers.js" import chalk from "chalk" export const execInKubernetesDeploy: DeployActionHandler<"exec", KubernetesDeployAction> = async (params) => { diff --git a/core/src/plugins/kubernetes/kubernetes-type/handlers.ts b/core/src/plugins/kubernetes/kubernetes-type/handlers.ts index 6ead60a49f..70b6eea48b 100644 --- a/core/src/plugins/kubernetes/kubernetes-type/handlers.ts +++ b/core/src/plugins/kubernetes/kubernetes-type/handlers.ts @@ -6,46 +6,46 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { isEmpty, omit, partition, uniq } from "lodash" -import type { ModuleActionHandlers } from "../../../plugin/plugin" -import { DeployState, ForwardablePort, ServiceStatus } from "../../../types/service" -import { gardenAnnotationKey } from "../../../util/string" -import { KubeApi } from "../api" -import type { KubernetesPluginContext, KubernetesProvider } from "../config" -import { configureSyncMode, convertKubernetesModuleDevModeSpec } from "../sync" -import { apply, deleteObjectsBySelector } from "../kubectl" -import { streamK8sLogs } from "../logs" -import { getActionNamespace, getActionNamespaceStatus } from "../namespace" -import { getForwardablePorts, killPortForwards } from "../port-forward" -import { getK8sIngresses } from "../status/ingress" +import { isEmpty, omit, partition, uniq } from "lodash-es" +import type { ModuleActionHandlers } from "../../../plugin/plugin.js" +import type { DeployState, ForwardablePort, ServiceStatus } from "../../../types/service.js" +import { gardenAnnotationKey } from "../../../util/string.js" +import { KubeApi } from "../api.js" +import type { KubernetesPluginContext, KubernetesProvider } from "../config.js" +import { configureSyncMode, convertKubernetesModuleDevModeSpec } from "../sync.js" +import { apply, deleteObjectsBySelector } from "../kubectl.js" +import { streamK8sLogs } from "../logs.js" +import { getActionNamespace, getActionNamespaceStatus } from "../namespace.js" +import { getForwardablePorts, killPortForwards } from "../port-forward.js" +import { getK8sIngresses } from "../status/ingress.js" +import type { ResourceStatus } from "../status/status.js" import { getDeployedResource, k8sManifestHashAnnotationKey, resolveResourceStatus, resolveResourceStatuses, - ResourceStatus, waitForResources, -} from "../status/status" -import type { BaseResource, KubernetesResource, KubernetesServerResource, SyncableResource } from "../types" +} from "../status/status.js" +import type { BaseResource, KubernetesResource, KubernetesServerResource, SyncableResource } from "../types.js" +import type { ManifestMetadata, ParsedMetadataManifestData } from "./common.js" import { convertServiceResource, gardenNamespaceAnnotationValue, getManifests, getMetadataManifest, - ManifestMetadata, - ParsedMetadataManifestData, parseMetadataResource, -} from "./common" -import { configureKubernetesModule, KubernetesModule } from "./module-config" -import { configureLocalMode, startServiceInLocalMode } from "../local-mode" -import type { ExecBuildConfig } from "../../exec/build" -import type { KubernetesActionConfig, KubernetesDeployAction, KubernetesDeployActionConfig } from "./config" -import type { DeployActionHandler } from "../../../plugin/action-types" -import type { ActionLog } from "../../../logger/log-entry" -import type { ActionMode, Resolved } from "../../../actions/types" -import { deployStateToActionState } from "../../../plugin/handlers/Deploy/get-status" -import { ResolvedDeployAction } from "../../../actions/deploy" -import { isSha256 } from "../../../util/hashing" +} from "./common.js" +import type { KubernetesModule } from "./module-config.js" +import { configureKubernetesModule } from "./module-config.js" +import { configureLocalMode, startServiceInLocalMode } from "../local-mode.js" +import type { ExecBuildConfig } from "../../exec/build.js" +import type { KubernetesActionConfig, KubernetesDeployAction, KubernetesDeployActionConfig } from "./config.js" +import type { DeployActionHandler } from "../../../plugin/action-types.js" +import type { ActionLog } from "../../../logger/log-entry.js" +import type { ActionMode, Resolved } from "../../../actions/types.js" +import { deployStateToActionState } from "../../../plugin/handlers/Deploy/get-status.js" +import type { ResolvedDeployAction } from "../../../actions/deploy.js" +import { isSha256 } from "../../../util/hashing.js" export const kubernetesHandlers: Partial> = { configure: configureKubernetesModule, diff --git a/core/src/plugins/kubernetes/kubernetes-type/kubernetes-exec.ts b/core/src/plugins/kubernetes/kubernetes-type/kubernetes-exec.ts index 42c1debbb9..affa036607 100644 --- a/core/src/plugins/kubernetes/kubernetes-type/kubernetes-exec.ts +++ b/core/src/plugins/kubernetes/kubernetes-type/kubernetes-exec.ts @@ -6,31 +6,28 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ObjectSchema } from "@hapi/joi" +import type { ObjectSchema } from "@hapi/joi" import chalk from "chalk" -import { runResultToActionState } from "../../../actions/base" -import { RunAction, RunActionConfig } from "../../../actions/run" -import { TestAction, TestActionConfig } from "../../../actions/test" -import { Resolved } from "../../../actions/types" -import { createSchema, joi } from "../../../config/common" -import { ConfigurationError } from "../../../exceptions" -import { Log } from "../../../logger/log-entry" -import { PluginContext } from "../../../plugin-context" -import { RunActionDefinition, TestActionDefinition } from "../../../plugin/action-types" -import { RunResult } from "../../../plugin/base" -import { dedent } from "../../../util/string" -import { KubeApi, KubernetesError } from "../api" -import { - KubernetesPluginContext, - KubernetesTargetResourceSpec, - namespaceNameSchema, - runPodResourceSchema, -} from "../config" -import { getActionNamespaceStatus } from "../namespace" -import { k8sGetRunResult } from "../run-results" -import { SyncableResource } from "../types" -import { execInWorkload, readTargetResource } from "../util" -import { KubernetesRunOutputs, kubernetesRunOutputsSchema } from "./config" +import { runResultToActionState } from "../../../actions/base.js" +import type { RunAction, RunActionConfig } from "../../../actions/run.js" +import type { TestAction, TestActionConfig } from "../../../actions/test.js" +import type { Resolved } from "../../../actions/types.js" +import { createSchema, joi } from "../../../config/common.js" +import { ConfigurationError } from "../../../exceptions.js" +import type { Log } from "../../../logger/log-entry.js" +import type { PluginContext } from "../../../plugin-context.js" +import type { RunActionDefinition, TestActionDefinition } from "../../../plugin/action-types.js" +import type { RunResult } from "../../../plugin/base.js" +import { dedent } from "../../../util/string.js" +import { KubeApi, KubernetesError } from "../api.js" +import type { KubernetesPluginContext, KubernetesTargetResourceSpec } from "../config.js" +import { namespaceNameSchema, runPodResourceSchema } from "../config.js" +import { getActionNamespaceStatus } from "../namespace.js" +import { k8sGetRunResult } from "../run-results.js" +import type { SyncableResource } from "../types.js" +import { execInWorkload, readTargetResource } from "../util.js" +import type { KubernetesRunOutputs } from "./config.js" +import { kubernetesRunOutputsSchema } from "./config.js" // RUN // diff --git a/core/src/plugins/kubernetes/kubernetes-type/kubernetes-pod.ts b/core/src/plugins/kubernetes/kubernetes-type/kubernetes-pod.ts index 155dd63af8..0495a1aff7 100644 --- a/core/src/plugins/kubernetes/kubernetes-type/kubernetes-pod.ts +++ b/core/src/plugins/kubernetes/kubernetes-type/kubernetes-pod.ts @@ -6,37 +6,31 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { - kubernetesCommonRunSchemaKeys, - KubernetesCommonRunSpec, - KubernetesPluginContext, - KubernetesTargetResourceSpec, - runPodResourceSchema, - runPodSpecSchema, -} from "../config" -import { k8sGetRunResult, storeRunResult } from "../run-results" -import { getActionNamespaceStatus } from "../namespace" -import type { RunActionDefinition, TestActionDefinition } from "../../../plugin/action-types" -import { dedent } from "../../../util/string" -import type { RunAction, RunActionConfig } from "../../../actions/run" -import { createSchema } from "../../../config/common" +import type { KubernetesCommonRunSpec, KubernetesPluginContext, KubernetesTargetResourceSpec } from "../config.js" +import { kubernetesCommonRunSchemaKeys, runPodResourceSchema, runPodSpecSchema } from "../config.js" +import { k8sGetRunResult, storeRunResult } from "../run-results.js" +import { getActionNamespaceStatus } from "../namespace.js" +import type { RunActionDefinition, TestActionDefinition } from "../../../plugin/action-types.js" +import { dedent } from "../../../util/string.js" +import type { RunAction, RunActionConfig } from "../../../actions/run.js" +import { createSchema } from "../../../config/common.js" import type { V1PodSpec } from "@kubernetes/client-node" -import { runOrTestWithPod } from "./common" -import { runResultToActionState } from "../../../actions/base" +import { runOrTestWithPod } from "./common.js" +import { runResultToActionState } from "../../../actions/base.js" +import type { KubernetesRunOutputs, KubernetesTestOutputs } from "./config.js" import { kubernetesFilesSchema, kubernetesManifestsSchema, kubernetesPatchResourcesSchema, - KubernetesRunOutputs, kubernetesRunOutputsSchema, - KubernetesTestOutputs, kubernetesTestOutputsSchema, -} from "./config" -import { KubernetesPatchResource, KubernetesResource } from "../types" -import { KubernetesKustomizeSpec, kustomizeSpecSchema } from "./kustomize" -import { ObjectSchema } from "@hapi/joi" -import { TestActionConfig, TestAction } from "../../../actions/test" -import { storeTestResult, k8sGetTestResult } from "../test-results" +} from "./config.js" +import type { KubernetesPatchResource, KubernetesResource } from "../types.js" +import type { KubernetesKustomizeSpec } from "./kustomize.js" +import { kustomizeSpecSchema } from "./kustomize.js" +import type { ObjectSchema } from "@hapi/joi" +import type { TestActionConfig, TestAction } from "../../../actions/test.js" +import { storeTestResult, k8sGetTestResult } from "../test-results.js" // RUN // diff --git a/core/src/plugins/kubernetes/kubernetes-type/kustomize.ts b/core/src/plugins/kubernetes/kubernetes-type/kustomize.ts index 32becf081a..ba94f83093 100644 --- a/core/src/plugins/kubernetes/kubernetes-type/kustomize.ts +++ b/core/src/plugins/kubernetes/kubernetes-type/kustomize.ts @@ -6,8 +6,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { joi, joiSparseArray } from "../../../config/common" -import { PluginToolSpec } from "../../../plugin/tools" +import { joi, joiSparseArray } from "../../../config/common.js" +import type { PluginToolSpec } from "../../../plugin/tools.js" export interface KubernetesKustomizeSpec { path: string diff --git a/core/src/plugins/kubernetes/kubernetes-type/module-config.ts b/core/src/plugins/kubernetes/kubernetes-type/module-config.ts index eaf8d5b802..13efc2a5cb 100644 --- a/core/src/plugins/kubernetes/kubernetes-type/module-config.ts +++ b/core/src/plugins/kubernetes/kubernetes-type/module-config.ts @@ -6,27 +6,28 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { dependenciesSchema } from "../../../config/service" -import { joi, joiModuleIncludeDirective, joiSparseArray } from "../../../config/common" -import { GardenModule } from "../../../types/module" -import { ConfigureModuleParams, ConfigureModuleResult } from "../../../plugin/handlers/Module/configure" -import { GardenService } from "../../../types/service" -import { baseBuildSpecSchema } from "../../../config/module" -import { dedent } from "../../../util/string" +import { dependenciesSchema } from "../../../config/service.js" +import { joi, joiModuleIncludeDirective, joiSparseArray } from "../../../config/common.js" +import type { GardenModule } from "../../../types/module.js" +import type { ConfigureModuleParams, ConfigureModuleResult } from "../../../plugin/handlers/Module/configure.js" +import type { GardenService } from "../../../types/service.js" +import { baseBuildSpecSchema } from "../../../config/module.js" +import { dedent } from "../../../util/string.js" +import type { KubernetesTaskSpec, KubernetesTestSpec, ServiceResourceSpec } from "../config.js" import { containerModuleSchema, kubernetesTaskSchema, - KubernetesTaskSpec, kubernetesTestSchema, - KubernetesTestSpec, serviceResourceDescription, serviceResourceSchema, - ServiceResourceSpec, -} from "../config" -import { ContainerModule } from "../../container/moduleConfig" -import { kubernetesModuleSyncSchema, KubernetesModuleDevModeSpec } from "../sync" -import { KubernetesTypeCommonDeploySpec, kubernetesCommonDeploySpecKeys } from "./config" -import { kubernetesLocalModeSchema, KubernetesLocalModeSpec } from "../local-mode" +} from "../config.js" +import type { ContainerModule } from "../../container/moduleConfig.js" +import type { KubernetesModuleDevModeSpec } from "../sync.js" +import { kubernetesModuleSyncSchema } from "../sync.js" +import type { KubernetesTypeCommonDeploySpec } from "./config.js" +import { kubernetesCommonDeploySpecKeys } from "./config.js" +import type { KubernetesLocalModeSpec } from "../local-mode.js" +import { kubernetesLocalModeSchema } from "../local-mode.js" // A Kubernetes Module always maps to a single Service export type KubernetesModuleSpec = KubernetesServiceSpec diff --git a/core/src/plugins/kubernetes/kubernetes-type/sync.ts b/core/src/plugins/kubernetes/kubernetes-type/sync.ts index 1d978fd9a7..4a4a181097 100644 --- a/core/src/plugins/kubernetes/kubernetes-type/sync.ts +++ b/core/src/plugins/kubernetes/kubernetes-type/sync.ts @@ -6,14 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { DeployActionHandler } from "../../../plugin/action-types" -import { KubeApi } from "../api" -import { KubernetesPluginContext } from "../config" -import { getActionNamespace } from "../namespace" -import { getDeployedResources } from "../status/status" -import { getSyncStatus, startSyncs } from "../sync" -import { getManifests } from "./common" -import { KubernetesDeployAction } from "./config" +import type { DeployActionHandler } from "../../../plugin/action-types.js" +import { KubeApi } from "../api.js" +import type { KubernetesPluginContext } from "../config.js" +import { getActionNamespace } from "../namespace.js" +import { getDeployedResources } from "../status/status.js" +import { getSyncStatus, startSyncs } from "../sync.js" +import { getManifests } from "./common.js" +import type { KubernetesDeployAction } from "./config.js" export const kubernetesStartSync: DeployActionHandler<"startSync", KubernetesDeployAction> = async (params) => { const { ctx, log, action } = params diff --git a/core/src/plugins/kubernetes/kubernetes.ts b/core/src/plugins/kubernetes/kubernetes.ts index d9c1eeee30..3eb345ded5 100644 --- a/core/src/plugins/kubernetes/kubernetes.ts +++ b/core/src/plugins/kubernetes/kubernetes.ts @@ -6,50 +6,50 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { createGardenPlugin } from "../../plugin/plugin" -import { helmModuleHandlers } from "./helm/handlers" -import { getAppNamespace, getSystemNamespace } from "./namespace" -import { getEnvironmentStatus, prepareEnvironment, cleanupEnvironment } from "./init" -import { containerHandlers } from "./container/handlers" -import { kubernetesHandlers } from "./kubernetes-type/handlers" -import { ConfigureProviderParams } from "../../plugin/handlers/Provider/configureProvider" -import { DebugInfo, GetDebugInfoParams } from "../../plugin/handlers/Provider/getDebugInfo" -import { kubectl, kubectlSpec } from "./kubectl" -import { KubernetesConfig, KubernetesPluginContext } from "./config" -import { configSchema } from "./config" -import { ConfigurationError } from "../../exceptions" -import { cleanupClusterRegistry } from "./commands/cleanup-cluster-registry" -import { clusterInit } from "./commands/cluster-init" -import { pullImage } from "./commands/pull-image" -import { uninstallGardenServices } from "./commands/uninstall-garden-services" -import { joi, joiIdentifier } from "../../config/common" +import { createGardenPlugin } from "../../plugin/plugin.js" +import { helmModuleHandlers } from "./helm/handlers.js" +import { getAppNamespace, getSystemNamespace } from "./namespace.js" +import { getEnvironmentStatus, prepareEnvironment, cleanupEnvironment } from "./init.js" +import { containerHandlers } from "./container/handlers.js" +import { kubernetesHandlers } from "./kubernetes-type/handlers.js" +import type { ConfigureProviderParams } from "../../plugin/handlers/Provider/configureProvider.js" +import type { DebugInfo, GetDebugInfoParams } from "../../plugin/handlers/Provider/getDebugInfo.js" +import { kubectl, kubectlSpec } from "./kubectl.js" +import type { KubernetesConfig, KubernetesPluginContext } from "./config.js" +import { configSchema } from "./config.js" +import { ConfigurationError } from "../../exceptions.js" +import { cleanupClusterRegistry } from "./commands/cleanup-cluster-registry.js" +import { clusterInit } from "./commands/cluster-init.js" +import { pullImage } from "./commands/pull-image.js" +import { uninstallGardenServices } from "./commands/uninstall-garden-services.js" +import { joi, joiIdentifier } from "../../config/common.js" import { resolve } from "path" -import { dedent } from "../../util/string" -import { kubernetesModuleSpecSchema } from "./kubernetes-type/module-config" -import { helmModuleSpecSchema, helmModuleOutputsSchema } from "./helm/module-config" -import { getSystemMetadataNamespaceName } from "./system" -import { defaultIngressClass } from "./constants" -import { pvcModuleDefinition, persistentvolumeclaimDeployDefinition } from "./volumes/persistentvolumeclaim" -import { helm3Spec } from "./helm/helm-cli" -import { isString } from "lodash" -import { mutagenCliSpec } from "../../mutagen" -import { configMapModuleDefinition, configmapDeployDefinition } from "./volumes/configmap" +import { dedent } from "../../util/string.js" +import { kubernetesModuleSpecSchema } from "./kubernetes-type/module-config.js" +import { helmModuleSpecSchema, helmModuleOutputsSchema } from "./helm/module-config.js" +import { getSystemMetadataNamespaceName } from "./system.js" +import { defaultIngressClass } from "./constants.js" +import { pvcModuleDefinition, persistentvolumeclaimDeployDefinition } from "./volumes/persistentvolumeclaim.js" +import { helm3Spec } from "./helm/helm-cli.js" +import { isString } from "lodash-es" +import { mutagenCliSpec } from "../../mutagen.js" +import { configMapModuleDefinition, configmapDeployDefinition } from "./volumes/configmap.js" import { k8sContainerBuildExtension, k8sContainerDeployExtension, k8sContainerRunExtension, k8sContainerTestExtension, -} from "./container/extensions" -import { helmDeployDefinition, getHelmDeployDocs } from "./helm/action" -import { k8sJibContainerBuildExtension, jibContainerHandlers } from "./jib-container" -import { kubernetesDeployDefinition, kubernetesDeployDocs } from "./kubernetes-type/deploy" -import { kustomizeSpec } from "./kubernetes-type/kustomize" -import { syncPause, syncResume, syncStatus } from "./commands/sync" -import { helmPodRunDefinition, helmPodTestDefinition } from "./helm/helm-pod" -import { kubernetesPodRunDefinition, kubernetesPodTestDefinition } from "./kubernetes-type/kubernetes-pod" -import { kubernetesExecRunDefinition, kubernetesExecTestDefinition } from "./kubernetes-type/kubernetes-exec" -import { makeDocsLink } from "../../docs/common" -import { DOCS_BASE_URL } from "../../constants" +} from "./container/extensions.js" +import { helmDeployDefinition, getHelmDeployDocs } from "./helm/action.js" +import { k8sJibContainerBuildExtension, jibContainerHandlers } from "./jib-container.js" +import { kubernetesDeployDefinition, kubernetesDeployDocs } from "./kubernetes-type/deploy.js" +import { kustomizeSpec } from "./kubernetes-type/kustomize.js" +import { syncPause, syncResume, syncStatus } from "./commands/sync.js" +import { helmPodRunDefinition, helmPodTestDefinition } from "./helm/helm-pod.js" +import { kubernetesPodRunDefinition, kubernetesPodTestDefinition } from "./kubernetes-type/kubernetes-pod.js" +import { kubernetesExecRunDefinition, kubernetesExecTestDefinition } from "./kubernetes-type/kubernetes-exec.js" +import { makeDocsLink } from "../../docs/common.js" +import { DOCS_BASE_URL } from "../../constants.js" export async function configureProvider({ namespace, diff --git a/core/src/plugins/kubernetes/local-mode.ts b/core/src/plugins/kubernetes/local-mode.ts index e290a7ae11..ef19178749 100644 --- a/core/src/plugins/kubernetes/local-mode.ts +++ b/core/src/plugins/kubernetes/local-mode.ts @@ -6,38 +6,42 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ContainerDeployAction, containerLocalModeSchema, ContainerLocalModeSpec } from "../container/config" -import { dedent, gardenAnnotationKey, splitLast } from "../../util/string" +import type { ContainerDeployAction, ContainerLocalModeSpec } from "../container/config.js" +import { containerLocalModeSchema } from "../container/config.js" +import { dedent, gardenAnnotationKey, splitLast } from "../../util/string.js" import cloneDeep from "fast-copy" -import { remove, set } from "lodash" -import { BaseResource, KubernetesResource, SyncableResource, SyncableRuntimeAction } from "./types" -import { PrimitiveMap } from "../../config/common" +import { remove, set } from "lodash-es" +import type { BaseResource, KubernetesResource, SyncableResource, SyncableRuntimeAction } from "./types.js" +import type { PrimitiveMap } from "../../config/common.js" import { k8sReverseProxyImageName, PROXY_CONTAINER_SSH_TUNNEL_PORT, PROXY_CONTAINER_SSH_TUNNEL_PORT_NAME, PROXY_CONTAINER_USER_NAME, -} from "./constants" -import { ConfigurationError, InternalError, RuntimeError } from "../../exceptions" -import { getResourceContainer, getResourceKey, getTargetResource, prepareEnvVars } from "./util" -import { V1Container, V1ContainerPort } from "@kubernetes/client-node" -import { KubernetesPluginContext, KubernetesTargetResourceSpec, targetResourceSpecSchema } from "./config" -import { ActionLog, Log } from "../../logger/log-entry" +} from "./constants.js" +import { ConfigurationError, InternalError, RuntimeError } from "../../exceptions.js" +import { getResourceContainer, getResourceKey, getTargetResource, prepareEnvVars } from "./util.js" +import type { V1Container, V1ContainerPort } from "@kubernetes/client-node" +import type { KubernetesPluginContext, KubernetesTargetResourceSpec } from "./config.js" +import { targetResourceSpecSchema } from "./config.js" +import type { ActionLog, Log } from "../../logger/log-entry.js" import chalk from "chalk" import { rmSync } from "fs" import { execSync } from "child_process" import { isAbsolute, join } from "path" -import { ensureDir, readFile } from "fs-extra" -import { PluginContext } from "../../plugin-context" -import { kubectl } from "./kubectl" -import { OsCommand, ProcessMessage, RecoverableProcess, RetryInfo } from "../../util/recoverable-process" -import { isConfiguredForLocalMode } from "./status/status" -import { exec, registerCleanupFunction, shutdown } from "../../util/util" -import getPort = require("get-port") -import touch = require("touch") -import { Resolved } from "../../actions/types" -import { DOCS_BASE_URL } from "../../constants" -import AsyncLock = require("async-lock") +import fsExtra from "fs-extra" +const { ensureDir, readFile } = fsExtra +import type { PluginContext } from "../../plugin-context.js" +import { kubectl } from "./kubectl.js" +import type { OsCommand, ProcessMessage, RetryInfo } from "../../util/recoverable-process.js" +import { RecoverableProcess } from "../../util/recoverable-process.js" +import { isConfiguredForLocalMode } from "./status/status.js" +import { exec, registerCleanupFunction, shutdown } from "../../util/util.js" +import getPort from "get-port" +import touch from "touch" +import type { Resolved } from "../../actions/types.js" +import { DOCS_BASE_URL } from "../../constants.js" +import AsyncLock from "async-lock" export const localModeGuideLink = `${DOCS_BASE_URL}/guides/running-service-in-local-mode` diff --git a/core/src/plugins/kubernetes/local/config.ts b/core/src/plugins/kubernetes/local/config.ts index e087eb202a..32a72c8ae8 100644 --- a/core/src/plugins/kubernetes/local/config.ts +++ b/core/src/plugins/kubernetes/local/config.ts @@ -6,25 +6,21 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { - KubernetesConfig, - kubernetesConfigBase, - k8sContextSchema, - KubernetesProvider, - namespaceSchema, -} from "../config" -import { ConfigureProviderParams } from "../../../plugin/handlers/Provider/configureProvider" -import { joiProviderName, joi } from "../../../config/common" -import { getKubeConfig } from "../api" -import { configureMicrok8sAddons } from "./microk8s" -import { setMinikubeDockerEnv } from "./minikube" -import { exec } from "../../../util/util" -import { remove } from "lodash" +import type { KubernetesConfig, KubernetesProvider } from "../config.js" +import { kubernetesConfigBase, k8sContextSchema, namespaceSchema } from "../config.js" +import type { ConfigureProviderParams } from "../../../plugin/handlers/Provider/configureProvider.js" +import { joiProviderName, joi } from "../../../config/common.js" +import { getKubeConfig } from "../api.js" +import { configureMicrok8sAddons } from "./microk8s.js" +import { setMinikubeDockerEnv } from "./minikube.js" +import { exec } from "../../../util/util.js" +import { remove } from "lodash-es" import chalk from "chalk" -import { isKindCluster } from "./kind" -import { isK3sFamilyCluster } from "./k3s" -import { getK8sClientServerVersions, K8sClientServerVersions } from "../util" -import { ChildProcessError } from "../../../exceptions" +import { isKindCluster } from "./kind.js" +import { isK3sFamilyCluster } from "./k3s.js" +import type { K8sClientServerVersions } from "../util.js" +import { getK8sClientServerVersions } from "../util.js" +import { ChildProcessError } from "../../../exceptions.js" // TODO: split this into separate plugins to handle Docker for Mac and Minikube // note: this is in order of preference, in case neither is set as the current kubectl context diff --git a/core/src/plugins/kubernetes/local/k3s.ts b/core/src/plugins/kubernetes/local/k3s.ts index 519c1cc2e9..b825e8ea0d 100644 --- a/core/src/plugins/kubernetes/local/k3s.ts +++ b/core/src/plugins/kubernetes/local/k3s.ts @@ -6,11 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Log } from "../../../logger/log-entry" -import { KubernetesProvider } from "../config" -import { KubeApi } from "../api" -import { KubernetesResource } from "../types" -import { PluginContext } from "../../../plugin-context" +import type { Log } from "../../../logger/log-entry.js" +import type { KubernetesProvider } from "../config.js" +import { KubeApi } from "../api.js" +import type { KubernetesResource } from "../types.js" +import type { PluginContext } from "../../../plugin-context.js" export async function isK3sFamilyCluster(ctx: PluginContext, provider: KubernetesProvider, log: Log): Promise { return await isK3sFamilyClusterContext(ctx, provider, log) diff --git a/core/src/plugins/kubernetes/local/kind.ts b/core/src/plugins/kubernetes/local/kind.ts index 9eaa99e52b..245371e752 100644 --- a/core/src/plugins/kubernetes/local/kind.ts +++ b/core/src/plugins/kubernetes/local/kind.ts @@ -6,15 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { exec } from "../../../util/util" -import { Log } from "../../../logger/log-entry" +import { exec } from "../../../util/util.js" +import type { Log } from "../../../logger/log-entry.js" import { load } from "js-yaml" -import { KubernetesConfig, KubernetesProvider } from "../config" -import { GardenError, RuntimeError } from "../../../exceptions" -import { KubeApi } from "../api" -import { KubernetesResource } from "../types" -import { PluginContext } from "../../../plugin-context" -import { containerHelpers } from "../../container/helpers" +import type { KubernetesConfig, KubernetesProvider } from "../config.js" +import { GardenError, RuntimeError } from "../../../exceptions.js" +import { KubeApi } from "../api.js" +import type { KubernetesResource } from "../types.js" +import type { PluginContext } from "../../../plugin-context.js" +import { containerHelpers } from "../../container/helpers.js" const nodeCache: { [context: string]: string[] } = {} diff --git a/core/src/plugins/kubernetes/local/local.ts b/core/src/plugins/kubernetes/local/local.ts index 3d8aa66131..c57b5c75f5 100644 --- a/core/src/plugins/kubernetes/local/local.ts +++ b/core/src/plugins/kubernetes/local/local.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { configureProvider, configSchema } from "./config" -import { createGardenPlugin } from "../../../plugin/plugin" -import { dedent } from "../../../util/string" -import { DOCS_BASE_URL } from "../../../constants" +import { configureProvider, configSchema } from "./config.js" +import { createGardenPlugin } from "../../../plugin/plugin.js" +import { dedent } from "../../../util/string.js" +import { DOCS_BASE_URL } from "../../../constants.js" const providerUrl = "./kubernetes.md" diff --git a/core/src/plugins/kubernetes/local/microk8s.ts b/core/src/plugins/kubernetes/local/microk8s.ts index 336a3cbdae..85bbde37f1 100644 --- a/core/src/plugins/kubernetes/local/microk8s.ts +++ b/core/src/plugins/kubernetes/local/microk8s.ts @@ -7,15 +7,15 @@ */ import tmp from "tmp-promise" -import { ChildProcessError, RuntimeError } from "../../../exceptions" -import { Log } from "../../../logger/log-entry" -import { exec } from "../../../util/util" -import { containerHelpers } from "../../container/helpers" -import { ContainerBuildAction } from "../../container/moduleConfig" +import { ChildProcessError, RuntimeError } from "../../../exceptions.js" +import type { Log } from "../../../logger/log-entry.js" +import { exec } from "../../../util/util.js" +import { containerHelpers } from "../../container/helpers.js" +import type { ContainerBuildAction } from "../../container/moduleConfig.js" import chalk from "chalk" -import { deline, naturalList } from "../../../util/string" -import { ExecaReturnValue } from "execa" -import { PluginContext } from "../../../plugin-context" +import { deline, naturalList } from "../../../util/string.js" +import type { ExecaReturnValue } from "execa" +import type { PluginContext } from "../../../plugin-context.js" import { parse as parsePath } from "path" // TODO: Pass the correct log context instead of creating it here. diff --git a/core/src/plugins/kubernetes/local/minikube.ts b/core/src/plugins/kubernetes/local/minikube.ts index 2bdb15df69..6e08c9c64f 100644 --- a/core/src/plugins/kubernetes/local/minikube.ts +++ b/core/src/plugins/kubernetes/local/minikube.ts @@ -6,8 +6,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ChildProcessError } from "../../../exceptions" -import { exec } from "../../../util/util" +import { ChildProcessError } from "../../../exceptions.js" +import { exec } from "../../../util/util.js" /** * Automatically set docker environment variables for minikube diff --git a/core/src/plugins/kubernetes/logs.ts b/core/src/plugins/kubernetes/logs.ts index 0a8202101a..9bc384612b 100644 --- a/core/src/plugins/kubernetes/logs.ts +++ b/core/src/plugins/kubernetes/logs.ts @@ -6,25 +6,23 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { omit, sortBy } from "lodash" +import { omit, sortBy } from "lodash-es" import parseDuration from "parse-duration" -import { DeployLogEntry } from "../../types/service" -import { KubernetesResource, KubernetesPod, BaseResource } from "./types" -import { getAllPods, summarize } from "./util" -import { KubeApi, KubernetesError } from "./api" -import Stream from "ts-stream" -import { Log } from "../../logger/log-entry" -import { KubernetesProvider } from "./config" -import { PluginContext } from "../../plugin-context" -import { getPodLogs } from "./status/pod" -import { isValidDateInstance, sleep } from "../../util/util" +import type { DeployLogEntry } from "../../types/service.js" +import type { KubernetesResource, KubernetesPod, BaseResource } from "./types.js" +import { getAllPods, summarize } from "./util.js" +import { KubeApi, KubernetesError } from "./api.js" +import type { Stream } from "ts-stream" +import type { Log } from "../../logger/log-entry.js" +import type { KubernetesProvider } from "./config.js" +import type { PluginContext } from "../../plugin-context.js" +import { getPodLogs } from "./status/pod.js" +import { isValidDateInstance, sleep } from "../../util/util.js" import { Writable } from "stream" -import request from "request" -import { LogLevel } from "../../logger/logger" -import { clearTimeout } from "timers" -import { HttpError as KubernetesClientHttpError } from "@kubernetes/client-node" -import { splitFirst } from "../../util/string" +import { LogLevel } from "../../logger/logger.js" +import { splitFirst } from "../../util/string.js" +import { toKubernetesError } from "./retry.js" // When not following logs, the entire log is read into memory and sorted. // We therefore set a maximum on the number of lines we fetch. @@ -138,7 +136,7 @@ interface LogConnection { namespace: string status: ConnectionStatus shouldRetry: boolean - request?: request.Request + abortController?: AbortController timeout?: NodeJS.Timeout // for reconnect & deduplication logic @@ -177,7 +175,7 @@ export class K8sLogFollower { private log: Log private defaultNamespace: string private resources: KubernetesResource[] - private timeoutId?: NodeJS.Timer | null + private timeoutId?: NodeJS.Timeout | null private resolve: ((val: unknown) => void) | null private retryIntervalMs: number @@ -261,7 +259,7 @@ export class K8sLogFollower { } conns.forEach((conn) => { try { - conn.request?.abort() + conn.abortController?.abort() } catch {} }) } @@ -302,8 +300,8 @@ export class K8sLogFollower { // Also no need to log the error event after a timed-out event if (!(prevStatus === "error" && status === "closed") && !(prevStatus === "timed-out" && status === "error")) { let reason = error - if (error instanceof KubernetesClientHttpError) { - reason = `HTTP request failed with status ${error.statusCode}` + if (error instanceof KubernetesError) { + reason = `HTTP request failed with status ${error.code}` } this.log.silly(``) } @@ -321,7 +319,10 @@ export class K8sLogFollower { } try { - const pod = await this.k8sApi.core.readNamespacedPodStatus(connection.pod.metadata.name, connection.namespace) + const pod = await this.k8sApi.core.readNamespacedPodStatus({ + name: connection.pod.metadata.name, + namespace: connection.namespace, + }) // we want to retry anyway if fetching logs failed recently const wasError = prevStatus === "error" || status === "error" @@ -387,7 +388,7 @@ export class K8sLogFollower { return } - let req: request.Request + let abortController: AbortController const makeTimeout = () => { const idleTimeout = 60000 @@ -397,7 +398,7 @@ export class K8sLogFollower { "timed-out", `Connection has been idle for ${idleTimeout / 1000} seconds.` ) - req?.abort() + abortController?.abort() }, idleTimeout) } @@ -440,8 +441,10 @@ export class K8sLogFollower { }, }) + const context = `Follow logs of '${containerName}' in Pod '${pod.metadata.name}'` + try { - req = await this.streamPodLogs({ + abortController = await this.streamPodLogs({ connection, stream: writableStream, tail: tail || Math.floor(maxLogLinesInMemory / containers.length), @@ -450,15 +453,18 @@ export class K8sLogFollower { }) this.log.silly(``) } catch (err) { - await this.handleConnectionClose(connection, "error", err) + await this.handleConnectionClose(connection, "error", toKubernetesError(err, context)) return } - connection.request = req + connection.abortController = abortController connection.status = "connected" connection.timeout = makeTimeout() - req.on("error", async (error) => await this.handleConnectionClose(connection, "error", error)) - req.on("close", async () => await this.handleConnectionClose(connection, "closed", "Request closed")) + writableStream.on( + "error", + async (error) => await this.handleConnectionClose(connection, "error", toKubernetesError(error, context)) + ) + writableStream.on("close", async () => await this.handleConnectionClose(connection, "closed", "Request closed")) }) ) } diff --git a/core/src/plugins/kubernetes/namespace.ts b/core/src/plugins/kubernetes/namespace.ts index d3e968a209..865a56a2d0 100644 --- a/core/src/plugins/kubernetes/namespace.ts +++ b/core/src/plugins/kubernetes/namespace.ts @@ -6,24 +6,24 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { intersection, cloneDeep } from "lodash" - -import { KubeApi, KubernetesError } from "./api" -import type { KubernetesProvider, KubernetesPluginContext, NamespaceConfig } from "./config" -import { DeploymentError, TimeoutError } from "../../exceptions" -import { getPackageVersion, sleep } from "../../util/util" -import type { GetEnvironmentStatusParams } from "../../plugin/handlers/Provider/getEnvironmentStatus" -import { KUBECTL_DEFAULT_TIMEOUT } from "./kubectl" -import type { Log } from "../../logger/log-entry" -import { gardenAnnotationKey } from "../../util/string" +import { intersection, cloneDeep } from "lodash-es" + +import { KubeApi, KubernetesError } from "./api.js" +import type { KubernetesProvider, KubernetesPluginContext, NamespaceConfig } from "./config.js" +import { DeploymentError, TimeoutError } from "../../exceptions.js" +import { getPackageVersion, sleep } from "../../util/util.js" +import type { GetEnvironmentStatusParams } from "../../plugin/handlers/Provider/getEnvironmentStatus.js" +import { KUBECTL_DEFAULT_TIMEOUT } from "./kubectl.js" +import type { Log } from "../../logger/log-entry.js" +import { gardenAnnotationKey } from "../../util/string.js" import dedent from "dedent" import type { V1Namespace } from "@kubernetes/client-node" -import { isSubset } from "../../util/is-subset" +import { isSubset } from "../../util/is-subset.js" import chalk from "chalk" -import type { NamespaceStatus } from "../../types/namespace" -import type { KubernetesServerResource, SupportedRuntimeAction } from "./types" -import type { Resolved } from "../../actions/types" -import { BoundedCache } from "../../cache" +import type { NamespaceStatus } from "../../types/namespace.js" +import type { KubernetesServerResource, SupportedRuntimeAction } from "./types.js" +import type { Resolved } from "../../actions/types.js" +import { BoundedCache } from "../../cache.js" import AsyncLock from "async-lock" const GARDEN_VERSION = getPackageVersion() @@ -77,7 +77,7 @@ export async function ensureNamespace( namespaces = namespacesStatus.items } catch (error) { log.warn("Unable to list all namespaces. If you are using OpenShift, ignore this warning.") - const namespaceStatus = await api.core.readNamespace(namespace.name) + const namespaceStatus = await api.core.readNamespace({ name: namespace.name }) namespaces = [namespaceStatus] } @@ -106,16 +106,18 @@ export async function ensureNamespace( log.verbose("Creating namespace " + namespace.name) try { result.remoteResource = await api.core.createNamespace({ - apiVersion: "v1", - kind: "Namespace", - metadata: { - name: namespace.name, - annotations: { - [gardenAnnotationKey("generated")]: "true", - [gardenAnnotationKey("version")]: GARDEN_VERSION, - ...(namespace.annotations || {}), + body: { + apiVersion: "v1", + kind: "Namespace", + metadata: { + name: namespace.name, + annotations: { + [gardenAnnotationKey("generated")]: "true", + [gardenAnnotationKey("version")]: GARDEN_VERSION, + ...(namespace.annotations || {}), + }, + labels: namespace.labels, }, - labels: namespace.labels, }, }) result.created = true @@ -128,10 +130,13 @@ export async function ensureNamespace( // Make sure annotations and labels are set correctly if the namespace already exists log.verbose("Updating annotations and labels on namespace " + namespace.name) try { - result.remoteResource = await api.core.patchNamespace(namespace.name, { - metadata: { - annotations: namespace.annotations, - labels: namespace.labels, + result.remoteResource = await api.core.patchNamespace({ + name: namespace.name, + body: { + metadata: { + annotations: namespace.annotations, + labels: namespace.labels, + }, }, }) result.patched = true @@ -166,7 +171,7 @@ export async function namespaceExists(api: KubeApi, ctx: KubernetesPluginContext } try { - await api.core.readNamespace(name) + await api.core.readNamespace({ name }) return true } catch (err) { if (!(err instanceof KubernetesError)) { @@ -302,9 +307,7 @@ export async function prepareNamespaces({ ctx, log }: GetEnvironmentStatusParams export async function deleteNamespaces(namespaces: string[], api: KubeApi, log?: Log) { for (const ns of namespaces) { try { - // Note: Need to call the delete method with an empty object - // TODO: any cast is required until https://github.com/kubernetes-client/javascript/issues/52 is fixed - await api.core.deleteNamespace(ns, {}) + await api.core.deleteNamespace({ name: ns }) } catch (err) { if (!(err instanceof KubernetesError)) { throw err diff --git a/core/src/plugins/kubernetes/port-forward.ts b/core/src/plugins/kubernetes/port-forward.ts index d4d908dd9d..11a34e8e0f 100644 --- a/core/src/plugins/kubernetes/port-forward.ts +++ b/core/src/plugins/kubernetes/port-forward.ts @@ -6,29 +6,29 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ChildProcess } from "child_process" - -import getPort = require("get-port") - -import AsyncLock = require("async-lock") -import { V1ContainerPort, V1Deployment, V1PodTemplate, V1Service } from "@kubernetes/client-node" - -import { KubernetesProvider, KubernetesPluginContext } from "./config" -import { getAppNamespace } from "./namespace" -import { registerCleanupFunction, sleep } from "../../util/util" -import { PluginContext } from "../../plugin-context" -import { kubectl } from "./kubectl" -import { KubernetesResource, SupportedRuntimeAction } from "./types" -import { ForwardablePort } from "../../types/service" -import { isBuiltIn, matchSelector } from "./util" -import { Log } from "../../logger/log-entry" -import { RuntimeError } from "../../exceptions" -import execa = require("execa") -import { KubernetesDeployAction } from "./kubernetes-type/config" -import { HelmDeployAction } from "./helm/config" -import { DeployAction } from "../../actions/deploy" -import { GetPortForwardResult } from "../../plugin/handlers/Deploy/get-port-forward" -import { ActionMode, Resolved } from "../../actions/types" +import type { ChildProcess } from "child_process" + +import getPort from "get-port" + +import AsyncLock from "async-lock" +import type { V1ContainerPort, V1Deployment, V1PodTemplate, V1Service } from "@kubernetes/client-node" + +import type { KubernetesProvider, KubernetesPluginContext } from "./config.js" +import { getAppNamespace } from "./namespace.js" +import { registerCleanupFunction, sleep } from "../../util/util.js" +import type { PluginContext } from "../../plugin-context.js" +import { kubectl } from "./kubectl.js" +import type { KubernetesResource, SupportedRuntimeAction } from "./types.js" +import type { ForwardablePort } from "../../types/service.js" +import { isBuiltIn, matchSelector } from "./util.js" +import type { Log } from "../../logger/log-entry.js" +import { RuntimeError } from "../../exceptions.js" +import execa from "execa" +import type { KubernetesDeployAction } from "./kubernetes-type/config.js" +import type { HelmDeployAction } from "./helm/config.js" +import type { DeployAction } from "../../actions/deploy.js" +import type { GetPortForwardResult } from "../../plugin/handlers/Deploy/get-port-forward.js" +import type { ActionMode, Resolved } from "../../actions/types.js" // TODO: implement stopPortForward handler diff --git a/core/src/plugins/kubernetes/retry.ts b/core/src/plugins/kubernetes/retry.ts index 87c54d6d4e..336c4d4d30 100644 --- a/core/src/plugins/kubernetes/retry.ts +++ b/core/src/plugins/kubernetes/retry.ts @@ -8,15 +8,15 @@ import chalk from "chalk" import httpStatusCodes from "http-status-codes" -import { HttpError as KubernetesClientHttpError } from "@kubernetes/client-node" -import { sleep } from "../../util/util" -import { Log } from "../../logger/log-entry" -import { dedent, deline } from "../../util/string" -import { LogLevel } from "../../logger/logger" -import { KubernetesError } from "./api" -import requestErrors = require("request-promise/errors") -import { InternalError, NodeJSErrnoException, isErrnoException } from "../../exceptions" -import { ErrorEvent } from "ws" +import { ApiException as KubernetesApiException } from "@kubernetes/client-node" +import { sleep } from "../../util/util.js" +import type { Log } from "../../logger/log-entry.js" +import { deline } from "../../util/string.js" +import { LogLevel } from "../../logger/logger.js" +import { KubernetesError } from "./api.js" +import type { NodeJSErrnoException } from "../../exceptions.js" +import { InternalError, isErrnoException } from "../../exceptions.js" +import type { ErrorEvent } from "ws" import dns from "node:dns" /** @@ -90,58 +90,57 @@ export function toKubernetesError(err: unknown, context: string): KubernetesErro return err } + let originalMessage: string | undefined + let apiMessage: string | undefined let errorType: string - let response: KubernetesClientHttpError["response"] | undefined - let body: any | undefined let responseStatusCode: number | undefined let code: NodeJSErrnoException["code"] | undefined - if (err instanceof KubernetesClientHttpError) { - errorType = "HttpError" - response = err.response || {} - body = err.body - responseStatusCode = err.statusCode - } else if (err instanceof requestErrors.StatusCodeError) { - errorType = "StatusCodeError" - response = err.response - responseStatusCode = err.statusCode - } else if (err instanceof requestErrors.RequestError) { - errorType = "RequestError" - if (isErrnoException(err.cause)) { - code = err.cause.code - } - } else if (err instanceof requestErrors.TransformError) { - errorType = "TransformError" - if (isErrnoException(err.cause)) { - code = err.cause.code + if (err instanceof KubernetesApiException) { + errorType = "ApiException" + // In case of Kubernetes Client API Exception, we do not use the err.message + // because it contains the full body including headers. + // We only extract the status code and kubernetes message from the body. + try { + const parsedBody = JSON.parse(err.body) + if (typeof parsedBody === "object" && typeof parsedBody.message === "string") { + apiMessage = parsedBody.message + } + } catch (e) { + if (e instanceof SyntaxError) { + apiMessage = err.body + } else { + throw e + } } - response = err.response - responseStatusCode = err.response?.statusCode + responseStatusCode = err.code } else if (isErrnoException(err)) { errorType = "Error" code = err.code + originalMessage = err.message } else if (isWebsocketErrorEvent(err)) { errorType = "WebsocketError" + originalMessage = err.message // The ErrorEvent does not expose the status code other than as part of the error.message } else { // In all other cases, we don't know what this is, so let's just throw an InternalError throw InternalError.wrapError(err, `toKubernetesError encountered an unknown error unexpectedly during ${context}`) } - let apiMessage: string | undefined - if (body && typeof body.message === "string") { - apiMessage = body.message + let message = `Error while performing Kubernetes API operation ${context}: ${errorType}\n` + + if (originalMessage) { + message += `\n${originalMessage}` + } + if (responseStatusCode) { + message += `\nResponse status code: ${responseStatusCode}` + } + if (apiMessage) { + message += `\nKubernetes Message: ${apiMessage}` } return new KubernetesError({ - message: dedent` - Error while performing Kubernetes API operation ${context}: - - ${errorType}${err.message ? `: ${err.message}` : ""} - - ${response?.url ? `Request URL: ${response?.url}` : ""} - ${responseStatusCode ? `Response status code: ${responseStatusCode}` : ""} - ${apiMessage ? `Kubernetes Message: ${apiMessage}` : ""}`, + message: message.trim(), responseStatusCode, code, apiMessage, diff --git a/core/src/plugins/kubernetes/run-results.ts b/core/src/plugins/kubernetes/run-results.ts index 6aabc26b78..c2d5fb66bf 100644 --- a/core/src/plugins/kubernetes/run-results.ts +++ b/core/src/plugins/kubernetes/run-results.ts @@ -6,24 +6,24 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ContainerRunAction } from "../container/moduleConfig" -import { KubernetesPluginContext, KubernetesProvider } from "./config" -import { KubeApi, KubernetesError } from "./api" -import { getAppNamespace } from "./namespace" -import { deserializeValues } from "../../util/serialization" -import { PluginContext } from "../../plugin-context" -import { Log } from "../../logger/log-entry" -import { gardenAnnotationKey } from "../../util/string" +import type { ContainerRunAction } from "../container/moduleConfig.js" +import type { KubernetesPluginContext, KubernetesProvider } from "./config.js" +import { KubeApi, KubernetesError } from "./api.js" +import { getAppNamespace } from "./namespace.js" +import { deserializeValues } from "../../util/serialization.js" +import type { PluginContext } from "../../plugin-context.js" +import type { Log } from "../../logger/log-entry.js" +import { gardenAnnotationKey } from "../../util/string.js" import hasha from "hasha" -import { upsertConfigMap } from "./util" -import { trimRunOutput } from "./helm/common" +import { upsertConfigMap } from "./util.js" +import { trimRunOutput } from "./helm/common.js" import chalk from "chalk" -import { runResultToActionState } from "../../actions/base" -import { Action } from "../../actions/types" -import { RunResult } from "../../plugin/base" -import { RunActionHandler } from "../../plugin/action-types" -import { HelmPodRunAction } from "./helm/config" -import { KubernetesRunAction } from "./kubernetes-type/config" +import { runResultToActionState } from "../../actions/base.js" +import type { Action } from "../../actions/types.js" +import type { RunResult } from "../../plugin/base.js" +import type { RunActionHandler } from "../../plugin/action-types.js" +import type { HelmPodRunAction } from "./helm/config.js" +import type { KubernetesRunAction } from "./kubernetes-type/config.js" // TODO: figure out how to get rid of the any cast here export const k8sGetRunResult: RunActionHandler<"getResult", any> = async (params) => { @@ -35,7 +35,7 @@ export const k8sGetRunResult: RunActionHandler<"getResult", any> = async (params const resultKey = getRunResultKey(ctx, action) try { - const res = await api.core.readNamespacedConfigMap(resultKey, ns) + const res = await api.core.readNamespacedConfigMap({ name: resultKey, namespace: ns }) const result: any = deserializeValues(res.data!) // Backwards compatibility for modified result schema @@ -130,7 +130,7 @@ export async function clearRunResult({ const key = getRunResultKey(ctx, action) try { - await api.core.deleteNamespacedConfigMap(key, namespace) + await api.core.deleteNamespacedConfigMap({ name: key, namespace }) } catch (err) { if (!(err instanceof KubernetesError)) { throw err diff --git a/core/src/plugins/kubernetes/run.ts b/core/src/plugins/kubernetes/run.ts index bb9007e7ca..dc40dd335a 100644 --- a/core/src/plugins/kubernetes/run.ts +++ b/core/src/plugins/kubernetes/run.ts @@ -9,34 +9,40 @@ import tar from "tar" import tmp from "tmp-promise" import cloneDeep from "fast-copy" -import { omit, pick, some } from "lodash" -import { Log } from "../../logger/log-entry" -import { CoreV1Event } from "@kubernetes/client-node" -import { PluginError, GardenError, RuntimeError, ConfigurationError, GardenErrorParams } from "../../exceptions" -import { KubernetesProvider } from "./config" -import { Writable, Readable, PassThrough } from "stream" -import { uniqByName, sleep } from "../../util/util" -import { ExecInPodResult, KubeApi, KubernetesError } from "./api" -import { getPodLogs, checkPodStatus } from "./status/pod" -import { KubernetesResource, KubernetesPod, KubernetesServerResource, SupportedRuntimeAction } from "./types" -import { ContainerEnvVars, ContainerResourcesSpec, ContainerVolumeSpec } from "../container/config" -import { prepareEnvVars, makePodName, renderPodEvents } from "./util" -import { dedent, deline, randomString } from "../../util/string" -import { ArtifactSpec } from "../../config/validation" -import { prepareSecrets } from "./secrets" -import { configureVolumes } from "./container/deployment" -import { PluginContext, PluginEventBroker, PluginEventLogContext } from "../../plugin-context" -import { waitForResources, ResourceStatus, DeploymentResourceStatusError } from "./status/status" -import { getResourceRequirements, getSecurityContext } from "./container/util" -import { KUBECTL_DEFAULT_TIMEOUT } from "./kubectl" -import { copy } from "fs-extra" -import { K8sLogFollower, PodLogEntryConverter, PodLogEntryConverterParams } from "./logs" +import { omit, pick, some } from "lodash-es" +import type { Log } from "../../logger/log-entry.js" +import type { CoreV1Event } from "@kubernetes/client-node" +import type { GardenErrorParams } from "../../exceptions.js" +import { PluginError, GardenError, RuntimeError, ConfigurationError } from "../../exceptions.js" +import type { KubernetesProvider } from "./config.js" +import type { Writable, Readable } from "stream" +import { PassThrough } from "stream" +import { uniqByName, sleep } from "../../util/util.js" +import type { ExecInPodResult } from "./api.js" +import { KubeApi, KubernetesError } from "./api.js" +import { getPodLogs, checkPodStatus } from "./status/pod.js" +import type { KubernetesResource, KubernetesPod, KubernetesServerResource, SupportedRuntimeAction } from "./types.js" +import type { ContainerEnvVars, ContainerResourcesSpec, ContainerVolumeSpec } from "../container/config.js" +import { prepareEnvVars, makePodName, renderPodEvents } from "./util.js" +import { dedent, deline, randomString } from "../../util/string.js" +import type { ArtifactSpec } from "../../config/validation.js" +import { prepareSecrets } from "./secrets.js" +import { configureVolumes } from "./container/deployment.js" +import type { PluginContext, PluginEventBroker, PluginEventLogContext } from "../../plugin-context.js" +import type { ResourceStatus } from "./status/status.js" +import { waitForResources, DeploymentResourceStatusError } from "./status/status.js" +import { getResourceRequirements, getSecurityContext } from "./container/util.js" +import { KUBECTL_DEFAULT_TIMEOUT } from "./kubectl.js" +import fsExtra from "fs-extra" +const { copy } = fsExtra +import type { PodLogEntryConverter, PodLogEntryConverterParams } from "./logs.js" +import { K8sLogFollower } from "./logs.js" import { Stream } from "ts-stream" -import { BaseRunParams } from "../../plugin/handlers/base/base" -import { V1PodSpec, V1Container, V1Pod, V1ContainerStatus, V1PodStatus } from "@kubernetes/client-node" -import { RunResult } from "../../plugin/base" -import { LogLevel } from "../../logger/logger" -import { getResourceEvents } from "./status/events" +import type { BaseRunParams } from "../../plugin/handlers/base/base.js" +import type { V1PodSpec, V1Container, V1Pod, V1ContainerStatus, V1PodStatus } from "@kubernetes/client-node" +import type { RunResult } from "../../plugin/base.js" +import { LogLevel } from "../../logger/logger.js" +import { getResourceEvents } from "./status/events.js" import stringify from "json-stringify-safe" // ref: https://kubernetes.io/docs/reference/labels-annotations-taints/#kubectl-kubernetes-io-default-container @@ -497,7 +503,7 @@ async function runWithArtifacts({ }): Promise { const { args, command, timeout: timeoutSec } = run - const { pod, runner } = getPodResourceAndRunner({ + const { runner } = getPodResourceAndRunner({ ctx, api, provider, @@ -990,7 +996,7 @@ export class PodRunner { while (true) { let serverPod: KubernetesServerResource try { - serverPod = await this.api.core.readNamespacedPodStatus(podName, namespace) + serverPod = await this.api.core.readNamespacedPodStatus({ name: podName, namespace }) } catch (e) { if (e instanceof KubernetesError) { // if the pod has been deleted during execution we might run into a 404 error. @@ -1255,7 +1261,7 @@ export class PodRunner { */ async stop() { try { - await this.api.core.deleteNamespacedPod(this.podName, this.namespace, undefined, undefined, 0) + await this.api.core.deleteNamespacedPod({ name: this.podName, namespace: this.namespace, gracePeriodSeconds: 0 }) } catch (err) { if (!(err instanceof KubernetesError)) { throw err diff --git a/core/src/plugins/kubernetes/secrets.ts b/core/src/plugins/kubernetes/secrets.ts index c633286a0d..f6c5c6de37 100644 --- a/core/src/plugins/kubernetes/secrets.ts +++ b/core/src/plugins/kubernetes/secrets.ts @@ -6,18 +6,19 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { KubeApi, KubernetesError } from "./api" -import { ProviderSecretRef } from "./config" -import { ConfigurationError } from "../../exceptions" -import { pick } from "lodash" -import { Log } from "../../logger/log-entry" +import type { KubeApi } from "./api.js" +import { KubernetesError } from "./api.js" +import type { ProviderSecretRef } from "./config.js" +import { ConfigurationError } from "../../exceptions.js" +import { pick } from "lodash-es" +import type { Log } from "../../logger/log-entry.js" /** * Read the specified secret ref from the cluster. */ export async function readSecret(api: KubeApi, secretRef: ProviderSecretRef) { try { - return await api.core.readNamespacedSecret(secretRef.name, secretRef.namespace) + return await api.core.readNamespacedSecret({ name: secretRef.name, namespace: secretRef.namespace }) } catch (err) { if (!(err instanceof KubernetesError)) { throw err diff --git a/core/src/plugins/kubernetes/status/events.ts b/core/src/plugins/kubernetes/status/events.ts index db2fc9868b..a6a3c5aa6b 100644 --- a/core/src/plugins/kubernetes/status/events.ts +++ b/core/src/plugins/kubernetes/status/events.ts @@ -6,9 +6,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { sortBy } from "lodash" -import { KubeApi } from "../api" -import { KubernetesResource } from "../types" +import { sortBy } from "lodash-es" +import type { KubeApi } from "../api.js" +import type { KubernetesResource } from "../types.js" export async function getResourceEvents(api: KubeApi, resource: KubernetesResource, minVersion?: number) { const fieldSelector = @@ -19,8 +19,8 @@ export async function getResourceEvents(api: KubeApi, resource: KubernetesResour const namespace = resource.metadata?.namespace const res = namespace - ? await api.core.listNamespacedEvent(namespace, undefined, undefined, undefined, fieldSelector) - : await api.core.listEventForAllNamespaces(undefined, fieldSelector) + ? await api.core.listNamespacedEvent({ namespace, fieldSelector }) + : await api.core.listEventForAllNamespaces({ fieldSelector }) const events = res.items // Filter out old events (relating to prior versions of the resource) diff --git a/core/src/plugins/kubernetes/status/ingress.ts b/core/src/plugins/kubernetes/status/ingress.ts index ed33959aa8..c54d28d0de 100644 --- a/core/src/plugins/kubernetes/status/ingress.ts +++ b/core/src/plugins/kubernetes/status/ingress.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ServiceIngress, ServiceProtocol } from "../../../types/service" -import { KubernetesProvider } from "../config" -import { isProviderEphemeralKubernetes } from "../ephemeral/ephemeral" -import { KubernetesIngress, KubernetesResource } from "../types" +import type { ServiceIngress, ServiceProtocol } from "../../../types/service.js" +import type { KubernetesProvider } from "../config.js" +import { isProviderEphemeralKubernetes } from "../ephemeral/ephemeral.js" +import type { KubernetesIngress, KubernetesResource } from "../types.js" /** * Returns a list of ServiceIngresses found in a list of k8s resources. diff --git a/core/src/plugins/kubernetes/status/pod.ts b/core/src/plugins/kubernetes/status/pod.ts index 8edbfd7b49..34f6e7efda 100644 --- a/core/src/plugins/kubernetes/status/pod.ts +++ b/core/src/plugins/kubernetes/status/pod.ts @@ -6,12 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { KubeApi, KubernetesError } from "../api" -import { KubernetesServerResource, KubernetesPod } from "../types" -import { V1Pod, V1Status } from "@kubernetes/client-node" -import { ResourceStatus } from "./status" +import type { KubeApi } from "../api.js" +import { KubernetesError } from "../api.js" +import type { KubernetesServerResource, KubernetesPod } from "../types.js" +import type { V1Pod, V1Status } from "@kubernetes/client-node" +import type { ResourceStatus } from "./status.js" import chalk from "chalk" -import { DeployState, combineStates } from "../../../types/service" +import type { DeployState } from "../../../types/service.js" +import { combineStates } from "../../../types/service.js" import stringify from "json-stringify-safe" export const POD_LOG_LINES = 30 @@ -96,26 +98,26 @@ export async function getPodLogs({ } return Promise.all( - podContainers.map(async (containerName) => { + podContainers.map(async (container) => { const follow = false - const insecureSkipTLSVerify = false + const insecureSkipTLSVerifyBackend = false const pretty = undefined let log: any try { - log = await api.core.readNamespacedPodLog( - pod.metadata!.name!, + log = await api.core.readNamespacedPodLog({ + name: pod.metadata!.name!, namespace, - containerName, + container, follow, - insecureSkipTLSVerify, - byteLimit, + insecureSkipTLSVerifyBackend, + limitBytes: byteLimit, pretty, - false, // previous + previous: false, sinceSeconds, - lineLimit, - timestamps - ) + tailLines: lineLimit, + timestamps, + }) } catch (error) { if (!(error instanceof KubernetesError)) { throw error @@ -126,19 +128,19 @@ export async function getPodLogs({ if (terminated || error.responseStatusCode === 404) { // Couldn't find pod/container, try requesting a previously terminated one try { - log = await api.core.readNamespacedPodLog( - pod.metadata!.name!, + log = await api.core.readNamespacedPodLog({ + name: pod.metadata!.name!, namespace, - containerName, + container, follow, - insecureSkipTLSVerify, - byteLimit, + insecureSkipTLSVerifyBackend, + limitBytes: byteLimit, pretty, - true, // previous + previous: true, sinceSeconds, - lineLimit, - timestamps - ) + tailLines: lineLimit, + timestamps, + }) } catch (err) { log = `[Could not retrieve previous logs for deleted pod ${pod.metadata!.name!}: ${ err || "Unknown error occurred" @@ -156,7 +158,7 @@ export async function getPodLogs({ } // the API returns undefined if no logs have been output, for some reason - return { containerName, log: log || "" } + return { containerName: container, log: log || "" } }) ) } diff --git a/core/src/plugins/kubernetes/status/service.ts b/core/src/plugins/kubernetes/status/service.ts index ee37b162f9..0767e32874 100644 --- a/core/src/plugins/kubernetes/status/service.ts +++ b/core/src/plugins/kubernetes/status/service.ts @@ -6,13 +6,13 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { flatten } from "lodash" -import { KubeApi } from "../api" -import { KubernetesServerResource } from "../types" -import { TimeoutError } from "../../../exceptions" -import { getReadyPods } from "../util" -import { sleep } from "../../../util/util" -import { Log } from "../../../logger/log-entry" +import { flatten } from "lodash-es" +import type { KubeApi } from "../api.js" +import type { KubernetesServerResource } from "../types.js" +import { TimeoutError } from "../../../exceptions.js" +import { getReadyPods } from "../util.js" +import { sleep } from "../../../util/util.js" +import type { Log } from "../../../logger/log-entry.js" // There's something strange going on if this takes more than 10 seconds to resolve const timeout = 10000 @@ -45,7 +45,7 @@ export async function waitForServiceEndpoints( const readyPodNames = pods.map((p) => p.metadata.name) while (true) { - const endpoints = await api.core.readNamespacedEndpoints(serviceName, serviceNamespace) + const endpoints = await api.core.readNamespacedEndpoints({ name: serviceName, namespace: serviceNamespace }) const addresses = flatten((endpoints.subsets || []).map((subset) => subset.addresses || [])) const routedPods = addresses.filter( diff --git a/core/src/plugins/kubernetes/status/status.ts b/core/src/plugins/kubernetes/status/status.ts index 43ba10a500..cdb3bc98b8 100644 --- a/core/src/plugins/kubernetes/status/status.ts +++ b/core/src/plugins/kubernetes/status/status.ts @@ -7,22 +7,23 @@ */ import { diffString } from "json-diff" -import { DeploymentError, GardenErrorParams } from "../../../exceptions" -import { PluginContext } from "../../../plugin-context" -import { KubeApi, KubernetesError } from "../api" -import { getAppNamespace } from "../namespace" -import { +import type { GardenErrorParams } from "../../../exceptions.js" +import { DeploymentError } from "../../../exceptions.js" +import type { PluginContext } from "../../../plugin-context.js" +import { KubeApi, KubernetesError } from "../api.js" +import { getAppNamespace } from "../namespace.js" +import type { BaseResource, KubernetesResource, KubernetesServerResource, KubernetesWorkload, SyncableResource, -} from "../types" -import { cloneDeep, flatten, isArray, isEqual, isPlainObject, keyBy, mapValues, omit, pickBy } from "lodash" -import { KubernetesPluginContext, KubernetesProvider } from "../config" -import { isSubset } from "../../../util/is-subset" -import { Log } from "../../../logger/log-entry" -import { +} from "../types.js" +import { cloneDeep, flatten, isArray, isEqual, isPlainObject, keyBy, mapValues, omit, pickBy } from "lodash-es" +import type { KubernetesPluginContext, KubernetesProvider } from "../config.js" +import { isSubset } from "../../../util/is-subset.js" +import type { Log } from "../../../logger/log-entry.js" +import type { KubernetesObject, V1Container, V1Job, @@ -32,15 +33,16 @@ import { V1ReplicationController, V1Service, } from "@kubernetes/client-node" -import { getPods, getResourceKey, hashManifest } from "../util" -import { checkWorkloadStatus } from "./workload" -import { checkWorkloadPodStatus } from "./pod" -import { deline, gardenAnnotationKey, stableStringify } from "../../../util/string" -import { ActionMode } from "../../../actions/types" -import { deepMap } from "../../../util/objects" -import { combineStates, DeployState } from "../../../types/service" -import { isTruthy, sleep } from "../../../util/util" -import dedent = require("dedent") +import { getPods, getResourceKey, hashManifest } from "../util.js" +import { checkWorkloadStatus } from "./workload.js" +import { checkWorkloadPodStatus } from "./pod.js" +import { deline, gardenAnnotationKey, stableStringify } from "../../../util/string.js" +import type { ActionMode } from "../../../actions/types.js" +import { deepMap } from "../../../util/objects.js" +import type { DeployState } from "../../../types/service.js" +import { combineStates } from "../../../types/service.js" +import { isTruthy, sleep } from "../../../util/util.js" +import dedent from "dedent" export const k8sManifestHashAnnotationKey = gardenAnnotationKey("manifest-hash") diff --git a/core/src/plugins/kubernetes/status/workload.ts b/core/src/plugins/kubernetes/status/workload.ts index e3f0bff41f..1bb6d881ee 100644 --- a/core/src/plugins/kubernetes/status/workload.ts +++ b/core/src/plugins/kubernetes/status/workload.ts @@ -7,9 +7,9 @@ */ import chalk from "chalk" -import { flatten, sortBy } from "lodash" -import { KubernetesPod, KubernetesServerResource } from "../types" -import { +import { flatten, sortBy } from "lodash-es" +import type { KubernetesPod, KubernetesServerResource } from "../types.js" +import type { V1Deployment, V1DaemonSet, V1DaemonSetStatus, @@ -20,11 +20,11 @@ import { CoreV1Event, V1DeploymentSpec, } from "@kubernetes/client-node" -import dedent = require("dedent") -import { getCurrentWorkloadPods, renderPodEvents } from "../util" -import { getFormattedPodLogs, POD_LOG_LINES } from "./pod" -import { ResourceStatus, StatusHandlerParams } from "./status" -import { getResourceEvents } from "./events" +import dedent from "dedent" +import { getCurrentWorkloadPods, renderPodEvents } from "../util.js" +import { getFormattedPodLogs, POD_LOG_LINES } from "./pod.js" +import type { ResourceStatus, StatusHandlerParams } from "./status.js" +import { getResourceEvents } from "./events.js" const containerStatusFailures = ["CrashLoopBackOff", "CreateContainerConfigError", "ImagePullBackOff"] diff --git a/core/src/plugins/kubernetes/sync.ts b/core/src/plugins/kubernetes/sync.ts index e0d10a4af8..4e03dfed59 100644 --- a/core/src/plugins/kubernetes/sync.ts +++ b/core/src/plugins/kubernetes/sync.ts @@ -8,73 +8,69 @@ import stripAnsi from "strip-ansi" -import { +import type { ContainerDeployAction, - containerSyncPathSchema, ContainerSyncSpec, - defaultSyncMode, DevModeSyncOptions, DevModeSyncSpec, + SyncMode, +} from "../container/moduleConfig.js" +import { + containerSyncPathSchema, + defaultSyncMode, syncDefaultDirectoryModeSchema, syncDefaultFileModeSchema, syncDefaultGroupSchema, syncDefaultOwnerSchema, syncExcludeSchema, - SyncMode, syncModeSchema, syncTargetPathSchema, -} from "../container/moduleConfig" -import { dedent, gardenAnnotationKey } from "../../util/string" +} from "../container/moduleConfig.js" +import { dedent, gardenAnnotationKey } from "../../util/string.js" import cloneDeep from "fast-copy" -import { kebabCase, keyBy, omit, set } from "lodash" +import { kebabCase, keyBy, omit, set } from "lodash-es" import { getResourceContainer, getResourceKey, getResourcePodSpec, getTargetResource, labelSelectorToString, -} from "./util" -import { +} from "./util.js" +import type { KubernetesResource, OctalPermissionMask, SupportedRuntimeAction, SyncableKind, SyncableResource, SyncableRuntimeAction, -} from "./types" -import { ActionLog, Log } from "../../logger/log-entry" +} from "./types.js" +import type { ActionLog, Log } from "../../logger/log-entry.js" import chalk from "chalk" -import { joi, joiIdentifier } from "../../config/common" -import { +import { joi, joiIdentifier } from "../../config/common.js" +import type { KubernetesPluginContext, KubernetesProvider, KubernetesTargetResourceSpec, ServiceResourceSpec, - targetResourceSpecSchema, -} from "./config" -import { isConfiguredForSyncMode } from "./status/status" -import { PluginContext } from "../../plugin-context" -import { - mutagenAgentPath, - Mutagen, - SyncConfig, - SyncSession, - haltedStatuses, - mutagenStatusDescriptions, -} from "../../mutagen" -import { k8sSyncUtilImageName } from "./constants" -import { templateStringLiteral } from "../../docs/common" +} from "./config.js" +import { targetResourceSpecSchema } from "./config.js" +import { isConfiguredForSyncMode } from "./status/status.js" +import type { PluginContext } from "../../plugin-context.js" +import type { SyncConfig, SyncSession } from "../../mutagen.js" +import { mutagenAgentPath, Mutagen, haltedStatuses, mutagenStatusDescriptions } from "../../mutagen.js" +import { k8sSyncUtilImageName } from "./constants.js" +import { templateStringLiteral } from "../../docs/common.js" import { relative, resolve } from "path" -import { Resolved } from "../../actions/types" +import type { Resolved } from "../../actions/types.js" import { isAbsolute } from "path" -import { joinWithPosix } from "../../util/fs" -import { KubernetesModule, KubernetesService } from "./kubernetes-type/module-config" -import { HelmModule, HelmService } from "./helm/module-config" -import { convertServiceResource } from "./kubernetes-type/common" -import { prepareConnectionOpts } from "./kubectl" -import { GetSyncStatusResult, SyncState, SyncStatus } from "../../plugin/handlers/Deploy/get-sync-status" -import { ConfigurationError } from "../../exceptions" -import { DOCS_BASE_URL } from "../../constants" +import { joinWithPosix } from "../../util/fs.js" +import type { KubernetesModule, KubernetesService } from "./kubernetes-type/module-config.js" +import type { HelmModule, HelmService } from "./helm/module-config.js" +import { convertServiceResource } from "./kubernetes-type/common.js" +import { prepareConnectionOpts } from "./kubectl.js" +import type { GetSyncStatusResult, SyncState, SyncStatus } from "../../plugin/handlers/Deploy/get-sync-status.js" +import { ConfigurationError } from "../../exceptions.js" +import { DOCS_BASE_URL } from "../../constants.js" export const builtInExcludes = ["/**/*.git", "**/*.garden"] diff --git a/core/src/plugins/kubernetes/system.ts b/core/src/plugins/kubernetes/system.ts index e7d8708199..3c413c2f91 100644 --- a/core/src/plugins/kubernetes/system.ts +++ b/core/src/plugins/kubernetes/system.ts @@ -8,17 +8,17 @@ import { join } from "path" -import { GardenApiVersion, STATIC_DIR } from "../../constants" -import { Garden } from "../../garden" -import { KubernetesPluginContext, KubernetesConfig } from "./config" -import { Log } from "../../logger/log-entry" -import { getSystemNamespace } from "./namespace" -import { PluginError } from "../../exceptions" -import { DeepPrimitiveMap } from "../../config/common" -import { combineStates } from "../../types/service" -import { defaultDotIgnoreFile } from "../../util/fs" -import { LogLevel } from "../../logger/logger" -import { defaultNamespace } from "../../config/project" +import { GardenApiVersion, STATIC_DIR } from "../../constants.js" +import { Garden } from "../../garden.js" +import type { KubernetesPluginContext, KubernetesConfig } from "./config.js" +import type { Log } from "../../logger/log-entry.js" +import { getSystemNamespace } from "./namespace.js" +import { PluginError } from "../../exceptions.js" +import type { DeepPrimitiveMap } from "../../config/common.js" +import { combineStates } from "../../types/service.js" +import { defaultDotIgnoreFile } from "../../util/fs.js" +import { LogLevel } from "../../logger/logger.js" +import { defaultNamespace } from "../../config/project.js" const systemProjectPath = join(STATIC_DIR, "kubernetes", "system") diff --git a/core/src/plugins/kubernetes/test-results.ts b/core/src/plugins/kubernetes/test-results.ts index d6202613f4..b99bfa26dc 100644 --- a/core/src/plugins/kubernetes/test-results.ts +++ b/core/src/plugins/kubernetes/test-results.ts @@ -6,23 +6,23 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { deserializeValues } from "../../util/serialization" -import { KubeApi, KubernetesError } from "./api" -import { ContainerTestAction } from "../container/moduleConfig" -import { PluginContext } from "../../plugin-context" -import { KubernetesPluginContext } from "./config" -import { Log } from "../../logger/log-entry" -import { TestResult } from "../../types/test" +import { deserializeValues } from "../../util/serialization.js" +import { KubeApi, KubernetesError } from "./api.js" +import type { ContainerTestAction } from "../container/moduleConfig.js" +import type { PluginContext } from "../../plugin-context.js" +import type { KubernetesPluginContext } from "./config.js" +import type { Log } from "../../logger/log-entry.js" +import type { TestResult } from "../../types/test.js" import hasha from "hasha" -import { gardenAnnotationKey } from "../../util/string" -import { upsertConfigMap } from "./util" -import { trimRunOutput } from "./helm/common" -import { getSystemNamespace } from "./namespace" +import { gardenAnnotationKey } from "../../util/string.js" +import { upsertConfigMap } from "./util.js" +import { trimRunOutput } from "./helm/common.js" +import { getSystemNamespace } from "./namespace.js" import chalk from "chalk" -import { TestActionHandler } from "../../plugin/action-types" -import { runResultToActionState } from "../../actions/base" -import { HelmPodTestAction } from "./helm/config" -import { KubernetesTestAction } from "./kubernetes-type/config" +import type { TestActionHandler } from "../../plugin/action-types.js" +import { runResultToActionState } from "../../actions/base.js" +import type { HelmPodTestAction } from "./helm/config.js" +import type { KubernetesTestAction } from "./kubernetes-type/config.js" // TODO: figure out how to get rid of the any cast export const k8sGetTestResult: TestActionHandler<"getResult", any> = async (params) => { @@ -35,7 +35,7 @@ export const k8sGetTestResult: TestActionHandler<"getResult", any> = async (para const resultKey = getTestResultKey(k8sCtx, action) try { - const res = await api.core.readNamespacedConfigMap(resultKey, testResultNamespace) + const res = await api.core.readNamespacedConfigMap({ name: resultKey, namespace: testResultNamespace }) const result: any = deserializeValues(res.data!) // Backwards compatibility for modified result schema diff --git a/core/src/plugins/kubernetes/types.ts b/core/src/plugins/kubernetes/types.ts index f5c858bfe6..335f0bcb21 100644 --- a/core/src/plugins/kubernetes/types.ts +++ b/core/src/plugins/kubernetes/types.ts @@ -18,15 +18,15 @@ import type { V1Ingress, } from "@kubernetes/client-node" -import type { Omit } from "../../util/util" +import type { Omit } from "../../util/util.js" import type { ContainerBuildAction, ContainerDeployAction, ContainerRunAction, ContainerTestAction, -} from "../container/config" -import type { HelmDeployAction, HelmPodRunAction, HelmPodTestAction } from "./helm/config" -import type { KubernetesDeployAction, KubernetesRunAction, KubernetesTestAction } from "./kubernetes-type/config" +} from "../container/config.js" +import type { HelmDeployAction, HelmPodRunAction, HelmPodTestAction } from "./helm/config.js" +import type { KubernetesDeployAction, KubernetesRunAction, KubernetesTestAction } from "./kubernetes-type/config.js" export interface BaseResource { apiVersion: string diff --git a/core/src/plugins/kubernetes/util.ts b/core/src/plugins/kubernetes/util.ts index dc6b6cca2a..7fcf5bd6be 100644 --- a/core/src/plugins/kubernetes/util.ts +++ b/core/src/plugins/kubernetes/util.ts @@ -6,22 +6,22 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { get, flatten, sortBy, omit, chain, sample, isEmpty, find, cloneDeep } from "lodash" -import { V1Pod, V1EnvVar, V1Container, V1PodSpec, CoreV1Event } from "@kubernetes/client-node" +import { get, flatten, sortBy, omit, sample, isEmpty, find, cloneDeep, uniqBy } from "lodash-es" +import type { V1Pod, V1EnvVar, V1Container, V1PodSpec, CoreV1Event } from "@kubernetes/client-node" import { apply as jsonMerge } from "json-merge-patch" import chalk from "chalk" import hasha from "hasha" -import { +import type { KubernetesResource, KubernetesWorkload, KubernetesPod, KubernetesServerResource, - isPodResource, SupportedRuntimeAction, -} from "./types" -import { findByName, exec } from "../../util/util" -import { KubeApi, KubernetesError } from "./api" +} from "./types.js" +import { isPodResource } from "./types.js" +import { findByName, exec } from "../../util/util.js" +import { KubeApi, KubernetesError } from "./api.js" import { gardenAnnotationKey, base64, @@ -31,24 +31,25 @@ import { truncate, dedent, naturalList, -} from "../../util/string" -import { MAX_CONFIGMAP_DATA_SIZE } from "./constants" -import { ContainerEnvVars } from "../container/moduleConfig" -import { ConfigurationError, DeploymentError, PluginError, InternalError } from "../../exceptions" -import { KubernetesProvider, KubernetesPluginContext, KubernetesTargetResourceSpec } from "./config" -import { Log } from "../../logger/log-entry" -import { PluginContext } from "../../plugin-context" -import { HelmModule } from "./helm/module-config" -import { KubernetesModule } from "./kubernetes-type/module-config" -import { prepareTemplates, renderHelmTemplateString } from "./helm/common" -import { SyncableResource } from "./types" -import { ProviderMap } from "../../config/provider" -import { PodRunner, PodRunnerExecParams } from "./run" -import { isSubset } from "../../util/is-subset" -import { checkPodStatus } from "./status/pod" -import { getActionNamespace } from "./namespace" -import { Resolved } from "../../actions/types" -import { serializeValues } from "../../util/serialization" +} from "../../util/string.js" +import { MAX_CONFIGMAP_DATA_SIZE } from "./constants.js" +import type { ContainerEnvVars } from "../container/moduleConfig.js" +import { ConfigurationError, DeploymentError, PluginError, InternalError } from "../../exceptions.js" +import type { KubernetesProvider, KubernetesPluginContext, KubernetesTargetResourceSpec } from "./config.js" +import type { Log } from "../../logger/log-entry.js" +import type { PluginContext } from "../../plugin-context.js" +import type { HelmModule } from "./helm/module-config.js" +import type { KubernetesModule } from "./kubernetes-type/module-config.js" +import { prepareTemplates, renderHelmTemplateString } from "./helm/common.js" +import type { SyncableResource } from "./types.js" +import type { ProviderMap } from "../../config/provider.js" +import type { PodRunnerExecParams } from "./run.js" +import { PodRunner } from "./run.js" +import { isSubset } from "../../util/is-subset.js" +import { checkPodStatus } from "./status/pod.js" +import { getActionNamespace } from "./namespace.js" +import type { Resolved } from "../../actions/types.js" +import { serializeValues } from "../../util/serialization.js" import { PassThrough } from "stream" const STATIC_LABEL_REGEX = /[0-9]/g @@ -129,12 +130,10 @@ export function getSelectorFromResource(resource: KubernetesWorkload): { [key: s export function deduplicatePodsByLabel(pods: KubernetesServerResource[]) { // We don't filter out pods with no labels const noLabel = pods.filter((pod) => isEmpty(pod.metadata.labels)) - const uniqByLabel = chain(pods) - .filter((pod) => !isEmpty(pod.metadata.labels)) - .sortBy((pod) => pod.metadata.creationTimestamp) - .reverse() // We only want the most recent pod in case of duplicates - .uniqBy((pod) => JSON.stringify(pod.metadata.labels)) - .value() + const labeled = pods.filter((pod) => !isEmpty(pod.metadata.labels)) + const labeledByCreation = sortBy(labeled, (pod) => pod.metadata.creationTimestamp).reverse() // We only want the most recent pod in case of duplicates + const uniqByLabel = uniqBy(labeledByCreation, (pod) => JSON.stringify(pod.metadata.labels)) + return sortBy([...uniqByLabel, ...noLabel], (pod) => pod.metadata.creationTimestamp) } @@ -183,7 +182,12 @@ export async function getCurrentWorkloadPods( */ export async function getWorkloadPods(api: KubeApi, namespace: string, resource: KubernetesWorkload | KubernetesPod) { if (isPodResource(resource)) { - return [await api.core.readNamespacedPod(resource.metadata.name, resource.metadata.namespace || namespace)] + return [ + await api.core.readNamespacedPod({ + name: resource.metadata.name, + namespace: resource.metadata.namespace || namespace, + }), + ] } // We don't match on the garden.io/version label because it can fall out of sync @@ -193,14 +197,10 @@ export async function getWorkloadPods(api: KubeApi, namespace: string, resource: if (resource.kind === "Deployment") { // Make sure we only return the pods from the current ReplicaSet const selectorString = labelSelectorToString(selector) - const replicaSetRes = await api.apps.listNamespacedReplicaSet( - resource.metadata?.namespace || namespace, - undefined, // pretty - undefined, // allowWatchBookmarks - undefined, // _continue - undefined, // fieldSelector - selectorString // labelSelector - ) + const replicaSetRes = await api.apps.listNamespacedReplicaSet({ + namespace: resource.metadata?.namespace || namespace, + labelSelector: selectorString, + }) const replicaSets = replicaSetRes.items.filter((r) => (r.spec.replicas || 0) > 0) @@ -232,14 +232,10 @@ export async function getPods( selector: { [key: string]: string } ): Promise[]> { const selectorString = labelSelectorToString(selector) - const res = await api.core.listNamespacedPod( + const res = await api.core.listNamespacedPod({ namespace, - undefined, // pretty - undefined, // allowWatchBookmarks - undefined, // continue - undefined, // fieldSelector - selectorString // labelSelector - ) + labelSelector: selectorString, + }) return []>res.items } @@ -429,13 +425,17 @@ export async function upsertConfigMap({ } try { - await api.core.createNamespacedConfigMap(namespace, body) + await api.core.createNamespacedConfigMap({ namespace, body: body }) } catch (err) { if (!(err instanceof KubernetesError)) { throw err } if (err.responseStatusCode === 409) { - await api.core.patchNamespacedConfigMap(key, namespace, body) + await api.core.patchNamespacedConfigMap({ + name: key, + namespace, + body, + }) } else { throw err } @@ -499,7 +499,7 @@ export async function getRunningDeploymentPod({ deploymentName: string namespace: string }) { - const resource = await api.apps.readNamespacedDeployment(deploymentName, namespace) + const resource = await api.apps.readNamespacedDeployment({ name: deploymentName, namespace }) const pods = await getWorkloadPods(api, namespace, resource) const pod = sample(pods.filter((p) => checkPodStatus(p) === "ready")) if (!pod) { @@ -716,11 +716,11 @@ export async function readTargetResource({ } if (targetKind === "Deployment") { - return api.apps.readNamespacedDeployment(targetName, namespace) + return api.apps.readNamespacedDeployment({ name: targetName, namespace }) } else if (targetKind === "DaemonSet") { - return api.apps.readNamespacedDaemonSet(targetName, namespace) + return api.apps.readNamespacedDaemonSet({ name: targetName, namespace }) } else if (targetKind === "StatefulSet") { - return api.apps.readNamespacedStatefulSet(targetName, namespace) + return api.apps.readNamespacedStatefulSet({ name: targetName, namespace }) } else { // This should be caught in config/schema validation throw new InternalError({ diff --git a/core/src/plugins/kubernetes/volumes/configmap.ts b/core/src/plugins/kubernetes/volumes/configmap.ts index e9cd89bf86..2cbb9bff83 100644 --- a/core/src/plugins/kubernetes/volumes/configmap.ts +++ b/core/src/plugins/kubernetes/volumes/configmap.ts @@ -6,23 +6,24 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { joiIdentifier, joi, joiSparseArray, joiStringMap } from "../../../config/common" -import { dedent } from "../../../util/string" -import { BaseVolumeSpec } from "../../base-volume" -import { V1ConfigMap } from "@kubernetes/client-node" -import { ModuleTypeDefinition } from "../../../plugin/plugin" -import { baseBuildSpecSchema } from "../../../config/module" -import { ConfigureModuleParams } from "../../../plugin/handlers/Module/configure" -import { GardenModule } from "../../../types/module" -import { KubernetesResource } from "../types" -import { kubernetesDeploy, getKubernetesDeployStatus } from "../kubernetes-type/handlers" -import { ConvertModuleParams } from "../../../plugin/handlers/Module/convert" -import { DeployActionDefinition } from "../../../plugin/action-types" -import { DeployAction, DeployActionConfig, ResolvedDeployAction } from "../../../actions/deploy" -import { KubernetesDeployActionConfig } from "../kubernetes-type/config" -import { Resolved } from "../../../actions/types" -import { makeDocsLink } from "../../../docs/common" -import { KUBECTL_DEFAULT_TIMEOUT } from "../kubectl" +import { joiIdentifier, joi, joiSparseArray, joiStringMap } from "../../../config/common.js" +import { dedent } from "../../../util/string.js" +import type { BaseVolumeSpec } from "../../base-volume.js" +import type { V1ConfigMap } from "@kubernetes/client-node" +import type { ModuleTypeDefinition } from "../../../plugin/plugin.js" +import { baseBuildSpecSchema } from "../../../config/module.js" +import type { ConfigureModuleParams } from "../../../plugin/handlers/Module/configure.js" +import type { GardenModule } from "../../../types/module.js" +import type { KubernetesResource } from "../types.js" +import { kubernetesDeploy, getKubernetesDeployStatus } from "../kubernetes-type/handlers.js" +import type { ConvertModuleParams } from "../../../plugin/handlers/Module/convert.js" +import type { DeployActionDefinition } from "../../../plugin/action-types.js" +import type { DeployAction, DeployActionConfig } from "../../../actions/deploy.js" +import { ResolvedDeployAction } from "../../../actions/deploy.js" +import type { KubernetesDeployActionConfig } from "../kubernetes-type/config.js" +import type { Resolved } from "../../../actions/types.js" +import { makeDocsLink } from "../../../docs/common.js" +import { KUBECTL_DEFAULT_TIMEOUT } from "../kubectl.js" // TODO: If we make a third one in addition to this and `persistentvolumeclaim`, we should dedupe some code. diff --git a/core/src/plugins/kubernetes/volumes/persistentvolumeclaim.ts b/core/src/plugins/kubernetes/volumes/persistentvolumeclaim.ts index d5d2228765..62faa07b08 100644 --- a/core/src/plugins/kubernetes/volumes/persistentvolumeclaim.ts +++ b/core/src/plugins/kubernetes/volumes/persistentvolumeclaim.ts @@ -6,25 +6,27 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { V1PersistentVolumeClaim, V1PersistentVolumeClaimSpec } from "@kubernetes/client-node" -import { readFileSync } from "fs-extra" -import { memoize } from "lodash" +import type { V1PersistentVolumeClaim, V1PersistentVolumeClaimSpec } from "@kubernetes/client-node" +import fsExtra from "fs-extra" +const { readFileSync } = fsExtra +import { memoize } from "lodash-es" import { join } from "path" -import { DeployAction, DeployActionConfig, ResolvedDeployAction } from "../../../actions/deploy" -import { Resolved } from "../../../actions/types" -import { createSchema, joi, joiIdentifier, joiSparseArray } from "../../../config/common" -import { baseBuildSpecSchema } from "../../../config/module" -import { STATIC_DIR } from "../../../constants" -import { DeployActionDefinition } from "../../../plugin/action-types" -import { ConfigureModuleParams } from "../../../plugin/handlers/Module/configure" -import { ConvertModuleParams } from "../../../plugin/handlers/Module/convert" -import { ModuleTypeDefinition } from "../../../plugin/plugin" -import { GardenModule } from "../../../types/module" -import { dedent } from "../../../util/string" -import { KUBECTL_DEFAULT_TIMEOUT } from "../kubectl" -import { KubernetesDeployActionConfig } from "../kubernetes-type/config" -import { deleteKubernetesDeploy, getKubernetesDeployStatus, kubernetesDeploy } from "../kubernetes-type/handlers" -import { KubernetesResource } from "../types" +import type { DeployAction, DeployActionConfig } from "../../../actions/deploy.js" +import { ResolvedDeployAction } from "../../../actions/deploy.js" +import type { Resolved } from "../../../actions/types.js" +import { createSchema, joi, joiIdentifier, joiSparseArray } from "../../../config/common.js" +import { baseBuildSpecSchema } from "../../../config/module.js" +import { STATIC_DIR } from "../../../constants.js" +import type { DeployActionDefinition } from "../../../plugin/action-types.js" +import type { ConfigureModuleParams } from "../../../plugin/handlers/Module/configure.js" +import type { ConvertModuleParams } from "../../../plugin/handlers/Module/convert.js" +import type { ModuleTypeDefinition } from "../../../plugin/plugin.js" +import type { GardenModule } from "../../../types/module.js" +import { dedent } from "../../../util/string.js" +import { KUBECTL_DEFAULT_TIMEOUT } from "../kubectl.js" +import type { KubernetesDeployActionConfig } from "../kubernetes-type/config.js" +import { deleteKubernetesDeploy, getKubernetesDeployStatus, kubernetesDeploy } from "../kubernetes-type/handlers.js" +import type { KubernetesResource } from "../types.js" export interface PersistentVolumeClaimDeploySpec { namespace?: string diff --git a/core/src/plugins/octant/octant.ts b/core/src/plugins/octant/octant.ts index f8b84a8431..e83cd77831 100644 --- a/core/src/plugins/octant/octant.ts +++ b/core/src/plugins/octant/octant.ts @@ -6,12 +6,13 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { dedent } from "../../util/string" -import { GetDashboardPageParams } from "../../plugin/handlers/Provider/getDashboardPage" -import execa, { ExecaChildProcess } from "execa" +import { dedent } from "../../util/string.js" +import type { GetDashboardPageParams } from "../../plugin/handlers/Provider/getDashboardPage.js" +import type { ExecaChildProcess } from "execa" +import execa from "execa" import getPort from "get-port" -import { getK8sProvider } from "../kubernetes/util" -import { createGardenPlugin } from "../../plugin/plugin" +import { getK8sProvider } from "../kubernetes/util.js" +import { createGardenPlugin } from "../../plugin/plugin.js" let octantProc: ExecaChildProcess let octantPort: number diff --git a/core/src/plugins/openshift/build.ts b/core/src/plugins/openshift/build.ts index fb614d2675..3bd1bd4c40 100644 --- a/core/src/plugins/openshift/build.ts +++ b/core/src/plugins/openshift/build.ts @@ -6,16 +6,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { DeepPrimitiveMap } from "@garden-io/platform-api-types" -import { BuildActionExtension } from "../../plugin/action-types" -import { ContainerBuildAction } from "../container/config" -import { ContainerBuildMode, KubernetesProvider } from "../kubernetes/config" -import { k8sGetContainerBuildActionOutputs } from "../kubernetes/container/handlers" -import { k8sPublishContainerBuild } from "../kubernetes/container/publish" -import { BuildHandler, BuildStatusHandler } from "../kubernetes/container/build/common" -import { getLocalBuildStatus, localBuild } from "../kubernetes/container/build/local" -import { getKanikoBuildStatus, kanikoBuild } from "../kubernetes/container/build/kaniko" -import { NotImplementedError } from "../../exceptions" +import type { DeepPrimitiveMap } from "@garden-io/platform-api-types" +import type { BuildActionExtension } from "../../plugin/action-types.js" +import type { ContainerBuildAction } from "../container/config.js" +import type { ContainerBuildMode, KubernetesProvider } from "../kubernetes/config.js" +import { k8sGetContainerBuildActionOutputs } from "../kubernetes/container/handlers.js" +import { k8sPublishContainerBuild } from "../kubernetes/container/publish.js" +import type { BuildHandler, BuildStatusHandler } from "../kubernetes/container/build/common.js" +import { getLocalBuildStatus, localBuild } from "../kubernetes/container/build/local.js" +import { getKanikoBuildStatus, kanikoBuild } from "../kubernetes/container/build/kaniko.js" +import { NotImplementedError } from "../../exceptions.js" export const openshiftContainerBuildExtension = (): BuildActionExtension => ({ name: "container", diff --git a/core/src/plugins/openshift/config.ts b/core/src/plugins/openshift/config.ts index 20e4c057e7..88523b863a 100644 --- a/core/src/plugins/openshift/config.ts +++ b/core/src/plugins/openshift/config.ts @@ -6,10 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { joiProviderName } from "../../config/common" -import { BaseProviderConfig, Provider, providerConfigBaseSchema } from "../../config/provider" -import { PluginContext } from "../../plugin-context" -import { resourcesSchema } from "../kubernetes/config" +import { joiProviderName } from "../../config/common.js" +import type { BaseProviderConfig, Provider } from "../../config/provider.js" +import { providerConfigBaseSchema } from "../../config/provider.js" +import type { PluginContext } from "../../plugin-context.js" +import { resourcesSchema } from "../kubernetes/config.js" export type OpenShiftConfig = BaseProviderConfig export type OpenShiftProvider = Provider diff --git a/core/src/plugins/openshift/deploy.ts b/core/src/plugins/openshift/deploy.ts index 93495113ec..456fc97932 100644 --- a/core/src/plugins/openshift/deploy.ts +++ b/core/src/plugins/openshift/deploy.ts @@ -6,14 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { DeployActionExtension, DeployActionHandler } from "../../plugin/action-types" -import { ContainerDeployAction } from "../container/moduleConfig" -import { KubernetesProvider } from "../kubernetes/config" -import { deleteContainerDeploy, k8sContainerDeploy } from "../kubernetes/container/deployment" -import { validateDeploySpec } from "../kubernetes/container/handlers" -import { k8sGetContainerDeployStatus } from "../kubernetes/container/status" -import { k8sContainerStartSync, k8sContainerStopSync, k8sContainerGetSyncStatus } from "../kubernetes/container/sync" -import { k8sGetContainerDeployLogs } from "../kubernetes/container/logs" +import type { DeployActionExtension, DeployActionHandler } from "../../plugin/action-types.js" +import type { ContainerDeployAction } from "../container/moduleConfig.js" +import type { KubernetesProvider } from "../kubernetes/config.js" +import { deleteContainerDeploy, k8sContainerDeploy } from "../kubernetes/container/deployment.js" +import { validateDeploySpec } from "../kubernetes/container/handlers.js" +import { k8sGetContainerDeployStatus } from "../kubernetes/container/status.js" +import { k8sContainerStartSync, k8sContainerStopSync, k8sContainerGetSyncStatus } from "../kubernetes/container/sync.js" +import { k8sGetContainerDeployLogs } from "../kubernetes/container/logs.js" export const openshiftGetContainerDeployStatus: DeployActionHandler<"getStatus", ContainerDeployAction> = async ( params diff --git a/core/src/plugins/openshift/openshift.ts b/core/src/plugins/openshift/openshift.ts index da964bd78b..7b673c7ea3 100644 --- a/core/src/plugins/openshift/openshift.ts +++ b/core/src/plugins/openshift/openshift.ts @@ -6,16 +6,17 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ConfigureProviderParams } from "../../plugin/handlers/Provider/configureProvider" -import { createGardenPlugin } from "../../plugin/plugin" -import { k8sContainerRunExtension, k8sContainerTestExtension } from "../kubernetes/container/extensions" +import type { ConfigureProviderParams } from "../../plugin/handlers/Provider/configureProvider.js" +import { createGardenPlugin } from "../../plugin/plugin.js" +import { k8sContainerRunExtension, k8sContainerTestExtension } from "../kubernetes/container/extensions.js" import { kubernetesExecRunDefinition, kubernetesExecTestDefinition, -} from "../kubernetes/kubernetes-type/kubernetes-exec" -import { openshiftContainerBuildExtension } from "./build" -import { OpenShiftConfig, configSchema } from "./config" -import { openshiftContainerDeployExtension } from "./deploy" +} from "../kubernetes/kubernetes-type/kubernetes-exec.js" +import { openshiftContainerBuildExtension } from "./build.js" +import type { OpenShiftConfig } from "./config.js" +import { configSchema } from "./config.js" +import { openshiftContainerDeployExtension } from "./deploy.js" export async function configureProvider({ config }: ConfigureProviderParams) { return { config } diff --git a/core/src/plugins/otel-collector/config.ts b/core/src/plugins/otel-collector/config.ts index cfc9a51a16..9c9dc4e304 100644 --- a/core/src/plugins/otel-collector/config.ts +++ b/core/src/plugins/otel-collector/config.ts @@ -6,22 +6,20 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { mergeWith } from "lodash" -import { MergeDeep } from "type-fest" -import { - OtlpHttpExporterConfigPartial, - OtelCollectorOtlpHttpConfiguration, - makeOtlpHttpPartialConfig, -} from "./config/otlphttp" -import { - DatadogExporterConfigPartial, - OtelCollectorDatadogConfiguration, - makeDatadogPartialConfig, -} from "./config/datadog" -import { OtelCollectorNewRelicConfiguration, makeNewRelicPartialConfig } from "./config/newrelic" -import { OtelCollectorBaseConfig, getOtelCollectorBaseConfig } from "./config/base" -import { OtelCollectorHoneycombConfiguration, makeHoneycombPartialConfig } from "./config/honeycomb" -import { OtelCollectorLoggingConfiguration, makeLoggingPartialConfig } from "./config/logging" +import { mergeWith } from "lodash-es" +import type { MergeDeep } from "type-fest" +import type { OtlpHttpExporterConfigPartial, OtelCollectorOtlpHttpConfiguration } from "./config/otlphttp.js" +import { makeOtlpHttpPartialConfig } from "./config/otlphttp.js" +import type { DatadogExporterConfigPartial, OtelCollectorDatadogConfiguration } from "./config/datadog.js" +import { makeDatadogPartialConfig } from "./config/datadog.js" +import type { OtelCollectorNewRelicConfiguration } from "./config/newrelic.js" +import { makeNewRelicPartialConfig } from "./config/newrelic.js" +import type { OtelCollectorBaseConfig } from "./config/base.js" +import { getOtelCollectorBaseConfig } from "./config/base.js" +import type { OtelCollectorHoneycombConfiguration } from "./config/honeycomb.js" +import { makeHoneycombPartialConfig } from "./config/honeycomb.js" +import type { OtelCollectorLoggingConfiguration } from "./config/logging.js" +import { makeLoggingPartialConfig } from "./config/logging.js" export type OtelConfigFile = MergeDeep< OtelCollectorBaseConfig, diff --git a/core/src/plugins/otel-collector/config/base.ts b/core/src/plugins/otel-collector/config/base.ts index 7212b0f852..275d99d82e 100644 --- a/core/src/plugins/otel-collector/config/base.ts +++ b/core/src/plugins/otel-collector/config/base.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { sdk } from "../../../plugin/sdk" +import { sdk } from "../../../plugin/sdk.js" const s = sdk.schema diff --git a/core/src/plugins/otel-collector/config/datadog.ts b/core/src/plugins/otel-collector/config/datadog.ts index 32a30eb0f3..e25a630978 100644 --- a/core/src/plugins/otel-collector/config/datadog.ts +++ b/core/src/plugins/otel-collector/config/datadog.ts @@ -7,9 +7,9 @@ */ import { hostname } from "os" -import { sdk } from "../../../plugin/sdk" -import { baseValidator } from "./base" -import { inferType } from "../../../config/zod" +import { sdk } from "../../../plugin/sdk.js" +import { baseValidator } from "./base.js" +import type { inferType } from "../../../config/zod.js" const s = sdk.schema diff --git a/core/src/plugins/otel-collector/config/honeycomb.ts b/core/src/plugins/otel-collector/config/honeycomb.ts index be872b8e66..623809237d 100644 --- a/core/src/plugins/otel-collector/config/honeycomb.ts +++ b/core/src/plugins/otel-collector/config/honeycomb.ts @@ -6,10 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { OtlpHttpExporterConfigPartial, makeOtlpHttpPartialConfig } from "./otlphttp" -import { sdk } from "../../../plugin/sdk" -import { baseValidator } from "./base" -import { inferType } from "../../../config/zod" +import type { OtlpHttpExporterConfigPartial } from "./otlphttp.js" +import { makeOtlpHttpPartialConfig } from "./otlphttp.js" +import { sdk } from "../../../plugin/sdk.js" +import { baseValidator } from "./base.js" +import type { inferType } from "../../../config/zod.js" const s = sdk.schema diff --git a/core/src/plugins/otel-collector/config/logging.ts b/core/src/plugins/otel-collector/config/logging.ts index 5b063e7800..790241e35f 100644 --- a/core/src/plugins/otel-collector/config/logging.ts +++ b/core/src/plugins/otel-collector/config/logging.ts @@ -6,9 +6,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { inferType } from "../../../config/zod" -import { sdk } from "../../../plugin/sdk" -import { baseValidator } from "./base" +import type { inferType } from "../../../config/zod.js" +import { sdk } from "../../../plugin/sdk.js" +import { baseValidator } from "./base.js" // Verbosity levels documented in https://github.com/open-telemetry/opentelemetry-collector/blob/main/exporter/loggingexporter/README.md export type LoggingExporterVerbosityLevel = "detailed" | "normal" | "basic" diff --git a/core/src/plugins/otel-collector/config/newrelic.ts b/core/src/plugins/otel-collector/config/newrelic.ts index f33b306163..b25e915231 100644 --- a/core/src/plugins/otel-collector/config/newrelic.ts +++ b/core/src/plugins/otel-collector/config/newrelic.ts @@ -6,10 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { OtlpHttpExporterConfigPartial, makeOtlpHttpPartialConfig } from "./otlphttp" -import { sdk } from "../../../plugin/sdk" -import { baseValidator } from "./base" -import { inferType } from "../../../config/zod" +import type { OtlpHttpExporterConfigPartial } from "./otlphttp.js" +import { makeOtlpHttpPartialConfig } from "./otlphttp.js" +import { sdk } from "../../../plugin/sdk.js" +import { baseValidator } from "./base.js" +import type { inferType } from "../../../config/zod.js" const s = sdk.schema diff --git a/core/src/plugins/otel-collector/config/otlphttp.ts b/core/src/plugins/otel-collector/config/otlphttp.ts index 4733c8993e..2efe45bb56 100644 --- a/core/src/plugins/otel-collector/config/otlphttp.ts +++ b/core/src/plugins/otel-collector/config/otlphttp.ts @@ -6,9 +6,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { inferType } from "../../../config/zod" -import { sdk } from "../../../plugin/sdk" -import { baseValidator } from "./base" +import type { inferType } from "../../../config/zod.js" +import { sdk } from "../../../plugin/sdk.js" +import { baseValidator } from "./base.js" const s = sdk.schema diff --git a/core/src/plugins/otel-collector/otel-collector.ts b/core/src/plugins/otel-collector/otel-collector.ts index 5b57e05ac0..c0dd718bbc 100644 --- a/core/src/plugins/otel-collector/otel-collector.ts +++ b/core/src/plugins/otel-collector/otel-collector.ts @@ -7,24 +7,26 @@ */ import { join } from "path" -import { GenericProviderConfig, Provider } from "../../config/provider" -import { dedent } from "../../util/string" -import { sdk } from "../../plugin/sdk" -import { registerCleanupFunction } from "../../util/util" -import { configureNoOpExporter, configureOTLPHttpExporter } from "../../util/open-telemetry/tracing" -import { OtelExportersConfig, getOtelCollectorConfigFile } from "./config" +import type { GenericProviderConfig, Provider } from "../../config/provider.js" +import { dedent } from "../../util/string.js" +import { sdk } from "../../plugin/sdk.js" +import { registerCleanupFunction } from "../../util/util.js" +import { configureNoOpExporter, configureOTLPHttpExporter } from "../../util/open-telemetry/tracing.js" +import type { OtelExportersConfig } from "./config.js" +import { getOtelCollectorConfigFile } from "./config.js" import YAML from "yaml" -import { makeTempDir } from "../../util/fs" -import { writeFile } from "fs-extra" -import { streamLogs, waitForLogLine, waitForProcessExit } from "../../util/process" +import { makeTempDir } from "../../util/fs.js" +import fsExtra from "fs-extra" +const { writeFile } = fsExtra +import { streamLogs, waitForLogLine, waitForProcessExit } from "../../util/process.js" import getPort from "get-port" -import { wrapActiveSpan } from "../../util/open-telemetry/spans" -import { dataDogValidator } from "./config/datadog" -import { honeycombValidator } from "./config/honeycomb" -import { loggingValidator } from "./config/logging" -import { newRelicValidator } from "./config/newrelic" -import { otlpHttpValidator } from "./config/otlphttp" -import { toGardenError } from "../../exceptions" +import { wrapActiveSpan } from "../../util/open-telemetry/spans.js" +import { dataDogValidator } from "./config/datadog.js" +import { honeycombValidator } from "./config/honeycomb.js" +import { loggingValidator } from "./config/logging.js" +import { newRelicValidator } from "./config/newrelic.js" +import { otlpHttpValidator } from "./config/otlphttp.js" +import { toGardenError } from "../../exceptions.js" const OTEL_CONFIG_NAME = "otel-config.yaml" @@ -116,7 +118,7 @@ const providerConfigSchema = s.object({ export const provider = gardenPlugin.createProvider({ configSchema: providerConfigSchema, outputsSchema: s.object({}) }) -provider.addHandler("getEnvironmentStatus", async ({ ctx }) => { +provider.addHandler("getEnvironmentStatus", async () => { return { ready: false, outputs: {} } }) diff --git a/core/src/plugins/plugins.ts b/core/src/plugins/plugins.ts index fc89296fd8..9597cd9b8f 100644 --- a/core/src/plugins/plugins.ts +++ b/core/src/plugins/plugins.ts @@ -11,63 +11,64 @@ export const getSupportedPlugins = () => [ { name: "container", callback: async () => { - const plugin = await import("./container/container") + const plugin = await import("./container/container.js") return plugin.gardenPlugin() }, }, { name: "exec", callback: async () => { - const plugin = await import("./exec/exec") + const plugin = await import("./exec/exec.js") + await plugin.initializeActionTypes() return plugin.gardenPlugin.getSpec() }, }, { name: "hadolint", callback: async () => { - const plugin = await import("./hadolint/hadolint") + const plugin = await import("./hadolint/hadolint.js") return plugin.gardenPlugin.getSpec() }, }, { name: "kubernetes", callback: async () => { - const plugin = await import("./kubernetes/kubernetes") + const plugin = await import("./kubernetes/kubernetes.js") return plugin.gardenPlugin() }, }, { name: "local-kubernetes", callback: async () => { - const plugin = await import("./kubernetes/local/local") + const plugin = await import("./kubernetes/local/local.js") return plugin.gardenPlugin() }, }, { name: "ephemeral-kubernetes", callback: async () => { - const plugin = await import("./kubernetes/ephemeral/ephemeral") + const plugin = await import("./kubernetes/ephemeral/ephemeral.js") return plugin.gardenPlugin() }, }, { name: "openshift", callback: async () => { - const plugin = await import("./openshift/openshift") + const plugin = await import("./openshift/openshift.js") return plugin.gardenPlugin() }, }, { name: "octant", callback: async () => { - const plugin = await import("./octant/octant") + const plugin = await import("./octant/octant.js") return plugin.gardenPlugin() }, }, { name: "otel-collector", callback: async () => { - const plugin = await import("./otel-collector/otel-collector") + const plugin = await import("./otel-collector/otel-collector.js") return plugin.gardenPlugin.getSpec() }, }, @@ -79,7 +80,7 @@ export const getBuiltinPlugins = () => { name: "templated", callback: async () => { - const plugin = await import("./templated") + const plugin = await import("./templated.js") return plugin.gardenPlugin() }, }, diff --git a/core/src/plugins/templated.ts b/core/src/plugins/templated.ts index 841f5d2944..0286ff5734 100644 --- a/core/src/plugins/templated.ts +++ b/core/src/plugins/templated.ts @@ -6,13 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { createGardenPlugin } from "../plugin/plugin" -import { ModuleConfig, ModuleSpec, baseModuleSpecKeys, baseBuildSpecSchema } from "../config/module" -import { configTemplateKind, renderTemplateKind } from "../config/base" -import { DeepPrimitiveMap } from "../config/common" -import { dedent, naturalList } from "../util/string" -import { omit } from "lodash" -import { templatedModuleSpecSchema } from "../config/render-template" +import { createGardenPlugin } from "../plugin/plugin.js" +import type { ModuleConfig, ModuleSpec } from "../config/module.js" +import { baseModuleSpecKeys, baseBuildSpecSchema } from "../config/module.js" +import { configTemplateKind, renderTemplateKind } from "../config/base.js" +import type { DeepPrimitiveMap } from "../config/common.js" +import { dedent, naturalList } from "../util/string.js" +import { omit } from "lodash-es" +import { templatedModuleSpecSchema } from "../config/render-template.js" // TODO: remove in 0.14, replaced with Render kind diff --git a/core/src/process.ts b/core/src/process.ts index 6a0efc18f1..f699a81be0 100644 --- a/core/src/process.ts +++ b/core/src/process.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Garden } from "./garden" -import { Log } from "./logger/log-entry" -import { GardenProcess, GlobalConfigStore } from "./config-store/global" -import { sleep } from "./util/util" +import type { Garden } from "./garden.js" +import type { Log } from "./logger/log-entry.js" +import type { GardenProcess, GlobalConfigStore } from "./config-store/global.js" +import { sleep } from "./util/util.js" import psTree from "ps-tree" export async function waitForExitEvent(garden: Garden, log: Log) { diff --git a/core/src/proxy.ts b/core/src/proxy.ts index 73a5981e5a..8f3169eb8a 100644 --- a/core/src/proxy.ts +++ b/core/src/proxy.ts @@ -6,21 +6,23 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { isEqual, invert } from "lodash" -import chalk = require("chalk") -import { createServer, Server, Socket } from "net" -import AsyncLock = require("async-lock") -import getPort = require("get-port") -import { ServiceStatus, ForwardablePort } from "./types/service" -import { Garden } from "./garden" -import { registerCleanupFunction, sleep } from "./util/util" -import { createActionLog, Log } from "./logger/log-entry" -import { ConfigGraph } from "./graph/config-graph" -import { DeployAction } from "./actions/deploy" -import { GetPortForwardResult } from "./plugin/handlers/Deploy/get-port-forward" -import { Executed } from "./actions/types" -import { PluginEventBroker } from "./plugin-context" -import { GardenError, isErrnoException } from "./exceptions" +import { isEqual, invert } from "lodash-es" +import chalk from "chalk" +import type { Server } from "net" +import { createServer, Socket } from "net" +import AsyncLock from "async-lock" +import getPort from "get-port" +import type { ServiceStatus, ForwardablePort } from "./types/service.js" +import type { Garden } from "./garden.js" +import { registerCleanupFunction, sleep } from "./util/util.js" +import type { Log } from "./logger/log-entry.js" +import { createActionLog } from "./logger/log-entry.js" +import type { ConfigGraph } from "./graph/config-graph.js" +import type { DeployAction } from "./actions/deploy.js" +import type { GetPortForwardResult } from "./plugin/handlers/Deploy/get-port-forward.js" +import type { Executed } from "./actions/types.js" +import type { PluginEventBroker } from "./plugin-context.js" +import { GardenError, isErrnoException } from "./exceptions.js" export interface PortProxy { key: string diff --git a/core/src/resolve-module.ts b/core/src/resolve-module.ts index 5083cc132c..891e972f19 100644 --- a/core/src/resolve-module.ts +++ b/core/src/resolve-module.ts @@ -7,58 +7,57 @@ */ import cloneDeep from "fast-copy" -import { isArray, isString, keyBy, keys, pick, union } from "lodash" -import { validateWithPath } from "./config/validation" +import { isArray, isString, keyBy, keys, pick, union } from "lodash-es" +import { validateWithPath } from "./config/validation.js" import { getModuleTemplateReferences, mayContainTemplateString, resolveTemplateString, resolveTemplateStrings, -} from "./template-string/template-string" -import { GenericContext } from "./config/template-contexts/base" +} from "./template-string/template-string.js" +import { GenericContext } from "./config/template-contexts/base.js" import { dirname, posix, relative, resolve } from "path" -import type { Garden } from "./garden" +import type { Garden } from "./garden.js" +import type { GardenError } from "./exceptions.js" import { CircularDependenciesError, ConfigurationError, FilesystemError, - GardenError, PluginError, toGardenError, -} from "./exceptions" -import { dedent } from "./util/string" -import { - GardenModule, - getModuleTypeBases, - ModuleConfigMap, - moduleFromConfig, - ModuleMap, - ModuleTypeMap, -} from "./types/module" -import { BuildDependencyConfig, ModuleConfig, moduleConfigSchema } from "./config/module" -import { Profile, profileAsync } from "./util/profiling" -import { getLinkedSources } from "./util/ext-source-util" -import { ActionReference, allowUnknown, DeepPrimitiveMap } from "./config/common" -import type { ProviderMap } from "./config/provider" +} from "./exceptions.js" +import { dedent } from "./util/string.js" +import type { GardenModule, ModuleConfigMap, ModuleMap, ModuleTypeMap } from "./types/module.js" +import { getModuleTypeBases, moduleFromConfig } from "./types/module.js" +import type { BuildDependencyConfig, ModuleConfig } from "./config/module.js" +import { moduleConfigSchema } from "./config/module.js" +import { Profile, profileAsync } from "./util/profiling.js" +import { getLinkedSources } from "./util/ext-source-util.js" +import type { ActionReference, DeepPrimitiveMap } from "./config/common.js" +import { allowUnknown } from "./config/common.js" +import type { ProviderMap } from "./config/provider.js" import chalk from "chalk" -import { DependencyGraph } from "./graph/common" -import { mkdirp, readFile } from "fs-extra" -import type { Log } from "./logger/log-entry" -import { ModuleConfigContext, ModuleConfigContextParams } from "./config/template-contexts/module" -import { pathToCacheContext } from "./cache" -import { loadVarfile, prepareBuildDependencies } from "./config/base" +import { DependencyGraph } from "./graph/common.js" +import fsExtra from "fs-extra" +const { mkdirp, readFile } = fsExtra +import type { Log } from "./logger/log-entry.js" +import type { ModuleConfigContextParams } from "./config/template-contexts/module.js" +import { ModuleConfigContext } from "./config/template-contexts/module.js" +import { pathToCacheContext } from "./cache.js" +import { loadVarfile, prepareBuildDependencies } from "./config/base.js" import { merge } from "json-merge-patch" -import type { ModuleTypeDefinition } from "./plugin/plugin" -import { serviceFromConfig } from "./types/service" -import { taskFromConfig } from "./types/task" -import { testFromConfig } from "./types/test" -import { BuildActionConfig, BuildCopyFrom, isBuildActionConfig } from "./actions/build" -import type { GroupConfig } from "./config/group" -import type { ActionConfig, ActionKind, BaseActionConfig } from "./actions/types" -import type { ModuleGraph } from "./graph/modules" -import type { GraphResults } from "./graph/results" -import type { ExecBuildConfig } from "./plugins/exec/build" -import { pMemoizeDecorator } from "./lib/p-memoize" +import type { ModuleTypeDefinition } from "./plugin/plugin.js" +import { serviceFromConfig } from "./types/service.js" +import { taskFromConfig } from "./types/task.js" +import { testFromConfig } from "./types/test.js" +import type { BuildActionConfig, BuildCopyFrom } from "./actions/build.js" +import { isBuildActionConfig } from "./actions/build.js" +import type { GroupConfig } from "./config/group.js" +import type { ActionConfig, ActionKind, BaseActionConfig } from "./actions/types.js" +import type { ModuleGraph } from "./graph/modules.js" +import type { GraphResults } from "./graph/results.js" +import type { ExecBuildConfig } from "./plugins/exec/build.js" +import { pMemoizeDecorator } from "./lib/p-memoize.js" // This limit is fairly arbitrary, but we need to have some cap on concurrent processing. export const moduleResolutionConcurrencyLimit = 50 diff --git a/core/src/router/base.ts b/core/src/router/base.ts index 66d0576f8e..37a0c2ba7c 100644 --- a/core/src/router/base.ts +++ b/core/src/router/base.ts @@ -6,41 +6,42 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { fromPairs, keyBy, mapValues, pickBy } from "lodash" +import { fromPairs, keyBy, mapValues, pickBy } from "lodash-es" -import type { Garden } from "../garden" -import type { Log } from "../logger/log-entry" +import type { Garden } from "../garden.js" +import type { Log } from "../logger/log-entry.js" import type { PluginActionContextParams, PluginActionParamsBase, ResolvedActionHandlerDescription, WrappedActionHandler, -} from "../plugin/base" -import type { GardenPluginSpec, ActionHandler, PluginMap } from "../plugin/plugin" -import type { PluginContext, PluginEventBroker } from "../plugin-context" -import type { ConfigContext } from "../config/template-contexts/base" -import type { BaseAction } from "../actions/base" -import type { ActionKind, BaseActionConfig, Resolved } from "../actions/types" -import { +} from "../plugin/base.js" +import type { GardenPluginSpec, ActionHandler, PluginMap } from "../plugin/plugin.js" +import type { PluginContext, PluginEventBroker } from "../plugin-context.js" +import type { ConfigContext } from "../config/template-contexts/base.js" +import type { BaseAction } from "../actions/base.js" +import type { ActionKind, BaseActionConfig, Resolved } from "../actions/types.js" +import type { ActionTypeDefinition, ActionClassMap, GetActionTypeHandler, - getActionTypeHandlerDescriptions, GetActionTypeResults, WrappedActionTypeHandler, ActionTypeClasses, GetActionTypeParams, -} from "../plugin/action-types" -import { ParameterError, PluginError, InternalError } from "../exceptions" -import { validateSchema } from "../config/validation" -import { getActionTypeBases, getPluginBases, getPluginDependencies } from "../plugins" -import { getNames, MaybeUndefined } from "../util/util" -import { defaultProvider } from "../config/provider" -import type { ConfigGraph } from "../graph/config-graph" -import { ActionConfigContext, ActionSpecContext } from "../config/template-contexts/actions" -import type { NamespaceStatus } from "../types/namespace" -import { TemplatableConfigContext } from "../config/template-contexts/project" -import { ParamsBase } from "../plugin/handlers/base/base" +} from "../plugin/action-types.js" +import { getActionTypeHandlerDescriptions } from "../plugin/action-types.js" +import { ParameterError, PluginError, InternalError } from "../exceptions.js" +import { validateSchema } from "../config/validation.js" +import { getActionTypeBases, getPluginBases, getPluginDependencies } from "../plugins.js" +import type { MaybeUndefined } from "../util/util.js" +import { getNames } from "../util/util.js" +import { defaultProvider } from "../config/provider.js" +import type { ConfigGraph } from "../graph/config-graph.js" +import { ActionConfigContext, ActionSpecContext } from "../config/template-contexts/actions.js" +import type { NamespaceStatus } from "../types/namespace.js" +import { TemplatableConfigContext } from "../config/template-contexts/project.js" +import type { ParamsBase } from "../plugin/handlers/base/base.js" export type CommonParams = keyof PluginActionContextParams diff --git a/core/src/router/build.ts b/core/src/router/build.ts index 9d28d2a1f8..52688d3be4 100644 --- a/core/src/router/build.ts +++ b/core/src/router/build.ts @@ -8,9 +8,10 @@ import chalk from "chalk" -import { PluginEventBroker } from "../plugin-context" -import { BaseRouterParams, createActionRouter } from "./base" -import { PublishActionResult } from "../plugin/handlers/Build/publish" +import { PluginEventBroker } from "../plugin-context.js" +import type { BaseRouterParams } from "./base.js" +import { createActionRouter } from "./base.js" +import type { PublishActionResult } from "../plugin/handlers/Build/publish.js" const API_ACTION_TYPE = "build" diff --git a/core/src/router/deploy.ts b/core/src/router/deploy.ts index 61b0407832..5c76ad96a1 100644 --- a/core/src/router/deploy.ts +++ b/core/src/router/deploy.ts @@ -7,10 +7,11 @@ */ import chalk from "chalk" -import { ActionState } from "../actions/types" -import { PluginEventBroker } from "../plugin-context" -import { DeployState } from "../types/service" -import { BaseRouterParams, createActionRouter } from "./base" +import type { ActionState } from "../actions/types.js" +import { PluginEventBroker } from "../plugin-context.js" +import type { DeployState } from "../types/service.js" +import type { BaseRouterParams } from "./base.js" +import { createActionRouter } from "./base.js" const API_ACTION_TYPE = "deploy" diff --git a/core/src/router/module.ts b/core/src/router/module.ts index b95e343a72..b88dc96ca8 100644 --- a/core/src/router/module.ts +++ b/core/src/router/module.ts @@ -6,32 +6,33 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { fromPairs, uniqBy } from "lodash" -import { validateSchema } from "../config/validation" -import { defaultProvider } from "../config/provider" -import { ParameterError, PluginError, InternalError } from "../exceptions" -import { GardenModule } from "../types/module" -import { +import { fromPairs, uniqBy } from "lodash-es" +import { validateSchema } from "../config/validation.js" +import { defaultProvider } from "../config/provider.js" +import { ParameterError, PluginError, InternalError } from "../exceptions.js" +import type { GardenModule } from "../types/module.js" +import type { ModuleActionOutputs, ModuleActionParams, ModuleActionHandlers, GardenPluginSpec, WrappedModuleActionHandler, ModuleTypeDefinition, - getModuleHandlerNames, - getModuleHandlerDescriptions, ResolvedActionHandlerDescriptions, ModuleActionMap, -} from "../plugin/plugin" -import { Omit, getNames } from "../util/util" -import { getPluginBases, getPluginDependencies } from "../plugins" -import { ConfigureModuleParams, ConfigureModuleResult } from "../plugin/handlers/Module/configure" -import { PluginEventBroker } from "../plugin-context" -import { BuildDependencyConfig } from "../config/module" -import { Profile } from "../util/profiling" -import { GetModuleOutputsParams, GetModuleOutputsResult } from "../plugin/handlers/Module/get-outputs" -import { BaseRouter, BaseRouterParams } from "./base" -import { ConvertModuleParams, ConvertModuleResult } from "../plugin/handlers/Module/convert" +} from "../plugin/plugin.js" +import { getModuleHandlerNames, getModuleHandlerDescriptions } from "../plugin/plugin.js" +import type { Omit } from "../util/util.js" +import { getNames } from "../util/util.js" +import { getPluginBases, getPluginDependencies } from "../plugins.js" +import type { ConfigureModuleParams, ConfigureModuleResult } from "../plugin/handlers/Module/configure.js" +import type { PluginEventBroker } from "../plugin-context.js" +import type { BuildDependencyConfig } from "../config/module.js" +import { Profile } from "../util/profiling.js" +import type { GetModuleOutputsParams, GetModuleOutputsResult } from "../plugin/handlers/Module/get-outputs.js" +import type { BaseRouterParams } from "./base.js" +import { BaseRouter } from "./base.js" +import type { ConvertModuleParams, ConvertModuleResult } from "../plugin/handlers/Module/convert.js" import dedent from "dedent" /** diff --git a/core/src/router/provider.ts b/core/src/router/provider.ts index 29f94b9428..60c96efbeb 100644 --- a/core/src/router/provider.ts +++ b/core/src/router/provider.ts @@ -7,39 +7,45 @@ */ import chalk from "chalk" -import { fromPairs, mapValues, omit } from "lodash" +import { fromPairs, mapValues, omit } from "lodash-es" import pProps from "p-props" -import { validateSchema } from "../config/validation" -import { defaultProvider } from "../config/provider" -import { ParameterError, PluginError } from "../exceptions" -import { Log } from "../logger/log-entry" -import { PluginActionParamsBase } from "../plugin/base" -import { +import { validateSchema } from "../config/validation.js" +import { defaultProvider } from "../config/provider.js" +import { ParameterError, PluginError } from "../exceptions.js" +import type { Log } from "../logger/log-entry.js" +import type { PluginActionParamsBase } from "../plugin/base.js" +import type { ProviderActionOutputs, ProviderActionParams, GardenPluginSpec, WrappedActionHandler, - getProviderActionDescriptions, ResolvedActionHandlerDescriptions, - getProviderHandlerNames, ProviderHandlers, -} from "../plugin/plugin" -import { CleanupEnvironmentParams, CleanupEnvironmentResult } from "../plugin/handlers/Provider/cleanupEnvironment" -import { +} from "../plugin/plugin.js" +import { getProviderActionDescriptions, getProviderHandlerNames } from "../plugin/plugin.js" +import type { + CleanupEnvironmentParams, + CleanupEnvironmentResult, +} from "../plugin/handlers/Provider/cleanupEnvironment.js" +import type { EnvironmentStatusMap, GetEnvironmentStatusParams, EnvironmentStatus, -} from "../plugin/handlers/Provider/getEnvironmentStatus" -import { Omit } from "../util/util" -import { DebugInfoMap } from "../plugin/handlers/Provider/getDebugInfo" -import { PrepareEnvironmentParams, PrepareEnvironmentResult } from "../plugin/handlers/Provider/prepareEnvironment" -import { ConfigureProviderParams, ConfigureProviderResult } from "../plugin/handlers/Provider/configureProvider" -import { PluginContext, PluginEventBroker } from "../plugin-context" -import { AugmentGraphResult, AugmentGraphParams } from "../plugin/handlers/Provider/augmentGraph" -import { Profile } from "../util/profiling" -import { GetDashboardPageParams, GetDashboardPageResult } from "../plugin/handlers/Provider/getDashboardPage" -import { BaseRouter, BaseRouterParams, CommonParams } from "./base" +} from "../plugin/handlers/Provider/getEnvironmentStatus.js" +import type { Omit } from "../util/util.js" +import type { DebugInfoMap } from "../plugin/handlers/Provider/getDebugInfo.js" +import type { + PrepareEnvironmentParams, + PrepareEnvironmentResult, +} from "../plugin/handlers/Provider/prepareEnvironment.js" +import type { ConfigureProviderParams, ConfigureProviderResult } from "../plugin/handlers/Provider/configureProvider.js" +import type { PluginContext, PluginEventBroker } from "../plugin-context.js" +import type { AugmentGraphResult, AugmentGraphParams } from "../plugin/handlers/Provider/augmentGraph.js" +import { Profile } from "../util/profiling.js" +import type { GetDashboardPageParams, GetDashboardPageResult } from "../plugin/handlers/Provider/getDashboardPage.js" +import type { CommonParams, BaseRouterParams } from "./base.js" +import { BaseRouter } from "./base.js" /** * The ProviderRouter takes care of choosing which plugin should be responsible for handling a provider action, diff --git a/core/src/router/router.ts b/core/src/router/router.ts index 0bd067e964..c67aa3921d 100644 --- a/core/src/router/router.ts +++ b/core/src/router/router.ts @@ -8,24 +8,25 @@ import chalk from "chalk" -import type { Garden } from "../garden" -import type { Log } from "../logger/log-entry" -import { GardenPluginSpec, ModuleTypeDefinition, PluginActionContextParams } from "../plugin/plugin" -import { getDeployStatuses } from "../tasks/helpers" -import { DeleteDeployTask, deletedDeployStatuses } from "../tasks/delete-deploy" -import { DeployTask } from "../tasks/deploy" -import { Profile } from "../util/profiling" -import type { ConfigGraph } from "../graph/config-graph" -import { ProviderRouter } from "./provider" -import { ActionKindRouter, BaseRouter, WrappedActionRouterHandlers } from "./base" -import { ModuleRouter } from "./module" -import { buildRouter } from "./build" -import { deployRouter } from "./deploy" -import { runRouter } from "./run" -import { testRouter } from "./test" -import type { DeployStatus, DeployStatusMap } from "../plugin/handlers/Deploy/get-status" -import type { GetActionOutputsParams, GetActionOutputsResult } from "../plugin/handlers/base/get-outputs" -import type { ActionKind, BaseActionConfig, ResolvedAction } from "../actions/types" +import type { Garden } from "../garden.js" +import type { Log } from "../logger/log-entry.js" +import type { GardenPluginSpec, ModuleTypeDefinition, PluginActionContextParams } from "../plugin/plugin.js" +import { getDeployStatuses } from "../tasks/helpers.js" +import { DeleteDeployTask, deletedDeployStatuses } from "../tasks/delete-deploy.js" +import { DeployTask } from "../tasks/deploy.js" +import { Profile } from "../util/profiling.js" +import type { ConfigGraph } from "../graph/config-graph.js" +import { ProviderRouter } from "./provider.js" +import type { ActionKindRouter, WrappedActionRouterHandlers } from "./base.js" +import { BaseRouter } from "./base.js" +import { ModuleRouter } from "./module.js" +import { buildRouter } from "./build.js" +import { deployRouter } from "./deploy.js" +import { runRouter } from "./run.js" +import { testRouter } from "./test.js" +import type { DeployStatus, DeployStatusMap } from "../plugin/handlers/Deploy/get-status.js" +import type { GetActionOutputsParams, GetActionOutputsResult } from "../plugin/handlers/base/get-outputs.js" +import type { ActionKind, BaseActionConfig, ResolvedAction } from "../actions/types.js" export interface DeployManyParams { graph: ConfigGraph diff --git a/core/src/router/run.ts b/core/src/router/run.ts index 615fd1ae5b..4103712d4a 100644 --- a/core/src/router/run.ts +++ b/core/src/router/run.ts @@ -6,12 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { realpath } from "fs-extra" +import fsExtra from "fs-extra" +const { realpath } = fsExtra import normalizePath from "normalize-path" import tmp from "tmp-promise" -import { PluginEventBroker } from "../plugin-context" -import { copyArtifacts, getArtifactKey } from "../util/artifacts" -import { BaseRouterParams, createActionRouter } from "./base" +import { PluginEventBroker } from "../plugin-context.js" +import { copyArtifacts, getArtifactKey } from "../util/artifacts.js" +import type { BaseRouterParams } from "./base.js" +import { createActionRouter } from "./base.js" const API_ACTION_TYPE = "run" @@ -29,15 +31,6 @@ export const runRouter = (baseParams: BaseRouterParams) => const actionType = API_ACTION_TYPE const moduleName = action.moduleName() - const payloadAttrs = { - actionName, - actionVersion, - actionType, - moduleName, - actionUid, - startedAt: new Date().toISOString(), - } - params.events = params.events || new PluginEventBroker(garden) try { diff --git a/core/src/router/test.ts b/core/src/router/test.ts index b13c94d995..0f4194e9ec 100644 --- a/core/src/router/test.ts +++ b/core/src/router/test.ts @@ -6,12 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { realpath } from "fs-extra" +import fsExtra from "fs-extra" +const { realpath } = fsExtra import normalizePath from "normalize-path" -import { PluginEventBroker } from "../plugin-context" -import { copyArtifacts, getArtifactKey } from "../util/artifacts" -import { makeTempDir } from "../util/fs" -import { BaseRouterParams, createActionRouter } from "./base" +import { PluginEventBroker } from "../plugin-context.js" +import { copyArtifacts, getArtifactKey } from "../util/artifacts.js" +import { makeTempDir } from "../util/fs.js" +import type { BaseRouterParams } from "./base.js" +import { createActionRouter } from "./base.js" const API_ACTION_TYPE = "test" @@ -29,15 +31,6 @@ export const testRouter = (baseParams: BaseRouterParams) => const actionVersion = action.versionString() const moduleName = action.moduleName() - const payloadAttrs = { - actionName, - actionVersion, - actionType, - moduleName, - actionUid, - startedAt: new Date().toISOString(), - } - try { params.events = params.events || new PluginEventBroker(garden) diff --git a/core/src/server/commands.ts b/core/src/server/commands.ts index 63ae60a975..a781aeb4a6 100644 --- a/core/src/server/commands.ts +++ b/core/src/server/commands.ts @@ -6,46 +6,42 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { getLogLevelChoices, LogLevel } from "../logger/logger" +import { getLogLevelChoices, LogLevel } from "../logger/logger.js" import stringArgv from "string-argv" -import { Command, CommandParams, CommandResult, ConsoleCommand } from "../commands/base" -import { createSchema, joi } from "../config/common" -import { type Log } from "../logger/log-entry" -import { - ParameterValues, - ChoicesParameter, - StringParameter, - StringsParameter, - GlobalOptions, - ParameterObject, -} from "../cli/params" -import { parseCliArgs, pickCommand, processCliArgs } from "../cli/helpers" -import type { AutocompleteSuggestion } from "../cli/autocomplete" -import { naturalList } from "../util/string" -import { isMatch } from "micromatch" -import type { GardenInstanceManager } from "./instance-manager" -import { isDirectory } from "../util/fs" -import { pathExists } from "fs-extra" -import type { ProjectConfig } from "../config/project" -import { findProjectConfig } from "../config/base" -import type { GlobalConfigStore } from "../config-store/global" +import type { Command, CommandParams, CommandResult } from "../commands/base.js" +import { ConsoleCommand } from "../commands/base.js" +import { createSchema, joi } from "../config/common.js" +import { type Log } from "../logger/log-entry.js" +import type { ParameterValues, GlobalOptions, ParameterObject } from "../cli/params.js" +import { ChoicesParameter, StringParameter, StringsParameter } from "../cli/params.js" +import { parseCliArgs, pickCommand, processCliArgs } from "../cli/helpers.js" +import type { AutocompleteSuggestion } from "../cli/autocomplete.js" +import { naturalList } from "../util/string.js" +import micromatch from "micromatch" +import type { GardenInstanceManager } from "./instance-manager.js" +import { isDirectory } from "../util/fs.js" +import fsExtra from "fs-extra" +const { pathExists } = fsExtra +import type { ProjectConfig } from "../config/project.js" +import { findProjectConfig } from "../config/base.js" +import type { GlobalConfigStore } from "../config-store/global.js" import type { ParsedArgs } from "minimist" -import type { ServeCommand } from "../commands/serve" -import { uuidv4 } from "../util/random" -import type { GetSyncStatusResult } from "../plugin/handlers/Deploy/get-sync-status" -import { getSyncStatuses } from "../commands/sync/sync-status" -import { ActionStatusPayload } from "../events/action-status-events" -import { BuildStatusForEventPayload } from "../plugin/handlers/Build/get-status" -import { DeployStatusForEventPayload } from "../types/service" -import { RunStatusForEventPayload } from "../plugin/plugin" +import type { ServeCommand } from "../commands/serve.js" +import { uuidv4 } from "../util/random.js" +import type { GetSyncStatusResult } from "../plugin/handlers/Deploy/get-sync-status.js" +import { getSyncStatuses } from "../commands/sync/sync-status.js" +import type { ActionStatusPayload } from "../events/action-status-events.js" +import type { BuildStatusForEventPayload } from "../plugin/handlers/Build/get-status.js" +import type { DeployStatusForEventPayload } from "../types/service.js" +import type { RunStatusForEventPayload } from "../plugin/plugin.js" import { getBuildStatusPayloads, getDeployStatusPayloads, getRunStatusPayloads, getTestStatusPayloads, -} from "../actions/helpers" +} from "../actions/helpers.js" import { z } from "zod" -import { exec } from "../util/util" +import { exec } from "../util/util.js" import split2 from "split2" import pProps from "p-props" @@ -196,7 +192,7 @@ export class HideCommand extends ConsoleCommand { const monitors = garden.monitors.getActive() for (const monitor of monitors) { - if (monitor && (!type || monitor.type === type) && isMatch(monitor.key(), names)) { + if (monitor && (!type || monitor.type === type) && micromatch.isMatch(monitor.key(), names)) { log.info(`Stopping ${monitor.description()}...`) garden.monitors.stop(monitor, log) } diff --git a/core/src/server/helpers.ts b/core/src/server/helpers.ts index a66ca8ef84..5beaaa4e81 100644 --- a/core/src/server/helpers.ts +++ b/core/src/server/helpers.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { isEmpty } from "lodash" +import { isEmpty } from "lodash-es" import { resolve } from "path" -import { PrimitiveMap } from "../config/common" -import { serializeObject } from "../util/serialization" +import type { PrimitiveMap } from "../config/common.js" +import { serializeObject } from "../util/serialization.js" export interface GardenInstanceKeyParams { environmentName: string diff --git a/core/src/server/instance-manager.ts b/core/src/server/instance-manager.ts index 073644f19c..4e9b463551 100644 --- a/core/src/server/instance-manager.ts +++ b/core/src/server/instance-manager.ts @@ -8,23 +8,27 @@ import AsyncLock from "async-lock" import chalk from "chalk" -import { Autocompleter, AutocompleteSuggestion } from "../cli/autocomplete" -import { parseCliVarFlags } from "../cli/helpers" -import { ParameterObject, ParameterValues } from "../cli/params" -import { CloudApi, CloudApiFactory, CloudApiFactoryParams, getGardenCloudDomain } from "../cloud/api" -import type { Command } from "../commands/base" -import { getBuiltinCommands, flattenCommands } from "../commands/commands" -import { getCustomCommands } from "../commands/custom" -import type { ServeCommand } from "../commands/serve" -import { GlobalConfigStore } from "../config-store/global" -import { ProjectConfig } from "../config/project" -import { EventBus, GardenEventAnyListener } from "../events/events" -import { ConfigDump, Garden, GardenOpts, makeDummyGarden, resolveGardenParamsPartial } from "../garden" -import type { Log } from "../logger/log-entry" -import { MonitorManager } from "../monitors/manager" -import type { GardenPluginReference } from "../plugin/plugin" -import { environmentToString } from "../types/namespace" -import { omitUndefined } from "../util/objects" +import type { AutocompleteSuggestion } from "../cli/autocomplete.js" +import { Autocompleter } from "../cli/autocomplete.js" +import { parseCliVarFlags } from "../cli/helpers.js" +import type { ParameterObject, ParameterValues } from "../cli/params.js" +import type { CloudApiFactory, CloudApiFactoryParams } from "../cloud/api.js" +import { CloudApi, getGardenCloudDomain } from "../cloud/api.js" +import type { Command } from "../commands/base.js" +import { getBuiltinCommands, flattenCommands } from "../commands/commands.js" +import { getCustomCommands } from "../commands/custom.js" +import type { ServeCommand } from "../commands/serve.js" +import type { GlobalConfigStore } from "../config-store/global.js" +import type { ProjectConfig } from "../config/project.js" +import type { GardenEventAnyListener } from "../events/events.js" +import { EventBus } from "../events/events.js" +import type { ConfigDump, GardenOpts } from "../garden.js" +import { Garden, makeDummyGarden, resolveGardenParamsPartial } from "../garden.js" +import type { Log } from "../logger/log-entry.js" +import { MonitorManager } from "../monitors/manager.js" +import type { GardenPluginReference } from "../plugin/plugin.js" +import { environmentToString } from "../types/namespace.js" +import { omitUndefined } from "../util/objects.js" import { AutocompleteCommand, ReloadCommand, @@ -33,8 +37,9 @@ import { _GetDeployStatusCommand, _GetActionStatusesCommand, _ShellCommand, -} from "./commands" -import { getGardenInstanceKey, GardenInstanceKeyParams } from "./helpers" +} from "./commands.js" +import type { GardenInstanceKeyParams } from "./helpers.js" +import { getGardenInstanceKey } from "./helpers.js" interface InstanceContext { garden: Garden diff --git a/core/src/server/server.ts b/core/src/server/server.ts index 128e3fcf95..2b66370a30 100644 --- a/core/src/server/server.ts +++ b/core/src/server/server.ts @@ -6,56 +6,53 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Server } from "http" +import type { Server } from "http" import chalk from "chalk" import Koa from "koa" -import Router = require("koa-router") +import Router from "koa-router" import type PTY from "node-pty-prebuilt-multiarch" import websockify from "koa-websocket" -import bodyParser = require("koa-bodyparser") +import bodyParser from "koa-bodyparser" // TODO: switch from get-port-please to get-port once get-port is upgraded to v6.0+ which is ESM only -import getPortPlease = require("get-port-please") +import * as getPortPlease from "get-port-please" const { getPort } = getPortPlease -import { isArray, omit } from "lodash" - -import { BaseServerRequest, resolveRequest, serverRequestSchema, shellCommandParamsSchema } from "./commands" -import { DEFAULT_GARDEN_DIR_NAME, gardenEnv } from "../constants" -import { Log } from "../logger/log-entry" -import { Command, CommandResult, PrepareParams } from "../commands/base" -import { - toGardenError, - GardenError, - isEAddrInUseException, - ParameterError, - isErrnoException, - CommandError, -} from "../exceptions" -import { EventName, Events, EventBus, shouldStreamWsEvent } from "../events/events" -import type { ValueOf } from "../util/util" -import { joi } from "../config/common" -import { dedent, randomString } from "../util/string" -import { authTokenHeader } from "../cloud/auth" -import { ApiEventBatch, BufferedEventStream, LogEntryEventPayload } from "../cloud/buffered-event-stream" -import { eventLogLevel, LogLevel } from "../logger/logger" +import { isArray, omit } from "lodash-es" + +import type { BaseServerRequest } from "./commands.js" +import { resolveRequest, serverRequestSchema, shellCommandParamsSchema } from "./commands.js" +import { DEFAULT_GARDEN_DIR_NAME, gardenEnv } from "../constants.js" +import type { Log } from "../logger/log-entry.js" +import type { Command, CommandResult, PrepareParams } from "../commands/base.js" +import type { GardenError } from "../exceptions.js" +import { toGardenError, isEAddrInUseException, ParameterError, isErrnoException, CommandError } from "../exceptions.js" +import type { EventName, Events } from "../events/events.js" +import { EventBus, shouldStreamWsEvent } from "../events/events.js" +import type { ValueOf } from "../util/util.js" +import { joi } from "../config/common.js" +import { dedent, randomString } from "../util/string.js" +import { authTokenHeader } from "../cloud/auth.js" +import type { ApiEventBatch, LogEntryEventPayload } from "../cloud/buffered-event-stream.js" +import { BufferedEventStream } from "../cloud/buffered-event-stream.js" +import { eventLogLevel, LogLevel } from "../logger/logger.js" import { EventEmitter } from "eventemitter3" -import { sanitizeValue } from "../util/logging" -import { uuidv4 } from "../util/random" -import { GardenInstanceManager } from "./instance-manager" -import { LocalConfigStore } from "../config-store/local" +import { sanitizeValue } from "../util/logging.js" +import { uuidv4 } from "../util/random.js" +import type { GardenInstanceManager } from "./instance-manager.js" +import { LocalConfigStore } from "../config-store/local.js" import { join } from "path" -import { GlobalConfigStore } from "../config-store/global" -import { validateSchema } from "../config/validation" -import { ConfigGraph } from "../graph/config-graph" -import { getGardenCloudDomain } from "../cloud/api" -import type { ServeCommand } from "../commands/serve" -import type { AutocompleteSuggestion } from "../cli/autocomplete" +import { GlobalConfigStore } from "../config-store/global.js" +import { validateSchema } from "../config/validation.js" +import type { ConfigGraph } from "../graph/config-graph.js" +import { getGardenCloudDomain } from "../cloud/api.js" +import type { ServeCommand } from "../commands/serve.js" +import type { AutocompleteSuggestion } from "../cli/autocomplete.js" import { z } from "zod" -import { omitUndefined } from "../util/objects" +import { omitUndefined } from "../util/objects.js" import { createServer } from "http" -import { defaultServerPort } from "../commands/serve" +import { defaultServerPort } from "../commands/serve.js" -import pty = require("node-pty-prebuilt-multiarch") +import pty from "node-pty-prebuilt-multiarch" const skipLogsForCommands = ["autocomplete"] @@ -611,7 +608,6 @@ export class GardenServer extends EventEmitter { proc.onExit(({ exitCode, signal }) => { const msg = `Command '${command}' exited with code ${exitCode}, signal ${signal}` this.log.info(msg) - const event = websocketCloseEvents.ok if (websocket.OPEN) { if (exitCode !== 0) { websocket.send(msg + "\r\n") diff --git a/core/src/tasks/base.ts b/core/src/tasks/base.ts index 20783fdc60..6b96ea435b 100644 --- a/core/src/tasks/base.ts +++ b/core/src/tasks/base.ts @@ -6,33 +6,34 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { GraphResults } from "../graph/results" +import type { GraphResults } from "../graph/results.js" import { v1 as uuidv1 } from "uuid" -import { Garden } from "../garden" -import { ActionLog, createActionLog, Log } from "../logger/log-entry" -import { Profile } from "../util/profiling" -import { type Action, type ActionState, type Executed, type Resolved } from "../actions/types" -import { ConfigGraph } from "../graph/config-graph" -import type { ActionReference } from "../config/common" -import { GraphError, InternalError, RuntimeError } from "../exceptions" -import type { DeleteDeployTask } from "./delete-deploy" -import type { BuildTask } from "./build" -import type { DeployTask } from "./deploy" -import type { PluginActionTask, PluginTask } from "./plugin" -import type { PublishTask } from "./publish" -import { ResolveActionTask } from "./resolve-action" -import type { ResolveProviderTask } from "./resolve-provider" -import type { RunTask } from "./run" -import type { TestTask } from "./test" +import type { Garden } from "../garden.js" +import type { ActionLog, Log } from "../logger/log-entry.js" +import { createActionLog } from "../logger/log-entry.js" +import { Profile } from "../util/profiling.js" +import { type Action, type ActionState, type Executed, type Resolved } from "../actions/types.js" +import type { ConfigGraph } from "../graph/config-graph.js" +import type { ActionReference } from "../config/common.js" +import { GraphError, InternalError, RuntimeError } from "../exceptions.js" +import type { DeleteDeployTask } from "./delete-deploy.js" +import type { BuildTask } from "./build.js" +import type { DeployTask } from "./deploy.js" +import type { PluginActionTask, PluginTask } from "./plugin.js" +import type { PublishTask } from "./publish.js" +import type { ResolveActionTask } from "./resolve-action.js" +import type { ResolveProviderTask } from "./resolve-provider.js" +import type { RunTask } from "./run.js" +import type { TestTask } from "./test.js" import { Memoize } from "typescript-memoize" -import { TypedEventEmitter } from "../util/events" -import { Events, ActionStatusEventName } from "../events/events" +import { TypedEventEmitter } from "../util/events.js" +import type { Events, ActionStatusEventName } from "../events/events.js" import { makeActionFailedPayload, makeActionCompletePayload, makeActionProcessingPayload, makeActionGetStatusPayload, -} from "../events/util" +} from "../events/util.js" export function makeBaseKey(type: string, name: string) { return `${type}.${name}` diff --git a/core/src/tasks/build.ts b/core/src/tasks/build.ts index 3248a45543..9bc625906d 100644 --- a/core/src/tasks/build.ts +++ b/core/src/tasks/build.ts @@ -7,22 +7,16 @@ */ import chalk from "chalk" -import { - ActionTaskProcessParams, - ActionTaskStatusParams, - BaseActionTaskParams, - ExecuteActionTask, - emitGetStatusEvents, - emitProcessingEvents, -} from "../tasks/base" -import { Profile } from "../util/profiling" -import type { BuildAction, BuildActionConfig, ResolvedBuildAction } from "../actions/build" +import type { BaseActionTaskParams, ActionTaskProcessParams, ActionTaskStatusParams } from "../tasks/base.js" +import { ExecuteActionTask, emitGetStatusEvents, emitProcessingEvents } from "../tasks/base.js" +import { Profile } from "../util/profiling.js" +import type { BuildAction, BuildActionConfig, ResolvedBuildAction } from "../actions/build.js" import pluralize from "pluralize" -import { BuildStatus } from "../plugin/handlers/Build/get-status" -import { resolvedActionToExecuted } from "../actions/helpers" -import { renderDuration } from "../logger/util" -import { OtelTraced } from "../util/open-telemetry/decorators" -import { wrapActiveSpan } from "../util/open-telemetry/spans" +import type { BuildStatus } from "../plugin/handlers/Build/get-status.js" +import { resolvedActionToExecuted } from "../actions/helpers.js" +import { renderDuration } from "../logger/util.js" +import { OtelTraced } from "../util/open-telemetry/decorators.js" +import { wrapActiveSpan } from "../util/open-telemetry/spans.js" @Profile() export class BuildTask extends ExecuteActionTask { diff --git a/core/src/tasks/delete-deploy.ts b/core/src/tasks/delete-deploy.ts index 1231e86a1d..1f098c74a0 100644 --- a/core/src/tasks/delete-deploy.ts +++ b/core/src/tasks/delete-deploy.ts @@ -6,11 +6,13 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ActionTaskProcessParams, BaseActionTask, BaseActionTaskParams } from "./base" -import { GraphResults } from "../graph/results" -import { DeployAction, isDeployAction } from "../actions/deploy" -import { DeployStatus } from "../plugin/handlers/Deploy/get-status" -import { omit } from "lodash" +import type { ActionTaskProcessParams, BaseActionTaskParams } from "./base.js" +import { BaseActionTask } from "./base.js" +import type { GraphResults } from "../graph/results.js" +import type { DeployAction } from "../actions/deploy.js" +import { isDeployAction } from "../actions/deploy.js" +import type { DeployStatus } from "../plugin/handlers/Deploy/get-status.js" +import { omit } from "lodash-es" export interface DeleteDeployTaskParams extends BaseActionTaskParams { /** diff --git a/core/src/tasks/deploy.ts b/core/src/tasks/deploy.ts index 95a3258729..9a80b27b80 100644 --- a/core/src/tasks/deploy.ts +++ b/core/src/tasks/deploy.ts @@ -8,23 +8,16 @@ import chalk from "chalk" -import { - BaseActionTaskParams, - ActionTaskProcessParams, - ExecuteActionTask, - ActionTaskStatusParams, - BaseTask, - emitGetStatusEvents, - emitProcessingEvents, -} from "./base" -import { getLinkUrl } from "../types/service" -import { Profile } from "../util/profiling" -import type { DeployAction } from "../actions/deploy" -import { DeployStatus } from "../plugin/handlers/Deploy/get-status" -import { displayState, resolvedActionToExecuted } from "../actions/helpers" -import { PluginEventBroker } from "../plugin-context" -import { ActionLog } from "../logger/log-entry" -import { OtelTraced } from "../util/open-telemetry/decorators" +import type { BaseActionTaskParams, BaseTask, ActionTaskProcessParams, ActionTaskStatusParams } from "./base.js" +import { ExecuteActionTask, emitGetStatusEvents, emitProcessingEvents } from "./base.js" +import { getLinkUrl } from "../types/service.js" +import { Profile } from "../util/profiling.js" +import type { DeployAction } from "../actions/deploy.js" +import type { DeployStatus } from "../plugin/handlers/Deploy/get-status.js" +import { displayState, resolvedActionToExecuted } from "../actions/helpers.js" +import type { PluginEventBroker } from "../plugin-context.js" +import type { ActionLog } from "../logger/log-entry.js" +import { OtelTraced } from "../util/open-telemetry/decorators.js" export interface DeployTaskParams extends BaseActionTaskParams { events?: PluginEventBroker diff --git a/core/src/tasks/helpers.ts b/core/src/tasks/helpers.ts index 152ebafc4f..5496e536de 100644 --- a/core/src/tasks/helpers.ts +++ b/core/src/tasks/helpers.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { mapKeys, mapValues, pickBy, omit } from "lodash" -import type { GraphResults } from "../graph/results" -import type { DeployStatus } from "../plugin/handlers/Deploy/get-status" -import { splitLast } from "../util/string" +import { mapKeys, mapValues, pickBy, omit } from "lodash-es" +import type { GraphResults } from "../graph/results.js" +import type { DeployStatus } from "../plugin/handlers/Deploy/get-status.js" +import { splitLast } from "../util/string.js" export function getDeployStatuses(dependencyResults: GraphResults): { [name: string]: DeployStatus } { const deployResults = pickBy(dependencyResults.getMap(), (r) => r && r.type === "deploy") diff --git a/core/src/tasks/plugin.ts b/core/src/tasks/plugin.ts index ab78f9f5bd..1df75979e1 100644 --- a/core/src/tasks/plugin.ts +++ b/core/src/tasks/plugin.ts @@ -6,9 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Action } from "../actions/types" -import { BaseActionTask, BaseTask, ValidResultType } from "../tasks/base" -import { Profile } from "../util/profiling" +import type { Action } from "../actions/types.js" +import type { ValidResultType } from "../tasks/base.js" +import { BaseActionTask, BaseTask } from "../tasks/base.js" +import { Profile } from "../util/profiling.js" @Profile() export abstract class PluginTask extends BaseTask { diff --git a/core/src/tasks/publish.ts b/core/src/tasks/publish.ts index 14294ac632..80f1c70ada 100644 --- a/core/src/tasks/publish.ts +++ b/core/src/tasks/publish.ts @@ -6,16 +6,18 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { BuildTask } from "./build" -import { ActionTaskProcessParams, BaseActionTask, BaseActionTaskParams } from "../tasks/base" -import { resolveTemplateString } from "../template-string/template-string" -import { joi } from "../config/common" -import { versionStringPrefix } from "../vcs/vcs" -import { ConfigContext, schema } from "../config/template-contexts/base" -import { PublishActionResult } from "../plugin/handlers/Build/publish" -import type { BuildAction } from "../actions/build" -import { ActionSpecContext, ActionSpecContextParams } from "../config/template-contexts/actions" -import { OtelTraced } from "../util/open-telemetry/decorators" +import { BuildTask } from "./build.js" +import type { BaseActionTaskParams, ActionTaskProcessParams } from "../tasks/base.js" +import { BaseActionTask } from "../tasks/base.js" +import { resolveTemplateString } from "../template-string/template-string.js" +import { joi } from "../config/common.js" +import { versionStringPrefix } from "../vcs/vcs.js" +import { ConfigContext, schema } from "../config/template-contexts/base.js" +import type { PublishActionResult } from "../plugin/handlers/Build/publish.js" +import type { BuildAction } from "../actions/build.js" +import type { ActionSpecContextParams } from "../config/template-contexts/actions.js" +import { ActionSpecContext } from "../config/template-contexts/actions.js" +import { OtelTraced } from "../util/open-telemetry/decorators.js" export interface PublishTaskParams extends BaseActionTaskParams { tagTemplate?: string diff --git a/core/src/tasks/resolve-action.ts b/core/src/tasks/resolve-action.ts index c41acb550c..dbdb009e09 100644 --- a/core/src/tasks/resolve-action.ts +++ b/core/src/tasks/resolve-action.ts @@ -6,19 +6,27 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { BaseActionTask, ActionTaskProcessParams, ActionTaskStatusParams, BaseTask, ValidResultType } from "./base" -import { Profile } from "../util/profiling" -import type { Action, ActionState, BaseActionConfig, ExecutedAction, Resolved, ResolvedAction } from "../actions/types" -import { ActionSpecContext } from "../config/template-contexts/actions" -import { resolveTemplateStrings } from "../template-string/template-string" -import { InternalError } from "../exceptions" -import { validateWithPath } from "../config/validation" -import { DeepPrimitiveMap } from "../config/common" -import { merge } from "lodash" -import { mergeVariables } from "../graph/common" -import { actionToResolved } from "../actions/helpers" -import { ResolvedConfigGraph } from "../graph/config-graph" -import { OtelTraced } from "../util/open-telemetry/decorators" +import type { ActionTaskStatusParams, BaseTask, ValidResultType, ActionTaskProcessParams } from "./base.js" +import { BaseActionTask } from "./base.js" +import { Profile } from "../util/profiling.js" +import type { + Action, + ActionState, + BaseActionConfig, + ExecutedAction, + Resolved, + ResolvedAction, +} from "../actions/types.js" +import { ActionSpecContext } from "../config/template-contexts/actions.js" +import { resolveTemplateStrings } from "../template-string/template-string.js" +import { InternalError } from "../exceptions.js" +import { validateWithPath } from "../config/validation.js" +import type { DeepPrimitiveMap } from "../config/common.js" +import { merge } from "lodash-es" +import { mergeVariables } from "../graph/common.js" +import { actionToResolved } from "../actions/helpers.js" +import { ResolvedConfigGraph } from "../graph/config-graph.js" +import { OtelTraced } from "../util/open-telemetry/decorators.js" export interface ResolveActionResults extends ValidResultType { state: ActionState diff --git a/core/src/tasks/resolve-provider.ts b/core/src/tasks/resolve-provider.ts index 6e85ab5820..4f95940736 100644 --- a/core/src/tasks/resolve-provider.ts +++ b/core/src/tasks/resolve-provider.ts @@ -6,33 +6,31 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { BaseTask, CommonTaskParams, ResolveProcessDependenciesParams, TaskProcessParams } from "./base" -import { - GenericProviderConfig, - Provider, - providerFromConfig, - getProviderTemplateReferences, - ProviderMap, -} from "../config/provider" -import { resolveTemplateStrings } from "../template-string/template-string" -import { ConfigurationError, PluginError } from "../exceptions" -import { keyBy, omit, flatten, uniq } from "lodash" -import { ProviderConfigContext } from "../config/template-contexts/provider" -import { ModuleConfig } from "../config/module" -import { GardenPluginSpec } from "../plugin/plugin" -import { joi } from "../config/common" -import { validateWithPath, validateSchema } from "../config/validation" -import { defaultEnvironmentStatus, EnvironmentStatus } from "../plugin/handlers/Provider/getEnvironmentStatus" -import { getPluginBases, getPluginBaseNames } from "../plugins" -import { Profile } from "../util/profiling" +import type { CommonTaskParams, ResolveProcessDependenciesParams, TaskProcessParams } from "./base.js" +import { BaseTask } from "./base.js" +import type { GenericProviderConfig, Provider, ProviderMap } from "../config/provider.js" +import { providerFromConfig, getProviderTemplateReferences } from "../config/provider.js" +import { resolveTemplateStrings } from "../template-string/template-string.js" +import { ConfigurationError, PluginError } from "../exceptions.js" +import { keyBy, omit, flatten, uniq } from "lodash-es" +import { ProviderConfigContext } from "../config/template-contexts/provider.js" +import type { ModuleConfig } from "../config/module.js" +import type { GardenPluginSpec } from "../plugin/plugin.js" +import { joi } from "../config/common.js" +import { validateWithPath, validateSchema } from "../config/validation.js" +import type { EnvironmentStatus } from "../plugin/handlers/Provider/getEnvironmentStatus.js" +import { defaultEnvironmentStatus } from "../plugin/handlers/Provider/getEnvironmentStatus.js" +import { getPluginBases, getPluginBaseNames } from "../plugins.js" +import { Profile } from "../util/profiling.js" import { join, dirname } from "path" -import { readFile, writeFile, ensureDir } from "fs-extra" +import fsExtra from "fs-extra" +const { readFile, writeFile, ensureDir } = fsExtra import { deserialize, serialize } from "v8" -import { environmentStatusSchema } from "../config/status" -import { hashString, isNotNull } from "../util/util" -import { gardenEnv } from "../constants" -import { stableStringify } from "../util/string" -import { OtelTraced } from "../util/open-telemetry/decorators" +import { environmentStatusSchema } from "../config/status.js" +import { hashString, isNotNull } from "../util/util.js" +import { gardenEnv } from "../constants.js" +import { stableStringify } from "../util/string.js" +import { OtelTraced } from "../util/open-telemetry/decorators.js" interface Params extends CommonTaskParams { plugin: GardenPluginSpec diff --git a/core/src/tasks/run.ts b/core/src/tasks/run.ts index 4f569c96f3..455e7f0a43 100644 --- a/core/src/tasks/run.ts +++ b/core/src/tasks/run.ts @@ -6,20 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { - ActionTaskProcessParams, - ActionTaskStatusParams, - BaseActionTaskParams, - ExecuteActionTask, - emitGetStatusEvents, - emitProcessingEvents, -} from "./base" -import { Profile } from "../util/profiling" -import type { RunAction } from "../actions/run" -import { GetRunResult } from "../plugin/handlers/Run/get-result" -import { resolvedActionToExecuted } from "../actions/helpers" -import { OtelTraced } from "../util/open-telemetry/decorators" -import { GardenError } from "../exceptions" +import type { BaseActionTaskParams, ActionTaskProcessParams, ActionTaskStatusParams } from "./base.js" +import { ExecuteActionTask, emitGetStatusEvents, emitProcessingEvents } from "./base.js" +import { Profile } from "../util/profiling.js" +import type { RunAction } from "../actions/run.js" +import type { GetRunResult } from "../plugin/handlers/Run/get-result.js" +import { resolvedActionToExecuted } from "../actions/helpers.js" +import { OtelTraced } from "../util/open-telemetry/decorators.js" +import { GardenError } from "../exceptions.js" /** * Only throw this error when the run itself failed, and not when Garden failed to execute the run. diff --git a/core/src/tasks/test.ts b/core/src/tasks/test.ts index 8fa1c4e948..3132accb9a 100644 --- a/core/src/tasks/test.ts +++ b/core/src/tasks/test.ts @@ -6,20 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { - BaseActionTaskParams, - ActionTaskProcessParams, - ExecuteActionTask, - ActionTaskStatusParams, - emitGetStatusEvents, - emitProcessingEvents, -} from "../tasks/base" -import { Profile } from "../util/profiling" -import { resolvedActionToExecuted } from "../actions/helpers" -import type { TestAction } from "../actions/test" -import { GetTestResult } from "../plugin/handlers/Test/get-result" -import { OtelTraced } from "../util/open-telemetry/decorators" -import { GardenError } from "../exceptions" +import type { BaseActionTaskParams, ActionTaskProcessParams, ActionTaskStatusParams } from "../tasks/base.js" +import { ExecuteActionTask, emitGetStatusEvents, emitProcessingEvents } from "../tasks/base.js" +import { Profile } from "../util/profiling.js" +import { resolvedActionToExecuted } from "../actions/helpers.js" +import type { TestAction } from "../actions/test.js" +import type { GetTestResult } from "../plugin/handlers/Test/get-result.js" +import { OtelTraced } from "../util/open-telemetry/decorators.js" +import { GardenError } from "../exceptions.js" /** * Only throw this error when the test itself failed, and not when Garden failed to execute the test. diff --git a/core/src/template-string/functions.ts b/core/src/template-string/functions.ts index becb2ef99d..a196f20c71 100644 --- a/core/src/template-string/functions.ts +++ b/core/src/template-string/functions.ts @@ -7,16 +7,17 @@ */ import { v4 as uuidv4 } from "uuid" -import { createHash } from "crypto" -import { TemplateStringError } from "../exceptions" -import { camelCase, escapeRegExp, isArrayLike, isEmpty, isString, kebabCase, keyBy, mapValues, trim } from "lodash" -import { joi, JoiDescription, joiPrimitive, Primitive } from "../config/common" -import Joi from "@hapi/joi" -import { validateSchema } from "../config/validation" +import { createHash } from "node:crypto" +import { TemplateStringError } from "../exceptions.js" +import { camelCase, escapeRegExp, isArrayLike, isEmpty, isString, kebabCase, keyBy, mapValues, trim } from "lodash-es" +import type { JoiDescription, Primitive } from "../config/common.js" +import { joi, joiPrimitive } from "../config/common.js" +import type Joi from "@hapi/joi" +import { validateSchema } from "../config/validation.js" import { load, loadAll } from "js-yaml" -import { safeDumpYaml } from "../util/serialization" +import { safeDumpYaml } from "../util/serialization.js" import indentString from "indent-string" -import { maybeTemplateString } from "./template-string" +import { maybeTemplateString } from "./template-string.js" interface ExampleArgument { input: any[] diff --git a/core/src/template-string/parser.d.ts b/core/src/template-string/parser.d.ts new file mode 100644 index 0000000000..1f2c7fc3f0 --- /dev/null +++ b/core/src/template-string/parser.d.ts @@ -0,0 +1,14 @@ +/* + * Copyright (C) 2018-2023 Garden Technologies, Inc. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +import peggy from "peggy" + +// This file is just a placeholder to make TypeScript happy +// The actual parser is generated by the build script +// It will be placed in the build outputs and then actually run from there +export const parse: peggy.Parser["parse"] = () => {} diff --git a/core/src/template-string/template-string.ts b/core/src/template-string/template-string.ts index 25f950592f..42b63d6631 100644 --- a/core/src/template-string/template-string.ts +++ b/core/src/template-string/template-string.ts @@ -7,19 +7,19 @@ */ import chalk from "chalk" -import { ConfigurationError, GardenError, GardenErrorParams, TemplateStringError } from "../exceptions" -import { +import type { GardenErrorParams } from "../exceptions.js" +import { ConfigurationError, GardenError, TemplateStringError } from "../exceptions.js" +import type { ConfigContext, ContextKeySegment, ContextResolveOpts, ContextResolveOutput, - GenericContext, - ScanContext, -} from "../config/template-contexts/base" +} from "../config/template-contexts/base.js" +import { GenericContext, ScanContext } from "../config/template-contexts/base.js" import cloneDeep from "fast-copy" -import { difference, isNumber, isPlainObject, isString, uniq } from "lodash" +import { difference, isNumber, isPlainObject, isString, uniq } from "lodash-es" +import type { ActionReference, Primitive, StringMap } from "../config/common.js" import { - ActionReference, arrayConcatKey, arrayForEachFilterKey, arrayForEachKey, @@ -30,17 +30,17 @@ import { isPrimitive, isSpecialKey, objectSpreadKey, - Primitive, - StringMap, -} from "../config/common" -import { dedent, deline, naturalList, titleize, truncate } from "../util/string" -import type { ObjectWithName } from "../util/util" -import { Log } from "../logger/log-entry" -import type { ModuleConfigContext } from "../config/template-contexts/module" -import { callHelperFunction } from "./functions" -import { ActionKind, actionKindsLower } from "../actions/types" -import { deepMap } from "../util/objects" -import { ConfigSource } from "../config/validation" +} from "../config/common.js" +import { dedent, deline, naturalList, titleize, truncate } from "../util/string.js" +import type { ObjectWithName } from "../util/util.js" +import type { Log } from "../logger/log-entry.js" +import type { ModuleConfigContext } from "../config/template-contexts/module.js" +import { callHelperFunction } from "./functions.js" +import type { ActionKind } from "../actions/types.js" +import { actionKindsLower } from "../actions/types.js" +import { deepMap } from "../util/objects.js" +import type { ConfigSource } from "../config/validation.js" +import * as parser from "./parser.js" const missingKeyExceptionType = "template-string-missing-key" const passthroughExceptionType = "template-string-passthrough" @@ -54,16 +54,6 @@ export class TemplateStringPassthroughException extends GardenError { type = passthroughExceptionType } -let _parser: any - -function getParser() { - if (!_parser) { - _parser = require("./parser") - } - - return _parser -} - interface ResolvedClause extends ContextResolveOutput { block?: "if" | "else" | "else if" | "endif" _error?: Error @@ -121,7 +111,6 @@ export function resolveTemplateString({ return string } - const parser = getParser() try { const parsed = parser.parse(string, { getKey: (key: string[], resolveOpts?: ContextResolveOpts) => { diff --git a/core/src/types/module.ts b/core/src/types/module.ts index 5976bac9aa..f0a1580d81 100644 --- a/core/src/types/module.ts +++ b/core/src/types/module.ts @@ -7,28 +7,22 @@ */ import cloneDeep from "fast-copy" -import { flatten, uniq, some } from "lodash" -import { getNames, findByName } from "../util/util" -import { ModuleConfig, moduleConfigSchema } from "../config/module" -import type { ModuleVersion } from "../vcs/vcs" -import { pathToCacheContext } from "../cache" -import type { Garden } from "../garden" -import { - joiArray, - joiIdentifier, - joiIdentifierMap, - joi, - moduleVersionSchema, - DeepPrimitiveMap, - createSchema, -} from "../config/common" -import { moduleOutputsSchema } from "../plugin/handlers/Module/get-outputs" -import type { Log } from "../logger/log-entry" -import type { ModuleTypeDefinition } from "../plugin/module-types" -import type { GardenPluginSpec } from "../plugin/plugin" +import { flatten, uniq, some } from "lodash-es" +import { getNames, findByName } from "../util/util.js" +import type { ModuleConfig } from "../config/module.js" +import { moduleConfigSchema } from "../config/module.js" +import type { ModuleVersion } from "../vcs/vcs.js" +import { pathToCacheContext } from "../cache.js" +import type { Garden } from "../garden.js" +import type { DeepPrimitiveMap } from "../config/common.js" +import { joiArray, joiIdentifier, joiIdentifierMap, joi, moduleVersionSchema, createSchema } from "../config/common.js" +import { moduleOutputsSchema } from "../plugin/handlers/Module/get-outputs.js" +import type { Log } from "../logger/log-entry.js" +import type { ModuleTypeDefinition } from "../plugin/module-types.js" +import type { GardenPluginSpec } from "../plugin/plugin.js" import { join } from "path" -import { RuntimeError } from "../exceptions" -import { naturalList } from "../util/string" +import { RuntimeError } from "../exceptions.js" +import { naturalList } from "../util/string.js" export interface ModuleType extends ModuleTypeDefinition { plugin: GardenPluginSpec diff --git a/core/src/types/service.ts b/core/src/types/service.ts index 80ef4d0e17..59a4ef483c 100644 --- a/core/src/types/service.ts +++ b/core/src/types/service.ts @@ -8,25 +8,26 @@ import normalizeUrl from "normalize-url" import { format } from "url" +import type { PrimitiveMap } from "../config/common.js" import { joiUserIdentifier, joi, joiIdentifier, joiArray, - PrimitiveMap, joiVariables, versionStringSchema, joiStringMap, createSchema, -} from "../config/common" -import type { GardenModule } from "./module" -import { ServiceConfig, serviceConfigSchema } from "../config/service" +} from "../config/common.js" +import type { GardenModule } from "./module.js" +import type { ServiceConfig } from "../config/service.js" +import { serviceConfigSchema } from "../config/service.js" import dedent from "dedent" -import { memoize, uniq } from "lodash" -import { getEntityVersion } from "../vcs/vcs" -import type { LogLevel } from "../logger/logger" -import type { ActionMode } from "../actions/types" -import type { ModuleGraph } from "../graph/modules" +import { memoize, uniq } from "lodash-es" +import { getEntityVersion } from "../vcs/vcs.js" +import type { LogLevel } from "../logger/logger.js" +import type { ActionMode } from "../actions/types.js" +import type { ModuleGraph } from "../graph/modules.js" export interface GardenService { name: string diff --git a/core/src/types/task.ts b/core/src/types/task.ts index 460554f922..84d9e0a705 100644 --- a/core/src/types/task.ts +++ b/core/src/types/task.ts @@ -6,12 +6,13 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { memoize } from "lodash" -import { GardenModule } from "./module" -import { TaskConfig, taskConfigSchema } from "../config/task" -import { getEntityVersion } from "../vcs/vcs" -import { joi, joiUserIdentifier, moduleVersionSchema, versionStringSchema, createSchema } from "../config/common" -import { deline } from "../util/string" +import { memoize } from "lodash-es" +import type { GardenModule } from "./module.js" +import type { TaskConfig } from "../config/task.js" +import { taskConfigSchema } from "../config/task.js" +import { getEntityVersion } from "../vcs/vcs.js" +import { joi, joiUserIdentifier, moduleVersionSchema, versionStringSchema, createSchema } from "../config/common.js" +import { deline } from "../util/string.js" export interface GardenTask { name: string diff --git a/core/src/types/test.ts b/core/src/types/test.ts index 366209e12d..eb7d644335 100644 --- a/core/src/types/test.ts +++ b/core/src/types/test.ts @@ -6,16 +6,18 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { GardenModule } from "./module" -import { TestConfig, testConfigSchema } from "../config/test" -import { getEntityVersion, hashStrings, versionStringPrefix } from "../vcs/vcs" -import { findByName } from "../util/util" -import { NotFoundError } from "../exceptions" -import { createSchema, joi, joiUserIdentifier, versionStringSchema } from "../config/common" -import { sortBy } from "lodash" -import { serializeConfig } from "../config/module" -import { RunResult, runResultSchema } from "../plugin/base" -import { ModuleGraph } from "../graph/modules" +import type { GardenModule } from "./module.js" +import type { TestConfig } from "../config/test.js" +import { testConfigSchema } from "../config/test.js" +import { getEntityVersion, hashStrings, versionStringPrefix } from "../vcs/vcs.js" +import { findByName } from "../util/util.js" +import { NotFoundError } from "../exceptions.js" +import { createSchema, joi, joiUserIdentifier, versionStringSchema } from "../config/common.js" +import { sortBy } from "lodash-es" +import { serializeConfig } from "../config/module.js" +import type { RunResult } from "../plugin/base.js" +import { runResultSchema } from "../plugin/base.js" +import type { ModuleGraph } from "../graph/modules.js" export interface GardenTest { name: string diff --git a/core/src/util/archive.ts b/core/src/util/archive.ts index a98ae78437..baeffd133a 100644 --- a/core/src/util/archive.ts +++ b/core/src/util/archive.ts @@ -6,8 +6,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { isErrnoException } from "../exceptions" -import { Log } from "../logger/log-entry" +import { isErrnoException } from "../exceptions.js" +import type { Log } from "../logger/log-entry.js" import { createWriteStream } from "fs" /** diff --git a/core/src/util/artifacts.ts b/core/src/util/artifacts.ts index 632f193ada..a0d0c62b29 100644 --- a/core/src/util/artifacts.ts +++ b/core/src/util/artifacts.ts @@ -7,9 +7,10 @@ */ import { join, relative } from "path" -import { readFile, writeFile } from "fs-extra" -import { Log } from "../logger/log-entry" -import { Garden } from "../garden" +import fsExtra from "fs-extra" +const { readFile, writeFile } = fsExtra +import type { Log } from "../logger/log-entry.js" +import type { Garden } from "../garden.js" import chalk from "chalk" const maxArtifactLogLines = 5 // max number of artifacts to list in console after run+test runs diff --git a/core/src/util/events.ts b/core/src/util/events.ts index d39755b654..196ad37d99 100644 --- a/core/src/util/events.ts +++ b/core/src/util/events.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { +import type { CancelablePromise, ConstructorOptions, EventAndListener, @@ -23,7 +23,7 @@ import { // Note: This file is a fairly ugly hack to add some additional type safety possibilities on eventemitter2. // Ain't pretty here, but it does work in usage. -import EventEmitter2 = require("eventemitter2") +import EventEmitter2 from "eventemitter2" interface ListenerFn { (payload: V, ...values: any[]): void diff --git a/core/src/util/ext-source-util.ts b/core/src/util/ext-source-util.ts index f4644c96aa..eb58e9ea20 100644 --- a/core/src/util/ext-source-util.ts +++ b/core/src/util/ext-source-util.ts @@ -6,15 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { keyBy } from "lodash" +import { keyBy } from "lodash-es" import chalk from "chalk" -import { LinkedSource } from "../config-store/local" -import { ParameterError } from "../exceptions" -import { GardenModule } from "../types/module" -import { Garden } from "../garden" -import { hashString } from "./util" -import { naturalList, titleize } from "./string" +import type { LinkedSource } from "../config-store/local.js" +import { ParameterError } from "../exceptions.js" +import type { GardenModule } from "../types/module.js" +import type { Garden } from "../garden.js" +import { hashString } from "./util.js" +import { naturalList, titleize } from "./string.js" import { join } from "path" export type ExternalSourceType = "project" | "module" | "action" diff --git a/core/src/util/ext-tools.ts b/core/src/util/ext-tools.ts index 8714fd54df..8b0fa77a6d 100644 --- a/core/src/util/ext-tools.ts +++ b/core/src/util/ext-tools.ts @@ -6,25 +6,26 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { pathExists, createWriteStream, ensureDir, chmod, remove, move, createReadStream } from "fs-extra" -import { ConfigurationError, InternalError } from "../exceptions" +import fsExtra from "fs-extra" +const { pathExists, createWriteStream, ensureDir, chmod, remove, move, createReadStream } = fsExtra +import { ConfigurationError, InternalError } from "../exceptions.js" import { join, dirname, basename, posix } from "path" -import { hashString, exec, getPlatform, getArchitecture, isDarwinARM } from "./util" +import { hashString, exec, getPlatform, getArchitecture, isDarwinARM } from "./util.js" import tar from "tar" -import { GARDEN_GLOBAL_PATH } from "../constants" -import { Log } from "../logger/log-entry" -import { createHash } from "crypto" +import { GARDEN_GLOBAL_PATH } from "../constants.js" +import type { Log } from "../logger/log-entry.js" +import { createHash } from "node:crypto" import crossSpawn from "cross-spawn" -import { spawn } from "./util" -import { Writable } from "stream" -import got from "got/dist/source" -import { PluginToolSpec, ToolBuildSpec } from "../plugin/tools" +import { spawn } from "./util.js" +import type { Writable } from "stream" +import got from "got" +import type { PluginToolSpec, ToolBuildSpec } from "../plugin/tools.js" import { parse } from "url" import AsyncLock from "async-lock" -import { PluginContext } from "../plugin-context" -import { LogLevel } from "../logger/logger" -import { uuidv4 } from "./random" -import { streamLogs, waitForProcess } from "./process" +import type { PluginContext } from "../plugin-context.js" +import { LogLevel } from "../logger/logger.js" +import { uuidv4 } from "./random.js" +import { streamLogs, waitForProcess } from "./process.js" const toolsPath = join(GARDEN_GLOBAL_PATH, "tools") const lock = new AsyncLock() @@ -346,7 +347,7 @@ export class PluginTool extends CliWrapper { response.on("end", () => resolve()) } else { const format = this.buildSpec.extract.format - let extractor: Writable + let extractor: NodeJS.WritableStream if (format === "tar") { extractor = tar.x({ @@ -356,8 +357,8 @@ export class PluginTool extends CliWrapper { extractor.on("end", () => resolve()) } else if (format === "zip") { // Note: lazy-loading for startup performance - const { Extract } = await import("unzipper") - extractor = Extract({ path: tmpPath }) + const { default: unzipStream } = await import("unzip-stream") + extractor = unzipStream.Extract({ path: tmpPath }) extractor.on("close", () => resolve()) } else { reject( diff --git a/core/src/util/fs.ts b/core/src/util/fs.ts index 1088e3c102..eb92977e82 100644 --- a/core/src/util/fs.ts +++ b/core/src/util/fs.ts @@ -6,20 +6,21 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import unixify = require("unixify") -import klaw = require("klaw") +import unixify from "unixify" +import klaw from "klaw" import { glob } from "glob" import tmp from "tmp-promise" -import { pathExists, readFile, writeFile, lstat, realpath, Stats } from "fs-extra" +import fsExtra from "fs-extra" +const { pathExists, readFile, writeFile, lstat, realpath } = fsExtra import { join, basename, win32, posix } from "path" import { platform } from "os" -import { FilesystemError } from "../exceptions" -import { VcsHandler } from "../vcs/vcs" -import { Log } from "../logger/log-entry" -import { exec } from "./util" +import { FilesystemError } from "../exceptions.js" +import type { VcsHandler } from "../vcs/vcs.js" +import type { Log } from "../logger/log-entry.js" +import { exec } from "./util.js" import micromatch from "micromatch" -import { uuidv4 } from "./random" +import { uuidv4 } from "./random.js" export const defaultConfigFilename = "garden.yml" export const configFilenamePattern = "*garden.y*ml" @@ -270,7 +271,7 @@ export async function makeTempDir({ * * @param stats an fs.Stats instance */ -export function getStatsType(stats: Stats) { +export function getStatsType(stats: fsExtra.Stats) { if (stats.isBlockDevice()) { return "block device" } else if (stats.isCharacterDevice()) { diff --git a/core/src/util/http.ts b/core/src/util/http.ts index 253dc93708..415cd6d8e7 100644 --- a/core/src/util/http.ts +++ b/core/src/util/http.ts @@ -6,9 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import _got, { Response, HTTPError as GotHttpError, OptionsOfJSONResponseBody } from "got" +import type { Response, OptionsOfJSONResponseBody } from "got" +import _got, { HTTPError as GotHttpError } from "got" import { bootstrap } from "global-agent" -import { OptionsOfTextResponseBody, Headers } from "got" +import type { OptionsOfTextResponseBody, Headers } from "got" // Handle proxy environment settings // (see https://github.com/gajus/global-agent#what-is-the-reason-global-agentbootstrap-does-not-use-http_proxy) @@ -17,6 +18,9 @@ const isProxyEnvSet = process.env.HTTP_PROXY || process.env.HTTPS_PROXY || proce if (isProxyEnvSet) { bootstrap({ environmentVariableNamespace: "", + // We can't force the global agent because the Kubernetes client library relies on the agent to configure trusted CA certificates. + // In the Kubernetes client, we added code to make sure we respect the PROXY environment variables (using the proxy-agent lirbary). + forceGlobalAgent: false, }) } diff --git a/core/src/util/ink-divider.tsx b/core/src/util/ink-divider.tsx new file mode 100644 index 0000000000..fac86228ce --- /dev/null +++ b/core/src/util/ink-divider.tsx @@ -0,0 +1,90 @@ +/* + * Copyright (C) 2018-2023 Garden Technologies, Inc. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +/** + The MIT License (MIT) + + Copyright (c) 2018-present Jure Sotošek + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + */ + +import React from "react" +import { Box, Text } from "ink" +import PropTypes from "prop-types" +import stringWidth from "string-width" + +// Adapted from https://github.com/JureSotosek/ink-divider due to ESM incompatibilities + +// Helpers +const getSideDividerWidth = (width, titleWidth) => (width - titleWidth) / 2 +const getNumberOfCharsPerWidth = (char, width) => width / stringWidth(char) + +const PAD = " " + +// Divider +const Divider = ({ title, width, padding, titlePadding, titleColor, dividerChar, dividerColor }) => { + const titleString = title ? `${PAD.repeat(titlePadding) + title + PAD.repeat(titlePadding)}` : "" + const titleWidth = stringWidth(titleString) + + const dividerWidth = getSideDividerWidth(width, titleWidth) + const numberOfCharsPerSide = getNumberOfCharsPerWidth(dividerChar, dividerWidth) + const dividerSideString = dividerChar.repeat(numberOfCharsPerSide) + + const paddingString = PAD.repeat(padding) + + return ( + + + {paddingString} + {dividerSideString} + {titleString} + {dividerSideString} + {paddingString} + + + ) +} + +Divider.propTypes = { + title: PropTypes.string, + width: PropTypes.number, + padding: PropTypes.number, + titlePadding: PropTypes.number, + titleColor: PropTypes.string, + dividerChar: PropTypes.string, + dividerColor: PropTypes.string, +} + +Divider.defaultProps = { + title: null, + width: 50, + padding: 1, + titlePadding: 1, + titleColor: "white", + dividerChar: "─", + dividerColor: "grey", +} + +export default Divider diff --git a/core/src/util/logging.ts b/core/src/util/logging.ts index 8a88712473..fc943ae7a5 100644 --- a/core/src/util/logging.ts +++ b/core/src/util/logging.ts @@ -6,11 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { isArray, isPlainObject, isString, mapValues } from "lodash" +import { isArray, isPlainObject, isString, mapValues } from "lodash-es" import stripAnsi from "strip-ansi" -import { isPrimitive } from "../config/common" -import { deepFilter } from "./objects" -import { InternalError } from "../exceptions" +import { isPrimitive } from "../config/common.js" +import { deepFilter } from "./objects.js" +import { InternalError } from "../exceptions.js" let _callingToSanitizedValue = false diff --git a/core/src/util/module-overlap.ts b/core/src/util/module-overlap.ts index eebc2b222d..2a64eb2660 100644 --- a/core/src/util/module-overlap.ts +++ b/core/src/util/module-overlap.ts @@ -7,13 +7,13 @@ */ import { posix, resolve } from "path" -import { GenerateFileSpec, ModuleConfig } from "../config/module" +import type { GenerateFileSpec, ModuleConfig } from "../config/module.js" import pathIsInside from "path-is-inside" -import { groupBy, intersection } from "lodash" +import { groupBy, intersection } from "lodash-es" import chalk from "chalk" -import { naturalList } from "./string" +import { naturalList } from "./string.js" import dedent from "dedent" -import { InternalError } from "../exceptions" +import { InternalError } from "../exceptions.js" export const moduleOverlapTypes = ["path", "generateFiles"] as const export type ModuleOverlapType = (typeof moduleOverlapTypes)[number] diff --git a/core/src/util/objects.ts b/core/src/util/objects.ts index 1a0b98420d..82f9029ac4 100644 --- a/core/src/util/objects.ts +++ b/core/src/util/objects.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { isArray, isPlainObject, mapValues, pickBy } from "lodash" +import { isArray, isPlainObject, mapValues, pickBy } from "lodash-es" /** * Recursively process all values in the given input, diff --git a/core/src/util/open-telemetry/decorators.ts b/core/src/util/open-telemetry/decorators.ts index ade9d92832..f0bc4bf221 100644 --- a/core/src/util/open-telemetry/decorators.ts +++ b/core/src/util/open-telemetry/decorators.ts @@ -6,11 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import * as opentelemetry from "@opentelemetry/sdk-node" -import { tracer } from "./tracing" -import { getSessionContext } from "./context" -import { prefixWithGardenNamespace } from "./util" -import { InternalError } from "../../exceptions" +import type * as opentelemetry from "@opentelemetry/sdk-node" +import { tracer } from "./tracing.js" +import { getSessionContext } from "./context.js" +import { prefixWithGardenNamespace } from "./util.js" +import { InternalError } from "../../exceptions.js" type GetAttributesCallback = (this: C, ...args: T) => opentelemetry.api.Attributes type GetNameCallback = (this: C, ...args: T) => string diff --git a/core/src/util/open-telemetry/exporters/no-op-exporter.ts b/core/src/util/open-telemetry/exporters/no-op-exporter.ts index 345825e3e9..3163f50a76 100644 --- a/core/src/util/open-telemetry/exporters/no-op-exporter.ts +++ b/core/src/util/open-telemetry/exporters/no-op-exporter.ts @@ -6,8 +6,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ExportResult } from "@opentelemetry/core" -import { ReadableSpan, SpanExporter } from "@opentelemetry/sdk-trace-base" +import type { ExportResult } from "@opentelemetry/core" +import type { ReadableSpan, SpanExporter } from "@opentelemetry/sdk-trace-base" /** * This exporter does nothing. diff --git a/core/src/util/open-telemetry/exporters/reconfigurable-exporter.ts b/core/src/util/open-telemetry/exporters/reconfigurable-exporter.ts index 024f0d7be8..9f9738feda 100644 --- a/core/src/util/open-telemetry/exporters/reconfigurable-exporter.ts +++ b/core/src/util/open-telemetry/exporters/reconfigurable-exporter.ts @@ -6,9 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ExportResult } from "@opentelemetry/core" -import { ReadableSpan, SpanExporter } from "@opentelemetry/sdk-trace-base" -import { Deferred, defer } from "../../util" +import type { ExportResult } from "@opentelemetry/core" +import type { ReadableSpan, SpanExporter } from "@opentelemetry/sdk-trace-base" +import type { Deferred } from "../../util.js" +import { defer } from "../../util.js" type PendingSpan = { spans: ReadableSpan[] diff --git a/core/src/util/open-telemetry/propagation.ts b/core/src/util/open-telemetry/propagation.ts index fb88054ddd..2a2c50be60 100644 --- a/core/src/util/open-telemetry/propagation.ts +++ b/core/src/util/open-telemetry/propagation.ts @@ -8,7 +8,7 @@ import * as opentelemetry from "@opentelemetry/sdk-node" import env from "env-var" -import { getActiveContext } from "./context" +import { getActiveContext } from "./context.js" const VERSION = "00" const VERSION_PART = "(?!ff)[\\da-f]{2}" diff --git a/core/src/util/open-telemetry/spans.ts b/core/src/util/open-telemetry/spans.ts index 2944b69642..f6f12d8cc3 100644 --- a/core/src/util/open-telemetry/spans.ts +++ b/core/src/util/open-telemetry/spans.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import * as opentelemetry from "@opentelemetry/sdk-node" -import { tracer } from "./tracing" -import { getSessionContext } from "./context" -import { prefixWithGardenNamespace } from "./util" +import type * as opentelemetry from "@opentelemetry/sdk-node" +import { tracer } from "./tracing.js" +import { getSessionContext } from "./context.js" +import { prefixWithGardenNamespace } from "./util.js" /** * Starts a new Span and calls the given function passing it the created span as first argument. diff --git a/core/src/util/open-telemetry/tracing.ts b/core/src/util/open-telemetry/tracing.ts index 168b1354cf..805aab310c 100644 --- a/core/src/util/open-telemetry/tracing.ts +++ b/core/src/util/open-telemetry/tracing.ts @@ -8,13 +8,13 @@ import * as opentelemetry from "@opentelemetry/sdk-node" import { HttpInstrumentation } from "@opentelemetry/instrumentation-http" -import { gardenEnv } from "../../constants" -import { getSessionContext } from "./context" -import { prefixWithGardenNamespace } from "./util" -import { ReconfigurableExporter } from "./exporters/reconfigurable-exporter" +import { gardenEnv } from "../../constants.js" +import { getSessionContext } from "./context.js" +import { prefixWithGardenNamespace } from "./util.js" +import { ReconfigurableExporter } from "./exporters/reconfigurable-exporter.js" import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http" -import { OTLPExporterNodeConfigBase } from "@opentelemetry/otlp-exporter-base" -import { NoOpExporter } from "./exporters/no-op-exporter" +import type { OTLPExporterNodeConfigBase } from "@opentelemetry/otlp-exporter-base" +import { NoOpExporter } from "./exporters/no-op-exporter.js" export const tracer = opentelemetry.api.trace.getTracer("garden") diff --git a/core/src/util/open-telemetry/util.ts b/core/src/util/open-telemetry/util.ts index 7799782391..a6131c8d45 100644 --- a/core/src/util/open-telemetry/util.ts +++ b/core/src/util/open-telemetry/util.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import * as opentelemetry from "@opentelemetry/sdk-node" +import type * as opentelemetry from "@opentelemetry/sdk-node" /** * Automatically prefixes any keys in the input object with `garden.` for attribute namespacing. diff --git a/core/src/util/process.ts b/core/src/util/process.ts index 192b269756..01413abbac 100644 --- a/core/src/util/process.ts +++ b/core/src/util/process.ts @@ -6,11 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ChildProcess } from "child_process" +import type { ChildProcess } from "child_process" import split2 from "split2" -import { RuntimeError } from "../exceptions" -import { PluginContext } from "../plugin-context" -import { StringLogLevel } from "../logger/logger" +import { RuntimeError } from "../exceptions.js" +import type { PluginContext } from "../plugin-context.js" +import type { StringLogLevel } from "../logger/logger.js" export function streamLogs({ proc, @@ -25,21 +25,12 @@ export function streamLogs({ }): void { const logStream = split2() - let stdout = "" - let stderr = "" - if (proc.stderr) { proc.stderr.pipe(logStream) - proc.stderr.on("data", (data) => { - stderr += data - }) } if (proc.stdout) { proc.stdout.pipe(logStream) - proc.stdout.on("data", (data) => { - stdout += data - }) } const logEventContext = { @@ -47,10 +38,6 @@ export function streamLogs({ level: level ?? ("verbose" as const), } - const logger = ctx.log.createLog({ - name, - }) - logStream.on("data", (line: Buffer) => { const logLine = line.toString() ctx.events.emit("log", { timestamp: new Date().toISOString(), msg: logLine, ...logEventContext }) @@ -175,19 +162,19 @@ export function waitForLogLine({ let stdErrString = "" const stringWasSeen = new Promise((resolve, reject) => { - function hasError(string: string): boolean { + function hasError(): boolean { return errorLog !== undefined && (stdOutString.includes(errorLog) || stdErrString.includes(errorLog)) } - function hasSuccess(string: string): boolean { + function hasSuccess(): boolean { return stdOutString.includes(successLog) || stdErrString.includes(successLog) } process.stdout?.on("data", (chunk) => { stdOutString = stdOutString + chunk - if (hasSuccess(stdOutString)) { + if (hasSuccess()) { resolve() - } else if (hasError(stdOutString)) { + } else if (hasError()) { reject( new ErrorLogLineSeenError({ stdout: stdOutString, @@ -201,9 +188,9 @@ export function waitForLogLine({ process.stderr?.on("data", (chunk) => { stdErrString = stdErrString + chunk - if (hasSuccess(stdOutString)) { + if (hasSuccess()) { resolve() - } else if (hasError(stdOutString)) { + } else if (hasError()) { reject( new ErrorLogLineSeenError({ stdout: stdOutString, diff --git a/core/src/util/profiling.ts b/core/src/util/profiling.ts index d79761a226..20a4c3b475 100644 --- a/core/src/util/profiling.ts +++ b/core/src/util/profiling.ts @@ -7,11 +7,11 @@ */ import { performance } from "perf_hooks" -import { sum, sortBy } from "lodash" -import { gardenEnv } from "../constants" -import { renderTable, tablePresets } from "./string" +import { sum, sortBy } from "lodash-es" +import { gardenEnv } from "../constants.js" +import { renderTable, tablePresets } from "./string.js" import chalk from "chalk" -import { isPromise } from "./objects" +import { isPromise } from "./objects.js" const skipProfiling = process.env.GARDEN_SKIP_TEST_PROFILING diff --git a/core/src/util/recoverable-process.ts b/core/src/util/recoverable-process.ts index cc21ebe7a1..4f34ae943a 100644 --- a/core/src/util/recoverable-process.ts +++ b/core/src/util/recoverable-process.ts @@ -6,11 +6,12 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ChildProcess, execFile, spawn } from "child_process" -import { Log } from "../logger/log-entry" -import { sleep } from "./util" -import { ConfigurationError, RuntimeError } from "../exceptions" -import { PluginEventBroker } from "../plugin-context" +import type { ChildProcess } from "node:child_process" +import { execFile, spawn } from "node:child_process" +import type { Log } from "../logger/log-entry.js" +import { sleep } from "./util.js" +import { ConfigurationError, RuntimeError } from "../exceptions.js" +import type { PluginEventBroker } from "../plugin-context.js" export interface OsCommand { readonly command: string diff --git a/core/src/util/serialization.ts b/core/src/util/serialization.ts index 04f5e742d7..5386c7c9c0 100644 --- a/core/src/util/serialization.ts +++ b/core/src/util/serialization.ts @@ -6,10 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { mapValues } from "lodash" -import { writeFile } from "fs-extra" -import { DumpOptions, dump } from "js-yaml" -import highlight from "cli-highlight" +import { mapValues } from "lodash-es" +import fsExtra from "fs-extra" +const { writeFile } = fsExtra +import type { DumpOptions } from "js-yaml" +import { dump } from "js-yaml" +import highlightModule from "cli-highlight" +const highlight = highlightModule.default + import chalk from "chalk" export async function dumpYaml(yamlPath: string, data: any) { diff --git a/core/src/util/streams.ts b/core/src/util/streams.ts index f8e7dbed59..b8ea1a12fe 100644 --- a/core/src/util/streams.ts +++ b/core/src/util/streams.ts @@ -6,9 +6,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import split2 = require("split2") +import split2 from "split2" import { Readable } from "stream" -import { InternalError } from "../exceptions" +import { InternalError } from "../exceptions.js" export const splitStream = split2 diff --git a/core/src/util/string.ts b/core/src/util/string.ts index cec881a313..5dca058408 100644 --- a/core/src/util/string.ts +++ b/core/src/util/string.ts @@ -6,14 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import _dedent = require("dedent") -import _deline = require("deline") -import _urlJoin = require("proper-url-join") -import _stableStringify = require("json-stable-stringify") -import _titleize = require("titleize") +import _dedent from "dedent" +import _deline from "deline" +import _urlJoin from "proper-url-join" +import _stableStringify from "json-stable-stringify" +import _titleize from "titleize" import CliTable from "cli-table3" import cliTruncate from "cli-truncate" -import { getTerminalWidth } from "../logger/util" +import { getTerminalWidth } from "../logger/util.js" import wrapAnsi from "wrap-ansi" // Exporting these here for convenience and ease of imports (otherwise we need to require modules instead of using diff --git a/core/src/util/sync.ts b/core/src/util/sync.ts index c1f0a91762..a923b349e1 100644 --- a/core/src/util/sync.ts +++ b/core/src/util/sync.ts @@ -6,9 +6,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { exec } from "./util" -import { Log } from "../logger/log-entry" -import { LogLevel } from "../logger/logger" +import { exec } from "./util.js" +import type { Log } from "../logger/log-entry.js" +import { LogLevel } from "../logger/logger.js" /** * Syncs `sourcePath` with `destinationPath` using `syncOpts`. Adds options to `syncOpts` as appropriate for the diff --git a/core/src/util/testing.ts b/core/src/util/testing.ts index ddf41c5831..1fbf20a119 100644 --- a/core/src/util/testing.ts +++ b/core/src/util/testing.ts @@ -6,43 +6,47 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { GlobalOptions, globalOptions, ParameterValues } from "../cli/params" +import type { GlobalOptions, ParameterValues } from "../cli/params.js" +import { globalOptions } from "../cli/params.js" import cloneDeep from "fast-copy" -import { isEqual, keyBy, set, mapValues, round } from "lodash" -import { Garden, GardenOpts, GardenParams, GetConfigGraphParams, resolveGardenParams } from "../garden" -import { DeepPrimitiveMap, StringMap } from "../config/common" -import { ModuleConfig } from "../config/module" -import { WorkflowConfig } from "../config/workflow" -import { Log, LogEntry } from "../logger/log-entry" -import { GardenModule } from "../types/module" -import { findByName, getNames } from "./util" -import { GardenError, InternalError } from "../exceptions" -import { EventBus, EventName, Events } from "../events/events" -import { dedent, naturalList } from "./string" +import { isEqual, keyBy, set, mapValues, round } from "lodash-es" +import type { GardenOpts, GardenParams, GetConfigGraphParams } from "../garden.js" +import { Garden, resolveGardenParams } from "../garden.js" +import type { DeepPrimitiveMap, StringMap } from "../config/common.js" +import type { ModuleConfig } from "../config/module.js" +import type { WorkflowConfig } from "../config/workflow.js" +import type { Log, LogEntry } from "../logger/log-entry.js" +import type { GardenModule } from "../types/module.js" +import { findByName, getNames } from "./util.js" +import { GardenError, InternalError } from "../exceptions.js" +import type { EventName, Events } from "../events/events.js" +import { EventBus } from "../events/events.js" +import { dedent, naturalList } from "./string.js" import pathIsInside from "path-is-inside" import { join, resolve } from "path" -import { DEFAULT_BUILD_TIMEOUT_SEC, GARDEN_CORE_ROOT, GardenApiVersion } from "../constants" -import { getRootLogger } from "../logger/logger" +import { DEFAULT_BUILD_TIMEOUT_SEC, GARDEN_CORE_ROOT, GardenApiVersion } from "../constants.js" +import { getRootLogger } from "../logger/logger.js" import stripAnsi from "strip-ansi" -import { VcsHandler } from "../vcs/vcs" -import { ConfigGraph } from "../graph/config-graph" -import { SolveParams } from "../graph/solver" -import { GraphResults } from "../graph/results" +import type { VcsHandler } from "../vcs/vcs.js" +import type { ConfigGraph } from "../graph/config-graph.js" +import type { SolveParams } from "../graph/solver.js" +import type { GraphResults } from "../graph/results.js" import { expect } from "chai" -import { ActionConfig, ActionKind, ActionStatus } from "../actions/types" -import { WrappedActionRouterHandlers } from "../router/base" -import { +import type { ActionConfig, ActionKind, ActionStatus } from "../actions/types.js" +import type { WrappedActionRouterHandlers } from "../router/base.js" +import type { BuiltinArgs, Command, CommandArgsType, CommandOptionsType, CommandResult, CommandResultType, -} from "../commands/base" -import { validateSchema } from "../config/validation" -import { mkdirp, remove } from "fs-extra" -import { GlobalConfigStore } from "../config-store/global" -import { isPromise } from "./objects" +} from "../commands/base.js" +import { validateSchema } from "../config/validation.js" +import fsExtra from "fs-extra" +const { mkdirp, remove } = fsExtra +import { GlobalConfigStore } from "../config-store/global.js" +import { isPromise } from "./objects.js" import chalk from "chalk" export class TestError extends GardenError { @@ -164,9 +168,9 @@ export type TestGardenOpts = Partial & { export class TestGarden extends Garden { override events: TestEventBus - public override vcs!: VcsHandler // Not readonly, to allow overriding with a mocked handler in tests - public override secrets!: StringMap // Not readonly, to allow setting secrets in tests - public override variables!: DeepPrimitiveMap // Not readonly, to allow setting variables in tests + public declare vcs: VcsHandler // Not readonly, to allow overriding with a mocked handler in tests + public declare secrets: StringMap // Not readonly, to allow setting secrets in tests + public declare variables: DeepPrimitiveMap // Not readonly, to allow setting variables in tests private repoRoot!: string public cacheKey!: string diff --git a/core/src/util/tls.ts b/core/src/util/tls.ts index 031ffe2d7a..677c5921b6 100644 --- a/core/src/util/tls.ts +++ b/core/src/util/tls.ts @@ -6,14 +6,13 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { pki } from "node-forge" -import { certpem } from "certpem" -import { find } from "lodash" +import forge from "node-forge" +import { X509Certificate } from "node:crypto" // Reference: https://github.com/digitalbazaar/forge#x509 export function createSelfSignedTlsCert(hostName: string) { - const keys = pki.rsa.generateKeyPair(2048) - const cert = pki.createCertificate() + const keys = forge.pki.rsa.generateKeyPair(2048) + const cert = forge.pki.createCertificate() cert.publicKey = keys.publicKey @@ -101,35 +100,34 @@ export function createSelfSignedTlsCert(hostName: string) { // self-sign certificate cert.sign(keys.privateKey) - const certPem = pki.certificateToPem(cert) + const certPem = forge.pki.certificateToPem(cert) return { cert, keys, certPem, - privateKeyPem: pki.privateKeyToPem(keys.privateKey), - publicKeyPem: pki.publicKeyToPem(keys.publicKey), + privateKeyPem: forge.pki.privateKeyToPem(keys.privateKey), + publicKeyPem: forge.pki.publicKeyToPem(keys.publicKey), } } export function getHostnamesFromPem(crtData: string) { - // Note: Can't use the certpem.info() method here because of multiple bugs. - // And yes, this API is insane. Crypto people are bonkers. Seriously. - JE - const certInfo = certpem.debug(crtData) - + const cert = new X509Certificate(crtData) + const legacyObject = cert.toLegacyObject() const hostnames: string[] = [] - const commonNameField = find(certInfo.subject.types_and_values, ["type", "2.5.4.3"]) - if (commonNameField) { - hostnames.push(commonNameField.value.value_block.value) + const commonName = legacyObject.subject.CN + + if (commonName) { + hostnames.push(commonName) } - for (const ext of certInfo.extensions || []) { - if (ext.parsedValue && ext.parsedValue.altNames) { - for (const alt of ext.parsedValue.altNames) { - hostnames.push(alt.Name) - } - } + const altNames = cert.subjectAltName?.split(",").map((s) => s.trim()) ?? [] + + for (const altName of altNames) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const [_type, name] = altName.split(":") + hostnames.push(name) } return hostnames diff --git a/core/src/util/util.ts b/core/src/util/util.ts index 3c48bf0a2a..24e7dbfe70 100644 --- a/core/src/util/util.ts +++ b/core/src/util/util.ts @@ -9,8 +9,9 @@ import { asyncExitHook, gracefulExit } from "@scg82/exit-hook" import { execSync } from "child_process" import _spawn from "cross-spawn" -import { createHash } from "crypto" -import { readFile, readFileSync } from "fs-extra" +import { createHash } from "node:crypto" +import fsExtra from "fs-extra" +const { readFile } = fsExtra import { load } from "js-yaml" import { difference, @@ -25,15 +26,15 @@ import { pick, range, some, - truncate, uniqBy, -} from "lodash" +} from "lodash-es" import pMap from "p-map" import pProps from "p-props" -import { isAbsolute, relative, resolve as resolvePath } from "path" -import { Readable, Writable } from "stream" -import type { PrimitiveMap } from "../config/common" -import { DEFAULT_GARDEN_CLOUD_DOMAIN, DOCS_BASE_URL, gardenEnv } from "../constants" +import { isAbsolute, relative } from "node:path" +import type { Readable } from "stream" +import { Writable } from "stream" +import type { PrimitiveMap } from "../config/common.js" +import { DEFAULT_GARDEN_CLOUD_DOMAIN, DOCS_BASE_URL, gardenEnv } from "../constants.js" import { ChildProcessError, InternalError, @@ -41,12 +42,13 @@ import { RuntimeError, TimeoutError, isErrnoException, -} from "../exceptions" -import type { Log } from "../logger/log-entry" -import { getDefaultProfiler } from "./profiling" -import { dedent, naturalList, tailString } from "./string" -import split2 = require("split2") -import execa = require("execa") +} from "../exceptions.js" +import type { Log } from "../logger/log-entry.js" +import { getDefaultProfiler } from "./profiling.js" +import { dedent, naturalList, tailString } from "./string.js" +import split2 from "split2" +import execa from "execa" +import corePackageJson from "../../package.json" assert { type: "json" } export { apply as jsonMerge } from "json-merge-patch" @@ -110,12 +112,8 @@ export function registerCleanupFunction(name: string, func: HookCallback) { }) } -let packageJson: { version: string } | undefined = undefined export function getPackageVersion(): string { - if (!packageJson) { - packageJson = JSON.parse(readFileSync(resolvePath(__dirname, "../../../package.json"), "utf8")) - } - const { version } = packageJson as { version: string } + const { version } = corePackageJson as { version: string } return version } @@ -680,8 +678,6 @@ export async function runScript({ // Actual error are handled specifically. log.info(line.toString()) }) - // Workaround for https://github.com/vercel/pkg/issues/897 - env.PKG_EXECPATH = "" // script can be either a command or path to an executable // shell script since we use the shell option. const result = await exec(script, [], { @@ -817,30 +813,6 @@ export async function userPrompt(params: { return inquirer.prompt(params) } -export function getGitHubIssueLink(title: string, type: "bug" | "crash" | "feature-request") { - try { - title = encodeURIComponent( - truncate(title, { - length: 80, - omission: encodeURIComponent("..."), - }) - ).replaceAll("'", "%27") - } catch (e) { - // encodeURIComponent might throw URIError with malformed unicode strings. - // The title is not that important, we can also leave it empty in that case. - title = "" - } - - switch (type) { - case "feature-request": - return `https://github.com/garden-io/garden/issues/new?labels=feature+request&template=FEATURE_REQUEST.md&title=%5BFEATURE%5D%3A+${title}` - case "bug": - return `https://github.com/garden-io/garden/issues/new?labels=bug&template=BUG_REPORT.md&title=${title}` - case "crash": - return `https://github.com/garden-io/garden/issues/new?labels=bug,crash&template=CRASH.md&title=${title}` - } -} - /** * Check if a given date instance is valid. */ diff --git a/core/src/util/validateInstall.ts b/core/src/util/validateInstall.ts index 7047c3b331..f1ab31f7f4 100644 --- a/core/src/util/validateInstall.ts +++ b/core/src/util/validateInstall.ts @@ -7,10 +7,10 @@ */ import semver from "semver" -import { RuntimeError } from "../exceptions" -import { deline } from "./string" -import { exec } from "./util" -import { DOCS_BASE_URL } from "../constants" +import { RuntimeError } from "../exceptions.js" +import { deline } from "./string.js" +import { exec } from "./util.js" +import { DOCS_BASE_URL } from "../constants.js" type BinaryVersionCheckParams = { name: string diff --git a/core/src/vcs/file-tree.ts b/core/src/vcs/file-tree.ts index 66fff8196a..28c26fe718 100644 --- a/core/src/vcs/file-tree.ts +++ b/core/src/vcs/file-tree.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { VcsFile } from "./vcs" +import type { VcsFile } from "./vcs.js" import * as path from "path" type FileTreeNodeOptions = { diff --git a/core/src/vcs/git-repo.ts b/core/src/vcs/git-repo.ts index 1fe7177ebe..8ab1fb9ddd 100644 --- a/core/src/vcs/git-repo.ts +++ b/core/src/vcs/git-repo.ts @@ -7,12 +7,13 @@ */ import { join } from "path" -import { GitHandler, augmentGlobs } from "./git" -import type { GetFilesParams, VcsFile } from "./vcs" -import { isDirectory, joinWithPosix, matchPath } from "../util/fs" -import { pathExists } from "fs-extra" -import { pathToCacheContext } from "../cache" -import { FileTree } from "./file-tree" +import { GitHandler, augmentGlobs } from "./git.js" +import type { GetFilesParams, VcsFile } from "./vcs.js" +import { isDirectory, joinWithPosix, matchPath } from "../util/fs.js" +import fsExtra from "fs-extra" +const { pathExists } = fsExtra +import { pathToCacheContext } from "../cache.js" +import { FileTree } from "./file-tree.js" type ScanRepoParams = Pick diff --git a/core/src/vcs/git.ts b/core/src/vcs/git.ts index c2177daa98..6d633954ec 100644 --- a/core/src/vcs/git.ts +++ b/core/src/vcs/git.ts @@ -8,27 +8,30 @@ import { performance } from "perf_hooks" import { isAbsolute, join, posix, relative, resolve } from "path" -import { isString } from "lodash" -import { createReadStream, ensureDir, lstat, pathExists, readlink, realpath, stat, Stats } from "fs-extra" +import { isString } from "lodash-es" +import fsExtra from "fs-extra" +const { createReadStream, ensureDir, lstat, pathExists, readlink, realpath, stat } = fsExtra import { PassThrough } from "stream" -import { GetFilesParams, RemoteSourceParams, VcsFile, VcsHandler, VcsHandlerParams, VcsInfo } from "./vcs" -import { ChildProcessError, ConfigurationError, isErrnoException, RuntimeError } from "../exceptions" -import { getStatsType, joinWithPosix, matchPath } from "../util/fs" -import { dedent, deline, splitLast } from "../util/string" -import { defer, exec } from "../util/util" -import { Log } from "../logger/log-entry" +import type { GetFilesParams, RemoteSourceParams, VcsFile, VcsInfo, VcsHandlerParams } from "./vcs.js" +import { VcsHandler } from "./vcs.js" +import { ChildProcessError, ConfigurationError, isErrnoException, RuntimeError } from "../exceptions.js" +import { getStatsType, joinWithPosix, matchPath } from "../util/fs.js" +import { dedent, deline, splitLast } from "../util/string.js" +import { defer, exec } from "../util/util.js" +import type { Log } from "../logger/log-entry.js" import parseGitConfig from "parse-git-config" -import { getDefaultProfiler, Profile, Profiler } from "../util/profiling" -import { STATIC_DIR } from "../constants" +import type { Profiler } from "../util/profiling.js" +import { getDefaultProfiler, Profile } from "../util/profiling.js" +import { STATIC_DIR } from "../constants.js" import isGlob from "is-glob" import chalk from "chalk" -import { pMemoizeDecorator } from "../lib/p-memoize" +import { pMemoizeDecorator } from "../lib/p-memoize.js" import AsyncLock from "async-lock" import PQueue from "p-queue" -import { isSha1 } from "../util/hashing" -import split2 = require("split2") -import execa = require("execa") -import hasha = require("hasha") +import { isSha1 } from "../util/hashing.js" +import split2 from "split2" +import execa from "execa" +import hasha from "hasha" const gitConfigAsyncLock = new AsyncLock() @@ -425,7 +428,7 @@ export class GitHandler extends VcsHandler { // Make sure we have a fresh hash for each file let count = 0 - const ensureHash = async (file: VcsFile, stats: Stats | undefined): Promise => { + const ensureHash = async (file: VcsFile, stats: fsExtra.Stats | undefined): Promise => { if (file.hash === "" || modified.has(file.path)) { // Don't attempt to hash directories. Directories (which will only come up via symlinks btw) // will by extension be filtered out of the list. @@ -702,7 +705,7 @@ export class GitHandler extends VcsHandler { * We deviate from git's behavior when dealing with symlinks, by hashing the target of the symlink and not the * symlink itself. If the symlink cannot be read, we hash the link contents like git normally does. */ - async hashObject(stats: Stats, path: string): Promise { + async hashObject(stats: fsExtra.Stats, path: string): Promise { const start = performance.now() const hash = hasha.stream({ algorithm: "sha1" }) diff --git a/core/src/vcs/vcs.ts b/core/src/vcs/vcs.ts index 4c481e4f42..0153080b1e 100644 --- a/core/src/vcs/vcs.ts +++ b/core/src/vcs/vcs.ts @@ -6,34 +6,38 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import Joi from "@hapi/joi" +import type Joi from "@hapi/joi" import normalize from "normalize-path" -import { sortBy, pick } from "lodash" -import { createHash } from "crypto" -import { validateSchema } from "../config/validation" +import { sortBy, pick } from "lodash-es" +import { createHash } from "node:crypto" +import { validateSchema } from "../config/validation.js" import { join, relative, isAbsolute, sep } from "path" -import { DOCS_BASE_URL, GARDEN_VERSIONFILE_NAME as GARDEN_TREEVERSION_FILENAME } from "../constants" -import { pathExists, readFile, writeFile } from "fs-extra" -import { ConfigurationError } from "../exceptions" -import { ExternalSourceType, getRemoteSourceLocalPath, getRemoteSourcesPath } from "../util/ext-source-util" -import { ModuleConfig, serializeConfig } from "../config/module" -import type { Log } from "../logger/log-entry" -import { treeVersionSchema } from "../config/common" -import { dedent, splitLast } from "../util/string" -import { fixedProjectExcludes } from "../util/fs" -import { pathToCacheContext, TreeCache } from "../cache" -import type { ServiceConfig } from "../config/service" -import type { TaskConfig } from "../config/task" -import type { TestConfig } from "../config/test" -import type { GardenModule } from "../types/module" -import { validateInstall } from "../util/validateInstall" -import { getSourceAbsPath, isActionConfig } from "../actions/base" -import type { BaseActionConfig } from "../actions/types" -import { Garden } from "../garden" +import { DOCS_BASE_URL, GARDEN_VERSIONFILE_NAME as GARDEN_TREEVERSION_FILENAME } from "../constants.js" +import fsExtra from "fs-extra" +const { pathExists, readFile, writeFile } = fsExtra +import { ConfigurationError } from "../exceptions.js" +import type { ExternalSourceType } from "../util/ext-source-util.js" +import { getRemoteSourceLocalPath, getRemoteSourcesPath } from "../util/ext-source-util.js" +import type { ModuleConfig } from "../config/module.js" +import { serializeConfig } from "../config/module.js" +import type { Log } from "../logger/log-entry.js" +import { treeVersionSchema } from "../config/common.js" +import { dedent, splitLast } from "../util/string.js" +import { fixedProjectExcludes } from "../util/fs.js" +import type { TreeCache } from "../cache.js" +import { pathToCacheContext } from "../cache.js" +import type { ServiceConfig } from "../config/service.js" +import type { TaskConfig } from "../config/task.js" +import type { TestConfig } from "../config/test.js" +import type { GardenModule } from "../types/module.js" +import { validateInstall } from "../util/validateInstall.js" +import { isActionConfig, getSourceAbsPath } from "../actions/base.js" +import type { BaseActionConfig } from "../actions/types.js" +import type { Garden } from "../garden.js" import chalk from "chalk" -import { Profile } from "../util/profiling" +import { Profile } from "../util/profiling.js" -import AsyncLock = require("async-lock") +import AsyncLock from "async-lock" const scanLock = new AsyncLock() export const versionStringPrefix = "v-" diff --git a/core/src/warnings.ts b/core/src/warnings.ts index 9d96185914..931c6bf819 100644 --- a/core/src/warnings.ts +++ b/core/src/warnings.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Log } from "./logger/log-entry" +import type { Log } from "./logger/log-entry.js" interface LoggerContext { readonly history: Set diff --git a/core/src/watch.ts b/core/src/watch.ts index 0ce4a71e33..9eb7dd281b 100644 --- a/core/src/watch.ts +++ b/core/src/watch.ts @@ -6,12 +6,12 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { watch, FSWatcher } from "chokidar" -import { Log } from "./logger/log-entry" -import { InternalError } from "./exceptions" +import type { FSWatcher } from "chokidar" +import { watch } from "chokidar" +import type { Log } from "./logger/log-entry.js" import EventEmitter2 from "eventemitter2" -import { EventBus } from "./events/events" -import { Stats } from "fs" +import type { EventBus } from "./events/events.js" +import type { Stats } from "fs" import { join } from "path" import stringify from "json-stringify-safe" @@ -36,7 +36,7 @@ interface WatcherParams { * * Individual Garden instances should subscribe() */ -export class Watcher extends EventEmitter2 { +export class Watcher extends EventEmitter2.EventEmitter2 { private log: Log private subscribers: Subscriber[] public ready: boolean @@ -50,16 +50,6 @@ export class Watcher extends EventEmitter2 { this.log.debug(`Watcher: Initializing`) - // Make sure that fsevents works when we're on macOS. This has come up before without us noticing, which has - // a dramatic performance impact, so it's best if we simply throw here so that our tests catch such issues. - if (process.platform === "darwin") { - try { - require("fsevents") - } catch (error) { - throw InternalError.wrapError(error, "Unable to load fsevents module") - } - } - this.log.debug(`Watcher: Starting FSWatcher`) this.fsWatcher = watch([], { ignoreInitial: true, diff --git a/core/test/helpers.ts b/core/test/helpers.ts index 2a551de8dd..480a630d14 100644 --- a/core/test/helpers.ts +++ b/core/test/helpers.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import td from "testdouble" +import * as td from "testdouble" import { join, relative, resolve } from "path" import { cloneDeep, @@ -22,42 +22,48 @@ import { omit, pull, uniq, -} from "lodash" -import { copy, ensureDir, mkdirp, pathExists, remove, truncate } from "fs-extra" - -import { joi } from "../src/config/common" -import { GardenPluginSpec, ProviderHandlers, RegisterPluginParam } from "../src/plugin/plugin" -import { Garden } from "../src/garden" -import { ModuleConfig } from "../src/config/module" -import { DEFAULT_BUILD_TIMEOUT_SEC, GARDEN_CORE_ROOT, GardenApiVersion, gardenEnv } from "../src/constants" -import { globalOptions, GlobalOptions, ParameterObject, ParameterValues } from "../src/cli/params" -import { ExternalSourceType, getRemoteSourceLocalPath } from "../src/util/ext-source-util" -import { CommandParams, ProcessCommandResult } from "../src/commands/base" -import { SuiteFunction, TestFunction } from "mocha" -import { AnalyticsGlobalConfig } from "../src/config-store/global" -import { EventLogEntry, TestGarden, TestGardenOpts } from "../src/util/testing" -import { LogLevel, RootLogger } from "../src/logger/logger" -import { GardenCli } from "../src/cli/cli" -import { profileAsync } from "../src/util/profiling" -import { defaultDotIgnoreFile, makeTempDir } from "../src/util/fs" -import tmp, { DirectoryResult } from "tmp-promise" -import { ConfigurationError } from "../src/exceptions" +} from "lodash-es" +import fsExtra from "fs-extra" +const { copy, ensureDir, mkdirp, pathExists, remove, truncate } = fsExtra + +import { joi } from "../src/config/common.js" +import type { GardenPluginSpec, ProviderHandlers, RegisterPluginParam } from "../src/plugin/plugin.js" +import type { Garden } from "../src/garden.js" +import type { ModuleConfig } from "../src/config/module.js" +import { DEFAULT_BUILD_TIMEOUT_SEC, GARDEN_CORE_ROOT, GardenApiVersion, gardenEnv } from "../src/constants.js" +import type { GlobalOptions, ParameterObject, ParameterValues } from "../src/cli/params.js" +import { globalOptions } from "../src/cli/params.js" +import type { ExternalSourceType } from "../src/util/ext-source-util.js" +import { getRemoteSourceLocalPath } from "../src/util/ext-source-util.js" +import type { CommandParams, ProcessCommandResult } from "../src/commands/base.js" +import type { SuiteFunction, TestFunction } from "mocha" +import type { AnalyticsGlobalConfig } from "../src/config-store/global.js" +import type { EventLogEntry, TestGardenOpts } from "../src/util/testing.js" +import { TestGarden } from "../src/util/testing.js" +import { LogLevel, RootLogger } from "../src/logger/logger.js" +import type { GardenCli } from "../src/cli/cli.js" +import { profileAsync } from "../src/util/profiling.js" +import { defaultDotIgnoreFile, makeTempDir } from "../src/util/fs.js" +import type { DirectoryResult } from "tmp-promise" +import type tmp from "tmp-promise" +import { ConfigurationError } from "../src/exceptions.js" import execa from "execa" import timekeeper from "timekeeper" -import { ManyActionTypeDefinitions } from "../src/plugin/action-types" -import { defaultEnvironment, defaultNamespace, ProjectConfig } from "../src/config/project" -import { localConfigFilename } from "../src/config-store/local" -import { GraphResultMapWithoutTask } from "../src/graph/results" -import { dumpYaml } from "../src/util/serialization" -import { testPlugins } from "./helpers/test-plugin" -import { testDataDir, testGitUrl } from "./helpers/constants" -import { exec } from "../src/util/util" - -export { TempDirectory, makeTempDir } from "../src/util/fs" -export { TestGarden, TestError, TestEventBus, expectError, expectFuzzyMatch } from "../src/util/testing" - -export * from "./helpers/constants" -export * from "./helpers/test-plugin" +import type { ManyActionTypeDefinitions } from "../src/plugin/action-types.js" +import type { ProjectConfig } from "../src/config/project.js" +import { defaultEnvironment, defaultNamespace } from "../src/config/project.js" +import { localConfigFilename } from "../src/config-store/local.js" +import type { GraphResultMapWithoutTask } from "../src/graph/results.js" +import { dumpYaml } from "../src/util/serialization.js" +import { testPlugins } from "./helpers/test-plugin.js" +import { testDataDir, testGitUrl } from "./helpers/constants.js" +import { exec } from "../src/util/util.js" + +export { TempDirectory, makeTempDir } from "../src/util/fs.js" +export { TestGarden, TestError, TestEventBus, expectError, expectFuzzyMatch } from "../src/util/testing.js" + +export * from "./helpers/constants.js" +export * from "./helpers/test-plugin.js" /** * Returns a fully resolved path of a concrete subdirectory located in the {@link testDataDir}. diff --git a/core/test/helpers/api.ts b/core/test/helpers/api.ts index 9008776685..250da7397f 100644 --- a/core/test/helpers/api.ts +++ b/core/test/helpers/api.ts @@ -6,11 +6,12 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { CloudApi, CloudProject, GetSecretsParams } from "../../src/cloud/api" -import { Log } from "../../src/logger/log-entry" -import { GlobalConfigStore } from "../../src/config-store/global" -import { uuidv4 } from "../../src/util/random" -import { StringMap } from "../../src/config/common" +import type { CloudProject, GetSecretsParams } from "../../src/cloud/api.js" +import { CloudApi } from "../../src/cloud/api.js" +import type { Log } from "../../src/logger/log-entry.js" +import { GlobalConfigStore } from "../../src/config-store/global.js" +import { uuidv4 } from "../../src/util/random.js" +import type { StringMap } from "../../src/config/common.js" export const apiProjectId = uuidv4() export const apiRemoteOriginUrl = "git@github.com:garden-io/garden.git" diff --git a/core/test/helpers/cli.ts b/core/test/helpers/cli.ts index a796fdeb3f..73e82e90a5 100644 --- a/core/test/helpers/cli.ts +++ b/core/test/helpers/cli.ts @@ -6,10 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { GardenCli, GardenCliParams } from "../../src/cli/cli" -import type { GardenOpts } from "../../src/garden" -import { makeTestGarden } from "../helpers" -import { FakeCloudApi } from "./api" +import type { GardenCliParams } from "../../src/cli/cli.js" +import { GardenCli } from "../../src/cli/cli.js" +import type { GardenOpts } from "../../src/garden.js" +import { makeTestGarden } from "../helpers.js" +import { FakeCloudApi } from "./api.js" export class TestGardenCli extends GardenCli { constructor(params: GardenCliParams = {}) { diff --git a/core/test/helpers/constants.ts b/core/test/helpers/constants.ts index 3faeddcf24..4127b7883d 100644 --- a/core/test/helpers/constants.ts +++ b/core/test/helpers/constants.ts @@ -7,9 +7,9 @@ */ import { resolve } from "path" -import { GARDEN_CORE_ROOT } from "../../src/constants" -import { hashRepoUrl } from "../../src/util/ext-source-util" -import { ModuleVersion } from "../../src/vcs/vcs" +import { GARDEN_CORE_ROOT } from "../../src/constants.js" +import { hashRepoUrl } from "../../src/util/ext-source-util.js" +import type { ModuleVersion } from "../../src/vcs/vcs.js" export const testDataDir = resolve(GARDEN_CORE_ROOT, "test", "data") export const testNow = new Date() diff --git a/core/test/helpers/test-plugin.ts b/core/test/helpers/test-plugin.ts index 2372d1cc6e..36e8fa8d05 100644 --- a/core/test/helpers/test-plugin.ts +++ b/core/test/helpers/test-plugin.ts @@ -7,29 +7,27 @@ */ import cloneDeep from "fast-copy" -import { get, isString, merge } from "lodash" - -import { convertExecModule } from "../../src/plugins/exec/convert" -import { createSchema, joi, joiArray } from "../../src/config/common" -import { createGardenPlugin, GardenPluginReference, PartialGardenPluginSpec } from "../../src/plugin/plugin" -import { ConfigureModuleParams } from "../../src/plugin/handlers/Module/configure" -import { - execModuleBuildSpecSchema, - ExecModule, - execTaskSpecSchema, - execTestSchema, -} from "../../src/plugins/exec/moduleConfig" -import { RunActionHandler, TestActionHandler } from "../../src/plugin/action-types" -import { GetRunResult } from "../../src/plugin/handlers/Run/get-result" -import { ConvertModuleParams } from "../../src/plugin/handlers/Module/convert" -import { baseServiceSpecSchema } from "../../src/config/service" -import { ExecTest, execTestSpecSchema } from "../../src/plugins/exec/test" -import { ExecRun } from "../../src/plugins/exec/run" -import { execDeployCommandSchema, execDeploySpecSchema } from "../../src/plugins/exec/deploy" -import { execRunSpecSchema, execRuntimeOutputsSchema } from "../../src/plugins/exec/config" -import { sdk } from "../../src/plugin/sdk" -import { testNow } from "./constants" -import { execBuildHandler, execBuildSpecSchema } from "../../src/plugins/exec/build" +import { get, isString, merge } from "lodash-es" + +import { convertExecModule } from "../../src/plugins/exec/convert.js" +import { createSchema, joi, joiArray } from "../../src/config/common.js" +import type { GardenPluginReference, PartialGardenPluginSpec } from "../../src/plugin/plugin.js" +import { createGardenPlugin } from "../../src/plugin/plugin.js" +import type { ConfigureModuleParams } from "../../src/plugin/handlers/Module/configure.js" +import type { ExecModule } from "../../src/plugins/exec/moduleConfig.js" +import { execModuleBuildSpecSchema, execTaskSpecSchema, execTestSchema } from "../../src/plugins/exec/moduleConfig.js" +import type { RunActionHandler, TestActionHandler } from "../../src/plugin/action-types.js" +import type { GetRunResult } from "../../src/plugin/handlers/Run/get-result.js" +import type { ConvertModuleParams } from "../../src/plugin/handlers/Module/convert.js" +import { baseServiceSpecSchema } from "../../src/config/service.js" +import type { ExecTest } from "../../src/plugins/exec/test.js" +import { execTestSpecSchema } from "../../src/plugins/exec/test.js" +import type { ExecRun } from "../../src/plugins/exec/run.js" +import { execDeployCommandSchema, execDeploySpecSchema } from "../../src/plugins/exec/deploy.js" +import { execRunSpecSchema, execRuntimeOutputsSchema } from "../../src/plugins/exec/config.js" +import { sdk } from "../../src/plugin/sdk.js" +import { testNow } from "./constants.js" +import { execBuildHandler, execBuildSpecSchema } from "../../src/plugins/exec/build.js" const s = sdk.schema diff --git a/core/test/integ/helpers.ts b/core/test/integ/helpers.ts index a6acbd9a38..bee4f8057c 100644 --- a/core/test/integ/helpers.ts +++ b/core/test/integ/helpers.ts @@ -8,7 +8,7 @@ import { GoogleAuth, Impersonated } from "google-auth-library" import { expect } from "chai" -import { base64, dedent } from "../../src/util/string" +import { base64, dedent } from "../../src/util/string.js" import chalk from "chalk" import { ArtifactRegistryClient } from "@google-cloud/artifact-registry" diff --git a/core/test/integ/src/plugins/container/container.ts b/core/test/integ/src/plugins/container/container.ts index ad588c7172..4c7ea59b61 100644 --- a/core/test/integ/src/plugins/container/container.ts +++ b/core/test/integ/src/plugins/container/container.ts @@ -7,22 +7,28 @@ */ import sinon from "sinon" -import td from "testdouble" - -import { PluginContext } from "../../../../../src/plugin-context" -import { gardenPlugin, ContainerProvider } from "../../../../../src/plugins/container/container" -import { expectError, getDataDir, makeTestGarden, TestGarden } from "../../../../helpers" -import { ActionLog, createActionLog } from "../../../../../src/logger/log-entry" +import * as td from "testdouble" + +import type { PluginContext } from "../../../../../src/plugin-context.js" +import type { ContainerProvider } from "../../../../../src/plugins/container/container.js" +import { gardenPlugin } from "../../../../../src/plugins/container/container.js" +import type { TestGarden } from "../../../../helpers.js" +import { expectError, getDataDir, makeTestGarden } from "../../../../helpers.js" +import type { ActionLog } from "../../../../../src/logger/log-entry.js" +import { createActionLog } from "../../../../../src/logger/log-entry.js" import { expect } from "chai" -import { ContainerBuildAction, ContainerBuildActionSpec } from "../../../../../src/plugins/container/moduleConfig" +import type { + ContainerBuildAction, + ContainerBuildActionSpec, +} from "../../../../../src/plugins/container/moduleConfig.js" import cloneDeep from "fast-copy" -import { publishContainerBuild } from "../../../../../src/plugins/container/publish" -import { Executed } from "../../../../../src/actions/types" -import { BuildActionConfig } from "../../../../../src/actions/build" -import { containerHelpers, minDockerVersion } from "../../../../../src/plugins/container/helpers" -import { getDockerBuildFlags } from "../../../../../src/plugins/container/build" -import { DEFAULT_BUILD_TIMEOUT_SEC } from "../../../../../src/constants" +import { publishContainerBuild } from "../../../../../src/plugins/container/publish.js" +import type { Executed } from "../../../../../src/actions/types.js" +import type { BuildActionConfig } from "../../../../../src/actions/build.js" +import { containerHelpers, minDockerVersion } from "../../../../../src/plugins/container/helpers.js" +import { getDockerBuildFlags } from "../../../../../src/plugins/container/build.js" +import { DEFAULT_BUILD_TIMEOUT_SEC } from "../../../../../src/constants.js" const testVersionedId = "some/image:12345" diff --git a/core/test/integ/src/plugins/container/helpers.ts b/core/test/integ/src/plugins/container/helpers.ts index d777ea0ffd..a8adfbd21f 100644 --- a/core/test/integ/src/plugins/container/helpers.ts +++ b/core/test/integ/src/plugins/container/helpers.ts @@ -7,7 +7,7 @@ */ import { expect } from "chai" -import { containerHelpers as helpers } from "../../../../../src/plugins/container/helpers" +import { containerHelpers as helpers } from "../../../../../src/plugins/container/helpers.js" describe("containerHelpers", () => { describe("getDockerVersion", () => { diff --git a/core/test/integ/src/plugins/exec/exec.ts b/core/test/integ/src/plugins/exec/exec.ts index 10e2d82d78..e523ae4123 100644 --- a/core/test/integ/src/plugins/exec/exec.ts +++ b/core/test/integ/src/plugins/exec/exec.ts @@ -7,12 +7,13 @@ */ import { expect } from "chai" -import { ResolvedRunAction } from "../../../../../src/actions/run" -import { executeAction, resolveAction } from "../../../../../src/graph/actions" -import { ConfigGraph } from "../../../../../src/graph/config-graph" -import { TestGarden, getDataDir, makeTestGarden } from "../../../../helpers" -import { Log } from "../../../../../src/logger/log-entry" -import { ExecProviderOutputs } from "../../../../../src/plugins/exec/exec" +import type { ResolvedRunAction } from "../../../../../src/actions/run.js" +import { executeAction, resolveAction } from "../../../../../src/graph/actions.js" +import type { ConfigGraph } from "../../../../../src/graph/config-graph.js" +import type { TestGarden } from "../../../../helpers.js" +import { getDataDir, makeTestGarden } from "../../../../helpers.js" +import type { Log } from "../../../../../src/logger/log-entry.js" +import type { ExecProviderOutputs } from "../../../../../src/plugins/exec/exec.js" describe("exec plugin", () => { let garden: TestGarden diff --git a/core/test/integ/src/plugins/exec/resolve.ts b/core/test/integ/src/plugins/exec/resolve.ts index 82c11de78e..d03b924559 100644 --- a/core/test/integ/src/plugins/exec/resolve.ts +++ b/core/test/integ/src/plugins/exec/resolve.ts @@ -7,9 +7,11 @@ */ import { expect } from "chai" -import { readFile } from "fs-extra" +import fsExtra from "fs-extra" +const { readFile } = fsExtra import { join } from "node:path" -import { getDataDir, makeTestGarden, TestGarden } from "../../../../helpers" +import type { TestGarden } from "../../../../helpers.js" +import { getDataDir, makeTestGarden } from "../../../../helpers.js" describe("exec provider initialization cache behaviour", () => { let gardenOne: TestGarden diff --git a/core/test/integ/src/plugins/hadolint/hadolint.ts b/core/test/integ/src/plugins/hadolint/hadolint.ts index 18c3eb0681..4662dfc67e 100644 --- a/core/test/integ/src/plugins/hadolint/hadolint.ts +++ b/core/test/integ/src/plugins/hadolint/hadolint.ts @@ -7,20 +7,21 @@ */ import tmp from "tmp-promise" -import { ProjectConfig } from "../../../../../src/config/project" -import execa = require("execa") -import { DEFAULT_BUILD_TIMEOUT_SEC, GardenApiVersion } from "../../../../../src/constants" -import { createProjectConfig, getDataDir, TestGarden } from "../../../../helpers" +import type { ProjectConfig } from "../../../../../src/config/project.js" +import execa from "execa" +import { DEFAULT_BUILD_TIMEOUT_SEC, GardenApiVersion } from "../../../../../src/constants.js" +import { createProjectConfig, getDataDir, TestGarden } from "../../../../helpers.js" import { expect } from "chai" import stripAnsi from "strip-ansi" -import { dedent } from "../../../../../src/util/string" -import { TestTask } from "../../../../../src/tasks/test" -import { writeFile, remove, pathExists } from "fs-extra" +import { dedent } from "../../../../../src/util/string.js" +import { TestTask } from "../../../../../src/tasks/test.js" +import fsExtra from "fs-extra" +const { writeFile, remove, pathExists } = fsExtra import { join } from "path" -import { createGardenPlugin } from "../../../../../src/plugin/plugin" -import { convertModules } from "../../../../../src/resolve-module" -import { actionFromConfig } from "../../../../../src/graph/actions" -import { TestAction } from "../../../../../src/actions/test" +import { createGardenPlugin } from "../../../../../src/plugin/plugin.js" +import { convertModules } from "../../../../../src/resolve-module.js" +import { actionFromConfig } from "../../../../../src/graph/actions.js" +import type { TestAction } from "../../../../../src/actions/test.js" describe("hadolint provider", () => { let tmpDir: tmp.DirectoryResult diff --git a/core/test/integ/src/plugins/kubernetes/api.ts b/core/test/integ/src/plugins/kubernetes/api.ts index 1c46e650df..757af923d4 100644 --- a/core/test/integ/src/plugins/kubernetes/api.ts +++ b/core/test/integ/src/plugins/kubernetes/api.ts @@ -6,21 +6,24 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Garden } from "../../../../../src/garden" -import { Provider } from "../../../../../src/config/provider" -import { KubernetesConfig, KubernetesPluginContext } from "../../../../../src/plugins/kubernetes/config" -import { KubeApi, KubernetesError } from "../../../../../src/plugins/kubernetes/api" -import { expectError, getDataDir, makeTestGarden } from "../../../../helpers" -import { getAppNamespace } from "../../../../../src/plugins/kubernetes/namespace" -import { randomString, gardenAnnotationKey } from "../../../../../src/util/string" -import { KubeConfig, V1ConfigMap } from "@kubernetes/client-node" -import { KubernetesResource, KubernetesPod } from "../../../../../src/plugins/kubernetes/types" +import type { Garden } from "../../../../../src/garden.js" +import type { Provider } from "../../../../../src/config/provider.js" +import type { KubernetesConfig, KubernetesPluginContext } from "../../../../../src/plugins/kubernetes/config.js" +import { KubeApi, KubernetesError } from "../../../../../src/plugins/kubernetes/api.js" +import { expectError, getDataDir, makeTestGarden } from "../../../../helpers.js" +import { getAppNamespace } from "../../../../../src/plugins/kubernetes/namespace.js" +import { randomString, gardenAnnotationKey } from "../../../../../src/util/string.js" +import type { V1ConfigMap } from "@kubernetes/client-node" +import { KubeConfig } from "@kubernetes/client-node" +import type { KubernetesResource, KubernetesPod } from "../../../../../src/plugins/kubernetes/types.js" import { expect } from "chai" -import { waitForResources } from "../../../../../src/plugins/kubernetes/status/status" -import { PluginContext } from "../../../../../src/plugin-context" -import { KUBECTL_DEFAULT_TIMEOUT } from "../../../../../src/plugins/kubernetes/kubectl" +import { waitForResources } from "../../../../../src/plugins/kubernetes/status/status.js" +import type { PluginContext } from "../../../../../src/plugin-context.js" +import { KUBECTL_DEFAULT_TIMEOUT } from "../../../../../src/plugins/kubernetes/kubectl.js" import { createServer } from "http" -import { getRootLogger } from "../../../../../src/logger/logger" +import { getRootLogger } from "../../../../../src/logger/logger.js" +import type { IncomingMessage, Server, ServerResponse } from "node:http" +import type { Body } from "node-fetch" describe("KubeApi", () => { context("helpers", () => { @@ -81,13 +84,13 @@ describe("KubeApi", () => { }, } - await api.core.createNamespacedConfigMap(namespace, configMap) + await api.core.createNamespacedConfigMap({ namespace, body: configMap }) try { configMap.data!.other = "thing" await api.replace({ log: garden.log, resource: configMap }) - const updated = await api.core.readNamespacedConfigMap(name, namespace) + const updated = await api.core.readNamespacedConfigMap({ name, namespace }) expect(updated.data?.other).to.equal("thing") } finally { await api.deleteBySpec({ namespace, manifest: configMap, log: garden.log }) @@ -126,7 +129,7 @@ describe("KubeApi", () => { expect(res.exitCode).to.equal(0) expect(res.timedOut).to.be.false } finally { - await api.core.deleteNamespacedPod(podName, namespace) + await api.core.deleteNamespacedPod({ name: podName, namespace }) } }) @@ -160,7 +163,7 @@ describe("KubeApi", () => { expect(res.exitCode).to.equal(2) expect(res.timedOut).to.be.false } finally { - await api.core.deleteNamespacedPod(podName, namespace) + await api.core.deleteNamespacedPod({ name: podName, namespace }) } }) @@ -195,7 +198,7 @@ describe("KubeApi", () => { expect(res.exitCode).to.be.undefined expect(res.timedOut).to.be.true } finally { - await api.core.deleteNamespacedPod(podName, namespace) + await api.core.deleteNamespacedPod({ name: podName, namespace }) } }) }) @@ -216,7 +219,7 @@ describe("KubeApi", () => { }, } - await api.core.createNamespacedConfigMap(namespace, configMap) + await api.core.createNamespacedConfigMap({ namespace, body: configMap }) try { const list = await api.listResources({ @@ -266,8 +269,8 @@ describe("KubeApi", () => { }, } - await api.core.createNamespacedConfigMap(namespace, configMapA) - await api.core.createNamespacedConfigMap(namespace, configMapB) + await api.core.createNamespacedConfigMap({ namespace, body: configMapA }) + await api.core.createNamespacedConfigMap({ namespace, body: configMapB }) try { const list = await api.listResources({ @@ -293,6 +296,11 @@ describe("KubeApi", () => { const port = 3021 let api: KubeApi const log = getRootLogger().createLog() + let server: Server + let wasRetried: boolean + let reqCount: number + let statusCodeHandler: () => number + before(async () => { class TestKubeConfig extends KubeConfig { override getCurrentCluster() { @@ -305,35 +313,32 @@ describe("KubeApi", () => { } const config = new TestKubeConfig() api = new KubeApi(log, "test-context", config) + + server = createServer((req, res) => { + let bodyRaw = "" + reqCount++ + wasRetried = reqCount > 1 + req.on("data", (data) => { + bodyRaw += data + }) + req.on("end", () => { + const body = JSON.parse(bodyRaw || "{}") as Body + + res.statusCode = statusCodeHandler() + res.setHeader("Content-Type", "application/json") + res.end(JSON.stringify(body)) + }) + }) + server.listen(port, hostname) }) - let wasRetried: boolean - let reqCount: number - let statusCodeHandler: () => number - afterEach(() => { + beforeEach(() => { reqCount = 0 wasRetried = false statusCodeHandler = () => { throw "implement in test case" } }) - const server = createServer((req, res) => { - let bodyRaw = "" - reqCount++ - wasRetried = reqCount > 1 - req.on("data", (data) => { - bodyRaw += data - }) - req.on("end", () => { - const body = JSON.parse(bodyRaw || "{}") as Body - - res.statusCode = statusCodeHandler() - res.setHeader("Content-Type", "application/json") - res.end(JSON.stringify(body)) - }) - }) - - server.listen(port, hostname) after(() => { server.close() @@ -344,11 +349,11 @@ describe("KubeApi", () => { const res = await api.request({ log, path: "", - opts: { body: { bodyContent: "foo" } }, + opts: { method: "POST", body: { bodyContent: "foo" } }, retryOpts: { maxRetries: 0, minTimeoutMs: 0 }, }) - expect(res.body).to.eql({ bodyContent: "foo" }) - expect(res.statusCode).to.eql(200) + expect(await res.json()).to.eql({ bodyContent: "foo" }) + expect(res.status).to.eql(200) }) it("should fail on a bad status code", async () => { @@ -374,7 +379,7 @@ describe("KubeApi", () => { retryOpts: { maxRetries: 1, minTimeoutMs: 0 }, }) expect(wasRetried).to.eql(true) - expect(res.statusCode).to.eql(200) + expect(res.status).to.eql(200) }) it("should not retry on certain statuses", async () => { @@ -395,7 +400,7 @@ describe("KubeApi", () => { await api.request({ log, path: "", - opts: { body: { msg: "ECONNRESET" } }, + opts: { method: "POST", body: { message: "ECONNRESET" } }, retryOpts: { maxRetries: 2, minTimeoutMs: 0 }, }) } catch {} @@ -408,7 +413,7 @@ describe("KubeApi", () => { await api.request({ log, path: "", - opts: { body: { msg: "unrelated error" } }, + opts: { method: "POST", body: { message: "unrelated error" } }, retryOpts: { maxRetries: 1, minTimeoutMs: 0 }, }) } catch {} diff --git a/core/test/integ/src/plugins/kubernetes/commands/pull-image.ts b/core/test/integ/src/plugins/kubernetes/commands/pull-image.ts index 4377bff906..3855a7157b 100644 --- a/core/test/integ/src/plugins/kubernetes/commands/pull-image.ts +++ b/core/test/integ/src/plugins/kubernetes/commands/pull-image.ts @@ -6,18 +6,18 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { pullBuild } from "../../../../../../src/plugins/kubernetes/commands/pull-image" -import { Garden } from "../../../../../../src/garden" -import { ConfigGraph } from "../../../../../../src/graph/config-graph" -import { getContainerTestGarden } from "../container/container" -import { PluginContext } from "../../../../../../src/plugin-context" -import { KubernetesProvider, KubernetesPluginContext } from "../../../../../../src/plugins/kubernetes/config" -import { containerHelpers } from "../../../../../../src/plugins/container/helpers" +import { pullBuild } from "../../../../../../src/plugins/kubernetes/commands/pull-image.js" +import type { Garden } from "../../../../../../src/garden.js" +import type { ConfigGraph } from "../../../../../../src/graph/config-graph.js" +import { getContainerTestGarden } from "../container/container.js" +import type { PluginContext } from "../../../../../../src/plugin-context.js" +import type { KubernetesProvider, KubernetesPluginContext } from "../../../../../../src/plugins/kubernetes/config.js" +import { containerHelpers } from "../../../../../../src/plugins/container/helpers.js" import { expect } from "chai" -import { grouped } from "../../../../../helpers" -import { BuildAction, ResolvedBuildAction } from "../../../../../../src/actions/build" -import { createActionLog } from "../../../../../../src/logger/log-entry" -import { k8sContainerBuildExtension } from "../../../../../../src/plugins/kubernetes/container/extensions" +import { grouped } from "../../../../../helpers.js" +import type { BuildAction, ResolvedBuildAction } from "../../../../../../src/actions/build.js" +import { createActionLog } from "../../../../../../src/logger/log-entry.js" +import { k8sContainerBuildExtension } from "../../../../../../src/plugins/kubernetes/container/extensions.js" describe.skip("pull-image plugin command", () => { let garden: Garden diff --git a/core/test/integ/src/plugins/kubernetes/commands/sync.ts b/core/test/integ/src/plugins/kubernetes/commands/sync.ts index 0ee13571ff..38cbe2d494 100644 --- a/core/test/integ/src/plugins/kubernetes/commands/sync.ts +++ b/core/test/integ/src/plugins/kubernetes/commands/sync.ts @@ -7,16 +7,16 @@ */ import { expect } from "chai" -import { Garden } from "../../../../../../src/garden" -import { ConfigGraph } from "../../../../../../src/graph/config-graph" -import { Log } from "../../../../../../src/logger/log-entry" -import { getMutagenDataDir, getMutagenMonitor } from "../../../../../../src/mutagen" -import { PluginContext } from "../../../../../../src/plugin-context" -import { syncPause, syncResume, syncStatus } from "../../../../../../src/plugins/kubernetes/commands/sync" -import { KubernetesProvider } from "../../../../../../src/plugins/kubernetes/config" -import { DeployTask } from "../../../../../../src/tasks/deploy" -import { cleanProject } from "../../../../../helpers" -import { getContainerTestGarden } from "../container/container" +import type { Garden } from "../../../../../../src/garden.js" +import type { ConfigGraph } from "../../../../../../src/graph/config-graph.js" +import type { Log } from "../../../../../../src/logger/log-entry.js" +import { getMutagenDataDir, getMutagenMonitor } from "../../../../../../src/mutagen.js" +import type { PluginContext } from "../../../../../../src/plugin-context.js" +import { syncPause, syncResume, syncStatus } from "../../../../../../src/plugins/kubernetes/commands/sync.js" +import type { KubernetesProvider } from "../../../../../../src/plugins/kubernetes/config.js" +import { DeployTask } from "../../../../../../src/tasks/deploy.js" +import { cleanProject } from "../../../../../helpers.js" +import { getContainerTestGarden } from "../container/container.js" describe("sync plugin commands", () => { let garden: Garden diff --git a/core/test/integ/src/plugins/kubernetes/container/build/build.ts b/core/test/integ/src/plugins/kubernetes/container/build/build.ts index a58e04329f..57bf32f4db 100644 --- a/core/test/integ/src/plugins/kubernetes/container/build/build.ts +++ b/core/test/integ/src/plugins/kubernetes/container/build/build.ts @@ -6,20 +6,21 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { expectError, grouped } from "../../../../../../helpers" -import { Garden } from "../../../../../../../src/garden" -import { ConfigGraph } from "../../../../../../../src/graph/config-graph" -import { PluginContext } from "../../../../../../../src/plugin-context" -import { KubernetesProvider } from "../../../../../../../src/plugins/kubernetes/config" +import { expectError, grouped } from "../../../../../../helpers.js" +import type { Garden } from "../../../../../../../src/garden.js" +import type { ConfigGraph } from "../../../../../../../src/graph/config-graph.js" +import type { PluginContext } from "../../../../../../../src/plugin-context.js" +import type { KubernetesProvider } from "../../../../../../../src/plugins/kubernetes/config.js" import { expect } from "chai" -import { getContainerTestGarden } from "../container" -import { containerHelpers } from "../../../../../../../src/plugins/container/helpers" -import { k8sPublishContainerBuild } from "../../../../../../../src/plugins/kubernetes/container/publish" -import { ActionLog, createActionLog } from "../../../../../../../src/logger/log-entry" -import { ContainerBuildAction } from "../../../../../../../src/plugins/container/config" -import { BuildTask } from "../../../../../../../src/tasks/build" -import { k8sContainerBuildExtension } from "../../../../../../../src/plugins/kubernetes/container/extensions" -import { deleteGoogleArtifactImage, listGoogleArtifactImageTags } from "../../../../../helpers" +import { getContainerTestGarden } from "../container.js" +import { containerHelpers } from "../../../../../../../src/plugins/container/helpers.js" +import { k8sPublishContainerBuild } from "../../../../../../../src/plugins/kubernetes/container/publish.js" +import type { ActionLog } from "../../../../../../../src/logger/log-entry.js" +import { createActionLog } from "../../../../../../../src/logger/log-entry.js" +import type { ContainerBuildAction } from "../../../../../../../src/plugins/container/config.js" +import { BuildTask } from "../../../../../../../src/tasks/build.js" +import { k8sContainerBuildExtension } from "../../../../../../../src/plugins/kubernetes/container/extensions.js" +import { deleteGoogleArtifactImage, listGoogleArtifactImageTags } from "../../../../../helpers.js" describe.skip("Kubernetes Container Build Extension", () => { const builder = k8sContainerBuildExtension() @@ -30,7 +31,6 @@ describe.skip("Kubernetes Container Build Extension", () => { let graph: ConfigGraph let provider: KubernetesProvider let ctx: PluginContext - let currentEnv: string after(async () => { if (garden) { @@ -39,7 +39,6 @@ describe.skip("Kubernetes Container Build Extension", () => { }) const init = async (environmentName: string, remoteContainerAuth = false) => { - currentEnv = environmentName ;({ garden, cleanup } = await getContainerTestGarden(environmentName, { remoteContainerAuth })) log = createActionLog({ log: garden.log, actionName: "", actionKind: "" }) graph = await garden.getConfigGraph({ log: garden.log, emit: false }) diff --git a/core/test/integ/src/plugins/kubernetes/container/build/buildkit.ts b/core/test/integ/src/plugins/kubernetes/container/build/buildkit.ts index 19d36e9563..2eedb4cdb4 100644 --- a/core/test/integ/src/plugins/kubernetes/container/build/buildkit.ts +++ b/core/test/integ/src/plugins/kubernetes/container/build/buildkit.ts @@ -6,28 +6,28 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { getContainerTestGarden } from "../container" -import { +import { getContainerTestGarden } from "../container.js" +import type { ClusterBuildkitCacheConfig, KubernetesPluginContext, KubernetesProvider, -} from "../../../../../../../src/plugins/kubernetes/config" -import { Garden } from "../../../../../../../src" -import { PluginContext } from "../../../../../../../src/plugin-context" +} from "../../../../../../../src/plugins/kubernetes/config.js" +import type { Garden } from "../../../../../../../src/index.js" +import type { PluginContext } from "../../../../../../../src/plugin-context.js" import { buildkitBuildHandler, ensureBuildkit, -} from "../../../../../../../src/plugins/kubernetes/container/build/buildkit" -import { KubeApi } from "../../../../../../../src/plugins/kubernetes/api" -import { getNamespaceStatus } from "../../../../../../../src/plugins/kubernetes/namespace" +} from "../../../../../../../src/plugins/kubernetes/container/build/buildkit.js" +import { KubeApi } from "../../../../../../../src/plugins/kubernetes/api.js" +import { getNamespaceStatus } from "../../../../../../../src/plugins/kubernetes/namespace.js" import { expect } from "chai" -import { cloneDeep } from "lodash" -import { buildDockerAuthConfig } from "../../../../../../../src/plugins/kubernetes/init" -import { buildkitDeploymentName, dockerAuthSecretKey } from "../../../../../../../src/plugins/kubernetes/constants" -import { grouped } from "../../../../../../helpers" -import { createActionLog } from "../../../../../../../src/logger/log-entry" -import { resolveAction } from "../../../../../../../src/graph/actions" -import { NamespaceStatus } from "../../../../../../../src/types/namespace" +import { cloneDeep } from "lodash-es" +import { buildDockerAuthConfig } from "../../../../../../../src/plugins/kubernetes/init.js" +import { buildkitDeploymentName, dockerAuthSecretKey } from "../../../../../../../src/plugins/kubernetes/constants.js" +import { grouped } from "../../../../../../helpers.js" +import { createActionLog } from "../../../../../../../src/logger/log-entry.js" +import { resolveAction } from "../../../../../../../src/graph/actions.js" +import type { NamespaceStatus } from "../../../../../../../src/types/namespace.js" describe.skip("ensureBuildkit", () => { let garden: Garden @@ -72,7 +72,7 @@ describe.skip("ensureBuildkit", () => { grouped("cluster-buildkit", "remote-only").context("cluster-buildkit mode", () => { it("deploys buildkit if it isn't already in the namespace", async () => { try { - await api.apps.deleteNamespacedDeployment(buildkitDeploymentName, namespace) + await api.apps.deleteNamespacedDeployment({ name: buildkitDeploymentName, namespace }) } catch {} const { updated } = await ensureBuildkit({ @@ -84,10 +84,10 @@ describe.skip("ensureBuildkit", () => { }) // Make sure deployment is there - const deployment = await api.apps.readNamespacedDeployment(buildkitDeploymentName, namespace) + const deployment = await api.apps.readNamespacedDeployment({ name: buildkitDeploymentName, namespace }) expect(updated).to.be.true - expect(deployment.spec.template.spec?.tolerations).to.eql([ + expect(deployment.spec?.template.spec?.tolerations).to.eql([ { key: "garden-build", operator: "Equal", @@ -121,7 +121,7 @@ describe.skip("ensureBuildkit", () => { it("deploys buildkit with the configured nodeSelector", async () => { try { - await api.apps.deleteNamespacedDeployment(buildkitDeploymentName, namespace) + await api.apps.deleteNamespacedDeployment({ name: buildkitDeploymentName, namespace }) } catch {} const nodeSelector = { "kubernetes.io/os": "linux" } @@ -136,9 +136,9 @@ describe.skip("ensureBuildkit", () => { namespace, }) - const deployment = await api.apps.readNamespacedDeployment(buildkitDeploymentName, namespace) + const deployment = await api.apps.readNamespacedDeployment({ name: buildkitDeploymentName, namespace }) - expect(deployment.spec.template.spec?.nodeSelector).to.eql(nodeSelector) + expect(deployment.spec?.template.spec?.nodeSelector).to.eql(nodeSelector) }) it("creates a docker auth secret from configured imagePullSecrets", async () => { @@ -149,7 +149,7 @@ describe.skip("ensureBuildkit", () => { api, namespace, }) - await api.core.readNamespacedSecret(authSecret.metadata.name, namespace) + await api.core.readNamespacedSecret({ name: authSecret.metadata.name, namespace }) }) it("creates an empty docker auth secret if there are no imagePullSecrets", async () => { @@ -164,7 +164,7 @@ describe.skip("ensureBuildkit", () => { namespace, }) - const secret = await api.core.readNamespacedSecret(authSecret.metadata.name, namespace) + const secret = await api.core.readNamespacedSecret({ name: authSecret.metadata.name, namespace }) const expectedConfig = await buildDockerAuthConfig([], api) const decoded = JSON.parse(Buffer.from(secret.data![dockerAuthSecretKey], "base64").toString()) @@ -217,7 +217,7 @@ describe.skip("ensureBuildkit", () => { grouped("cluster-buildkit-rootless", "remote-only").context("cluster-buildkit-rootless mode", () => { it("deploys in rootless mode", async () => { try { - await api.apps.deleteNamespacedDeployment(buildkitDeploymentName, namespace) + await api.apps.deleteNamespacedDeployment({ name: buildkitDeploymentName, namespace }) } catch {} provider.config.clusterBuildkit = { rootless: true, cache: defaultConfig } @@ -230,9 +230,9 @@ describe.skip("ensureBuildkit", () => { namespace, }) - const deployment = await api.apps.readNamespacedDeployment(buildkitDeploymentName, namespace) + const deployment = await api.apps.readNamespacedDeployment({ name: buildkitDeploymentName, namespace }) - expect(deployment.spec.template.spec?.containers[0].securityContext?.runAsUser).to.equal(1000) + expect(deployment.spec?.template.spec?.containers[0].securityContext?.runAsUser).to.equal(1000) }) it("deploys again if switching from normal to rootless mode", async () => { diff --git a/core/test/integ/src/plugins/kubernetes/container/container.ts b/core/test/integ/src/plugins/kubernetes/container/container.ts index 120eb678d8..83bb8b2f23 100644 --- a/core/test/integ/src/plugins/kubernetes/container/container.ts +++ b/core/test/integ/src/plugins/kubernetes/container/container.ts @@ -6,26 +6,28 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { getDataDir, makeTestGarden, expectError, TestGarden } from "../../../../../helpers" -import { TestTask } from "../../../../../../src/tasks/test" -import { emptyDir, pathExists } from "fs-extra" +import type { TestGarden } from "../../../../../helpers.js" +import { getDataDir, makeTestGarden, expectError } from "../../../../../helpers.js" +import { TestTask } from "../../../../../../src/tasks/test.js" +import fsExtra from "fs-extra" +const { emptyDir, pathExists } = fsExtra import { expect } from "chai" import { dirname, join } from "path" -import { Garden } from "../../../../../../src/garden" -import { ConfigGraph } from "../../../../../../src/graph/config-graph" -import { deline } from "../../../../../../src/util/string" -import { KubeApi } from "../../../../../../src/plugins/kubernetes/api" -import { KubernetesProvider } from "../../../../../../src/plugins/kubernetes/config" -import { V1Secret } from "@kubernetes/client-node" -import { clusterInit } from "../../../../../../src/plugins/kubernetes/commands/cluster-init" -import { ContainerTestAction } from "../../../../../../src/plugins/container/config" -import { createActionLog } from "../../../../../../src/logger/log-entry" -import { TestGardenOpts } from "../../../../../../src/util/testing" -import { waitForOutputFlush } from "../../../../../../src/process" -import { getGoogleADCImagePullSecret } from "../../../../helpers" -import { KubernetesResource } from "../../../../../../src/plugins/kubernetes/types" +import type { Garden } from "../../../../../../src/garden.js" +import type { ConfigGraph } from "../../../../../../src/graph/config-graph.js" +import { deline } from "../../../../../../src/util/string.js" +import { KubeApi } from "../../../../../../src/plugins/kubernetes/api.js" +import type { KubernetesProvider } from "../../../../../../src/plugins/kubernetes/config.js" +import type { V1Secret } from "@kubernetes/client-node" +import { clusterInit } from "../../../../../../src/plugins/kubernetes/commands/cluster-init.js" +import type { ContainerTestAction } from "../../../../../../src/plugins/container/config.js" +import { createActionLog } from "../../../../../../src/logger/log-entry.js" +import type { TestGardenOpts } from "../../../../../../src/util/testing.js" +import { waitForOutputFlush } from "../../../../../../src/process.js" +import { getGoogleADCImagePullSecret } from "../../../../helpers.js" +import type { KubernetesResource } from "../../../../../../src/plugins/kubernetes/types.js" import { mkdir, writeFile } from "fs/promises" -import { isErrnoException } from "../../../../../../src/exceptions" +import { isErrnoException } from "../../../../../../src/exceptions.js" const root = getDataDir("test-projects", "container") const defaultEnvironment = process.env.GARDEN_INTEG_TEST_MODE === "remote" ? "kaniko" : "local" diff --git a/core/test/integ/src/plugins/kubernetes/container/deployment.ts b/core/test/integ/src/plugins/kubernetes/container/deployment.ts index 7aad2c4387..a6340c06b4 100644 --- a/core/test/integ/src/plugins/kubernetes/container/deployment.ts +++ b/core/test/integ/src/plugins/kubernetes/container/deployment.ts @@ -7,53 +7,54 @@ */ import { expect } from "chai" -import { ConfigGraph } from "../../../../../../src/graph/config-graph" -import { KubeApi, KubernetesError } from "../../../../../../src/plugins/kubernetes/api" +import type { ConfigGraph } from "../../../../../../src/graph/config-graph.js" +import { KubeApi, KubernetesError } from "../../../../../../src/plugins/kubernetes/api.js" import { createContainerManifests, createWorkloadManifest, getDeploymentLabels, handleChangedSelector, -} from "../../../../../../src/plugins/kubernetes/container/deployment" -import { KubernetesPluginContext, KubernetesProvider } from "../../../../../../src/plugins/kubernetes/config" -import { V1ConfigMap, V1Secret } from "@kubernetes/client-node" -import { KubernetesResource, KubernetesWorkload } from "../../../../../../src/plugins/kubernetes/types" +} from "../../../../../../src/plugins/kubernetes/container/deployment.js" +import type { KubernetesPluginContext, KubernetesProvider } from "../../../../../../src/plugins/kubernetes/config.js" +import type { V1ConfigMap, V1Secret } from "@kubernetes/client-node" +import type { KubernetesResource, KubernetesWorkload } from "../../../../../../src/plugins/kubernetes/types.js" import cloneDeep from "fast-copy" -import { keyBy } from "lodash" -import { getContainerTestGarden } from "./container" -import { DeployTask } from "../../../../../../src/tasks/deploy" -import { TestGarden, expectError, findNamespaceStatusEvent, grouped } from "../../../../../helpers" -import { kilobytesToString, millicpuToString } from "../../../../../../src/plugins/kubernetes/util" -import { getDeployedImageId, getResourceRequirements } from "../../../../../../src/plugins/kubernetes/container/util" -import { isConfiguredForSyncMode } from "../../../../../../src/plugins/kubernetes/status/status" -import { +import { keyBy } from "lodash-es" +import { getContainerTestGarden } from "./container.js" +import { DeployTask } from "../../../../../../src/tasks/deploy.js" +import type { TestGarden } from "../../../../../helpers.js" +import { expectError, findNamespaceStatusEvent, grouped } from "../../../../../helpers.js" +import { kilobytesToString, millicpuToString } from "../../../../../../src/plugins/kubernetes/util.js" +import { getDeployedImageId, getResourceRequirements } from "../../../../../../src/plugins/kubernetes/container/util.js" +import { isConfiguredForSyncMode } from "../../../../../../src/plugins/kubernetes/status/status.js" +import type { ContainerDeployAction, ContainerDeployActionConfig, ContainerDeployOutputs, -} from "../../../../../../src/plugins/container/moduleConfig" -import { apply } from "../../../../../../src/plugins/kubernetes/kubectl" -import { getAppNamespace } from "../../../../../../src/plugins/kubernetes/namespace" -import { gardenAnnotationKey } from "../../../../../../src/util/string" +} from "../../../../../../src/plugins/container/moduleConfig.js" +import { apply } from "../../../../../../src/plugins/kubernetes/kubectl.js" +import { getAppNamespace } from "../../../../../../src/plugins/kubernetes/namespace.js" +import { gardenAnnotationKey } from "../../../../../../src/util/string.js" import { k8sReverseProxyImageName, k8sSyncUtilImageName, PROXY_CONTAINER_SSH_TUNNEL_PORT, PROXY_CONTAINER_SSH_TUNNEL_PORT_NAME, PROXY_CONTAINER_USER_NAME, -} from "../../../../../../src/plugins/kubernetes/constants" +} from "../../../../../../src/plugins/kubernetes/constants.js" import { LocalModeEnv, LocalModeProcessRegistry, ProxySshKeystore, -} from "../../../../../../src/plugins/kubernetes/local-mode" +} from "../../../../../../src/plugins/kubernetes/local-mode.js" import stripAnsi from "strip-ansi" -import { getDeployStatuses } from "../../../../../../src/tasks/helpers" -import { ResolvedDeployAction } from "../../../../../../src/actions/deploy" -import { ActionRouter } from "../../../../../../src/router/router" -import { ActionMode } from "../../../../../../src/actions/types" -import { createActionLog } from "../../../../../../src/logger/log-entry" -import { K8_POD_DEFAULT_CONTAINER_ANNOTATION_KEY } from "../../../../../../src/plugins/kubernetes/run" -import { k8sGetContainerDeployStatus } from "../../../../../../src/plugins/kubernetes/container/status" +import { getDeployStatuses } from "../../../../../../src/tasks/helpers.js" +import type { ResolvedDeployAction } from "../../../../../../src/actions/deploy.js" +import type { ActionRouter } from "../../../../../../src/router/router.js" +import type { ActionMode } from "../../../../../../src/actions/types.js" +import { createActionLog } from "../../../../../../src/logger/log-entry.js" +import { K8_POD_DEFAULT_CONTAINER_ANNOTATION_KEY } from "../../../../../../src/plugins/kubernetes/run.js" +import { k8sGetContainerDeployStatus } from "../../../../../../src/plugins/kubernetes/container/status.js" describe("kubernetes container deployment handlers", () => { let garden: TestGarden @@ -153,7 +154,7 @@ describe("kubernetes container deployment handlers", () => { api, action, log: createActionLog({ log: garden.log, actionName: action.name, actionKind: action.kind }), - imageId: getDeployedImageId(action, provider), + imageId: getDeployedImageId(action), }) expectSshContainerPort(workload) @@ -167,7 +168,7 @@ describe("kubernetes container deployment handlers", () => { api, action, log: createActionLog({ log: garden.log, actionName: action.name, actionKind: action.kind }), - imageId: getDeployedImageId(action, provider), + imageId: getDeployedImageId(action), }) expectEmptyContainerArgs(workload) @@ -181,7 +182,7 @@ describe("kubernetes container deployment handlers", () => { api, action, log: createActionLog({ log: garden.log, actionName: action.name, actionKind: action.kind }), - imageId: getDeployedImageId(action, provider), + imageId: getDeployedImageId(action), }) expectContainerEnvVars(workload) @@ -195,7 +196,7 @@ describe("kubernetes container deployment handlers", () => { api, action, log: createActionLog({ log: garden.log, actionName: action.name, actionKind: action.kind }), - imageId: getDeployedImageId(action, provider), + imageId: getDeployedImageId(action), }) expectNoProbes(workload) @@ -211,7 +212,7 @@ describe("kubernetes container deployment handlers", () => { api, action, log: createActionLog({ log: garden.log, actionName: action.name, actionKind: action.kind }), - imageId: getDeployedImageId(action, provider), + imageId: getDeployedImageId(action), }) expectSshContainerPort(workload) @@ -225,7 +226,7 @@ describe("kubernetes container deployment handlers", () => { api, action, log: createActionLog({ log: garden.log, actionName: action.name, actionKind: action.kind }), - imageId: getDeployedImageId(action, provider), + imageId: getDeployedImageId(action), }) expectProxyContainerImage(workload) @@ -240,7 +241,7 @@ describe("kubernetes container deployment handlers", () => { api, action, log: createActionLog({ log: garden.log, actionName: action.name, actionKind: action.kind }), - imageId: getDeployedImageId(action, provider), + imageId: getDeployedImageId(action), }) expectContainerEnvVars(workload) @@ -254,7 +255,7 @@ describe("kubernetes container deployment handlers", () => { api, action, log: createActionLog({ log: garden.log, actionName: action.name, actionKind: action.kind }), - imageId: getDeployedImageId(action, provider), + imageId: getDeployedImageId(action), }) expectNoProbes(workload) @@ -277,7 +278,7 @@ describe("kubernetes container deployment handlers", () => { const action = await resolveDeployAction("simple-service") const namespace = provider.config.namespace!.name! - const imageId = getDeployedImageId(action, provider) + const imageId = getDeployedImageId(action) const resource = await createWorkloadManifest({ ctx, @@ -359,7 +360,7 @@ describe("kubernetes container deployment handlers", () => { api, provider, action, - imageId: getDeployedImageId(action, provider), + imageId: getDeployedImageId(action), namespace, log: createActionLog({ log: garden.log, actionName: action.name, actionKind: action.kind }), production: false, @@ -384,7 +385,7 @@ describe("kubernetes container deployment handlers", () => { api, provider, action, - imageId: getDeployedImageId(action, provider), + imageId: getDeployedImageId(action), namespace, log: createActionLog({ log: garden.log, actionName: action.name, actionKind: action.kind }), production: false, @@ -408,7 +409,7 @@ describe("kubernetes container deployment handlers", () => { api, provider, action, - imageId: getDeployedImageId(action, provider), + imageId: getDeployedImageId(action), namespace, log: createActionLog({ log: garden.log, actionName: action.name, actionKind: action.kind }), production: false, @@ -433,7 +434,7 @@ describe("kubernetes container deployment handlers", () => { api, provider, action, - imageId: getDeployedImageId(action, provider), + imageId: getDeployedImageId(action), namespace, log: createActionLog({ log: garden.log, actionName: action.name, actionKind: action.kind }), production: false, @@ -476,7 +477,7 @@ describe("kubernetes container deployment handlers", () => { api, provider, action, - imageId: getDeployedImageId(action, provider), + imageId: getDeployedImageId(action), namespace, log: createActionLog({ log: garden.log, actionName: action.name, actionKind: action.kind }), production: false, @@ -522,13 +523,13 @@ describe("kubernetes container deployment handlers", () => { api, provider: _provider, action, - imageId: getDeployedImageId(action, provider), + imageId: getDeployedImageId(action), namespace, log: createActionLog({ log: garden.log, actionName: action.name, actionKind: action.kind }), production: false, }) - const copiedSecret = await api.core.readNamespacedSecret(secretName, namespace) + const copiedSecret = await api.core.readNamespacedSecret({ name: secretName, namespace }) expect(copiedSecret).to.exist expect(resource.spec.template?.spec?.imagePullSecrets).to.eql([{ name: secretName }]) }) @@ -560,13 +561,13 @@ describe("kubernetes container deployment handlers", () => { api, provider: _provider, action, - imageId: getDeployedImageId(action, provider), + imageId: getDeployedImageId(action), namespace, log: createActionLog({ log: garden.log, actionName: action.name, actionKind: action.kind }), production: false, }) - const copiedSecret = await api.core.readNamespacedSecret(secretName, namespace) + const copiedSecret = await api.core.readNamespacedSecret({ name: secretName, namespace }) expect(copiedSecret).to.exist expect(resource.spec.template?.spec?.imagePullSecrets).to.eql([{ name: secretName }]) }) @@ -580,7 +581,7 @@ describe("kubernetes container deployment handlers", () => { api, provider, action, - imageId: getDeployedImageId(action, provider), + imageId: getDeployedImageId(action), namespace, log: createActionLog({ log: garden.log, actionName: action.name, actionKind: action.kind }), production: false, @@ -601,7 +602,7 @@ describe("kubernetes container deployment handlers", () => { api, provider, action, - imageId: getDeployedImageId(action, provider), + imageId: getDeployedImageId(action), namespace, log: createActionLog({ log: garden.log, actionName: action.name, actionKind: action.kind }), production: false, @@ -633,7 +634,7 @@ describe("kubernetes container deployment handlers", () => { api, provider, action, - imageId: getDeployedImageId(action, provider), + imageId: getDeployedImageId(action), namespace, log: createActionLog({ log: garden.log, actionName: action.name, actionKind: action.kind }), production: false, @@ -710,21 +711,24 @@ describe("kubernetes container deployment handlers", () => { await apply({ log, ctx, api, provider, manifests: [configMapToPrune], namespace }) try { - await api.core.deleteNamespacedConfigMap(mapToNotPruneKey, namespace) + await api.core.deleteNamespacedConfigMap({ name: mapToNotPruneKey, namespace }) } catch (_e) {} // Here, we create via the k8s API (not `kubetl apply`), so that unlike `configMapToPrune`, it won't acquire // the "last applied" annotation. This means that it should *not* be pruned when we deploy the service, even // though it has the service's label. - await api.core.createNamespacedConfigMap(namespace, { - apiVersion: "v1", - kind: "ConfigMap", - metadata: { - name: mapToNotPruneKey, - annotations: { ...labels }, - labels: { ...labels }, + await api.core.createNamespacedConfigMap({ + namespace, + body: { + apiVersion: "v1", + kind: "ConfigMap", + metadata: { + name: mapToNotPruneKey, + annotations: { ...labels }, + labels: { ...labels }, + }, + data: {}, }, - data: {}, }) const deployTask = new DeployTask({ @@ -739,11 +743,11 @@ describe("kubernetes container deployment handlers", () => { await garden.processTasks({ tasks: [deployTask], log: garden.log, throwOnError: true }) // We expect this `ConfigMap` to still exist. - await api.core.readNamespacedConfigMap(mapToNotPruneKey, namespace) + await api.core.readNamespacedConfigMap({ name: mapToNotPruneKey, namespace }) // ...and we expect this `ConfigMap` to have been deleted. await expectError( - () => api.core.readNamespacedConfigMap(mapToPruneKey, namespace), + () => api.core.readNamespacedConfigMap({ name: mapToPruneKey, namespace }), (err) => { expect(stripAnsi(err.message)).to.match( /Error while performing Kubernetes API operation readNamespacedConfigMap/ @@ -753,7 +757,7 @@ describe("kubernetes container deployment handlers", () => { } ) - await api.core.deleteNamespacedConfigMap(mapToNotPruneKey, namespace) + await api.core.deleteNamespacedConfigMap({ name: mapToNotPruneKey, namespace }) }) it("should ignore empty env vars in status check comparison", async () => { @@ -840,7 +844,6 @@ describe("kubernetes container deployment handlers", () => { const status = await processDeployAction(action) const resources = keyBy(status.detail?.detail["remoteResources"], "kind") - const buildVersionString = action.getBuildAction()?.versionString() // Note: the image version should match the image in the module not the // deploy action version @@ -970,7 +973,7 @@ describe("kubernetes container deployment handlers", () => { api, provider, action, - imageId: getDeployedImageId(action, provider), + imageId: getDeployedImageId(action), namespace, log: createActionLog({ log: garden.log, actionName: action.name, actionKind: action.kind }), production: false, @@ -1001,7 +1004,7 @@ describe("kubernetes container deployment handlers", () => { action: ResolvedDeployAction ) => { try { - await api.apps.deleteNamespacedDeployment(action.name, provider.config.namespace!.name) + await api.apps.deleteNamespacedDeployment({ name: action.name, namespace: provider.config.namespace!.name }) } catch (err) {} } @@ -1009,7 +1012,7 @@ describe("kubernetes container deployment handlers", () => { action: ResolvedDeployAction ) => { try { - await api.apps.readNamespacedDeployment(action.name, provider.config.namespace!.name) + await api.apps.readNamespacedDeployment({ name: action.name, namespace: provider.config.namespace!.name }) return true } catch (err) { if (!(err instanceof KubernetesError)) { diff --git a/core/test/integ/src/plugins/kubernetes/container/ingress.ts b/core/test/integ/src/plugins/kubernetes/container/ingress.ts index e4a849d282..1b866291c2 100644 --- a/core/test/integ/src/plugins/kubernetes/container/ingress.ts +++ b/core/test/integ/src/plugins/kubernetes/container/ingress.ts @@ -7,26 +7,27 @@ */ import { expect } from "chai" -import td from "testdouble" +import * as td from "testdouble" -import { KubeApi, KubernetesError } from "../../../../../../src/plugins/kubernetes/api" -import { KubernetesProvider, KubernetesConfig, defaultResources } from "../../../../../../src/plugins/kubernetes/config" -import { expectError } from "../../../../../helpers" -import { Garden } from "../../../../../../src/garden" +import { KubeApi, KubernetesError } from "../../../../../../src/plugins/kubernetes/api.js" +import type { KubernetesProvider, KubernetesConfig } from "../../../../../../src/plugins/kubernetes/config.js" +import { defaultResources } from "../../../../../../src/plugins/kubernetes/config.js" +import { expectError } from "../../../../../helpers.js" +import type { Garden } from "../../../../../../src/garden.js" import { createIngressResources, supportedIngressApiVersions, -} from "../../../../../../src/plugins/kubernetes/container/ingress" -import { ContainerDeployAction } from "../../../../../../src/plugins/container/moduleConfig" -import { ServicePortProtocol, ContainerIngressSpec } from "../../../../../../src/plugins/container/moduleConfig" -import { defaultSystemNamespace } from "../../../../../../src/plugins/kubernetes/system" -import { getContainerTestGarden } from "./container" -import { PartialBy } from "../../../../../../src/util/util" -import { Resolved } from "../../../../../../src/actions/types" -import { actionFromConfig } from "../../../../../../src/graph/actions" -import { DeployAction } from "../../../../../../src/actions/deploy" -import { DEFAULT_DEPLOY_TIMEOUT_SEC } from "../../../../../../src/constants" -import { uuidv4 } from "../../../../../../src/util/random" +} from "../../../../../../src/plugins/kubernetes/container/ingress.js" +import type { ContainerDeployAction } from "../../../../../../src/plugins/container/moduleConfig.js" +import type { ServicePortProtocol, ContainerIngressSpec } from "../../../../../../src/plugins/container/moduleConfig.js" +import { defaultSystemNamespace } from "../../../../../../src/plugins/kubernetes/system.js" +import { getContainerTestGarden } from "./container.js" +import type { PartialBy } from "../../../../../../src/util/util.js" +import type { Resolved } from "../../../../../../src/actions/types.js" +import { actionFromConfig } from "../../../../../../src/graph/actions.js" +import type { DeployAction } from "../../../../../../src/actions/deploy.js" +import { DEFAULT_DEPLOY_TIMEOUT_SEC } from "../../../../../../src/constants.js" +import { uuidv4 } from "../../../../../../src/util/random.js" const namespace = "my-namespace" const ports = [ @@ -401,9 +402,15 @@ describe("createIngressResources", () => { ) const core = td.replace(api, "core") - td.when(core.readNamespacedSecret("somesecret", "somenamespace")).thenResolve(myDomainCertSecret) - td.when(core.readNamespacedSecret("othersecret", "somenamespace")).thenResolve(otherDomainCertSecret) - td.when(core.readNamespacedSecret("wildcardsecret", "somenamespace")).thenResolve(wildcardDomainCertSecret) + td.when(core.readNamespacedSecret({ name: "somesecret", namespace: "somenamespace" })).thenResolve( + myDomainCertSecret + ) + td.when(core.readNamespacedSecret({ name: "othersecret", namespace: "somenamespace" })).thenResolve( + otherDomainCertSecret + ) + td.when(core.readNamespacedSecret({ name: "wildcardsecret", namespace: "somenamespace" })).thenResolve( + wildcardDomainCertSecret + ) td.replace(api, "upsert") @@ -575,7 +582,7 @@ describe("createIngressResources", () => { } const err = new KubernetesError({ message: "nope", responseStatusCode: 404 }) - td.when(api.core.readNamespacedSecret("foo", "default")).thenReject(err) + td.when(api.core.readNamespacedSecret({ name: "foo", namespace: "default" })).thenReject(err) await expectError( async () => await createIngressResources(api, provider, namespace, action, garden.log), @@ -614,8 +621,7 @@ describe("createIngressResources", () => { const api = await getKubeApi(basicProvider) - const err = new KubernetesError({ message: "nope", responseStatusCode: 404 }) - td.when(api.core.readNamespacedSecret("foo", "default")).thenResolve({ data: {} }) + td.when(api.core.readNamespacedSecret({ name: "foo", namespace: "default" })).thenResolve({ data: {} }) await expectError( async () => await createIngressResources(api, provider, namespace, action, garden.log), @@ -654,8 +660,7 @@ describe("createIngressResources", () => { const api = await getKubeApi(basicProvider) - const err = new KubernetesError({ message: "nope", responseStatusCode: 404 }) - td.when(api.core.readNamespacedSecret("foo", "default")).thenResolve({ + td.when(api.core.readNamespacedSecret({ name: "foo", namespace: "default" })).thenResolve({ data: { "tls.crt": "blablablablablalbalblabl", }, @@ -718,7 +723,7 @@ describe("createIngressResources", () => { // tools, } - td.when(api.core.readNamespacedSecret("foo", "default")).thenResolve(myDomainCertSecret) + td.when(api.core.readNamespacedSecret({ name: "foo", namespace: "default" })).thenResolve(myDomainCertSecret) const ingresses = await createIngressResources(api, provider, namespace, action, garden.log) td.verify(api.upsert({ kind: "Secret", namespace, obj: myDomainCertSecret, log: garden.log })) diff --git a/core/test/integ/src/plugins/kubernetes/container/logs.ts b/core/test/integ/src/plugins/kubernetes/container/logs.ts index f4b705f45a..6eca878069 100644 --- a/core/test/integ/src/plugins/kubernetes/container/logs.ts +++ b/core/test/integ/src/plugins/kubernetes/container/logs.ts @@ -7,21 +7,22 @@ */ import { expect } from "chai" -import { getDataDir, makeTestGarden, TestGarden } from "../../../../../helpers" -import { ConfigGraph } from "../../../../../../src/graph/config-graph" -import { DeployTask } from "../../../../../../src/tasks/deploy" -import { k8sGetContainerDeployLogs } from "../../../../../../src/plugins/kubernetes/container/logs" +import type { TestGarden } from "../../../../../helpers.js" +import { getDataDir, makeTestGarden } from "../../../../../helpers.js" +import type { ConfigGraph } from "../../../../../../src/graph/config-graph.js" +import { DeployTask } from "../../../../../../src/tasks/deploy.js" +import { k8sGetContainerDeployLogs } from "../../../../../../src/plugins/kubernetes/container/logs.js" import { Stream } from "ts-stream" -import { DeployLogEntry } from "../../../../../../src/types/service" -import { KubernetesPluginContext, KubernetesProvider } from "../../../../../../src/plugins/kubernetes/config" -import { K8sLogFollower, makeDeployLogEntry } from "../../../../../../src/plugins/kubernetes/logs" -import { KubeApi } from "../../../../../../src/plugins/kubernetes/api" -import { createWorkloadManifest } from "../../../../../../src/plugins/kubernetes/container/deployment" -import { sleep } from "../../../../../../src/util/util" -import { DeleteDeployTask } from "../../../../../../src/tasks/delete-deploy" -import { getDeployedImageId } from "../../../../../../src/plugins/kubernetes/container/util" -import { ContainerDeployAction } from "../../../../../../src/plugins/container/config" -import { createActionLog } from "../../../../../../src/logger/log-entry" +import type { DeployLogEntry } from "../../../../../../src/types/service.js" +import type { KubernetesPluginContext, KubernetesProvider } from "../../../../../../src/plugins/kubernetes/config.js" +import { K8sLogFollower, makeDeployLogEntry } from "../../../../../../src/plugins/kubernetes/logs.js" +import { KubeApi } from "../../../../../../src/plugins/kubernetes/api.js" +import { createWorkloadManifest } from "../../../../../../src/plugins/kubernetes/container/deployment.js" +import { sleep } from "../../../../../../src/util/util.js" +import { DeleteDeployTask } from "../../../../../../src/tasks/delete-deploy.js" +import { getDeployedImageId } from "../../../../../../src/plugins/kubernetes/container/util.js" +import type { ContainerDeployAction } from "../../../../../../src/plugins/container/config.js" +import { createActionLog } from "../../../../../../src/logger/log-entry.js" describe("kubernetes", () => { let garden: TestGarden @@ -127,7 +128,7 @@ describe("kubernetes", () => { provider, action: resolvedDeployAction, namespace, - imageId: getDeployedImageId(resolvedDeployAction, provider), + imageId: getDeployedImageId(resolvedDeployAction), production: ctx.production, log: actionLog, @@ -202,7 +203,7 @@ describe("kubernetes", () => { provider, action: resolvedDeployAction, namespace, - imageId: getDeployedImageId(resolvedDeployAction, provider), + imageId: getDeployedImageId(resolvedDeployAction), production: ctx.production, log: actionLog, }), diff --git a/core/test/integ/src/plugins/kubernetes/container/run.ts b/core/test/integ/src/plugins/kubernetes/container/run.ts index 2a1302be53..a9ec322ac1 100644 --- a/core/test/integ/src/plugins/kubernetes/container/run.ts +++ b/core/test/integ/src/plugins/kubernetes/container/run.ts @@ -8,17 +8,19 @@ import { expect } from "chai" -import { expectError, TestGarden } from "../../../../../helpers" -import { ConfigGraph } from "../../../../../../src/graph/config-graph" -import { RunTask } from "../../../../../../src/tasks/run" -import { emptyDir, pathExists } from "fs-extra" +import type { TestGarden } from "../../../../../helpers.js" +import { expectError } from "../../../../../helpers.js" +import type { ConfigGraph } from "../../../../../../src/graph/config-graph.js" +import { RunTask } from "../../../../../../src/tasks/run.js" +import fsExtra from "fs-extra" +const { emptyDir, pathExists } = fsExtra import { join } from "path" -import { getContainerTestGarden } from "./container" -import { clearRunResult } from "../../../../../../src/plugins/kubernetes/run-results" -import { KubernetesProvider } from "../../../../../../src/plugins/kubernetes/config" -import { ContainerRunAction } from "../../../../../../src/plugins/container/config" -import { createActionLog } from "../../../../../../src/logger/log-entry" -import { waitForOutputFlush } from "../../../../../../src/process" +import { getContainerTestGarden } from "./container.js" +import { clearRunResult } from "../../../../../../src/plugins/kubernetes/run-results.js" +import type { KubernetesProvider } from "../../../../../../src/plugins/kubernetes/config.js" +import type { ContainerRunAction } from "../../../../../../src/plugins/container/config.js" +import { createActionLog } from "../../../../../../src/logger/log-entry.js" +import { waitForOutputFlush } from "../../../../../../src/process.js" describe("runContainerTask", () => { let garden: TestGarden diff --git a/core/test/integ/src/plugins/kubernetes/helm/common.ts b/core/test/integ/src/plugins/kubernetes/helm/common.ts index 98cf58acf8..5c59471900 100644 --- a/core/test/integ/src/plugins/kubernetes/helm/common.ts +++ b/core/test/integ/src/plugins/kubernetes/helm/common.ts @@ -6,10 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { expectError, getDataDir, makeTestGarden, TestGarden } from "../../../../../helpers" +import type { TestGarden } from "../../../../../helpers.js" +import { expectError, getDataDir, makeTestGarden } from "../../../../../helpers.js" import { resolve } from "path" import { expect } from "chai" -import { first, uniq } from "lodash" +import { first, uniq } from "lodash-es" import { getBaseModule, getChartPath, @@ -18,19 +19,20 @@ import { getValueArgs, prepareTemplates, renderTemplates, -} from "../../../../../../src/plugins/kubernetes/helm/common" -import { Log } from "../../../../../../src/logger/log-entry" -import { BuildTask } from "../../../../../../src/tasks/build" -import { dedent, deline } from "../../../../../../src/util/string" -import { ConfigGraph } from "../../../../../../src/graph/config-graph" -import { KubernetesPluginContext } from "../../../../../../src/plugins/kubernetes/config" +} from "../../../../../../src/plugins/kubernetes/helm/common.js" +import type { Log } from "../../../../../../src/logger/log-entry.js" +import { BuildTask } from "../../../../../../src/tasks/build.js" +import { dedent, deline } from "../../../../../../src/util/string.js" +import type { ConfigGraph } from "../../../../../../src/graph/config-graph.js" +import type { KubernetesPluginContext } from "../../../../../../src/plugins/kubernetes/config.js" import { loadAll } from "js-yaml" -import { Garden } from "../../../../../../src" -import { KubeApi } from "../../../../../../src/plugins/kubernetes/api" -import { getIngressApiVersion } from "../../../../../../src/plugins/kubernetes/container/ingress" -import { HelmDeployAction } from "../../../../../../src/plugins/kubernetes/helm/config" +import type { Garden } from "../../../../../../src/index.js" +import { KubeApi } from "../../../../../../src/plugins/kubernetes/api.js" +import { getIngressApiVersion } from "../../../../../../src/plugins/kubernetes/container/ingress.js" +import type { HelmDeployAction } from "../../../../../../src/plugins/kubernetes/helm/config.js" import { loadAllYaml, loadYaml } from "@kubernetes/client-node" -import { readdir, readFile } from "fs-extra" +import fsExtra from "fs-extra" +const { readdir, readFile } = fsExtra let helmTestGarden: TestGarden diff --git a/core/test/integ/src/plugins/kubernetes/helm/config.ts b/core/test/integ/src/plugins/kubernetes/helm/config.ts index 5d3ed85e54..d8fc8d30a5 100644 --- a/core/test/integ/src/plugins/kubernetes/helm/config.ts +++ b/core/test/integ/src/plugins/kubernetes/helm/config.ts @@ -9,22 +9,23 @@ import { resolve } from "path" import { expect } from "chai" import cloneDeep from "fast-copy" -import { omit } from "lodash" +import { omit } from "lodash-es" -import { expectError, getDataDir, makeTestGarden, TestGarden, withDefaultGlobalOpts } from "../../../../../helpers" -import { PluginContext } from "../../../../../../src/plugin-context" -import { dedent } from "../../../../../../src/util/string" -import { ModuleConfig } from "../../../../../../src/config/module" +import type { TestGarden } from "../../../../../helpers.js" +import { expectError, getDataDir, makeTestGarden, withDefaultGlobalOpts } from "../../../../../helpers.js" +import type { PluginContext } from "../../../../../../src/plugin-context.js" +import { dedent } from "../../../../../../src/util/string.js" +import type { ModuleConfig } from "../../../../../../src/config/module.js" import { apply } from "json-merge-patch" -import { getHelmTestGarden } from "./common" -import { defaultHelmTimeout } from "../../../../../../src/plugins/kubernetes/helm/module-config" -import stripAnsi = require("strip-ansi") +import { getHelmTestGarden } from "./common.js" +import { defaultHelmTimeout } from "../../../../../../src/plugins/kubernetes/helm/module-config.js" +import stripAnsi from "strip-ansi" import { DEFAULT_BUILD_TIMEOUT_SEC, DEFAULT_DEPLOY_TIMEOUT_SEC, GardenApiVersion, -} from "../../../../../../src/constants" -import { ValidateCommand } from "../../../../../../src/commands/validate" +} from "../../../../../../src/constants.js" +import { ValidateCommand } from "../../../../../../src/commands/validate.js" describe("configureHelmModule", () => { let garden: TestGarden diff --git a/core/test/integ/src/plugins/kubernetes/helm/deployment.ts b/core/test/integ/src/plugins/kubernetes/helm/deployment.ts index c81055aae8..1702024a04 100644 --- a/core/test/integ/src/plugins/kubernetes/helm/deployment.ts +++ b/core/test/integ/src/plugins/kubernetes/helm/deployment.ts @@ -8,25 +8,26 @@ import { expect } from "chai" -import { getDataDir, makeTestGarden, TestGarden } from "../../../../../helpers" -import { helmDeploy } from "../../../../../../src/plugins/kubernetes/helm/deployment" -import { KubernetesPluginContext, KubernetesProvider } from "../../../../../../src/plugins/kubernetes/config" +import type { TestGarden } from "../../../../../helpers.js" +import { getDataDir, makeTestGarden } from "../../../../../helpers.js" +import { helmDeploy } from "../../../../../../src/plugins/kubernetes/helm/deployment.js" +import type { KubernetesPluginContext, KubernetesProvider } from "../../../../../../src/plugins/kubernetes/config.js" import { gardenCloudAECPauseAnnotation, getReleaseStatus, getRenderedResources, -} from "../../../../../../src/plugins/kubernetes/helm/status" -import { getReleaseName } from "../../../../../../src/plugins/kubernetes/helm/common" -import { KubeApi } from "../../../../../../src/plugins/kubernetes/api" -import { buildHelmModules, getHelmLocalModeTestGarden, getHelmTestGarden } from "./common" -import { ConfigGraph } from "../../../../../../src/graph/config-graph" -import { isWorkload } from "../../../../../../src/plugins/kubernetes/util" -import { getRootLogger } from "../../../../../../src/logger/logger" -import { LocalModeProcessRegistry, ProxySshKeystore } from "../../../../../../src/plugins/kubernetes/local-mode" -import { HelmDeployAction } from "../../../../../../src/plugins/kubernetes/helm/config" -import { createActionLog } from "../../../../../../src/logger/log-entry" -import { NamespaceStatus } from "../../../../../../src/types/namespace" -import { FakeCloudApi } from "../../../../../helpers/api" +} from "../../../../../../src/plugins/kubernetes/helm/status.js" +import { getReleaseName } from "../../../../../../src/plugins/kubernetes/helm/common.js" +import { KubeApi } from "../../../../../../src/plugins/kubernetes/api.js" +import { buildHelmModules, getHelmLocalModeTestGarden, getHelmTestGarden } from "./common.js" +import type { ConfigGraph } from "../../../../../../src/graph/config-graph.js" +import { isWorkload } from "../../../../../../src/plugins/kubernetes/util.js" +import { getRootLogger } from "../../../../../../src/logger/logger.js" +import { LocalModeProcessRegistry, ProxySshKeystore } from "../../../../../../src/plugins/kubernetes/local-mode.js" +import type { HelmDeployAction } from "../../../../../../src/plugins/kubernetes/helm/config.js" +import { createActionLog } from "../../../../../../src/logger/log-entry.js" +import type { NamespaceStatus } from "../../../../../../src/types/namespace.js" +import { FakeCloudApi } from "../../../../../helpers/api.js" describe("helmDeploy in local-mode", () => { let garden: TestGarden @@ -273,10 +274,10 @@ describe("helmDeploy", () => { const api = await KubeApi.factory(garden.log, ctx, provider) // Namespace should exist - await api.core.readNamespace(namespace) + await api.core.readNamespace({ name: namespace }) // Deployment should exist - await api.apps.readNamespacedDeployment("chart-with-namespace", namespace) + await api.apps.readNamespacedDeployment({ name: "chart-with-namespace", namespace }) }) it("should mark a chart that has been paused by Garden Cloud AEC as outdated", async () => { @@ -347,7 +348,11 @@ describe("helmDeploy", () => { [gardenCloudAECPauseAnnotation]: "paused", } - await api.apps.patchNamespacedDeployment(apiDeployment.metadata?.name, "helm-test-default", apiDeployment) + await api.apps.patchNamespacedDeployment({ + name: apiDeployment.metadata?.name, + namespace: "helm-test-default", + body: apiDeployment, + }) const releaseStatusAfterScaleDown = await getReleaseStatus({ ctx: ctxWithCloudApi, diff --git a/core/test/integ/src/plugins/kubernetes/helm/run.ts b/core/test/integ/src/plugins/kubernetes/helm/run.ts index e2042acbff..7c37ca5d33 100644 --- a/core/test/integ/src/plugins/kubernetes/helm/run.ts +++ b/core/test/integ/src/plugins/kubernetes/helm/run.ts @@ -8,14 +8,16 @@ import { expect } from "chai" -import { expectError, TestGarden } from "../../../../../helpers" -import { ConfigGraph } from "../../../../../../src/graph/config-graph" -import { getHelmTestGarden } from "./common" -import { RunTask } from "../../../../../../src/tasks/run" -import { emptyDir, pathExists } from "fs-extra" +import type { TestGarden } from "../../../../../helpers.js" +import { expectError } from "../../../../../helpers.js" +import type { ConfigGraph } from "../../../../../../src/graph/config-graph.js" +import { getHelmTestGarden } from "./common.js" +import { RunTask } from "../../../../../../src/tasks/run.js" +import fsExtra from "fs-extra" +const { emptyDir, pathExists } = fsExtra import { join } from "path" -import { clearRunResult } from "../../../../../../src/plugins/kubernetes/run-results" -import { createActionLog } from "../../../../../../src/logger/log-entry" +import { clearRunResult } from "../../../../../../src/plugins/kubernetes/run-results.js" +import { createActionLog } from "../../../../../../src/logger/log-entry.js" describe("Helm Pod Run", () => { let garden: TestGarden diff --git a/core/test/integ/src/plugins/kubernetes/helm/test.ts b/core/test/integ/src/plugins/kubernetes/helm/test.ts index bbb8929ede..9adaa09970 100644 --- a/core/test/integ/src/plugins/kubernetes/helm/test.ts +++ b/core/test/integ/src/plugins/kubernetes/helm/test.ts @@ -8,13 +8,15 @@ import { expect } from "chai" -import { expectError, TestGarden } from "../../../../../helpers" -import { ConfigGraph } from "../../../../../../src/graph/config-graph" -import { getHelmTestGarden } from "./common" -import { TestTask } from "../../../../../../src/tasks/test" -import { emptyDir, pathExists } from "fs-extra" +import type { TestGarden } from "../../../../../helpers.js" +import { expectError } from "../../../../../helpers.js" +import type { ConfigGraph } from "../../../../../../src/graph/config-graph.js" +import { getHelmTestGarden } from "./common.js" +import { TestTask } from "../../../../../../src/tasks/test.js" +import fsExtra from "fs-extra" +const { emptyDir, pathExists } = fsExtra import { join } from "path" -import { createActionLog } from "../../../../../../src/logger/log-entry" +import { createActionLog } from "../../../../../../src/logger/log-entry.js" describe("Helm Pod Test", () => { let garden: TestGarden diff --git a/core/test/integ/src/plugins/kubernetes/kubernetes-type/common.ts b/core/test/integ/src/plugins/kubernetes/kubernetes-type/common.ts index eecd956a5a..e40e52dd13 100644 --- a/core/test/integ/src/plugins/kubernetes/kubernetes-type/common.ts +++ b/core/test/integ/src/plugins/kubernetes/kubernetes-type/common.ts @@ -9,14 +9,15 @@ import { expect } from "chai" import cloneDeep from "fast-copy" -import { ConfigGraph } from "../../../../../../src/graph/config-graph" -import { PluginContext } from "../../../../../../src/plugin-context" -import { getManifests } from "../../../../../../src/plugins/kubernetes/kubernetes-type/common" -import { expectError, getDataDir, getExampleDir, makeTestGarden, TestGarden } from "../../../../../helpers" -import { KubernetesDeployAction } from "../../../../../../src/plugins/kubernetes/kubernetes-type/config" -import { Resolved } from "../../../../../../src/actions/types" -import { KubeApi } from "../../../../../../src/plugins/kubernetes/api" -import { KubernetesProvider } from "../../../../../../src/plugins/kubernetes/config" +import type { ConfigGraph } from "../../../../../../src/graph/config-graph.js" +import type { PluginContext } from "../../../../../../src/plugin-context.js" +import { getManifests } from "../../../../../../src/plugins/kubernetes/kubernetes-type/common.js" +import type { TestGarden } from "../../../../../helpers.js" +import { expectError, getDataDir, getExampleDir, makeTestGarden } from "../../../../../helpers.js" +import type { KubernetesDeployAction } from "../../../../../../src/plugins/kubernetes/kubernetes-type/config.js" +import type { Resolved } from "../../../../../../src/actions/types.js" +import { KubeApi } from "../../../../../../src/plugins/kubernetes/api.js" +import type { KubernetesProvider } from "../../../../../../src/plugins/kubernetes/config.js" import dedent from "dedent" import { dirname, join } from "path" diff --git a/core/test/integ/src/plugins/kubernetes/kubernetes-type/config.ts b/core/test/integ/src/plugins/kubernetes/kubernetes-type/config.ts index e079ef3e84..9a6b30be15 100644 --- a/core/test/integ/src/plugins/kubernetes/kubernetes-type/config.ts +++ b/core/test/integ/src/plugins/kubernetes/kubernetes-type/config.ts @@ -9,16 +9,17 @@ import { expect } from "chai" import cloneDeep from "fast-copy" -import { TestGarden, getDataDir, makeTestGarden } from "../../../../../helpers" -import { ModuleConfig } from "../../../../../../src/config/module" +import type { TestGarden } from "../../../../../helpers.js" +import { getDataDir, makeTestGarden } from "../../../../../helpers.js" +import type { ModuleConfig } from "../../../../../../src/config/module.js" import { apply } from "json-merge-patch" -import { getKubernetesTestGarden } from "./common" +import { getKubernetesTestGarden } from "./common.js" import { DEFAULT_BUILD_TIMEOUT_SEC, DEFAULT_DEPLOY_TIMEOUT_SEC, DEFAULT_RUN_TIMEOUT_SEC, DEFAULT_TEST_TIMEOUT_SEC, -} from "../../../../../../src/constants" +} from "../../../../../../src/constants.js" describe("configureKubernetesModule", () => { let garden: TestGarden diff --git a/core/test/integ/src/plugins/kubernetes/kubernetes-type/handlers.ts b/core/test/integ/src/plugins/kubernetes/kubernetes-type/handlers.ts index 5b60607c80..72aa5a36d9 100644 --- a/core/test/integ/src/plugins/kubernetes/kubernetes-type/handlers.ts +++ b/core/test/integ/src/plugins/kubernetes/kubernetes-type/handlers.ts @@ -12,38 +12,39 @@ import cloneDeep from "fast-copy" import tmp from "tmp-promise" -import { TestGarden } from "../../../../../helpers" -import { getKubernetesTestGarden } from "./common" -import { DeployTask } from "../../../../../../src/tasks/deploy" +import type { TestGarden } from "../../../../../helpers.js" +import { getKubernetesTestGarden } from "./common.js" +import { DeployTask } from "../../../../../../src/tasks/deploy.js" import { getManifests, getMetadataManifest, parseMetadataResource, readManifests, -} from "../../../../../../src/plugins/kubernetes/kubernetes-type/common" -import { KubeApi } from "../../../../../../src/plugins/kubernetes/api" -import { ActionLog, createActionLog, Log } from "../../../../../../src/logger/log-entry" -import { KubernetesPluginContext, KubernetesProvider } from "../../../../../../src/plugins/kubernetes/config" -import { getActionNamespace } from "../../../../../../src/plugins/kubernetes/namespace" +} from "../../../../../../src/plugins/kubernetes/kubernetes-type/common.js" +import { KubeApi } from "../../../../../../src/plugins/kubernetes/api.js" +import type { ActionLog, Log } from "../../../../../../src/logger/log-entry.js" +import { createActionLog } from "../../../../../../src/logger/log-entry.js" +import type { KubernetesPluginContext, KubernetesProvider } from "../../../../../../src/plugins/kubernetes/config.js" +import { getActionNamespace } from "../../../../../../src/plugins/kubernetes/namespace.js" import { getDeployedResource, k8sManifestHashAnnotationKey, -} from "../../../../../../src/plugins/kubernetes/status/status" -import { ModuleConfig } from "../../../../../../src/config/module" -import { BaseResource, KubernetesResource } from "../../../../../../src/plugins/kubernetes/types" -import { DeleteDeployTask } from "../../../../../../src/tasks/delete-deploy" +} from "../../../../../../src/plugins/kubernetes/status/status.js" +import type { ModuleConfig } from "../../../../../../src/config/module.js" +import type { BaseResource, KubernetesResource } from "../../../../../../src/plugins/kubernetes/types.js" +import { DeleteDeployTask } from "../../../../../../src/tasks/delete-deploy.js" import { deleteKubernetesDeploy, getKubernetesDeployStatus, kubernetesDeploy, -} from "../../../../../../src/plugins/kubernetes/kubernetes-type/handlers" -import { buildHelmModules } from "../helm/common" -import { gardenAnnotationKey } from "../../../../../../src/util/string" -import { LocalModeProcessRegistry, ProxySshKeystore } from "../../../../../../src/plugins/kubernetes/local-mode" -import { KubernetesDeployAction } from "../../../../../../src/plugins/kubernetes/kubernetes-type/config" -import { DEFAULT_BUILD_TIMEOUT_SEC, GardenApiVersion } from "../../../../../../src/constants" -import { ActionModeMap } from "../../../../../../src/actions/types" -import { NamespaceStatus } from "../../../../../../src/types/namespace" +} from "../../../../../../src/plugins/kubernetes/kubernetes-type/handlers.js" +import { buildHelmModules } from "../helm/common.js" +import { gardenAnnotationKey } from "../../../../../../src/util/string.js" +import { LocalModeProcessRegistry, ProxySshKeystore } from "../../../../../../src/plugins/kubernetes/local-mode.js" +import type { KubernetesDeployAction } from "../../../../../../src/plugins/kubernetes/kubernetes-type/config.js" +import { DEFAULT_BUILD_TIMEOUT_SEC, GardenApiVersion } from "../../../../../../src/constants.js" +import type { ActionModeMap } from "../../../../../../src/actions/types.js" +import type { NamespaceStatus } from "../../../../../../src/types/namespace.js" describe("kubernetes-type handlers", () => { let tmpDir: tmp.DirectoryResult @@ -339,7 +340,7 @@ describe("kubernetes-type handlers", () => { describe("kubernetesDeploy", () => { it("gets the correct manifests when `build` is set", async () => { - const { resolvedAction, deployParams } = await prepareActionDeployParams("with-build-action", {}) + const { deployParams } = await prepareActionDeployParams("with-build-action", {}) const status = await kubernetesDeploy(deployParams) expect(status.state).to.eql("ready") @@ -493,7 +494,7 @@ describe("kubernetes-type handlers", () => { describe("deleteKubernetesDeploy", () => { it("should only delete namespace resources having the current name in the manifests", async () => { - const { manifest: ns1Manifest, resource: ns1Resource } = await deployInNamespace({ + const { manifest: ns1Manifest } = await deployInNamespace({ nsName: "kubernetes-type-ns-1", deployName: "namespace-resource", }) diff --git a/core/test/integ/src/plugins/kubernetes/kubernetes-type/kubernetes-exec-run.ts b/core/test/integ/src/plugins/kubernetes/kubernetes-type/kubernetes-exec-run.ts index bbe062e9a3..29efd3596d 100644 --- a/core/test/integ/src/plugins/kubernetes/kubernetes-type/kubernetes-exec-run.ts +++ b/core/test/integ/src/plugins/kubernetes/kubernetes-type/kubernetes-exec-run.ts @@ -8,11 +8,12 @@ import { expect } from "chai" -import { TestGarden, findNamespaceStatusEvent } from "../../../../../helpers" -import { ConfigGraph } from "../../../../../../src/graph/config-graph" -import { getKubernetesTestGarden } from "./common" -import { RunTask } from "../../../../../../src/tasks/run" -import { clearRunResult } from "../../../../../../src/plugins/kubernetes/run-results" +import type { TestGarden } from "../../../../../helpers.js" +import { findNamespaceStatusEvent } from "../../../../../helpers.js" +import type { ConfigGraph } from "../../../../../../src/graph/config-graph.js" +import { getKubernetesTestGarden } from "./common.js" +import { RunTask } from "../../../../../../src/tasks/run.js" +import { clearRunResult } from "../../../../../../src/plugins/kubernetes/run-results.js" describe("kubernetes-type exec Run", () => { let garden: TestGarden diff --git a/core/test/integ/src/plugins/kubernetes/kubernetes-type/kubernetes-exec-test.ts b/core/test/integ/src/plugins/kubernetes/kubernetes-type/kubernetes-exec-test.ts index 65dd9d8af8..252c9417f1 100644 --- a/core/test/integ/src/plugins/kubernetes/kubernetes-type/kubernetes-exec-test.ts +++ b/core/test/integ/src/plugins/kubernetes/kubernetes-type/kubernetes-exec-test.ts @@ -8,11 +8,12 @@ import { expect } from "chai" -import { TestGarden, findNamespaceStatusEvent } from "../../../../../helpers" -import { ConfigGraph } from "../../../../../../src/graph/config-graph" -import { getKubernetesTestGarden } from "./common" -import { clearRunResult } from "../../../../../../src/plugins/kubernetes/run-results" -import { TestTask } from "../../../../../../src/tasks/test" +import type { TestGarden } from "../../../../../helpers.js" +import { findNamespaceStatusEvent } from "../../../../../helpers.js" +import type { ConfigGraph } from "../../../../../../src/graph/config-graph.js" +import { getKubernetesTestGarden } from "./common.js" +import { clearRunResult } from "../../../../../../src/plugins/kubernetes/run-results.js" +import { TestTask } from "../../../../../../src/tasks/test.js" describe("kubernetes-type exec Test", () => { let garden: TestGarden diff --git a/core/test/integ/src/plugins/kubernetes/kubernetes-type/kubernetes-pod-run.ts b/core/test/integ/src/plugins/kubernetes/kubernetes-type/kubernetes-pod-run.ts index 3a3bf81605..2045859091 100644 --- a/core/test/integ/src/plugins/kubernetes/kubernetes-type/kubernetes-pod-run.ts +++ b/core/test/integ/src/plugins/kubernetes/kubernetes-type/kubernetes-pod-run.ts @@ -8,15 +8,17 @@ import { expect } from "chai" -import { TestGarden, expectError, findNamespaceStatusEvent } from "../../../../../helpers" -import { ConfigGraph } from "../../../../../../src/graph/config-graph" -import { getKubernetesTestGarden } from "./common" -import { RunTask } from "../../../../../../src/tasks/run" -import { emptyDir, pathExists } from "fs-extra" +import type { TestGarden } from "../../../../../helpers.js" +import { expectError, findNamespaceStatusEvent } from "../../../../../helpers.js" +import type { ConfigGraph } from "../../../../../../src/graph/config-graph.js" +import { getKubernetesTestGarden } from "./common.js" +import { RunTask } from "../../../../../../src/tasks/run.js" +import fsExtra from "fs-extra" +const { emptyDir, pathExists } = fsExtra import { join } from "path" -import { clearRunResult } from "../../../../../../src/plugins/kubernetes/run-results" -import { KubernetesPodRunAction } from "../../../../../../src/plugins/kubernetes/kubernetes-type/kubernetes-pod" -import { createActionLog } from "../../../../../../src/logger/log-entry" +import { clearRunResult } from "../../../../../../src/plugins/kubernetes/run-results.js" +import type { KubernetesPodRunAction } from "../../../../../../src/plugins/kubernetes/kubernetes-type/kubernetes-pod.js" +import { createActionLog } from "../../../../../../src/logger/log-entry.js" describe("kubernetes-type pod Run", () => { let garden: TestGarden diff --git a/core/test/integ/src/plugins/kubernetes/kubernetes-type/kubernetes-pod-test.ts b/core/test/integ/src/plugins/kubernetes/kubernetes-type/kubernetes-pod-test.ts index 4b4ab2ce12..b7be41fe0d 100644 --- a/core/test/integ/src/plugins/kubernetes/kubernetes-type/kubernetes-pod-test.ts +++ b/core/test/integ/src/plugins/kubernetes/kubernetes-type/kubernetes-pod-test.ts @@ -8,14 +8,16 @@ import { expect } from "chai" -import { TestGarden, expectError, findNamespaceStatusEvent } from "../../../../../helpers" -import { ConfigGraph } from "../../../../../../src/graph/config-graph" -import { getKubernetesTestGarden } from "./common" -import { TestTask } from "../../../../../../src/tasks/test" -import { emptyDir, pathExists } from "fs-extra" +import type { TestGarden } from "../../../../../helpers.js" +import { expectError, findNamespaceStatusEvent } from "../../../../../helpers.js" +import type { ConfigGraph } from "../../../../../../src/graph/config-graph.js" +import { getKubernetesTestGarden } from "./common.js" +import { TestTask } from "../../../../../../src/tasks/test.js" +import fsExtra from "fs-extra" +const { emptyDir, pathExists } = fsExtra import { join } from "path" -import { KubernetesPodTestAction } from "../../../../../../src/plugins/kubernetes/kubernetes-type/kubernetes-pod" -import { createActionLog } from "../../../../../../src/logger/log-entry" +import type { KubernetesPodTestAction } from "../../../../../../src/plugins/kubernetes/kubernetes-type/kubernetes-pod.js" +import { createActionLog } from "../../../../../../src/logger/log-entry.js" describe("kubernetes-type pod Test", () => { let garden: TestGarden diff --git a/core/test/integ/src/plugins/kubernetes/local-mode.ts b/core/test/integ/src/plugins/kubernetes/local-mode.ts index 60b6436904..d94c8a8f78 100644 --- a/core/test/integ/src/plugins/kubernetes/local-mode.ts +++ b/core/test/integ/src/plugins/kubernetes/local-mode.ts @@ -7,21 +7,22 @@ */ import { expect } from "chai" -import { ConfigGraph } from "../../../../../src/graph/config-graph" -import { k8sGetContainerDeployStatus } from "../../../../../src/plugins/kubernetes/container/status" -import { KubernetesPluginContext, KubernetesProvider } from "../../../../../src/plugins/kubernetes/config" -import { TestGarden } from "../../../../helpers" -import { getContainerTestGarden } from "./container/container" +import type { ConfigGraph } from "../../../../../src/graph/config-graph.js" +import { k8sGetContainerDeployStatus } from "../../../../../src/plugins/kubernetes/container/status.js" +import type { KubernetesPluginContext, KubernetesProvider } from "../../../../../src/plugins/kubernetes/config.js" +import type { TestGarden } from "../../../../helpers.js" +import { getContainerTestGarden } from "./container/container.js" import { join } from "path" -import { pathExists } from "fs-extra" +import fsExtra from "fs-extra" +const { pathExists } = fsExtra import { execSync } from "child_process" -import { PROXY_CONTAINER_USER_NAME } from "../../../../../src/plugins/kubernetes/constants" -import { RuntimeError } from "../../../../../src/exceptions" -import { LocalModeProcessRegistry, ProxySshKeystore } from "../../../../../src/plugins/kubernetes/local-mode" -import pRetry = require("p-retry") -import { sleep } from "../../../../../src/util/util" -import { DeployTask } from "../../../../../src/tasks/deploy" -import { createActionLog } from "../../../../../src/logger/log-entry" +import { PROXY_CONTAINER_USER_NAME } from "../../../../../src/plugins/kubernetes/constants.js" +import { RuntimeError } from "../../../../../src/exceptions.js" +import { LocalModeProcessRegistry, ProxySshKeystore } from "../../../../../src/plugins/kubernetes/local-mode.js" +import pRetry from "p-retry" +import { sleep } from "../../../../../src/util/util.js" +import { DeployTask } from "../../../../../src/tasks/deploy.js" +import { createActionLog } from "../../../../../src/logger/log-entry.js" describe("local mode deployments and ssh tunneling behavior", () => { let garden: TestGarden diff --git a/core/test/integ/src/plugins/kubernetes/namespace.ts b/core/test/integ/src/plugins/kubernetes/namespace.ts index b58c20f976..27e3aa0833 100644 --- a/core/test/integ/src/plugins/kubernetes/namespace.ts +++ b/core/test/integ/src/plugins/kubernetes/namespace.ts @@ -6,15 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { randomString, gardenAnnotationKey } from "../../../../../src/util/string" -import { KubeApi } from "../../../../../src/plugins/kubernetes/api" -import { getDataDir, makeTestGarden } from "../../../../helpers" -import { KubernetesPluginContext, KubernetesProvider } from "../../../../../src/plugins/kubernetes/config" -import { ensureNamespace, getNamespaceStatus } from "../../../../../src/plugins/kubernetes/namespace" -import { Log } from "../../../../../src/logger/log-entry" +import { randomString, gardenAnnotationKey } from "../../../../../src/util/string.js" +import { KubeApi } from "../../../../../src/plugins/kubernetes/api.js" +import { getDataDir, makeTestGarden } from "../../../../helpers.js" +import type { KubernetesPluginContext, KubernetesProvider } from "../../../../../src/plugins/kubernetes/config.js" +import { ensureNamespace, getNamespaceStatus } from "../../../../../src/plugins/kubernetes/namespace.js" +import type { Log } from "../../../../../src/logger/log-entry.js" import { expect } from "chai" -import { getPackageVersion } from "../../../../../src/util/util" -import { NamespaceStatus } from "../../../../../src/types/namespace" +import { getPackageVersion } from "../../../../../src/util/util.js" +import type { NamespaceStatus } from "../../../../../src/types/namespace.js" describe("Kubernetes Namespace helpers", () => { let api: KubeApi @@ -42,7 +42,7 @@ describe("Kubernetes Namespace helpers", () => { afterEach(async () => { try { - await api.core.deleteNamespace(namespaceName) + await api.core.deleteNamespace({ name: namespaceName }) } catch {} }) @@ -90,13 +90,15 @@ describe("Kubernetes Namespace helpers", () => { it("should add configured annotations if any are missing", async () => { await api.core.createNamespace({ - apiVersion: "v1", - kind: "Namespace", - metadata: { - name: namespaceName, - annotations: { - [gardenAnnotationKey("generated")]: "true", - [gardenAnnotationKey("version")]: getPackageVersion(), + body: { + apiVersion: "v1", + kind: "Namespace", + metadata: { + name: namespaceName, + annotations: { + [gardenAnnotationKey("generated")]: "true", + [gardenAnnotationKey("version")]: getPackageVersion(), + }, }, }, }) @@ -123,11 +125,13 @@ describe("Kubernetes Namespace helpers", () => { it("should add configured labels if any are missing", async () => { await api.core.createNamespace({ - apiVersion: "v1", - kind: "Namespace", - metadata: { - name: namespaceName, - labels: { foo: "bar" }, + body: { + apiVersion: "v1", + kind: "Namespace", + metadata: { + name: namespaceName, + labels: { foo: "bar" }, + }, }, }) @@ -150,16 +154,18 @@ describe("Kubernetes Namespace helpers", () => { it("should do nothing if the namespace has already been configured", async () => { await api.core.createNamespace({ - apiVersion: "v1", - kind: "Namespace", - metadata: { - name: namespaceName, - annotations: { - [gardenAnnotationKey("generated")]: "true", - [gardenAnnotationKey("version")]: getPackageVersion(), - foo: "bar", + body: { + apiVersion: "v1", + kind: "Namespace", + metadata: { + name: namespaceName, + annotations: { + [gardenAnnotationKey("generated")]: "true", + [gardenAnnotationKey("version")]: getPackageVersion(), + foo: "bar", + }, + labels: { existing: "label", floo: "blar" }, }, - labels: { existing: "label", floo: "blar" }, }, }) diff --git a/core/test/integ/src/plugins/kubernetes/run.ts b/core/test/integ/src/plugins/kubernetes/run.ts index 070fda400c..c3f3efe583 100644 --- a/core/test/integ/src/plugins/kubernetes/run.ts +++ b/core/test/integ/src/plugins/kubernetes/run.ts @@ -6,50 +6,51 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import td from "testdouble" +import * as td from "testdouble" import tmp from "tmp-promise" -import { expectError, pruneEmpty } from "../../../../helpers" -import { pathExists } from "fs-extra" +import { expectError, pruneEmpty } from "../../../../helpers.js" +import fsExtra from "fs-extra" +const { pathExists } = fsExtra import { expect } from "chai" import { join } from "path" -import { Garden } from "../../../../../src/garden" -import { ConfigGraph } from "../../../../../src/graph/config-graph" -import { deline, randomString, dedent } from "../../../../../src/util/string" -import { runAndCopy, PodRunner, prepareRunPodSpec } from "../../../../../src/plugins/kubernetes/run" -import { KubeApi, KubernetesError } from "../../../../../src/plugins/kubernetes/api" -import { +import type { Garden } from "../../../../../src/garden.js" +import type { ConfigGraph } from "../../../../../src/graph/config-graph.js" +import { deline, randomString, dedent } from "../../../../../src/util/string.js" +import { runAndCopy, PodRunner, prepareRunPodSpec } from "../../../../../src/plugins/kubernetes/run.js" +import { KubeApi, KubernetesError } from "../../../../../src/plugins/kubernetes/api.js" +import type { KubernetesPluginContext, KubernetesProvider, ServiceResourceSpec, -} from "../../../../../src/plugins/kubernetes/config" +} from "../../../../../src/plugins/kubernetes/config.js" import { getTargetResource, getResourceContainer, getServiceResourceSpec, getResourcePodSpec, makePodName, -} from "../../../../../src/plugins/kubernetes/util" -import { getContainerTestGarden } from "./container/container" -import { +} from "../../../../../src/plugins/kubernetes/util.js" +import { getContainerTestGarden } from "./container/container.js" +import type { KubernetesPod, KubernetesServerResource, KubernetesWorkload, -} from "../../../../../src/plugins/kubernetes/types" -import { PluginContext } from "../../../../../src/plugin-context" -import { Log } from "../../../../../src/logger/log-entry" -import { sleep } from "../../../../../src/util/util" -import { buildHelmModules, getHelmTestGarden } from "./helm/common" -import { getBaseModule, getChartResources } from "../../../../../src/plugins/kubernetes/helm/common" -import { getActionNamespace } from "../../../../../src/plugins/kubernetes/namespace" -import { GardenModule } from "../../../../../src/types/module" -import { V1Container, V1Pod, V1PodSpec } from "@kubernetes/client-node" -import { getResourceRequirements } from "../../../../../src/plugins/kubernetes/container/util" -import { ContainerBuildAction, ContainerResourcesSpec } from "../../../../../src/plugins/container/moduleConfig" -import { KubernetesPodRunActionSpec } from "../../../../../src/plugins/kubernetes/kubernetes-type/kubernetes-pod" -import { Resolved } from "../../../../../src/actions/types" -import { HelmDeployAction } from "../../../../../src/plugins/kubernetes/helm/config" -import { executeAction } from "../../../../../src/graph/actions" -import { DEFAULT_RUN_TIMEOUT_SEC } from "../../../../../src/constants" +} from "../../../../../src/plugins/kubernetes/types.js" +import type { PluginContext } from "../../../../../src/plugin-context.js" +import type { Log } from "../../../../../src/logger/log-entry.js" +import { sleep } from "../../../../../src/util/util.js" +import { buildHelmModules, getHelmTestGarden } from "./helm/common.js" +import { getBaseModule, getChartResources } from "../../../../../src/plugins/kubernetes/helm/common.js" +import { getActionNamespace } from "../../../../../src/plugins/kubernetes/namespace.js" +import type { GardenModule } from "../../../../../src/types/module.js" +import type { V1Container, V1Pod, V1PodSpec } from "@kubernetes/client-node" +import { getResourceRequirements } from "../../../../../src/plugins/kubernetes/container/util.js" +import type { ContainerBuildAction, ContainerResourcesSpec } from "../../../../../src/plugins/container/moduleConfig.js" +import type { KubernetesPodRunActionSpec } from "../../../../../src/plugins/kubernetes/kubernetes-type/kubernetes-pod.js" +import type { Resolved } from "../../../../../src/actions/types.js" +import type { HelmDeployAction } from "../../../../../src/plugins/kubernetes/helm/config.js" +import { executeAction } from "../../../../../src/graph/actions.js" +import { DEFAULT_RUN_TIMEOUT_SEC } from "../../../../../src/constants.js" describe("kubernetes Pod runner functions", () => { let garden: Garden @@ -431,7 +432,9 @@ describe("kubernetes Pod runner functions", () => { startTime: new Date(), }, } - td.when(core.readNamespacedPodStatus(runner.podName, namespace)).thenResolve(readNamespacedPodStatusRes) + td.when(core.readNamespacedPodStatus({ name: runner.podName, namespace })).thenResolve( + readNamespacedPodStatusRes + ) await expectError( () => runner.runAndWait({ log, remove: true, tty: false, events: ctx.events }), @@ -510,7 +513,9 @@ describe("kubernetes Pod runner functions", () => { startTime: new Date(), }, } - td.when(core.readNamespacedPodStatus(runner.podName, namespace)).thenResolve(readNamespacedPodStatusRes) + td.when(core.readNamespacedPodStatus({ name: runner.podName, namespace })).thenResolve( + readNamespacedPodStatusRes + ) await expectError( () => runner.runAndWait({ log, remove: true, tty: false, events: ctx.events }), @@ -1075,7 +1080,7 @@ describe("kubernetes Pod runner functions", () => { }) await expectError( - () => api.core.readNamespacedPod(podName, namespace), + () => api.core.readNamespacedPod({ name: podName, namespace }), (err) => { expect(err).to.be.instanceOf(KubernetesError) expect(err.responseStatusCode).to.equal(404) @@ -1149,7 +1154,7 @@ describe("kubernetes Pod runner functions", () => { }) await expectError( - () => api.core.readNamespacedPod(podName, namespace), + () => api.core.readNamespacedPod({ name: podName, namespace }), (err) => { expect(err).to.be.instanceOf(KubernetesError) expect(err.responseStatusCode).to.equal(404) diff --git a/core/test/integ/src/plugins/kubernetes/sync-mode.ts b/core/test/integ/src/plugins/kubernetes/sync-mode.ts index b98534cbc0..9712dab4c8 100644 --- a/core/test/integ/src/plugins/kubernetes/sync-mode.ts +++ b/core/test/integ/src/plugins/kubernetes/sync-mode.ts @@ -7,29 +7,32 @@ */ import { expect } from "chai" -import { mkdirp, pathExists, readFile, remove, writeFile } from "fs-extra" +import fsExtra from "fs-extra" +const { mkdirp, pathExists, readFile, remove, writeFile } = fsExtra import { join } from "path" -import { ConfigGraph } from "../../../../../src/graph/config-graph" -import { k8sGetContainerDeployStatus } from "../../../../../src/plugins/kubernetes/container/status" -import { createActionLog, Log } from "../../../../../src/logger/log-entry" -import { KubernetesPluginContext, KubernetesProvider } from "../../../../../src/plugins/kubernetes/config" -import { getMutagenMonitor, Mutagen } from "../../../../../src/mutagen" -import { KubernetesWorkload } from "../../../../../src/plugins/kubernetes/types" -import { execInWorkload } from "../../../../../src/plugins/kubernetes/util" -import { dedent } from "../../../../../src/util/string" -import { sleep } from "../../../../../src/util/util" -import { getContainerTestGarden } from "./container/container" +import type { ConfigGraph } from "../../../../../src/graph/config-graph.js" +import { k8sGetContainerDeployStatus } from "../../../../../src/plugins/kubernetes/container/status.js" +import type { Log } from "../../../../../src/logger/log-entry.js" +import { createActionLog } from "../../../../../src/logger/log-entry.js" +import type { KubernetesPluginContext, KubernetesProvider } from "../../../../../src/plugins/kubernetes/config.js" +import { getMutagenMonitor, Mutagen } from "../../../../../src/mutagen.js" +import type { KubernetesWorkload } from "../../../../../src/plugins/kubernetes/types.js" +import { execInWorkload } from "../../../../../src/plugins/kubernetes/util.js" +import { dedent } from "../../../../../src/util/string.js" +import { sleep } from "../../../../../src/util/util.js" +import { getContainerTestGarden } from "./container/container.js" import { convertContainerSyncSpec, convertKubernetesModuleDevModeSpec, -} from "../../../../../src/plugins/kubernetes/sync" -import { HelmModuleConfig } from "../../../../../src/plugins/kubernetes/helm/module-config" -import { KubernetesModuleConfig } from "../../../../../src/plugins/kubernetes/kubernetes-type/module-config" -import { TestGarden, cleanProject } from "../../../../helpers" -import { ContainerDeployActionConfig } from "../../../../../src/plugins/container/moduleConfig" -import { resolveAction } from "../../../../../src/graph/actions" -import { DeployTask } from "../../../../../src/tasks/deploy" -import { MUTAGEN_DIR_NAME } from "../../../../../src/constants" +} from "../../../../../src/plugins/kubernetes/sync.js" +import type { HelmModuleConfig } from "../../../../../src/plugins/kubernetes/helm/module-config.js" +import type { KubernetesModuleConfig } from "../../../../../src/plugins/kubernetes/kubernetes-type/module-config.js" +import type { TestGarden } from "../../../../helpers.js" +import { cleanProject } from "../../../../helpers.js" +import type { ContainerDeployActionConfig } from "../../../../../src/plugins/container/moduleConfig.js" +import { resolveAction } from "../../../../../src/graph/actions.js" +import { DeployTask } from "../../../../../src/tasks/deploy.js" +import { MUTAGEN_DIR_NAME } from "../../../../../src/constants.js" describe("sync mode deployments and sync behavior", () => { let garden: TestGarden diff --git a/core/test/integ/src/plugins/kubernetes/system.ts b/core/test/integ/src/plugins/kubernetes/system.ts index 1c3384c5e6..f23edb366a 100644 --- a/core/test/integ/src/plugins/kubernetes/system.ts +++ b/core/test/integ/src/plugins/kubernetes/system.ts @@ -6,17 +6,17 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Garden } from "../../../../../src/garden" -import { Provider } from "../../../../../src/config/provider" -import { KubernetesConfig, KubernetesPluginContext } from "../../../../../src/plugins/kubernetes/config" -import { getDataDir, makeTestGarden } from "../../../../helpers" +import type { Garden } from "../../../../../src/garden.js" +import type { Provider } from "../../../../../src/config/provider.js" +import type { KubernetesConfig, KubernetesPluginContext } from "../../../../../src/plugins/kubernetes/config.js" +import { getDataDir, makeTestGarden } from "../../../../helpers.js" import { expect } from "chai" -import { TestTask } from "../../../../../src/tasks/test" -import { getSystemGarden } from "../../../../../src/plugins/kubernetes/system" -import { getKubernetesSystemVariables } from "../../../../../src/plugins/kubernetes/init" -import { convertModules } from "../../../../../src/resolve-module" -import { TestAction } from "../../../../../src/actions/test" -import { actionFromConfig } from "../../../../../src/graph/actions" +import { TestTask } from "../../../../../src/tasks/test.js" +import { getSystemGarden } from "../../../../../src/plugins/kubernetes/system.js" +import { getKubernetesSystemVariables } from "../../../../../src/plugins/kubernetes/init.js" +import { convertModules } from "../../../../../src/resolve-module.js" +import type { TestAction } from "../../../../../src/actions/test.js" +import { actionFromConfig } from "../../../../../src/graph/actions.js" describe("System services", () => { let garden: Garden diff --git a/core/test/integ/src/plugins/kubernetes/task-results.ts b/core/test/integ/src/plugins/kubernetes/task-results.ts index e89e8c79b5..d1fde5456a 100644 --- a/core/test/integ/src/plugins/kubernetes/task-results.ts +++ b/core/test/integ/src/plugins/kubernetes/task-results.ts @@ -6,15 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Garden } from "../../../../../src/garden" -import { Provider } from "../../../../../src/config/provider" -import { KubernetesConfig } from "../../../../../src/plugins/kubernetes/config" -import { getDataDir, makeTestGarden } from "../../../../helpers" -import { randomString } from "../../../../../src/util/string" +import type { Garden } from "../../../../../src/garden.js" +import type { Provider } from "../../../../../src/config/provider.js" +import type { KubernetesConfig } from "../../../../../src/plugins/kubernetes/config.js" +import { getDataDir, makeTestGarden } from "../../../../helpers.js" +import { randomString } from "../../../../../src/util/string.js" import { expect } from "chai" -import { k8sGetRunResult, storeRunResult } from "../../../../../src/plugins/kubernetes/run-results" -import { MAX_RUN_RESULT_LOG_LENGTH } from "../../../../../src/plugins/kubernetes/constants" -import { createActionLog } from "../../../../../src/logger/log-entry" +import { k8sGetRunResult, storeRunResult } from "../../../../../src/plugins/kubernetes/run-results.js" +import { MAX_RUN_RESULT_LOG_LENGTH } from "../../../../../src/plugins/kubernetes/constants.js" +import { createActionLog } from "../../../../../src/logger/log-entry.js" describe("kubernetes Run results", () => { let garden: Garden diff --git a/core/test/integ/src/plugins/kubernetes/util.ts b/core/test/integ/src/plugins/kubernetes/util.ts index b2b6885a2a..9c11d96fba 100644 --- a/core/test/integ/src/plugins/kubernetes/util.ts +++ b/core/test/integ/src/plugins/kubernetes/util.ts @@ -7,43 +7,45 @@ */ import { expect } from "chai" -import { flatten, find, first } from "lodash" +import { flatten, find, first } from "lodash-es" import stripAnsi from "strip-ansi" -import { TestGarden, expectError } from "../../../../helpers" -import { ConfigGraph } from "../../../../../src/graph/config-graph" -import { actionFromConfig } from "../../../../../src/graph/actions" -import { Provider } from "../../../../../src/config/provider" -import { DeployTask } from "../../../../../src/tasks/deploy" -import { KubeApi } from "../../../../../src/plugins/kubernetes/api" -import { +import type { TestGarden } from "../../../../helpers.js" +import { expectError } from "../../../../helpers.js" +import type { ConfigGraph } from "../../../../../src/graph/config-graph.js" +import { actionFromConfig } from "../../../../../src/graph/actions.js" +import type { Provider } from "../../../../../src/config/provider.js" +import { DeployTask } from "../../../../../src/tasks/deploy.js" +import { KubeApi } from "../../../../../src/plugins/kubernetes/api.js" +import type { KubernetesConfig, KubernetesPluginContext, ServiceResourceSpec, -} from "../../../../../src/plugins/kubernetes/config" +} from "../../../../../src/plugins/kubernetes/config.js" import { getWorkloadPods, getServiceResourceSpec, getTargetResource, getResourceContainer, getResourcePodSpec, -} from "../../../../../src/plugins/kubernetes/util" -import { createWorkloadManifest } from "../../../../../src/plugins/kubernetes/container/deployment" -import { getHelmTestGarden } from "./helm/common" -import { getChartResources } from "../../../../../src/plugins/kubernetes/helm/common" -import { createActionLog, Log } from "../../../../../src/logger/log-entry" -import { BuildTask } from "../../../../../src/tasks/build" -import { getContainerTestGarden } from "./container/container" -import { +} from "../../../../../src/plugins/kubernetes/util.js" +import { createWorkloadManifest } from "../../../../../src/plugins/kubernetes/container/deployment.js" +import { getHelmTestGarden } from "./helm/common.js" +import { getChartResources } from "../../../../../src/plugins/kubernetes/helm/common.js" +import type { Log } from "../../../../../src/logger/log-entry.js" +import { createActionLog } from "../../../../../src/logger/log-entry.js" +import { BuildTask } from "../../../../../src/tasks/build.js" +import { getContainerTestGarden } from "./container/container.js" +import type { KubernetesDeployment, KubernetesPod, KubernetesWorkload, SyncableKind, -} from "../../../../../src/plugins/kubernetes/types" -import { getAppNamespace } from "../../../../../src/plugins/kubernetes/namespace" -import { convertModules } from "../../../../../src/resolve-module" -import { BuildAction } from "../../../../../src/actions/build" -import { DeployAction } from "../../../../../src/actions/deploy" -import { HelmDeployAction } from "../../../../../src/plugins/kubernetes/helm/config" +} from "../../../../../src/plugins/kubernetes/types.js" +import { getAppNamespace } from "../../../../../src/plugins/kubernetes/namespace.js" +import { convertModules } from "../../../../../src/resolve-module.js" +import type { BuildAction } from "../../../../../src/actions/build.js" +import type { DeployAction } from "../../../../../src/actions/deploy.js" +import type { HelmDeployAction } from "../../../../../src/plugins/kubernetes/helm/config.js" describe("util", () => { let helmGarden: TestGarden @@ -159,7 +161,7 @@ describe("util", () => { await garden.processTasks({ tasks: [deployTask], throwOnError: true }) const pods = await getWorkloadPods(api, "container", resource) - const services = flatten(pods.map((pod) => pod.spec.containers.map((container) => container.name))) + const services = flatten(pods.map((pod) => pod.spec?.containers.map((container) => container.name))) expect(services).to.eql(["simple-service"]) } finally { garden.close() @@ -189,7 +191,7 @@ describe("util", () => { await garden.processTasks({ tasks: [deployTask], throwOnError: true }) const namespace = await getAppNamespace(ctx, log, provider) - const allPods = await api.core.listNamespacedPod(namespace) + const allPods = await api.core.listNamespacedPod({ namespace }) const pod = allPods.items[0] diff --git a/core/test/integ/src/plugins/kubernetes/volume/configmap.ts b/core/test/integ/src/plugins/kubernetes/volume/configmap.ts index b419d2fc63..fde6be129b 100644 --- a/core/test/integ/src/plugins/kubernetes/volume/configmap.ts +++ b/core/test/integ/src/plugins/kubernetes/volume/configmap.ts @@ -6,15 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import tmp from "tmp-promise" -import { ProjectConfig } from "../../../../../../src/config/project" -import execa = require("execa") -import { DEFAULT_BUILD_TIMEOUT_SEC, GardenApiVersion } from "../../../../../../src/constants" +import type tmp from "tmp-promise" +import type { ProjectConfig } from "../../../../../../src/config/project.js" +import execa from "execa" +import { DEFAULT_BUILD_TIMEOUT_SEC, GardenApiVersion } from "../../../../../../src/constants.js" import { expect } from "chai" -import { TestGarden, makeTempDir, createProjectConfig } from "../../../../../helpers" -import { DeployTask } from "../../../../../../src/tasks/deploy" -import { isSubset } from "../../../../../../src/util/is-subset" -import { createActionLog } from "../../../../../../src/logger/log-entry" +import { TestGarden, makeTempDir, createProjectConfig } from "../../../../../helpers.js" +import { DeployTask } from "../../../../../../src/tasks/deploy.js" +import { isSubset } from "../../../../../../src/util/is-subset.js" +import { createActionLog } from "../../../../../../src/logger/log-entry.js" describe("configmap module", () => { let tmpDir: tmp.DirectoryResult diff --git a/core/test/integ/src/plugins/kubernetes/volume/persistentvolumeclaim.ts b/core/test/integ/src/plugins/kubernetes/volume/persistentvolumeclaim.ts index f4d3c3010c..408f9e8d1d 100644 --- a/core/test/integ/src/plugins/kubernetes/volume/persistentvolumeclaim.ts +++ b/core/test/integ/src/plugins/kubernetes/volume/persistentvolumeclaim.ts @@ -6,15 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import tmp from "tmp-promise" -import { ProjectConfig } from "../../../../../../src/config/project" -import execa = require("execa") -import { DEFAULT_BUILD_TIMEOUT_SEC, GardenApiVersion } from "../../../../../../src/constants" +import type tmp from "tmp-promise" +import type { ProjectConfig } from "../../../../../../src/config/project.js" +import execa from "execa" +import { DEFAULT_BUILD_TIMEOUT_SEC, GardenApiVersion } from "../../../../../../src/constants.js" import { expect } from "chai" -import { TestGarden, makeTempDir, createProjectConfig } from "../../../../../helpers" -import { DeployTask } from "../../../../../../src/tasks/deploy" -import { isSubset } from "../../../../../../src/util/is-subset" -import { createActionLog } from "../../../../../../src/logger/log-entry" +import { TestGarden, makeTempDir, createProjectConfig } from "../../../../../helpers.js" +import { DeployTask } from "../../../../../../src/tasks/deploy.js" +import { isSubset } from "../../../../../../src/util/is-subset.js" +import { createActionLog } from "../../../../../../src/logger/log-entry.js" describe("persistentvolumeclaim", () => { let tmpDir: tmp.DirectoryResult diff --git a/core/test/integ/src/plugins/octant/octant.ts b/core/test/integ/src/plugins/octant/octant.ts index 4d56fc830a..6fb98445c3 100644 --- a/core/test/integ/src/plugins/octant/octant.ts +++ b/core/test/integ/src/plugins/octant/octant.ts @@ -6,9 +6,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { createProjectConfig, makeTestGarden, projectRootA } from "../../../../helpers" +import { createProjectConfig, makeTestGarden, projectRootA } from "../../../../helpers.js" import { expect } from "chai" -import { got } from "../../../../../src/util/http" +import { got } from "../../../../../src/util/http.js" describe("octant provider", () => { describe("getDashboardPage", () => { diff --git a/core/test/integ/src/plugins/openshift/tests.ts b/core/test/integ/src/plugins/openshift/tests.ts index 478cb1710c..23a4fd5b2c 100644 --- a/core/test/integ/src/plugins/openshift/tests.ts +++ b/core/test/integ/src/plugins/openshift/tests.ts @@ -7,14 +7,14 @@ */ import { expect } from "chai" -import { DeleteEnvironmentCommand } from "../../../../../src/commands/delete" -import { DeployCommand } from "../../../../../src/commands/deploy" -import { LogsCommand } from "../../../../../src/commands/logs" -import { ValidateCommand } from "../../../../../src/commands/validate" -import { getDataDir, makeTestGarden, withDefaultGlobalOpts } from "../../../../helpers" -import { defaultDeployOpts } from "../../../../unit/src/commands/deploy" -import { BuildCommand } from "../../../../../src/commands/build" -import { TestCommand } from "../../../../../src/commands/test" +import { DeleteEnvironmentCommand } from "../../../../../src/commands/delete.js" +import { DeployCommand } from "../../../../../src/commands/deploy.js" +import { LogsCommand } from "../../../../../src/commands/logs.js" +import { ValidateCommand } from "../../../../../src/commands/validate.js" +import { getDataDir, makeTestGarden, withDefaultGlobalOpts } from "../../../../helpers.js" +import { defaultDeployOpts } from "../../../../unit/src/commands/deploy.js" +import { BuildCommand } from "../../../../../src/commands/build.js" +import { TestCommand } from "../../../../../src/commands/test.js" describe.skip("OpenShift", () => { const projectRoot = getDataDir("openshift", "demo-project") diff --git a/core/test/setup.ts b/core/test/setup.ts index cb5f342962..a276580088 100644 --- a/core/test/setup.ts +++ b/core/test/setup.ts @@ -7,12 +7,12 @@ */ import sinon from "sinon" -import td from "testdouble" +import * as td from "testdouble" import timekeeper from "timekeeper" -import { getDefaultProfiler } from "../src/util/profiling" -import { gardenEnv } from "../src/constants" -import { testFlags } from "../src/util/util" -import { initTestLogger, testProjectTempDirs } from "./helpers" +import { getDefaultProfiler } from "../src/util/profiling.js" +import { gardenEnv } from "../src/constants.js" +import { testFlags } from "../src/util/util.js" +import { initTestLogger, testProjectTempDirs } from "./helpers.js" import sourceMapSupport from "source-map-support" sourceMapSupport.install() @@ -20,7 +20,7 @@ sourceMapSupport.install() initTestLogger() // Global hooks -exports.mochaHooks = { +export const mochaHooks = { async beforeAll() { // override fetch to handle node 18 issue when using nock // https://github.com/nock/nock/issues/2336 diff --git a/core/test/unit/src/actions/action-configs-to-graph.ts b/core/test/unit/src/actions/action-configs-to-graph.ts index 9d96bbeada..576e328eec 100644 --- a/core/test/unit/src/actions/action-configs-to-graph.ts +++ b/core/test/unit/src/actions/action-configs-to-graph.ts @@ -8,17 +8,18 @@ import { expect } from "chai" import { join } from "path" -import { actionConfigsToGraph } from "../../../../src/graph/actions" -import { ModuleGraph } from "../../../../src/graph/modules" -import { Log } from "../../../../src/logger/log-entry" -import { dumpYaml } from "../../../../src/util/serialization" -import { createProjectConfig, expectError, makeTempGarden, TempDirectory, TestGarden } from "../../../helpers" +import { actionConfigsToGraph } from "../../../../src/graph/actions.js" +import { ModuleGraph } from "../../../../src/graph/modules.js" +import type { Log } from "../../../../src/logger/log-entry.js" +import { dumpYaml } from "../../../../src/util/serialization.js" +import type { TempDirectory, TestGarden } from "../../../helpers.js" +import { createProjectConfig, expectError, makeTempGarden } from "../../../helpers.js" import { DEFAULT_BUILD_TIMEOUT_SEC, DEFAULT_DEPLOY_TIMEOUT_SEC, DEFAULT_RUN_TIMEOUT_SEC, DEFAULT_TEST_TIMEOUT_SEC, -} from "../../../../src/constants" +} from "../../../../src/constants.js" describe("actionConfigsToGraph", () => { let tmpDir: TempDirectory diff --git a/core/test/unit/src/actions/build.ts b/core/test/unit/src/actions/build.ts index 4a0c3641a9..ae61a0a8e9 100644 --- a/core/test/unit/src/actions/build.ts +++ b/core/test/unit/src/actions/build.ts @@ -7,7 +7,7 @@ */ import { expect } from "chai" -import { makeTestGardenA } from "../../../helpers" +import { makeTestGardenA } from "../../../helpers.js" describe("BuildAction", () => { it("When converted from a module, uses the module's version string in its full version", async () => { diff --git a/core/test/unit/src/analytics/analytics.ts b/core/test/unit/src/analytics/analytics.ts index eb628d35c4..644e098693 100644 --- a/core/test/unit/src/analytics/analytics.ts +++ b/core/test/unit/src/analytics/analytics.ts @@ -8,23 +8,25 @@ import { expect } from "chai" import nock from "nock" -import { isEqual } from "lodash" +import { isEqual } from "lodash-es" import { validate as validateUuid } from "uuid" -import { makeTestGardenA, TestGarden, enableAnalytics, getDataDir, makeTestGarden, freezeTime } from "../../../helpers" -import { FakeCloudApi, apiProjectName, apiRemoteOriginUrl } from "../../../helpers/api" -import { AnalyticsHandler, CommandResultEvent, getAnonymousUserId } from "../../../../src/analytics/analytics" +import type { TestGarden } from "../../../helpers.js" +import { makeTestGardenA, enableAnalytics, getDataDir, makeTestGarden, freezeTime } from "../../../helpers.js" +import { FakeCloudApi, apiProjectName, apiRemoteOriginUrl } from "../../../helpers/api.js" +import type { CommandResultEvent } from "../../../../src/analytics/analytics.js" +import { AnalyticsHandler, getAnonymousUserId } from "../../../../src/analytics/analytics.js" import { DEFAULT_BUILD_TIMEOUT_SEC, DEFAULT_GARDEN_CLOUD_DOMAIN, GardenApiVersion, gardenEnv, -} from "../../../../src/constants" -import { LogLevel, RootLogger } from "../../../../src/logger/logger" -import { AnalyticsGlobalConfig } from "../../../../src/config-store/global" -import { QuietWriter } from "../../../../src/logger/writers/quiet-writer" +} from "../../../../src/constants.js" +import { LogLevel, RootLogger } from "../../../../src/logger/logger.js" +import type { AnalyticsGlobalConfig } from "../../../../src/config-store/global.js" +import { QuietWriter } from "../../../../src/logger/writers/quiet-writer.js" import timekeeper from "timekeeper" -import { ConfigurationError, DeploymentError, RuntimeError } from "../../../../src/exceptions" +import { ConfigurationError, DeploymentError, RuntimeError } from "../../../../src/exceptions.js" const host = "https://api.segment.io" // The codenamize version + the sha512 hash of "test-project-a" diff --git a/core/test/unit/src/build-staging/build-staging.ts b/core/test/unit/src/build-staging/build-staging.ts index 4a0045d6b8..5e7515cc6b 100644 --- a/core/test/unit/src/build-staging/build-staging.ts +++ b/core/test/unit/src/build-staging/build-staging.ts @@ -6,20 +6,24 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import readdir from "@jsdevtools/readdir-enhanced" +import readdirModule from "@jsdevtools/readdir-enhanced" +const readdir = readdirModule.default import { join, basename } from "path" -import { pathExists, createFile, realpath, readFile, ensureFile, writeFile, ensureDir } from "fs-extra" +import fsExtra from "fs-extra" +const { pathExists, createFile, realpath, readFile, ensureFile, writeFile, ensureDir } = fsExtra import { expect } from "chai" -import { makeTestGarden, TestGarden, expectError, getDataDir } from "../../../helpers" -import { defaultConfigFilename, TempDirectory, makeTempDir, joinWithPosix } from "../../../../src/util/fs" -import { BuildStaging, SyncParams } from "../../../../src/build-staging/build-staging" -import { Log } from "../../../../src/logger/log-entry" -import { TestGardenOpts } from "../../../../src/util/testing" -import { BuildStagingRsync, minRsyncVersion } from "../../../../src/build-staging/rsync" -import { BuildTask } from "../../../../src/tasks/build" -import { ConfigGraph } from "../../../../src/graph/config-graph" -import { BuildAction } from "../../../../src/actions/build" -import { DOCS_BASE_URL } from "../../../../src/constants" +import type { TestGarden } from "../../../helpers.js" +import { makeTestGarden, expectError, getDataDir } from "../../../helpers.js" +import type { TempDirectory } from "../../../../src/util/fs.js" +import { defaultConfigFilename, makeTempDir, joinWithPosix } from "../../../../src/util/fs.js" +import type { BuildStaging, SyncParams } from "../../../../src/build-staging/build-staging.js" +import type { Log } from "../../../../src/logger/log-entry.js" +import type { TestGardenOpts } from "../../../../src/util/testing.js" +import { BuildStagingRsync, minRsyncVersion } from "../../../../src/build-staging/rsync.js" +import { BuildTask } from "../../../../src/tasks/build.js" +import type { ConfigGraph } from "../../../../src/graph/config-graph.js" +import type { BuildAction } from "../../../../src/actions/build.js" +import { DOCS_BASE_URL } from "../../../../src/constants.js" // TODO-G2: rename test cases to match the new graph model semantics diff --git a/core/test/unit/src/build-staging/helpers.ts b/core/test/unit/src/build-staging/helpers.ts index 164add1d41..82cb51aa64 100644 --- a/core/test/unit/src/build-staging/helpers.ts +++ b/core/test/unit/src/build-staging/helpers.ts @@ -7,21 +7,17 @@ */ import { join } from "path" -import { - cloneFileAsync, - ExtendedStats, - FileStatsHelper, - MappedPaths, - ResolveSymlinkParams, - scanDirectoryForClone, -} from "../../../../src/build-staging/helpers" -import { makeTempDir, TempDirectory } from "../../../../src/util/fs" -import { ensureDir, ensureFile, mkdir, readFile, realpath, symlink, writeFile } from "fs-extra" +import type { ExtendedStats, MappedPaths, ResolveSymlinkParams } from "../../../../src/build-staging/helpers.js" +import { cloneFileAsync, FileStatsHelper, scanDirectoryForClone } from "../../../../src/build-staging/helpers.js" +import type { TempDirectory } from "../../../../src/util/fs.js" +import { makeTempDir } from "../../../../src/util/fs.js" +import fsExtra from "fs-extra" +const { realpath, symlink, writeFile, readFile, mkdir, ensureFile, ensureDir } = fsExtra import { expect } from "chai" -import { expectError } from "../../../helpers" -import { sleep } from "../../../../src/util/util" -import { sortBy } from "lodash" -import { equalWithPrecision } from "../../../../src/util/testing" +import { expectError } from "../../../helpers.js" +import { sleep } from "../../../../src/util/util.js" +import { sortBy } from "lodash-es" +import { equalWithPrecision } from "../../../../src/util/testing.js" describe("build staging helpers", () => { let statsHelper: FileStatsHelper diff --git a/core/test/unit/src/cache.ts b/core/test/unit/src/cache.ts index a38c66572a..1db2a057a8 100644 --- a/core/test/unit/src/cache.ts +++ b/core/test/unit/src/cache.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { BoundedCache, TreeCache } from "../../../src/cache" +import { BoundedCache, TreeCache } from "../../../src/cache.js" import { expect } from "chai" -import { expectError } from "../../helpers" -import { getRootLogger } from "../../../src/logger/logger" +import { expectError } from "../../helpers.js" +import { getRootLogger } from "../../../src/logger/logger.js" describe("TreeCache", () => { let cache: TreeCache diff --git a/core/test/unit/src/cli/analytics.ts b/core/test/unit/src/cli/analytics.ts index c21cafbbf5..dc09a322f3 100644 --- a/core/test/unit/src/cli/analytics.ts +++ b/core/test/unit/src/cli/analytics.ts @@ -9,12 +9,13 @@ import nock from "nock" import { expect } from "chai" -import { GardenCli } from "../../../../src/cli/cli" -import { GlobalConfigStore } from "../../../../src/config-store/global" -import { TestGarden, enableAnalytics, makeTestGardenA } from "../../../helpers" -import { Command } from "../../../../src/commands/base" -import { isEqual } from "lodash" -import { TestGardenCli } from "../../../helpers/cli" +import type { GardenCli } from "../../../../src/cli/cli.js" +import { GlobalConfigStore } from "../../../../src/config-store/global.js" +import type { TestGarden } from "../../../helpers.js" +import { enableAnalytics, makeTestGardenA } from "../../../helpers.js" +import { Command } from "../../../../src/commands/base.js" +import { isEqual } from "lodash-es" +import { TestGardenCli } from "../../../helpers/cli.js" // TODO: These tests are skipped because they fail repeatedly in CI, but works fine locally describe("cli analytics", () => { diff --git a/core/test/unit/src/cli/autocomplete.ts b/core/test/unit/src/cli/autocomplete.ts index b47f6674cd..cfdae5dc39 100644 --- a/core/test/unit/src/cli/autocomplete.ts +++ b/core/test/unit/src/cli/autocomplete.ts @@ -7,12 +7,13 @@ */ import { expect } from "chai" -import { Autocompleter } from "../../../../src/cli/autocomplete" -import { globalDisplayOptions, globalOptions } from "../../../../src/cli/params" -import { BuildCommand } from "../../../../src/commands/build" -import { getBuiltinCommands } from "../../../../src/commands/commands" -import { ConfigDump } from "../../../../src/garden" -import { makeTestGardenA, TestGarden } from "../../../helpers" +import { Autocompleter } from "../../../../src/cli/autocomplete.js" +import { globalDisplayOptions, globalOptions } from "../../../../src/cli/params.js" +import { BuildCommand } from "../../../../src/commands/build.js" +import { getBuiltinCommands } from "../../../../src/commands/commands.js" +import type { ConfigDump } from "../../../../src/garden.js" +import type { TestGarden } from "../../../helpers.js" +import { makeTestGardenA } from "../../../helpers.js" describe("Autocompleter", () => { let garden: TestGarden diff --git a/core/test/unit/src/cli/cli.ts b/core/test/unit/src/cli/cli.ts index c0048a02ac..5143a3b32a 100644 --- a/core/test/unit/src/cli/cli.ts +++ b/core/test/unit/src/cli/cli.ts @@ -7,33 +7,36 @@ */ import { expect } from "chai" -import td from "testdouble" +import * as td from "testdouble" -import { GardenCli, validateRuntimeRequirementsCached } from "../../../../src/cli/cli" -import { getDataDir, projectRootA, initTestLogger } from "../../../helpers" -import { gardenEnv, GARDEN_CORE_ROOT } from "../../../../src/constants" +import type { GardenCli } from "../../../../src/cli/cli.js" +import { validateRuntimeRequirementsCached } from "../../../../src/cli/cli.js" +import { getDataDir, projectRootA, initTestLogger } from "../../../helpers.js" +import { gardenEnv, GARDEN_CORE_ROOT } from "../../../../src/constants.js" import { join, resolve } from "path" -import { Command, CommandGroup, CommandParams, CommandResult, PrepareParams } from "../../../../src/commands/base" -import { UtilCommand } from "../../../../src/commands/util/util" -import { StringParameter } from "../../../../src/cli/params" +import type { CommandParams, CommandResult, PrepareParams } from "../../../../src/commands/base.js" +import { Command, CommandGroup } from "../../../../src/commands/base.js" +import { UtilCommand } from "../../../../src/commands/util/util.js" +import { StringParameter } from "../../../../src/cli/params.js" import stripAnsi from "strip-ansi" -import { ToolsCommand } from "../../../../src/commands/tools" -import { getRootLogger, RootLogger } from "../../../../src/logger/logger" +import { ToolsCommand } from "../../../../src/commands/tools.js" +import { getRootLogger, RootLogger } from "../../../../src/logger/logger.js" import { load } from "js-yaml" -import { startServer } from "../../../../src/server/server" -import { envSupportsEmoji } from "../../../../src/logger/util" -import { captureStream, expectError, expectFuzzyMatch } from "../../../../src/util/testing" -import { GlobalConfigStore } from "../../../../src/config-store/global" +import { startServer } from "../../../../src/server/server.js" +import { envSupportsEmoji } from "../../../../src/logger/util.js" +import { captureStream, expectError, expectFuzzyMatch } from "../../../../src/util/testing.js" +import { GlobalConfigStore } from "../../../../src/config-store/global.js" import tmp from "tmp-promise" -import { CloudCommand } from "../../../../src/commands/cloud/cloud" -import { registerProcess } from "../../../../src/process" -import { ServeCommand } from "../../../../src/commands/serve" -import { GardenInstanceManager } from "../../../../src/server/instance-manager" -import { mkdirp } from "fs-extra" -import { uuidv4 } from "../../../../src/util/random" -import { makeDummyGarden } from "../../../../src/garden" -import { TestGardenCli } from "../../../helpers/cli" -import { NotImplementedError } from "../../../../src/exceptions" +import { CloudCommand } from "../../../../src/commands/cloud/cloud.js" +import { registerProcess } from "../../../../src/process.js" +import { ServeCommand } from "../../../../src/commands/serve.js" +import { GardenInstanceManager } from "../../../../src/server/instance-manager.js" +import fsExtra from "fs-extra" +const { mkdirp } = fsExtra +import { uuidv4 } from "../../../../src/util/random.js" +import { makeDummyGarden } from "../../../../src/garden.js" +import { TestGardenCli } from "../../../helpers/cli.js" +import { NotImplementedError } from "../../../../src/exceptions.js" import dedent from "dedent" describe("cli", () => { diff --git a/core/test/unit/src/cli/helpers.ts b/core/test/unit/src/cli/helpers.ts index d6a387d2fd..9d19db1299 100644 --- a/core/test/unit/src/cli/helpers.ts +++ b/core/test/unit/src/cli/helpers.ts @@ -8,29 +8,31 @@ import { expect } from "chai" import { readFile } from "fs/promises" -import { optionsWithAliasValues, pickCommand, processCliArgs } from "../../../../src/cli/helpers" -import { ParameterObject, StringParameter, StringsParameter } from "../../../../src/cli/params" -import { expectError } from "../../../helpers" -import { getPackageVersion } from "../../../../src/util/util" -import { GARDEN_CORE_ROOT } from "../../../../src/constants" +import { optionsWithAliasValues, pickCommand, processCliArgs } from "../../../../src/cli/helpers.js" +import type { ParameterObject } from "../../../../src/cli/params.js" +import { StringParameter, StringsParameter } from "../../../../src/cli/params.js" +import { expectError } from "../../../helpers.js" +import { getPackageVersion } from "../../../../src/util/util.js" +import { GARDEN_CORE_ROOT } from "../../../../src/constants.js" import { join } from "path" -import { TestGarden, makeTestGardenA, withDefaultGlobalOpts } from "../../../helpers" -import { DeployCommand } from "../../../../src/commands/deploy" -import { parseCliArgs } from "../../../../src/cli/helpers" -import { Log } from "../../../../src/logger/log-entry" -import { DeleteDeployCommand } from "../../../../src/commands/delete" -import { GetOutputsCommand } from "../../../../src/commands/get/get-outputs" -import { TestCommand } from "../../../../src/commands/test" -import { RunCommand } from "../../../../src/commands/run" -import { PublishCommand } from "../../../../src/commands/publish" -import { BuildCommand } from "../../../../src/commands/build" -import { Command } from "../../../../src/commands/base" -import { LogsCommand } from "../../../../src/commands/logs" -import { getBuiltinCommands } from "../../../../src/commands/commands" -import { DeepPrimitiveMap } from "../../../../src/config/common" -import { getLogLevelChoices, LogLevel, parseLogLevel } from "../../../../src/logger/logger" -import { ExecCommand } from "../../../../src/commands/exec" -import { GetRunResultCommand } from "../../../../src/commands/get/get-run-result" +import type { TestGarden } from "../../../helpers.js" +import { makeTestGardenA, withDefaultGlobalOpts } from "../../../helpers.js" +import { DeployCommand } from "../../../../src/commands/deploy.js" +import { parseCliArgs } from "../../../../src/cli/helpers.js" +import type { Log } from "../../../../src/logger/log-entry.js" +import { DeleteDeployCommand } from "../../../../src/commands/delete.js" +import { GetOutputsCommand } from "../../../../src/commands/get/get-outputs.js" +import { TestCommand } from "../../../../src/commands/test.js" +import { RunCommand } from "../../../../src/commands/run.js" +import { PublishCommand } from "../../../../src/commands/publish.js" +import { BuildCommand } from "../../../../src/commands/build.js" +import { Command } from "../../../../src/commands/base.js" +import { LogsCommand } from "../../../../src/commands/logs.js" +import { getBuiltinCommands } from "../../../../src/commands/commands.js" +import type { DeepPrimitiveMap } from "../../../../src/config/common.js" +import { getLogLevelChoices, LogLevel, parseLogLevel } from "../../../../src/logger/logger.js" +import { ExecCommand } from "../../../../src/commands/exec.js" +import { GetRunResultCommand } from "../../../../src/commands/get/get-run-result.js" const validLogLevels = getLogLevelChoices() diff --git a/core/test/unit/src/cli/params.ts b/core/test/unit/src/cli/params.ts index 66583ae2fd..9dbd61d304 100644 --- a/core/test/unit/src/cli/params.ts +++ b/core/test/unit/src/cli/params.ts @@ -7,7 +7,7 @@ */ import { expect } from "chai" -import { StringsParameter } from "../../../../src/cli/params" +import { StringsParameter } from "../../../../src/cli/params.js" describe("StringsParameter", () => { const param = new StringsParameter({ help: "" }) diff --git a/core/test/unit/src/cloud/api.ts b/core/test/unit/src/cloud/api.ts index 0c08e803bb..ac3b4e5209 100644 --- a/core/test/unit/src/cloud/api.ts +++ b/core/test/unit/src/cloud/api.ts @@ -7,12 +7,12 @@ */ import { expect } from "chai" -import { getRootLogger } from "../../../../src/logger/logger" -import { gardenEnv } from "../../../../src/constants" -import { CloudApi } from "../../../../src/cloud/api" -import { uuidv4 } from "../../../../src/util/random" -import { randomString } from "../../../../src/util/string" -import { GlobalConfigStore } from "../../../../src/config-store/global" +import { getRootLogger } from "../../../../src/logger/logger.js" +import { gardenEnv } from "../../../../src/constants.js" +import { CloudApi } from "../../../../src/cloud/api.js" +import { uuidv4 } from "../../../../src/util/random.js" +import { randomString } from "../../../../src/util/string.js" +import { GlobalConfigStore } from "../../../../src/config-store/global.js" describe("CloudApi", () => { const log = getRootLogger().createLog() diff --git a/core/test/unit/src/cloud/buffered-event-stream.ts b/core/test/unit/src/cloud/buffered-event-stream.ts index 2360dcbdd7..e0aaeccaf5 100644 --- a/core/test/unit/src/cloud/buffered-event-stream.ts +++ b/core/test/unit/src/cloud/buffered-event-stream.ts @@ -7,10 +7,11 @@ */ import { expect } from "chai" -import { StreamEvent, LogEntryEventPayload, BufferedEventStream } from "../../../../src/cloud/buffered-event-stream" -import { getRootLogger, LogLevel } from "../../../../src/logger/logger" -import { makeTestGardenA } from "../../../helpers" -import { find, isMatch, range, repeat } from "lodash" +import type { StreamEvent, LogEntryEventPayload } from "../../../../src/cloud/buffered-event-stream.js" +import { BufferedEventStream } from "../../../../src/cloud/buffered-event-stream.js" +import { getRootLogger, LogLevel } from "../../../../src/logger/logger.js" +import { makeTestGardenA } from "../../../helpers.js" +import { find, isMatch, range, repeat } from "lodash-es" function makeDummyRecord(sizeKb: number) { return { someKey: repeat("a", sizeKb * 1024) } diff --git a/core/test/unit/src/commands/base.ts b/core/test/unit/src/commands/base.ts index ab0cf9d0ba..5ebf6107e8 100644 --- a/core/test/unit/src/commands/base.ts +++ b/core/test/unit/src/commands/base.ts @@ -7,11 +7,11 @@ */ import { expect } from "chai" -import { Command, CommandGroup } from "../../../../src/commands/base" -import { StringsParameter } from "../../../../src/cli/params" +import { Command, CommandGroup } from "../../../../src/commands/base.js" +import { StringsParameter } from "../../../../src/cli/params.js" import stripAnsi from "strip-ansi" -import { dedent } from "../../../../src/util/string" -import { trimLineEnds } from "../../../helpers" +import { dedent } from "../../../../src/util/string.js" +import { trimLineEnds } from "../../../helpers.js" describe("Command", () => { describe("renderHelp", () => { diff --git a/core/test/unit/src/commands/build.ts b/core/test/unit/src/commands/build.ts index 97d85d88c9..857e27fe49 100644 --- a/core/test/unit/src/commands/build.ts +++ b/core/test/unit/src/commands/build.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { BuildCommand } from "../../../../src/commands/build" +import { BuildCommand } from "../../../../src/commands/build.js" import { expect } from "chai" import { makeModuleConfig, @@ -16,14 +16,15 @@ import { projectRootBuildDependants, testProjectTempDirs, withDefaultGlobalOpts, -} from "../../../helpers" -import { taskResultOutputs, getAllTaskResults } from "../../../helpers" -import { ModuleConfig } from "../../../../src/config/module" -import { Log } from "../../../../src/logger/log-entry" -import { writeFile } from "fs-extra" +} from "../../../helpers.js" +import { taskResultOutputs, getAllTaskResults } from "../../../helpers.js" +import type { ModuleConfig } from "../../../../src/config/module.js" +import type { Log } from "../../../../src/logger/log-entry.js" +import fsExtra from "fs-extra" +const { writeFile } = fsExtra import { join } from "path" -import { ProcessCommandResult } from "../../../../src/commands/base" -import { nodeKey } from "../../../../src/graph/modules" +import type { ProcessCommandResult } from "../../../../src/commands/base.js" +import { nodeKey } from "../../../../src/graph/modules.js" describe("BuildCommand", () => { it("should build everything in a project and output the results", async () => { @@ -38,7 +39,6 @@ describe("BuildCommand", () => { opts: withDefaultGlobalOpts({ "watch": false, "force": true, "with-dependants": false }), }) - const err = command.outputsSchema().validate(result).error expect(command.outputsSchema().validate(result).error).to.be.undefined const graph = await garden.getResolvedConfigGraph({ log, emit: false }) @@ -259,7 +259,6 @@ describe("BuildCommand", () => { it("should rebuild module if a deep dependency has been modified", async () => { let garden = await getFreshTestGarden() - let graph = await garden.getConfigGraph({ log: garden.log, emit: false }) const { result: result1 } = await buildCommand.action({ garden, @@ -273,7 +272,6 @@ describe("BuildCommand", () => { await writeFile(join(projectPath, "C/file.txt"), "module c has been modified") garden = await getFreshTestGarden() - graph = await garden.getConfigGraph({ log: garden.log, emit: false }) const { result: result2 } = await buildCommand.action({ garden: await getFreshTestGarden(), diff --git a/core/test/unit/src/commands/cloud/secrets/secrets-update.ts b/core/test/unit/src/commands/cloud/secrets/secrets-update.ts index 4f5f02356d..dc39f5f23a 100644 --- a/core/test/unit/src/commands/cloud/secrets/secrets-update.ts +++ b/core/test/unit/src/commands/cloud/secrets/secrets-update.ts @@ -7,15 +7,15 @@ */ import { expect } from "chai" -import { SecretResult } from "../../../../../../src/commands/cloud/helpers" +import type { SecretResult } from "../../../../../../src/commands/cloud/helpers.js" import { SecretsUpdateCommand, getSecretsToCreate, getSecretsToUpdateByName, -} from "../../../../../../src/commands/cloud/secrets/secrets-update" -import { StringMap } from "../../../../../../src/config/common" -import { deline } from "../../../../../../src/util/string" -import { expectError, getDataDir, makeTestGarden } from "../../../../../helpers" +} from "../../../../../../src/commands/cloud/secrets/secrets-update.js" +import type { StringMap } from "../../../../../../src/config/common.js" +import { deline } from "../../../../../../src/util/string.js" +import { expectError, getDataDir, makeTestGarden } from "../../../../../helpers.js" describe("SecretsUpdateCommand", () => { const projectRoot = getDataDir("test-project-b") @@ -92,7 +92,6 @@ describe("SecretsUpdateCommand", () => { userId: undefined, secretsToUpdateArgs, log, - args: secretsToUpdateArgs, }) const expectedSecret = allSecrets.find((a) => a.id === "2") @@ -119,7 +118,6 @@ describe("SecretsUpdateCommand", () => { userId: undefined, secretsToUpdateArgs, log, - args: secretsToUpdateArgs, }), (err) => { expect(err.message).to.eql( @@ -143,7 +141,6 @@ describe("SecretsUpdateCommand", () => { userId: "u1", secretsToUpdateArgs, log, - args: secretsToUpdateArgs, }) const expectedSecret = allSecrets.find((a) => a.id === "4") @@ -170,7 +167,6 @@ describe("SecretsUpdateCommand", () => { userId: "u1", secretsToUpdateArgs, log, - args: secretsToUpdateArgs, }) const secretsToCreate = getSecretsToCreate(secretsToUpdateArgs, secretsToUpdate) diff --git a/core/test/unit/src/commands/create/create-project.ts b/core/test/unit/src/commands/create/create-project.ts index e2b790bf48..6126ee124f 100644 --- a/core/test/unit/src/commands/create/create-project.ts +++ b/core/test/unit/src/commands/create/create-project.ts @@ -7,15 +7,20 @@ */ import { expect } from "chai" -import { withDefaultGlobalOpts, TempDirectory, makeTempDir, expectError } from "../../../../helpers" -import { CreateProjectCommand, defaultProjectConfigFilename } from "../../../../../src/commands/create/create-project" -import { makeDummyGarden } from "../../../../../src/garden" -import { Garden } from "../../../../../src/garden" +import type { TempDirectory } from "../../../../helpers.js" +import { withDefaultGlobalOpts, makeTempDir, expectError } from "../../../../helpers.js" +import { + CreateProjectCommand, + defaultProjectConfigFilename, +} from "../../../../../src/commands/create/create-project.js" +import { makeDummyGarden } from "../../../../../src/garden.js" +import type { Garden } from "../../../../../src/garden.js" import { basename, join } from "path" -import { pathExists, readFile, writeFile } from "fs-extra" +import fsExtra from "fs-extra" +const { pathExists, readFile, writeFile } = fsExtra import { loadAll } from "js-yaml" -import { safeDumpYaml } from "../../../../../src/util/serialization" -import { GardenApiVersion } from "../../../../../src/constants" +import { safeDumpYaml } from "../../../../../src/util/serialization.js" +import { GardenApiVersion } from "../../../../../src/constants.js" describe("CreateProjectCommand", () => { const command = new CreateProjectCommand() diff --git a/core/test/unit/src/commands/custom.ts b/core/test/unit/src/commands/custom.ts index 481b6310af..f180a9adb6 100644 --- a/core/test/unit/src/commands/custom.ts +++ b/core/test/unit/src/commands/custom.ts @@ -7,13 +7,14 @@ */ import { expect } from "chai" -import { BooleanParameter, IntegerParameter, StringParameter } from "../../../../src/cli/params" -import { CustomCommandWrapper } from "../../../../src/commands/custom" -import { Log } from "../../../../src/logger/log-entry" -import { expectError, TestGarden } from "../../../../src/util/testing" -import { makeTestGardenA, withDefaultGlobalOpts } from "../../../helpers" -import { GardenApiVersion } from "../../../../src/constants" -import { TestGardenCli } from "../../../helpers/cli" +import { BooleanParameter, IntegerParameter, StringParameter } from "../../../../src/cli/params.js" +import { CustomCommandWrapper } from "../../../../src/commands/custom.js" +import type { Log } from "../../../../src/logger/log-entry.js" +import type { TestGarden } from "../../../../src/util/testing.js" +import { expectError } from "../../../../src/util/testing.js" +import { makeTestGardenA, withDefaultGlobalOpts } from "../../../helpers.js" +import { GardenApiVersion } from "../../../../src/constants.js" +import { TestGardenCli } from "../../../helpers/cli.js" describe("CustomCommandWrapper", () => { let garden: TestGarden diff --git a/core/test/unit/src/commands/delete.ts b/core/test/unit/src/commands/delete.ts index 8e9faa7bcf..b0699dfc23 100644 --- a/core/test/unit/src/commands/delete.ts +++ b/core/test/unit/src/commands/delete.ts @@ -6,22 +6,22 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { DeleteEnvironmentCommand, DeleteDeployCommand } from "../../../../src/commands/delete" +import { DeleteEnvironmentCommand, DeleteDeployCommand } from "../../../../src/commands/delete.js" +import type { TestGarden } from "../../../helpers.js" import { getDataDir, customizedTestPlugin, withDefaultGlobalOpts, makeTestGarden, makeModuleConfig, - TestGarden, -} from "../../../helpers" +} from "../../../helpers.js" import { expect } from "chai" -import { EnvironmentStatus } from "../../../../src/plugin/handlers/Provider/getEnvironmentStatus" -import { ModuleConfig } from "../../../../src/config/module" -import { Log } from "../../../../src/logger/log-entry" -import { ActionStatus } from "../../../../src/actions/types" -import { joi } from "../../../../src/config/common" -import { execDeploySpecSchema } from "../../../../src/plugins/exec/deploy" +import type { EnvironmentStatus } from "../../../../src/plugin/handlers/Provider/getEnvironmentStatus.js" +import type { ModuleConfig } from "../../../../src/config/module.js" +import type { Log } from "../../../../src/logger/log-entry.js" +import type { ActionStatus } from "../../../../src/actions/types.js" +import { joi } from "../../../../src/config/common.js" +import { execDeploySpecSchema } from "../../../../src/plugins/exec/deploy.js" const projectRootB = getDataDir("test-project-b") const moduleConfigs: ModuleConfig[] = [ diff --git a/core/test/unit/src/commands/deploy.ts b/core/test/unit/src/commands/deploy.ts index 75e2e41cde..a907f278d3 100644 --- a/core/test/unit/src/commands/deploy.ts +++ b/core/test/unit/src/commands/deploy.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { DeployCommand } from "../../../../src/commands/deploy" +import { DeployCommand } from "../../../../src/commands/deploy.js" import { expect } from "chai" import { taskResultOutputs, @@ -17,12 +17,12 @@ import { testTestSchema, getAllProcessedTaskNames, getDataDir, -} from "../../../helpers" -import { getRootLogger } from "../../../../src/logger/logger" -import { ActionStatus } from "../../../../src/actions/types" -import { DeployStatus } from "../../../../src/plugin/handlers/Deploy/get-status" -import { defaultServerPort } from "../../../../src/commands/serve" -import { zodObjectToJoi } from "../../../../src/config/common" +} from "../../../helpers.js" +import { getRootLogger } from "../../../../src/logger/logger.js" +import type { ActionStatus } from "../../../../src/actions/types.js" +import type { DeployStatus } from "../../../../src/plugin/handlers/Deploy/get-status.js" +import { defaultServerPort } from "../../../../src/commands/serve.js" +import { zodObjectToJoi } from "../../../../src/config/common.js" // TODO-G2: rename test cases to match the new graph model semantics const placeholderTimestamp = new Date() diff --git a/core/test/unit/src/commands/dev.ts b/core/test/unit/src/commands/dev.ts index a37f969327..0b80add574 100644 --- a/core/test/unit/src/commands/dev.ts +++ b/core/test/unit/src/commands/dev.ts @@ -7,7 +7,7 @@ */ import { expect } from "chai" -import { DevCommand } from "../../../../src/commands/dev" +import { DevCommand } from "../../../../src/commands/dev.js" // TODO-G2: rename test cases to match the new graph model semantics describe("DevCommand", () => { diff --git a/core/test/unit/src/commands/exec.ts b/core/test/unit/src/commands/exec.ts index dc17acc9d8..1c12f4dfbf 100644 --- a/core/test/unit/src/commands/exec.ts +++ b/core/test/unit/src/commands/exec.ts @@ -7,8 +7,8 @@ */ import { expect } from "chai" -import { ExecCommand } from "../../../../src/commands/exec" -import { makeTestGardenA, withDefaultGlobalOpts } from "../../../helpers" +import { ExecCommand } from "../../../../src/commands/exec.js" +import { makeTestGardenA, withDefaultGlobalOpts } from "../../../helpers.js" describe("ExecCommand", () => { const command = new ExecCommand() diff --git a/core/test/unit/src/commands/get/get-actions-subcommands.ts b/core/test/unit/src/commands/get/get-actions-subcommands.ts index 544abb79be..97840c1d0d 100644 --- a/core/test/unit/src/commands/get/get-actions-subcommands.ts +++ b/core/test/unit/src/commands/get/get-actions-subcommands.ts @@ -6,21 +6,21 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { makeTestGarden, withDefaultGlobalOpts, getDataDir } from "../../../../helpers" -import { GetRunsCommand } from "../../../../../src/commands/get/get-runs" +import { makeTestGarden, withDefaultGlobalOpts, getDataDir } from "../../../../helpers.js" +import { GetRunsCommand } from "../../../../../src/commands/get/get-runs.js" import { expect } from "chai" import { getActionsToDetailedOutput, getActionsToDetailedWithStateOutput, getActionsToSimpleOutput, getActionsToSimpleWithStateOutput, -} from "./get-actions" -import { actionKinds } from "../../../../../src/actions/types" -import { GetBuildsCommand } from "../../../../../src/commands/get/get-builds" -import { GetTestsCommand } from "../../../../../src/commands/get/get-tests" -import { GetDeploysCommand } from "../../../../../src/commands/get/get-deploys" -import { ActionKind } from "../../../../../src/plugin/action-types" -import { sortBy } from "lodash" +} from "./get-actions.js" +import { actionKinds } from "../../../../../src/actions/types.js" +import { GetBuildsCommand } from "../../../../../src/commands/get/get-builds.js" +import { GetTestsCommand } from "../../../../../src/commands/get/get-tests.js" +import { GetDeploysCommand } from "../../../../../src/commands/get/get-deploys.js" +import type { ActionKind } from "../../../../../src/plugin/action-types.js" +import { sortBy } from "lodash-es" const getCommandInstance = ( kind: ActionKind diff --git a/core/test/unit/src/commands/get/get-actions.ts b/core/test/unit/src/commands/get/get-actions.ts index afdf577ae7..a64ecaa3b1 100644 --- a/core/test/unit/src/commands/get/get-actions.ts +++ b/core/test/unit/src/commands/get/get-actions.ts @@ -7,14 +7,15 @@ */ import { expect } from "chai" -import { getActionState, getRelativeActionConfigPath } from "../../../../../src/actions/helpers" -import { GetActionsCommand } from "../../../../../src/commands/get/get-actions" -import { TestGarden, getDataDir, makeTestGarden, withDefaultGlobalOpts } from "../../../../helpers" -import { Action } from "../../../../../src/actions/types" -import { ActionRouter } from "../../../../../src/router/router" -import { ResolvedConfigGraph } from "../../../../../src/graph/config-graph" -import { Log } from "../../../../../src/logger/log-entry" -import { sortBy } from "lodash" +import { getActionState, getRelativeActionConfigPath } from "../../../../../src/actions/helpers.js" +import { GetActionsCommand } from "../../../../../src/commands/get/get-actions.js" +import type { TestGarden } from "../../../../helpers.js" +import { getDataDir, makeTestGarden, withDefaultGlobalOpts } from "../../../../helpers.js" +import type { Action } from "../../../../../src/actions/types.js" +import type { ActionRouter } from "../../../../../src/router/router.js" +import type { ResolvedConfigGraph } from "../../../../../src/graph/config-graph.js" +import type { Log } from "../../../../../src/logger/log-entry.js" +import { sortBy } from "lodash-es" export const getActionsToSimpleOutput = (d) => { return { name: d.name, kind: d.kind, type: d.type } @@ -234,7 +235,6 @@ describe("GetActionsCommand", () => { opts: withDefaultGlobalOpts({ "detail": false, "sort": "name", "include-state": false, "kind": "deploy" }), }) const graph = await garden.getResolvedConfigGraph({ log, emit: false }) - const router = await garden.getActionRouter() const expected = sortBy(graph.getDeploys().map(getActionsToSimpleOutput), "name") expect(command.outputsSchema().validate(result).error).to.be.undefined expect(result).to.eql({ actions: expected }) @@ -252,7 +252,6 @@ describe("GetActionsCommand", () => { opts: withDefaultGlobalOpts({ "detail": false, "sort": "kind", "include-state": false, "kind": "" }), }) const graph = await garden.getResolvedConfigGraph({ log, emit: false }) - const router = await garden.getActionRouter() const expected = sortBy(graph.getActions().map(getActionsToSimpleOutput), ["kind", "name"]) expect(command.outputsSchema().validate(result).error).to.be.undefined expect(result).to.eql({ actions: expected }) @@ -270,7 +269,6 @@ describe("GetActionsCommand", () => { opts: withDefaultGlobalOpts({ "detail": false, "sort": "type", "include-state": false, "kind": "" }), }) const graph = await garden.getResolvedConfigGraph({ log, emit: false }) - const router = await garden.getActionRouter() const expected = sortBy(graph.getActions().map(getActionsToSimpleOutput), ["type", "name"]) expect(command.outputsSchema().validate(result).error).to.be.undefined expect(result).to.eql({ actions: expected }) diff --git a/core/test/unit/src/commands/get/get-config.ts b/core/test/unit/src/commands/get/get-config.ts index 79078b6b23..f7b280e5f9 100644 --- a/core/test/unit/src/commands/get/get-config.ts +++ b/core/test/unit/src/commands/get/get-config.ts @@ -7,19 +7,20 @@ */ import { expect } from "chai" -import { pick } from "lodash" -import { getDataDir, makeTestGarden, makeTestGardenA, withDefaultGlobalOpts } from "../../../../helpers" -import { GetConfigCommand } from "../../../../../src/commands/get/get-config" -import { sortBy } from "lodash" +import { pick } from "lodash-es" +import { getDataDir, makeTestGarden, makeTestGardenA, withDefaultGlobalOpts } from "../../../../helpers.js" +import { GetConfigCommand } from "../../../../../src/commands/get/get-config.js" +import { sortBy } from "lodash-es" import { DEFAULT_BUILD_TIMEOUT_SEC, DEFAULT_RUN_TIMEOUT_SEC, DEFAULT_TEST_TIMEOUT_SEC, GardenApiVersion, -} from "../../../../../src/constants" -import { defaultWorkflowResources, WorkflowConfig } from "../../../../../src/config/workflow" -import { defaultContainerLimits } from "../../../../../src/plugins/container/moduleConfig" -import { ModuleConfig } from "../../../../../src/config/module" +} from "../../../../../src/constants.js" +import type { WorkflowConfig } from "../../../../../src/config/workflow.js" +import { defaultWorkflowResources } from "../../../../../src/config/workflow.js" +import { defaultContainerLimits } from "../../../../../src/plugins/container/moduleConfig.js" +import type { ModuleConfig } from "../../../../../src/config/module.js" describe("GetConfigCommand", () => { const command = new GetConfigCommand() diff --git a/core/test/unit/src/commands/get/get-debug-info.ts b/core/test/unit/src/commands/get/get-debug-info.ts index b37479ad75..507a44cbc5 100644 --- a/core/test/unit/src/commands/get/get-debug-info.ts +++ b/core/test/unit/src/commands/get/get-debug-info.ts @@ -8,7 +8,7 @@ import { expect } from "chai" import yaml from "js-yaml" -import { makeTestGardenA, cleanProject, withDefaultGlobalOpts } from "../../../../helpers" +import { makeTestGardenA, cleanProject, withDefaultGlobalOpts } from "../../../../helpers.js" import { generateBasicDebugInfoReport, TEMP_DEBUG_ROOT, @@ -18,16 +18,17 @@ import { collectProviderDebugInfo, PROVIDER_INFO_FILENAME_NO_EXT, GetDebugInfoCommand, -} from "../../../../../src/commands/get/get-debug-info" -import { readdir, remove, pathExists, readJSON, readFile } from "fs-extra" -import { ERROR_LOG_FILENAME } from "../../../../../src/constants" +} from "../../../../../src/commands/get/get-debug-info.js" +import fsExtra from "fs-extra" +const { readdir, remove, pathExists, readJSON, readFile } = fsExtra +import { ERROR_LOG_FILENAME } from "../../../../../src/constants.js" import { join, relative, basename } from "path" -import { Garden } from "../../../../../src/garden" -import { Log } from "../../../../../src/logger/log-entry" -import { defaultConfigFilename } from "../../../../../src/util/fs" -import { makeTestGarden } from "../../../../helpers" -import { getDataDir } from "../../../../helpers" -import { defaultProjectConfigFilename } from "../../../../../src/commands/create/create-project" +import type { Garden } from "../../../../../src/garden.js" +import type { Log } from "../../../../../src/logger/log-entry.js" +import { defaultConfigFilename } from "../../../../../src/util/fs.js" +import { makeTestGarden } from "../../../../helpers.js" +import { getDataDir } from "../../../../helpers.js" +import { defaultProjectConfigFilename } from "../../../../../src/commands/create/create-project.js" const debugZipFileRegex = new RegExp(/debug-info-.*?.zip/) diff --git a/core/test/unit/src/commands/get/get-graph.ts b/core/test/unit/src/commands/get/get-graph.ts index 5e80602e5e..98ef7e5902 100644 --- a/core/test/unit/src/commands/get/get-graph.ts +++ b/core/test/unit/src/commands/get/get-graph.ts @@ -7,8 +7,8 @@ */ import { expect } from "chai" -import { getDataDir, makeTestGarden, withDefaultGlobalOpts } from "../../../../helpers" -import { GetGraphCommand } from "../../../../../src/commands/get/get-graph" +import { getDataDir, makeTestGarden, withDefaultGlobalOpts } from "../../../../helpers.js" +import { GetGraphCommand } from "../../../../../src/commands/get/get-graph.js" describe("GetGraphCommand", () => { // TODO: Switch to a stable topological sorting algorithm that's more amenable to testing. diff --git a/core/test/unit/src/commands/get/get-linked-repos.ts b/core/test/unit/src/commands/get/get-linked-repos.ts index 4016731744..d3e8883cf0 100644 --- a/core/test/unit/src/commands/get/get-linked-repos.ts +++ b/core/test/unit/src/commands/get/get-linked-repos.ts @@ -8,19 +8,19 @@ import { expect } from "chai" import { join } from "path" +import type { TestGarden } from "../../../../helpers.js" import { resetLocalConfig, getDataDir, withDefaultGlobalOpts, makeExtModuleSourcesGarden, makeExtProjectSourcesGarden, - TestGarden, makeExtActionSourcesGarden, -} from "../../../../helpers" -import { LinkSourceCommand } from "../../../../../src/commands/link/source" -import { LinkModuleCommand } from "../../../../../src/commands/link/module" -import { GetLinkedReposCommand } from "../../../../../src/commands/get/get-linked-repos" -import { LinkActionCommand } from "../../../../../src/commands/link/action" +} from "../../../../helpers.js" +import { LinkSourceCommand } from "../../../../../src/commands/link/source.js" +import { LinkModuleCommand } from "../../../../../src/commands/link/module.js" +import { GetLinkedReposCommand } from "../../../../../src/commands/get/get-linked-repos.js" +import { LinkActionCommand } from "../../../../../src/commands/link/action.js" describe("GetLinkedReposCommand", () => { let garden: TestGarden diff --git a/core/test/unit/src/commands/get/get-modules.ts b/core/test/unit/src/commands/get/get-modules.ts index bfc95fbc27..299b072ed1 100644 --- a/core/test/unit/src/commands/get/get-modules.ts +++ b/core/test/unit/src/commands/get/get-modules.ts @@ -7,10 +7,10 @@ */ import { expect } from "chai" -import { keyBy, mapValues } from "lodash" -import { makeTestGardenA, withDefaultGlobalOpts } from "../../../../helpers" -import { GetModulesCommand } from "../../../../../src/commands/get/get-modules" -import { withoutInternalFields } from "../../../../../src/util/logging" +import { keyBy, mapValues } from "lodash-es" +import { makeTestGardenA, withDefaultGlobalOpts } from "../../../../helpers.js" +import { GetModulesCommand } from "../../../../../src/commands/get/get-modules.js" +import { withoutInternalFields } from "../../../../../src/util/logging.js" describe("GetModulesCommand", () => { const command = new GetModulesCommand() diff --git a/core/test/unit/src/commands/get/get-outputs.ts b/core/test/unit/src/commands/get/get-outputs.ts index 22a220cd22..91520573e1 100644 --- a/core/test/unit/src/commands/get/get-outputs.ts +++ b/core/test/unit/src/commands/get/get-outputs.ts @@ -7,11 +7,11 @@ */ import { expect } from "chai" -import tmp from "tmp-promise" -import { withDefaultGlobalOpts, TestGarden, createProjectConfig, makeTempDir } from "../../../../helpers" -import { GetOutputsCommand } from "../../../../../src/commands/get/get-outputs" -import { ProjectConfig } from "../../../../../src/config/project" -import { createGardenPlugin } from "../../../../../src/plugin/plugin" +import type tmp from "tmp-promise" +import { withDefaultGlobalOpts, TestGarden, createProjectConfig, makeTempDir } from "../../../../helpers.js" +import { GetOutputsCommand } from "../../../../../src/commands/get/get-outputs.js" +import type { ProjectConfig } from "../../../../../src/config/project.js" +import { createGardenPlugin } from "../../../../../src/plugin/plugin.js" describe("GetOutputsCommand", () => { let tmpDir: tmp.DirectoryResult diff --git a/core/test/unit/src/commands/get/get-run-result.ts b/core/test/unit/src/commands/get/get-run-result.ts index d9b797cb4e..79b370816e 100644 --- a/core/test/unit/src/commands/get/get-run-result.ts +++ b/core/test/unit/src/commands/get/get-run-result.ts @@ -7,20 +7,15 @@ */ import { join } from "path" -import { - expectError, - withDefaultGlobalOpts, - cleanProject, - TestGarden, - makeTestGarden, - getDataDir, -} from "../../../../helpers" -import { GetRunResultCommand } from "../../../../../src/commands/get/get-run-result" +import type { TestGarden } from "../../../../helpers.js" +import { expectError, withDefaultGlobalOpts, cleanProject, makeTestGarden, getDataDir } from "../../../../helpers.js" +import { GetRunResultCommand } from "../../../../../src/commands/get/get-run-result.js" import { expect } from "chai" -import { Log } from "../../../../../src/logger/log-entry" -import { getArtifactKey } from "../../../../../src/util/artifacts" -import { writeFile } from "fs-extra" -import { GetRunResult } from "../../../../../src/plugin/handlers/Run/get-result" +import type { Log } from "../../../../../src/logger/log-entry.js" +import { getArtifactKey } from "../../../../../src/util/artifacts.js" +import fsExtra from "fs-extra" +const { writeFile } = fsExtra +import type { GetRunResult } from "../../../../../src/plugin/handlers/Run/get-result.js" const now = new Date() diff --git a/core/test/unit/src/commands/get/get-status.ts b/core/test/unit/src/commands/get/get-status.ts index ecc7e9f1e8..182b17589c 100644 --- a/core/test/unit/src/commands/get/get-status.ts +++ b/core/test/unit/src/commands/get/get-status.ts @@ -6,12 +6,12 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { makeTestGardenA } from "../../../../helpers" -import { GetStatusCommand } from "../../../../../src/commands/get/get-status" -import { withDefaultGlobalOpts } from "../../../../helpers" +import { makeTestGardenA } from "../../../../helpers.js" +import { GetStatusCommand } from "../../../../../src/commands/get/get-status.js" +import { withDefaultGlobalOpts } from "../../../../helpers.js" import { expect } from "chai" -import { LogLevel } from "../../../../../src/logger/logger" -import { getLogMessages } from "../../../../../src/util/testing" +import { LogLevel } from "../../../../../src/logger/logger.js" +import { getLogMessages } from "../../../../../src/util/testing.js" describe("GetStatusCommand", () => { const command = new GetStatusCommand() diff --git a/core/test/unit/src/commands/get/get-test-result.ts b/core/test/unit/src/commands/get/get-test-result.ts index f8c1d67279..bba27eac0e 100644 --- a/core/test/unit/src/commands/get/get-test-result.ts +++ b/core/test/unit/src/commands/get/get-test-result.ts @@ -6,14 +6,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { expectError, withDefaultGlobalOpts, makeTestGardenA, cleanProject, TestGarden } from "../../../../helpers" -import { GetTestResultCommand } from "../../../../../src/commands/get/get-test-result" +import type { TestGarden } from "../../../../helpers.js" +import { expectError, withDefaultGlobalOpts, makeTestGardenA, cleanProject } from "../../../../helpers.js" +import { GetTestResultCommand } from "../../../../../src/commands/get/get-test-result.js" import { expect } from "chai" -import { Log } from "../../../../../src/logger/log-entry" -import { getArtifactKey } from "../../../../../src/util/artifacts" +import type { Log } from "../../../../../src/logger/log-entry.js" +import { getArtifactKey } from "../../../../../src/util/artifacts.js" import { join } from "path" -import { writeFile } from "fs-extra" -import { GetTestResult } from "../../../../../src/plugin/handlers/Test/get-result" +import fsExtra from "fs-extra" +const { writeFile } = fsExtra +import type { GetTestResult } from "../../../../../src/plugin/handlers/Test/get-result.js" const now = new Date() diff --git a/core/test/unit/src/commands/get/get-workflows.ts b/core/test/unit/src/commands/get/get-workflows.ts index 0159123d0f..00b8f4331a 100644 --- a/core/test/unit/src/commands/get/get-workflows.ts +++ b/core/test/unit/src/commands/get/get-workflows.ts @@ -6,11 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { makeTestGarden, withDefaultGlobalOpts, getDataDir } from "../../../../helpers" +import { makeTestGarden, withDefaultGlobalOpts, getDataDir } from "../../../../helpers.js" import { expect } from "chai" -import { GetWorkflowsCommand } from "../../../../../src/commands/get/get-workflows" -import { defaultWorkflowResources } from "../../../../../src/config/workflow" -import { GardenApiVersion } from "../../../../../src/constants" +import { GetWorkflowsCommand } from "../../../../../src/commands/get/get-workflows.js" +import { defaultWorkflowResources } from "../../../../../src/config/workflow.js" +import { GardenApiVersion } from "../../../../../src/constants.js" describe("GetWorkflowsCommand", () => { const projectRoot = getDataDir("test-project-a") diff --git a/core/test/unit/src/commands/helpers.ts b/core/test/unit/src/commands/helpers.ts index e309c9555d..e8b6041650 100644 --- a/core/test/unit/src/commands/helpers.ts +++ b/core/test/unit/src/commands/helpers.ts @@ -7,10 +7,10 @@ */ import { expect } from "chai" -import { validateActionSearchResults } from "../../../../src/commands/helpers" -import { getRootLogger } from "../../../../src/logger/logger" -import { initTestLogger } from "../../../helpers" -import { expectError } from "../../../helpers" +import { validateActionSearchResults } from "../../../../src/commands/helpers.js" +import { getRootLogger } from "../../../../src/logger/logger.js" +import { initTestLogger } from "../../../helpers.js" +import { expectError } from "../../../helpers.js" describe("command helpers", () => { initTestLogger() diff --git a/core/test/unit/src/commands/link.ts b/core/test/unit/src/commands/link.ts index 2d102c23ab..1b50043d3b 100644 --- a/core/test/unit/src/commands/link.ts +++ b/core/test/unit/src/commands/link.ts @@ -9,7 +9,7 @@ import { expect } from "chai" import { join, resolve } from "path" -import { LinkModuleCommand } from "../../../../src/commands/link/module" +import { LinkModuleCommand } from "../../../../src/commands/link/module.js" import { getDataDir, expectError, @@ -18,12 +18,13 @@ import { makeExtModuleSourcesGarden, resetLocalConfig, makeExtActionSourcesGarden, -} from "../../../helpers" -import { LinkSourceCommand } from "../../../../src/commands/link/source" -import { Garden } from "../../../../src/garden" -import { Log } from "../../../../src/logger/log-entry" -import { copy } from "fs-extra" -import { LinkActionCommand } from "../../../../src/commands/link/action" +} from "../../../helpers.js" +import { LinkSourceCommand } from "../../../../src/commands/link/source.js" +import type { Garden } from "../../../../src/garden.js" +import type { Log } from "../../../../src/logger/log-entry.js" +import fsExtra from "fs-extra" +const { copy } = fsExtra +import { LinkActionCommand } from "../../../../src/commands/link/action.js" describe("LinkCommand", () => { let garden: Garden diff --git a/core/test/unit/src/commands/login.ts b/core/test/unit/src/commands/login.ts index dc5e1d11ba..3021a09b9e 100644 --- a/core/test/unit/src/commands/login.ts +++ b/core/test/unit/src/commands/login.ts @@ -7,27 +7,21 @@ */ import { expect } from "chai" -import td from "testdouble" -import { - expectError, - getDataDir, - makeTempDir, - makeTestGarden, - TempDirectory, - withDefaultGlobalOpts, -} from "../../../helpers" -import { AuthRedirectServer } from "../../../../src/cloud/auth" - -import { LoginCommand } from "../../../../src/commands/login" -import { dedent, randomString } from "../../../../src/util/string" -import { CloudApi } from "../../../../src/cloud/api" -import { LogLevel } from "../../../../src/logger/logger" -import { DEFAULT_GARDEN_CLOUD_DOMAIN, gardenEnv } from "../../../../src/constants" -import { CloudApiError } from "../../../../src/exceptions" -import { getLogMessages } from "../../../../src/util/testing" -import { GlobalConfigStore } from "../../../../src/config-store/global" -import { makeDummyGarden } from "../../../../src/garden" -import { Garden } from "../../../../src" +import * as td from "testdouble" +import type { TempDirectory } from "../../../helpers.js" +import { expectError, getDataDir, makeTempDir, makeTestGarden, withDefaultGlobalOpts } from "../../../helpers.js" +import { AuthRedirectServer } from "../../../../src/cloud/auth.js" + +import { LoginCommand } from "../../../../src/commands/login.js" +import { dedent, randomString } from "../../../../src/util/string.js" +import { CloudApi } from "../../../../src/cloud/api.js" +import { LogLevel } from "../../../../src/logger/logger.js" +import { DEFAULT_GARDEN_CLOUD_DOMAIN, gardenEnv } from "../../../../src/constants.js" +import { CloudApiError } from "../../../../src/exceptions.js" +import { getLogMessages } from "../../../../src/util/testing.js" +import { GlobalConfigStore } from "../../../../src/config-store/global.js" +import { makeDummyGarden } from "../../../../src/garden.js" +import type { Garden } from "../../../../src/index.js" function loginCommandParams({ garden, opts = { "disable-project-check": false } }: { garden: Garden; opts?: any }) { const log = garden.log @@ -46,7 +40,6 @@ function loginCommandParams({ garden, opts = { "disable-project-check": false } describe("LoginCommand", () => { let tmpDir: TempDirectory let globalConfigStore: GlobalConfigStore - const loginOpts = { "disable-project-check": false } beforeEach(async () => { td.replace(AuthRedirectServer.prototype, "start", async () => {}) diff --git a/core/test/unit/src/commands/logout.ts b/core/test/unit/src/commands/logout.ts index 9a799e6ce2..92bffe8886 100644 --- a/core/test/unit/src/commands/logout.ts +++ b/core/test/unit/src/commands/logout.ts @@ -7,18 +7,19 @@ */ import { expect } from "chai" -import td from "testdouble" -import { getDataDir, makeTempDir, makeTestGarden, TempDirectory, withDefaultGlobalOpts } from "../../../helpers" -import { randomString } from "../../../../src/util/string" -import { CloudApi } from "../../../../src/cloud/api" -import { LogLevel } from "../../../../src/logger/logger" -import { LogOutCommand } from "../../../../src/commands/logout" -import { expectError, getLogMessages } from "../../../../src/util/testing" -import { DEFAULT_GARDEN_CLOUD_DOMAIN, gardenEnv } from "../../../../src/constants" - -import { GlobalConfigStore } from "../../../../src/config-store/global" -import { Garden } from "../../../../src" -import { makeDummyGarden } from "../../../../src/garden" +import * as td from "testdouble" +import type { TempDirectory } from "../../../helpers.js" +import { getDataDir, makeTempDir, makeTestGarden, withDefaultGlobalOpts } from "../../../helpers.js" +import { randomString } from "../../../../src/util/string.js" +import { CloudApi } from "../../../../src/cloud/api.js" +import { LogLevel } from "../../../../src/logger/logger.js" +import { LogOutCommand } from "../../../../src/commands/logout.js" +import { expectError, getLogMessages } from "../../../../src/util/testing.js" +import { DEFAULT_GARDEN_CLOUD_DOMAIN, gardenEnv } from "../../../../src/constants.js" + +import { GlobalConfigStore } from "../../../../src/config-store/global.js" +import type { Garden } from "../../../../src/index.js" +import { makeDummyGarden } from "../../../../src/garden.js" function logoutCommandParams({ garden, opts = { "disable-project-check": false } }: { garden: Garden; opts?: any }) { const log = garden.log diff --git a/core/test/unit/src/commands/logs.ts b/core/test/unit/src/commands/logs.ts index e0ef313c16..6fb84fa253 100644 --- a/core/test/unit/src/commands/logs.ts +++ b/core/test/unit/src/commands/logs.ts @@ -6,33 +6,33 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import tmp from "tmp-promise" +import type tmp from "tmp-promise" import { expect } from "chai" -import { Garden } from "../../../../src" -import { LogsCommand } from "../../../../src/commands/logs" -import { ProjectConfig } from "../../../../src/config/project" -import { GardenPluginSpec } from "../../../../src/plugin/plugin" -import { TestGarden } from "../../../../src/util/testing" +import type { Garden } from "../../../../src/index.js" +import { LogsCommand } from "../../../../src/commands/logs.js" +import type { ProjectConfig } from "../../../../src/config/project.js" +import type { GardenPluginSpec } from "../../../../src/plugin/plugin.js" +import { TestGarden } from "../../../../src/util/testing.js" import { createProjectConfig, customizedTestPlugin, expectError, makeTempDir, withDefaultGlobalOpts, -} from "../../../helpers" -import { DEFAULT_DEPLOY_TIMEOUT_SEC, GardenApiVersion } from "../../../../src/constants" -import { formatForTerminal } from "../../../../src/logger/renderers" +} from "../../../helpers.js" +import { DEFAULT_DEPLOY_TIMEOUT_SEC, GardenApiVersion } from "../../../../src/constants.js" +import { formatForTerminal } from "../../../../src/logger/renderers.js" import chalk from "chalk" -import { LogEntry } from "../../../../src/logger/log-entry" -import { LogLevel } from "../../../../src/logger/logger" -import { DeployLogEntry } from "../../../../src/types/service" -import { GetDeployLogs } from "../../../../src/plugin/handlers/Deploy/get-logs" -import { BaseActionConfig } from "../../../../src/actions/types" -import { LogMonitor, logMonitorColors } from "../../../../src/monitors/logs" +import type { LogEntry } from "../../../../src/logger/log-entry.js" +import { LogLevel } from "../../../../src/logger/logger.js" +import type { DeployLogEntry } from "../../../../src/types/service.js" +import type { GetDeployLogs } from "../../../../src/plugin/handlers/Deploy/get-logs.js" +import type { BaseActionConfig } from "../../../../src/actions/types.js" +import { LogMonitor } from "../../../../src/monitors/logs.js" import stripAnsi from "strip-ansi" -import { execDeploySpecSchema } from "../../../../src/plugins/exec/deploy" -import { joi } from "../../../../src/config/common" -import { ActionTypeHandlerParamsType } from "../../../../src/plugin/handlers/base/base" +import { execDeploySpecSchema } from "../../../../src/plugins/exec/deploy.js" +import { joi } from "../../../../src/config/common.js" +import type { ActionTypeHandlerParamsType } from "../../../../src/plugin/handlers/base/base.js" // TODO-G2: rename test cases to match the new graph model semantics @@ -97,7 +97,6 @@ describe("LogsCommand", () => { const msgColor = chalk.bgRedBright const logMsg = "Yes, this is log" const logMsgWithColor = msgColor(logMsg) - const color = chalk[logMonitorColors[0]] type GetDeployLogsParams = ActionTypeHandlerParamsType diff --git a/core/test/unit/src/commands/plugins.ts b/core/test/unit/src/commands/plugins.ts index 9da205aa66..0826d794de 100644 --- a/core/test/unit/src/commands/plugins.ts +++ b/core/test/unit/src/commands/plugins.ts @@ -6,17 +6,19 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { PluginsCommand } from "../../../../src/commands/plugins" -import { withDefaultGlobalOpts, TestGarden, makeTempDir, TempDirectory } from "../../../helpers" -import { createGardenPlugin } from "../../../../src/plugin/plugin" -import { writeFile } from "fs-extra" +import { PluginsCommand } from "../../../../src/commands/plugins.js" +import type { TempDirectory } from "../../../helpers.js" +import { withDefaultGlobalOpts, TestGarden, makeTempDir } from "../../../helpers.js" +import { createGardenPlugin } from "../../../../src/plugin/plugin.js" +import fsExtra from "fs-extra" +const { writeFile } = fsExtra import { join } from "path" -import { dedent } from "../../../../src/util/string" -import { LogLevel } from "../../../../src/logger/logger" +import { dedent } from "../../../../src/util/string.js" +import { LogLevel } from "../../../../src/logger/logger.js" import { expect } from "chai" import chalk from "chalk" -import { getLogMessages } from "../../../../src/util/testing" -import _loggerUtil = require("../../../../src/logger/util") +import { getLogMessages } from "../../../../src/util/testing.js" +import * as _loggerUtil from "../../../../src/logger/util.js" describe("PluginsCommand", () => { let tmpDir: TempDirectory @@ -69,13 +71,13 @@ describe("PluginsCommand", () => { ` ) - _loggerUtil.overrideTerminalWidth = 100 + _loggerUtil.overrideTerminalWidth(100) chalk.level = 0 }) after(async () => { await tmpDir.cleanup() - _loggerUtil.overrideTerminalWidth = undefined + _loggerUtil.overrideTerminalWidth(undefined) chalk.level = chalkLevel }) diff --git a/core/test/unit/src/commands/publish.ts b/core/test/unit/src/commands/publish.ts index 749337cf7a..266917e4e1 100644 --- a/core/test/unit/src/commands/publish.ts +++ b/core/test/unit/src/commands/publish.ts @@ -9,18 +9,19 @@ import chalk from "chalk" import { it } from "mocha" import { expect } from "chai" -import { PublishCommand } from "../../../../src/commands/publish" -import { withDefaultGlobalOpts, makeTestGarden, getAllTaskResults, getDataDir } from "../../../helpers" -import { taskResultOutputs } from "../../../helpers" +import { PublishCommand } from "../../../../src/commands/publish.js" +import { withDefaultGlobalOpts, makeTestGarden, getAllTaskResults, getDataDir } from "../../../helpers.js" +import { taskResultOutputs } from "../../../helpers.js" import cloneDeep from "fast-copy" -import { PublishActionResult, PublishBuildAction } from "../../../../src/plugin/handlers/Build/publish" -import { createGardenPlugin, GardenPluginSpec } from "../../../../src/plugin/plugin" -import { ConvertModuleParams } from "../../../../src/plugin/handlers/Module/convert" -import { PublishTask } from "../../../../src/tasks/publish" -import { joi } from "../../../../src/config/common" -import { execBuildSpecSchema } from "../../../../src/plugins/exec/build" -import { ActionTypeHandlerParamsType } from "../../../../src/plugin/handlers/base/base" +import type { PublishActionResult, PublishBuildAction } from "../../../../src/plugin/handlers/Build/publish.js" +import type { GardenPluginSpec } from "../../../../src/plugin/plugin.js" +import { createGardenPlugin } from "../../../../src/plugin/plugin.js" +import type { ConvertModuleParams } from "../../../../src/plugin/handlers/Module/convert.js" +import { PublishTask } from "../../../../src/tasks/publish.js" +import { joi } from "../../../../src/config/common.js" +import { execBuildSpecSchema } from "../../../../src/plugins/exec/build.js" +import type { ActionTypeHandlerParamsType } from "../../../../src/plugin/handlers/base/base.js" const projectRootB = getDataDir("test-project-b") diff --git a/core/test/unit/src/commands/run.ts b/core/test/unit/src/commands/run.ts index 2fb1f46998..417012cc7d 100644 --- a/core/test/unit/src/commands/run.ts +++ b/core/test/unit/src/commands/run.ts @@ -7,18 +7,12 @@ */ import { expect } from "chai" -import { RunCommand } from "../../../../src/commands/run" -import { - TestGarden, - expectError, - getAllProcessedTaskNames, - makeTestGarden, - getDataDir, - makeTestGardenA, -} from "../../../helpers" -import { expectLogsContain, getLogMessages } from "../../../../src/util/testing" -import { LogLevel } from "../../../../src/logger/logger" -import { DEFAULT_RUN_TIMEOUT_SEC } from "../../../../src/constants" +import { RunCommand } from "../../../../src/commands/run.js" +import type { TestGarden } from "../../../helpers.js" +import { expectError, getAllProcessedTaskNames, makeTestGarden, getDataDir, makeTestGardenA } from "../../../helpers.js" +import { expectLogsContain, getLogMessages } from "../../../../src/util/testing.js" +import { LogLevel } from "../../../../src/logger/logger.js" +import { DEFAULT_RUN_TIMEOUT_SEC } from "../../../../src/constants.js" // TODO-G2: fill in test implementations. use TestCommand tests for reference. diff --git a/core/test/unit/src/commands/self-update.ts b/core/test/unit/src/commands/self-update.ts index 8b12abda7b..9c278c9ed2 100644 --- a/core/test/unit/src/commands/self-update.ts +++ b/core/test/unit/src/commands/self-update.ts @@ -9,25 +9,26 @@ import finalhandler from "finalhandler" import serveStatic from "serve-static" import { expect } from "chai" -import { readdir } from "fs-extra" +import fsExtra from "fs-extra" +const { readdir } = fsExtra import getPort from "get-port" import { dirname } from "path" -import { ParameterValues } from "../../../../src/cli/params" +import type { ParameterValues } from "../../../../src/cli/params.js" +import type { Pagination, SelfUpdateArgs, SelfUpdateOpts, VersionScope } from "../../../../src/commands/self-update.js" import { findRelease, isEdgeVersion, isPreReleaseVersion, - Pagination, - SelfUpdateArgs, SelfUpdateCommand, - SelfUpdateOpts, - VersionScope, -} from "../../../../src/commands/self-update" -import { DummyGarden, makeDummyGarden } from "../../../../src/garden" -import { makeTempDir, TempDirectory } from "../../../../src/util/fs" -import { getPackageVersion } from "../../../../src/util/util" -import { expectError, getDataDir, withDefaultGlobalOpts } from "../../../helpers" -import { createServer, Server } from "http" +} from "../../../../src/commands/self-update.js" +import type { DummyGarden } from "../../../../src/garden.js" +import { makeDummyGarden } from "../../../../src/garden.js" +import type { TempDirectory } from "../../../../src/util/fs.js" +import { makeTempDir } from "../../../../src/util/fs.js" +import { getPackageVersion } from "../../../../src/util/util.js" +import { expectError, getDataDir, withDefaultGlobalOpts } from "../../../helpers.js" +import type { Server } from "http" +import { createServer } from "http" import semver from "semver" import nock from "nock" diff --git a/core/test/unit/src/commands/set.ts b/core/test/unit/src/commands/set.ts index bce880734c..51dbcde10f 100644 --- a/core/test/unit/src/commands/set.ts +++ b/core/test/unit/src/commands/set.ts @@ -7,9 +7,10 @@ */ import { expect } from "chai" -import { SetDefaultEnvCommand } from "../../../../src/commands/set" -import { Log } from "../../../../src/logger/log-entry" -import { TestGarden, expectError, makeTestGardenA, withDefaultGlobalOpts } from "../../../helpers" +import { SetDefaultEnvCommand } from "../../../../src/commands/set.js" +import type { Log } from "../../../../src/logger/log-entry.js" +import type { TestGarden } from "../../../helpers.js" +import { expectError, makeTestGardenA, withDefaultGlobalOpts } from "../../../helpers.js" describe("SetDefaultEnvCommand", () => { const command = new SetDefaultEnvCommand() diff --git a/core/test/unit/src/commands/test.ts b/core/test/unit/src/commands/test.ts index 17ebb167b9..3100db2156 100644 --- a/core/test/unit/src/commands/test.ts +++ b/core/test/unit/src/commands/test.ts @@ -7,18 +7,18 @@ */ import { expect } from "chai" -import { TestCommand } from "../../../../src/commands/test" +import { TestCommand } from "../../../../src/commands/test.js" +import type { TestGarden } from "../../../helpers.js" import { makeModuleConfig, makeTestGardenA, taskResultOutputs, - TestGarden, withDefaultGlobalOpts, expectError, getAllProcessedTaskNames, -} from "../../../helpers" -import { ModuleConfig } from "../../../../src/config/module" -import { Log } from "../../../../src/logger/log-entry" +} from "../../../helpers.js" +import type { ModuleConfig } from "../../../../src/config/module.js" +import type { Log } from "../../../../src/logger/log-entry.js" describe("TestCommand", () => { const command = new TestCommand() diff --git a/core/test/unit/src/commands/tools.ts b/core/test/unit/src/commands/tools.ts index 93df3a2daa..cd530eb204 100644 --- a/core/test/unit/src/commands/tools.ts +++ b/core/test/unit/src/commands/tools.ts @@ -6,24 +6,24 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { getPlatform, getArchitecture } from "../../../../src/util/util" +import { getPlatform, getArchitecture } from "../../../../src/util/util.js" +import type { TempDirectory } from "../../../helpers.js" import { makeTempDir, - TempDirectory, TestGarden, withDefaultGlobalOpts, expectError, createProjectConfig, getDataDir, -} from "../../../helpers" +} from "../../../helpers.js" import { expect } from "chai" -import { createGardenPlugin } from "../../../../src/plugin/plugin" -import { ToolsCommand } from "../../../../src/commands/tools" -import { LogLevel } from "../../../../src/logger/logger" -import { dedent } from "../../../../src/util/string" -import { Log } from "../../../../src/logger/log-entry" -import { makeDummyGarden } from "../../../../src/garden" -import { getLogMessages } from "../../../../src/util/testing" +import { createGardenPlugin } from "../../../../src/plugin/plugin.js" +import { ToolsCommand } from "../../../../src/commands/tools.js" +import { LogLevel } from "../../../../src/logger/logger.js" +import { dedent } from "../../../../src/util/string.js" +import type { Log } from "../../../../src/logger/log-entry.js" +import { makeDummyGarden } from "../../../../src/garden.js" +import { getLogMessages } from "../../../../src/util/testing.js" describe("ToolsCommand", () => { let tmpDir: TempDirectory diff --git a/core/test/unit/src/commands/unlink.ts b/core/test/unit/src/commands/unlink.ts index 5d12605e04..7e00683fc8 100644 --- a/core/test/unit/src/commands/unlink.ts +++ b/core/test/unit/src/commands/unlink.ts @@ -9,8 +9,8 @@ import { expect } from "chai" import { join } from "path" -import { LinkModuleCommand } from "../../../../src/commands/link/module" -import { UnlinkModuleCommand } from "../../../../src/commands/unlink/module" +import { LinkModuleCommand } from "../../../../src/commands/link/module.js" +import { UnlinkModuleCommand } from "../../../../src/commands/unlink/module.js" import { getDataDir, withDefaultGlobalOpts, @@ -18,13 +18,13 @@ import { makeExtModuleSourcesGarden, resetLocalConfig, makeExtActionSourcesGarden, -} from "../../../helpers" -import { LinkSourceCommand } from "../../../../src/commands/link/source" -import { UnlinkSourceCommand } from "../../../../src/commands/unlink/source" -import { Garden } from "../../../../src/garden" -import { Log } from "../../../../src/logger/log-entry" -import { LinkActionCommand } from "../../../../src/commands/link/action" -import { UnlinkActionCommand } from "../../../../src/commands/unlink/action" +} from "../../../helpers.js" +import { LinkSourceCommand } from "../../../../src/commands/link/source.js" +import { UnlinkSourceCommand } from "../../../../src/commands/unlink/source.js" +import type { Garden } from "../../../../src/garden.js" +import type { Log } from "../../../../src/logger/log-entry.js" +import { LinkActionCommand } from "../../../../src/commands/link/action.js" +import { UnlinkActionCommand } from "../../../../src/commands/unlink/action.js" describe("UnlinkCommand", () => { let garden: Garden diff --git a/core/test/unit/src/commands/update-remote.ts b/core/test/unit/src/commands/update-remote.ts index 92503d440f..892ada167c 100644 --- a/core/test/unit/src/commands/update-remote.ts +++ b/core/test/unit/src/commands/update-remote.ts @@ -6,10 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import td from "testdouble" +import * as td from "testdouble" import { expect } from "chai" import { join } from "path" -import { mkdirp, pathExists } from "fs-extra" +import fsExtra from "fs-extra" +const { mkdirp, pathExists } = fsExtra import { expectError, @@ -17,12 +18,12 @@ import { makeExtProjectSourcesGarden, makeExtModuleSourcesGarden, makeExtActionSourcesGarden, -} from "../../../helpers" -import { UpdateRemoteSourcesCommand } from "../../../../src/commands/update-remote/sources" -import { UpdateRemoteModulesCommand } from "../../../../src/commands/update-remote/modules" -import { Garden } from "../../../../src/garden" -import { Log } from "../../../../src/logger/log-entry" -import { UpdateRemoteActionsCommand } from "../../../../src/commands/update-remote/actions" +} from "../../../helpers.js" +import { UpdateRemoteSourcesCommand } from "../../../../src/commands/update-remote/sources.js" +import { UpdateRemoteModulesCommand } from "../../../../src/commands/update-remote/modules.js" +import type { Garden } from "../../../../src/garden.js" +import type { Log } from "../../../../src/logger/log-entry.js" +import { UpdateRemoteActionsCommand } from "../../../../src/commands/update-remote/actions.js" function withDefaultOpts(opts: any) { return withDefaultGlobalOpts({ parallel: false, ...opts }) diff --git a/core/test/unit/src/commands/util/fetch-tools.ts b/core/test/unit/src/commands/util/fetch-tools.ts index 144e8cf8ce..2b4bedd9fb 100644 --- a/core/test/unit/src/commands/util/fetch-tools.ts +++ b/core/test/unit/src/commands/util/fetch-tools.ts @@ -6,19 +6,19 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { getPlatform, getArchitecture } from "../../../../../src/util/util" +import { getPlatform, getArchitecture } from "../../../../../src/util/util.js" +import type { TempDirectory } from "../../../../helpers.js" import { createProjectConfig, makeTempDir, makeTempGarden, - TempDirectory, TestGarden, withDefaultGlobalOpts, -} from "../../../../helpers" -import { FetchToolsCommand } from "../../../../../src/commands/util/fetch-tools" +} from "../../../../helpers.js" +import { FetchToolsCommand } from "../../../../../src/commands/util/fetch-tools.js" import { expect } from "chai" -import { GARDEN_GLOBAL_PATH } from "../../../../../src/constants" -import { createGardenPlugin } from "../../../../../src/plugin/plugin" +import { GARDEN_GLOBAL_PATH } from "../../../../../src/constants.js" +import { createGardenPlugin } from "../../../../../src/plugin/plugin.js" import { join } from "path" describe("FetchToolsCommand", () => { diff --git a/core/test/unit/src/commands/util/hide-warning.ts b/core/test/unit/src/commands/util/hide-warning.ts index 4f5d638c61..0abee9551d 100644 --- a/core/test/unit/src/commands/util/hide-warning.ts +++ b/core/test/unit/src/commands/util/hide-warning.ts @@ -6,11 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { withDefaultGlobalOpts, projectRootA, makeTestGarden } from "../../../../helpers" +import { withDefaultGlobalOpts, projectRootA, makeTestGarden } from "../../../../helpers.js" import { expect } from "chai" -import { HideWarningCommand } from "../../../../../src/commands/util/hide-warning" -import { randomString } from "../../../../../src/util/string" -import { getLogMessages } from "../../../../../src/util/testing" +import { HideWarningCommand } from "../../../../../src/commands/util/hide-warning.js" +import { randomString } from "../../../../../src/util/string.js" +import { getLogMessages } from "../../../../../src/util/testing.js" describe("HideWarningCommand", () => { it("should hide a warning message", async () => { diff --git a/core/test/unit/src/commands/validate.ts b/core/test/unit/src/commands/validate.ts index 357b94eb7c..2b8e0daaf8 100644 --- a/core/test/unit/src/commands/validate.ts +++ b/core/test/unit/src/commands/validate.ts @@ -6,8 +6,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ValidateCommand } from "../../../../src/commands/validate" -import { expectError, withDefaultGlobalOpts, makeTestGardenA, makeTestGarden, getDataDir } from "../../../helpers" +import { ValidateCommand } from "../../../../src/commands/validate.js" +import { expectError, withDefaultGlobalOpts, makeTestGardenA, makeTestGarden, getDataDir } from "../../../helpers.js" describe("commands.validate", () => { it(`should successfully validate a test project`, async () => { diff --git a/core/test/unit/src/commands/version.ts b/core/test/unit/src/commands/version.ts index e81be36d69..5fadc6cdd2 100644 --- a/core/test/unit/src/commands/version.ts +++ b/core/test/unit/src/commands/version.ts @@ -7,12 +7,12 @@ */ import { expect } from "chai" -import { getPackageVersion } from "../../../../src/util/util" -import { GardenCli } from "../../../../src/cli/cli" -import { VersionCommand } from "../../../../src/commands/version" -import { TempDirectory } from "../../../helpers" -import { makeTempDir } from "../../../helpers" -import { makeDummyGarden } from "../../../../src/garden" +import { getPackageVersion } from "../../../../src/util/util.js" +import { GardenCli } from "../../../../src/cli/cli.js" +import { VersionCommand } from "../../../../src/commands/version.js" +import type { TempDirectory } from "../../../helpers.js" +import { makeTempDir } from "../../../helpers.js" +import { makeDummyGarden } from "../../../../src/garden.js" describe("VersionCommand", () => { let tmpDir: TempDirectory diff --git a/core/test/unit/src/commands/workflow.ts b/core/test/unit/src/commands/workflow.ts index 29ecf036a1..8788817e88 100644 --- a/core/test/unit/src/commands/workflow.ts +++ b/core/test/unit/src/commands/workflow.ts @@ -18,19 +18,21 @@ import { createProjectConfig, makeTempDir, getDataDir, -} from "../../../helpers" -import { GardenApiVersion } from "../../../../src/constants" -import { WorkflowCommand, shouldBeDropped } from "../../../../src/commands/workflow" -import { createGardenPlugin } from "../../../../src/plugin/plugin" -import { joi } from "../../../../src/config/common" -import { ProjectConfig } from "../../../../src/config/project" +} from "../../../helpers.js" +import { GardenApiVersion } from "../../../../src/constants.js" +import { WorkflowCommand, shouldBeDropped } from "../../../../src/commands/workflow.js" +import { createGardenPlugin } from "../../../../src/plugin/plugin.js" +import { joi } from "../../../../src/config/common.js" +import type { ProjectConfig } from "../../../../src/config/project.js" import { join } from "path" -import { remove, readFile, pathExists } from "fs-extra" -import { dedent } from "../../../../src/util/string" -import { LogEntry } from "../../../../src/logger/log-entry" -import { defaultWorkflowResources, WorkflowStepSpec } from "../../../../src/config/workflow" -import { TestGardenCli } from "../../../helpers/cli" -import { WorkflowScriptError } from "../../../../src/exceptions" +import fsExtra from "fs-extra" +const { remove, readFile, pathExists } = fsExtra +import { dedent } from "../../../../src/util/string.js" +import type { LogEntry } from "../../../../src/logger/log-entry.js" +import type { WorkflowStepSpec } from "../../../../src/config/workflow.js" +import { defaultWorkflowResources } from "../../../../src/config/workflow.js" +import { TestGardenCli } from "../../../helpers/cli.js" +import { WorkflowScriptError } from "../../../../src/exceptions.js" describe("RunWorkflowCommand", () => { const cmd = new WorkflowCommand() diff --git a/core/test/unit/src/config-graph.ts b/core/test/unit/src/config-graph.ts index 5839025176..ca229c9cf0 100644 --- a/core/test/unit/src/config-graph.ts +++ b/core/test/unit/src/config-graph.ts @@ -8,7 +8,9 @@ import { join } from "path" import { expect } from "chai" -import { ensureDir } from "fs-extra" +import fsExtra from "fs-extra" +const { ensureDir } = fsExtra +import type { TestGarden } from "../../helpers.js" import { expectError, getDataDir, @@ -18,15 +20,15 @@ import { makeTestGardenA, makeTestModule, noOpTestPlugin, - TestGarden, -} from "../../helpers" -import { getNames } from "../../../src/util/util" -import { ConfigGraph, ConfigGraphNode } from "../../../src/graph/config-graph" -import { Garden } from "../../../src/garden" -import { DEFAULT_BUILD_TIMEOUT_SEC, GARDEN_CORE_ROOT, GardenApiVersion } from "../../../src/constants" -import tmp from "tmp-promise" -import { ActionKind, BaseActionConfig } from "../../../src/actions/types" -import { GraphError, ParameterError } from "../../../src/exceptions" +} from "../../helpers.js" +import { getNames } from "../../../src/util/util.js" +import type { ConfigGraph } from "../../../src/graph/config-graph.js" +import { ConfigGraphNode } from "../../../src/graph/config-graph.js" +import type { Garden } from "../../../src/garden.js" +import { DEFAULT_BUILD_TIMEOUT_SEC, GARDEN_CORE_ROOT, GardenApiVersion } from "../../../src/constants.js" +import type tmp from "tmp-promise" +import type { ActionKind, BaseActionConfig } from "../../../src/actions/types.js" +import { GraphError, ParameterError } from "../../../src/exceptions.js" const makeAction = ({ basePath, diff --git a/core/test/unit/src/config-store.ts b/core/test/unit/src/config-store.ts index 9aa0b916f6..7a06648f74 100644 --- a/core/test/unit/src/config-store.ts +++ b/core/test/unit/src/config-store.ts @@ -7,12 +7,14 @@ */ import { expect } from "chai" -import { emptyGlobalConfig, GlobalConfigStore, legacyGlobalConfigFilename } from "../../../src/config-store/global" -import { makeTempDir, TempDirectory } from "../../helpers" -import { dedent } from "../../../src/util/string" +import { emptyGlobalConfig, GlobalConfigStore, legacyGlobalConfigFilename } from "../../../src/config-store/global.js" +import type { TempDirectory } from "../../helpers.js" +import { makeTempDir } from "../../helpers.js" +import { dedent } from "../../../src/util/string.js" import { resolve } from "path" -import { writeFile } from "fs-extra" -import { legacyLocalConfigFilename, LocalConfigStore } from "../../../src/config-store/local" +import fsExtra from "fs-extra" +const { writeFile } = fsExtra +import { legacyLocalConfigFilename, LocalConfigStore } from "../../../src/config-store/local.js" describe("ConfigStore", () => { let store: GlobalConfigStore diff --git a/core/test/unit/src/config/base.ts b/core/test/unit/src/config/base.ts index 9e504d4675..44bac4bf93 100644 --- a/core/test/unit/src/config/base.ts +++ b/core/test/unit/src/config/base.ts @@ -16,17 +16,17 @@ import { validateRawConfig, configTemplateKind, loadAndValidateYaml, -} from "../../../../src/config/base" +} from "../../../../src/config/base.js" import { resolve, join } from "path" -import { expectError, getDataDir, getDefaultProjectConfig } from "../../../helpers" -import { DEFAULT_BUILD_TIMEOUT_SEC, GardenApiVersion } from "../../../../src/constants" -import { defaultDotIgnoreFile } from "../../../../src/util/fs" -import { safeDumpYaml } from "../../../../src/util/serialization" -import { getRootLogger } from "../../../../src/logger/logger" -import { ConfigurationError } from "../../../../src/exceptions" -import { resetNonRepeatableWarningHistory } from "../../../../src/warnings" -import { omit } from "lodash" -import { dedent } from "../../../../src/util/string" +import { expectError, getDataDir, getDefaultProjectConfig } from "../../../helpers.js" +import { DEFAULT_BUILD_TIMEOUT_SEC, GardenApiVersion } from "../../../../src/constants.js" +import { defaultDotIgnoreFile } from "../../../../src/util/fs.js" +import { safeDumpYaml } from "../../../../src/util/serialization.js" +import { getRootLogger } from "../../../../src/logger/logger.js" +import { ConfigurationError } from "../../../../src/exceptions.js" +import { resetNonRepeatableWarningHistory } from "../../../../src/warnings.js" +import { omit } from "lodash-es" +import { dedent } from "../../../../src/util/string.js" const projectPathA = getDataDir("test-project-a") const modulePathA = resolve(projectPathA, "module-a") diff --git a/core/test/unit/src/config/common.ts b/core/test/unit/src/config/common.ts index 704adbd8cd..fd1b17c583 100644 --- a/core/test/unit/src/config/common.ts +++ b/core/test/unit/src/config/common.ts @@ -20,9 +20,9 @@ import { createSchema, metadataFromDescription, removeSchema, -} from "../../../../src/config/common" -import { validateSchema } from "../../../../src/config/validation" -import { expectError } from "../../../helpers" +} from "../../../../src/config/common.js" +import { validateSchema } from "../../../../src/config/validation.js" +import { expectError } from "../../../helpers.js" describe("joiSparseArray", () => { it("should filter out undefined values", () => { diff --git a/core/test/unit/src/config/project.ts b/core/test/unit/src/config/project.ts index abf376b707..cdae3679b6 100644 --- a/core/test/unit/src/config/project.ts +++ b/core/test/unit/src/config/project.ts @@ -9,8 +9,8 @@ import { platform } from "os" import { expect } from "chai" import tmp from "tmp-promise" +import type { ProjectConfig } from "../../../../src/config/project.js" import { - ProjectConfig, resolveProjectConfig, pickEnvironment, defaultVarfilePath, @@ -19,12 +19,13 @@ import { defaultNamespace, fixedPlugins, defaultEnvironment, -} from "../../../../src/config/project" -import { createProjectConfig, expectError } from "../../../helpers" -import { realpath, writeFile } from "fs-extra" -import { dedent } from "../../../../src/util/string" +} from "../../../../src/config/project.js" +import { createProjectConfig, expectError } from "../../../helpers.js" +import fsExtra from "fs-extra" +const { realpath, writeFile } = fsExtra +import { dedent } from "../../../../src/util/string.js" import { resolve, join } from "path" -import { getRootLogger } from "../../../../src/logger/logger" +import { getRootLogger } from "../../../../src/logger/logger.js" const enterpriseDomain = "https://garden.mydomain.com" const commandInfo = { name: "test", args: {}, opts: {} } diff --git a/core/test/unit/src/config/provider.ts b/core/test/unit/src/config/provider.ts index 01d1f511d9..9d90a1113e 100644 --- a/core/test/unit/src/config/provider.ts +++ b/core/test/unit/src/config/provider.ts @@ -7,9 +7,10 @@ */ import { expect } from "chai" -import { GenericProviderConfig, getAllProviderDependencyNames } from "../../../../src/config/provider" -import { expectError } from "../../../helpers" -import { createGardenPlugin } from "../../../../src/plugin/plugin" +import type { GenericProviderConfig } from "../../../../src/config/provider.js" +import { getAllProviderDependencyNames } from "../../../../src/config/provider.js" +import { expectError } from "../../../helpers.js" +import { createGardenPlugin } from "../../../../src/plugin/plugin.js" describe("getProviderDependencies", () => { const plugin = createGardenPlugin({ diff --git a/core/test/unit/src/config/render-template.ts b/core/test/unit/src/config/render-template.ts index 6de846ea68..545a06a891 100644 --- a/core/test/unit/src/config/render-template.ts +++ b/core/test/unit/src/config/render-template.ts @@ -7,21 +7,21 @@ */ import { expect } from "chai" -import { DEFAULT_BUILD_TIMEOUT_SEC, GardenApiVersion } from "../../../../src/constants" -import { expectError, getDataDir, makeTestGarden, TestGarden } from "../../../helpers" -import { - ConfigTemplateResource, - resolveConfigTemplate, - ConfigTemplateConfig, -} from "../../../../src/config/config-template" +import { DEFAULT_BUILD_TIMEOUT_SEC, GardenApiVersion } from "../../../../src/constants.js" +import type { TestGarden } from "../../../helpers.js" +import { expectError, getDataDir, makeTestGarden } from "../../../helpers.js" +import type { ConfigTemplateResource, ConfigTemplateConfig } from "../../../../src/config/config-template.js" +import { resolveConfigTemplate } from "../../../../src/config/config-template.js" import { resolve } from "path" -import { joi } from "../../../../src/config/common" -import { pathExists, remove } from "fs-extra" +import { joi } from "../../../../src/config/common.js" +import fsExtra from "fs-extra" +const { pathExists, remove } = fsExtra import cloneDeep from "fast-copy" -import { configTemplateKind, renderTemplateKind } from "../../../../src/config/base" -import { RenderTemplateConfig, renderConfigTemplate } from "../../../../src/config/render-template" -import { Log } from "../../../../src/logger/log-entry" +import { configTemplateKind, renderTemplateKind } from "../../../../src/config/base.js" +import type { RenderTemplateConfig } from "../../../../src/config/render-template.js" +import { renderConfigTemplate } from "../../../../src/config/render-template.js" +import type { Log } from "../../../../src/logger/log-entry.js" describe("config templates", () => { let garden: TestGarden diff --git a/core/test/unit/src/config/service.ts b/core/test/unit/src/config/service.ts index c24be10b6e..ad20b3d0ae 100644 --- a/core/test/unit/src/config/service.ts +++ b/core/test/unit/src/config/service.ts @@ -7,8 +7,8 @@ */ import { expect } from "chai" -import { baseServiceSpecSchema } from "../../../../src/config/service" -import { validateSchema } from "../../../../src/config/validation" +import { baseServiceSpecSchema } from "../../../../src/config/service.js" +import { validateSchema } from "../../../../src/config/validation.js" describe("baseServiceSpecSchema", () => { it("should filter falsy values from dependencies list", () => { diff --git a/core/test/unit/src/config/template-contexts/base.ts b/core/test/unit/src/config/template-contexts/base.ts index 66d52627ae..3923abd2e2 100644 --- a/core/test/unit/src/config/template-contexts/base.ts +++ b/core/test/unit/src/config/template-contexts/base.ts @@ -7,17 +7,12 @@ */ import { expect } from "chai" -import stripAnsi = require("strip-ansi") -import { - ConfigContext, - ContextKey, - ContextResolveParams, - schema, - ScanContext, -} from "../../../../../src/config/template-contexts/base" -import { expectError } from "../../../../helpers" -import { joi } from "../../../../../src/config/common" -import { resolveTemplateStrings } from "../../../../../src/template-string/template-string" +import stripAnsi from "strip-ansi" +import type { ContextKey, ContextResolveParams } from "../../../../../src/config/template-contexts/base.js" +import { ConfigContext, schema, ScanContext } from "../../../../../src/config/template-contexts/base.js" +import { expectError } from "../../../../helpers.js" +import { joi } from "../../../../../src/config/common.js" +import { resolveTemplateStrings } from "../../../../../src/template-string/template-string.js" type TestValue = string | ConfigContext | TestValues | TestValueFunction type TestValueFunction = () => TestValue | Promise diff --git a/core/test/unit/src/config/template-contexts/module.ts b/core/test/unit/src/config/template-contexts/module.ts index a2a8f1908b..05098f64a6 100644 --- a/core/test/unit/src/config/template-contexts/module.ts +++ b/core/test/unit/src/config/template-contexts/module.ts @@ -8,13 +8,14 @@ import { expect } from "chai" import { join } from "path" -import { keyBy } from "lodash" -import { ConfigContext } from "../../../../../src/config/template-contexts/base" -import { makeTestGardenA, TestGarden } from "../../../../helpers" -import { ModuleConfigContext } from "../../../../../src/config/template-contexts/module" -import { WorkflowConfigContext } from "../../../../../src/config/template-contexts/workflow" -import { GardenModule } from "../../../../../src/types/module" -import { ConfigGraph } from "../../../../../src/graph/config-graph" +import { keyBy } from "lodash-es" +import type { ConfigContext } from "../../../../../src/config/template-contexts/base.js" +import type { TestGarden } from "../../../../helpers.js" +import { makeTestGardenA } from "../../../../helpers.js" +import { ModuleConfigContext } from "../../../../../src/config/template-contexts/module.js" +import { WorkflowConfigContext } from "../../../../../src/config/template-contexts/workflow.js" +import type { GardenModule } from "../../../../../src/types/module.js" +import type { ConfigGraph } from "../../../../../src/graph/config-graph.js" type TestValue = string | ConfigContext | TestValues | TestValueFunction type TestValueFunction = () => TestValue | Promise diff --git a/core/test/unit/src/config/template-contexts/project.ts b/core/test/unit/src/config/template-contexts/project.ts index a80112bfba..e99155cdeb 100644 --- a/core/test/unit/src/config/template-contexts/project.ts +++ b/core/test/unit/src/config/template-contexts/project.ts @@ -7,12 +7,13 @@ */ import { expect } from "chai" -import stripAnsi = require("strip-ansi") -import { ConfigContext } from "../../../../../src/config/template-contexts/base" -import { DefaultEnvironmentContext, ProjectConfigContext } from "../../../../../src/config/template-contexts/project" -import { resolveTemplateString } from "../../../../../src/template-string/template-string" -import { deline } from "../../../../../src/util/string" -import { freezeTime, makeTestGardenA, TestGarden } from "../../../../helpers" +import stripAnsi from "strip-ansi" +import type { ConfigContext } from "../../../../../src/config/template-contexts/base.js" +import { DefaultEnvironmentContext, ProjectConfigContext } from "../../../../../src/config/template-contexts/project.js" +import { resolveTemplateString } from "../../../../../src/template-string/template-string.js" +import { deline } from "../../../../../src/util/string.js" +import type { TestGarden } from "../../../../helpers.js" +import { freezeTime, makeTestGardenA } from "../../../../helpers.js" type TestValue = string | ConfigContext | TestValues | TestValueFunction type TestValueFunction = () => TestValue | Promise diff --git a/core/test/unit/src/config/template-contexts/provider.ts b/core/test/unit/src/config/template-contexts/provider.ts index c2b6fd5b78..2a8338dd52 100644 --- a/core/test/unit/src/config/template-contexts/provider.ts +++ b/core/test/unit/src/config/template-contexts/provider.ts @@ -7,9 +7,9 @@ */ import { expect } from "chai" -import { ConfigContext } from "../../../../../src/config/template-contexts/base" -import { projectRootA, makeTestGarden } from "../../../../helpers" -import { ProviderConfigContext } from "../../../../../src/config/template-contexts/provider" +import type { ConfigContext } from "../../../../../src/config/template-contexts/base.js" +import { projectRootA, makeTestGarden } from "../../../../helpers.js" +import { ProviderConfigContext } from "../../../../../src/config/template-contexts/provider.js" type TestValue = string | ConfigContext | TestValues | TestValueFunction type TestValueFunction = () => TestValue | Promise diff --git a/core/test/unit/src/config/template-contexts/workflow.ts b/core/test/unit/src/config/template-contexts/workflow.ts index e600a828d7..464e97aaff 100644 --- a/core/test/unit/src/config/template-contexts/workflow.ts +++ b/core/test/unit/src/config/template-contexts/workflow.ts @@ -7,11 +7,16 @@ */ import { expect } from "chai" -import { ConfigContext } from "../../../../../src/config/template-contexts/base" -import { expectError, makeTestGardenA, TestGarden } from "../../../../helpers" -import { WorkflowConfigContext, WorkflowStepConfigContext } from "../../../../../src/config/template-contexts/workflow" -import { defaultWorkflowResources, WorkflowConfig } from "../../../../../src/config/workflow" -import { GardenApiVersion } from "../../../../../src/constants" +import type { ConfigContext } from "../../../../../src/config/template-contexts/base.js" +import type { TestGarden } from "../../../../helpers.js" +import { expectError, makeTestGardenA } from "../../../../helpers.js" +import { + WorkflowConfigContext, + WorkflowStepConfigContext, +} from "../../../../../src/config/template-contexts/workflow.js" +import type { WorkflowConfig } from "../../../../../src/config/workflow.js" +import { defaultWorkflowResources } from "../../../../../src/config/workflow.js" +import { GardenApiVersion } from "../../../../../src/constants.js" type TestValue = string | ConfigContext | TestValues | TestValueFunction type TestValueFunction = () => TestValue | Promise diff --git a/core/test/unit/src/config/validation.ts b/core/test/unit/src/config/validation.ts index b027f4b31a..a1d5959721 100644 --- a/core/test/unit/src/config/validation.ts +++ b/core/test/unit/src/config/validation.ts @@ -7,18 +7,14 @@ */ import { expect } from "chai" -import { joi } from "../../../../src/config/common" -import { validateSchema } from "../../../../src/config/validation" -import { expectError } from "../../../helpers" -import { - BaseGardenResource, - YamlDocumentWithSource, - baseInternalFieldsSchema, - loadAndValidateYaml, -} from "../../../../src/config/base" -import { GardenApiVersion } from "../../../../src/constants" +import { joi } from "../../../../src/config/common.js" +import { validateSchema } from "../../../../src/config/validation.js" +import { expectError } from "../../../helpers.js" +import type { BaseGardenResource, YamlDocumentWithSource } from "../../../../src/config/base.js" +import { baseInternalFieldsSchema, loadAndValidateYaml } from "../../../../src/config/base.js" +import { GardenApiVersion } from "../../../../src/constants.js" import { parseDocument } from "yaml" -import { dedent } from "../../../../src/util/string" +import { dedent } from "../../../../src/util/string.js" import stripAnsi from "strip-ansi" describe("validateSchema", () => { diff --git a/core/test/unit/src/config/workflow.ts b/core/test/unit/src/config/workflow.ts index c0f39ba407..cc394fe43f 100644 --- a/core/test/unit/src/config/workflow.ts +++ b/core/test/unit/src/config/workflow.ts @@ -7,21 +7,22 @@ */ import { expect } from "chai" -import { expectError, getDataDir, makeTestGarden, makeTestGardenA, TestGarden } from "../../../helpers" +import type { TestGarden } from "../../../helpers.js" +import { expectError, getDataDir, makeTestGarden, makeTestGardenA } from "../../../helpers.js" +import type { WorkflowConfig, TriggerSpec } from "../../../../src/config/workflow.js" import { - WorkflowConfig, resolveWorkflowConfig, populateNamespaceForTriggers, - TriggerSpec, minimumWorkflowLimits, defaultWorkflowRequests, defaultWorkflowLimits, defaultWorkflowResources, -} from "../../../../src/config/workflow" -import { EnvironmentConfig, defaultNamespace } from "../../../../src/config/project" +} from "../../../../src/config/workflow.js" +import type { EnvironmentConfig } from "../../../../src/config/project.js" +import { defaultNamespace } from "../../../../src/config/project.js" import { join } from "path" -import { GardenApiVersion } from "../../../../src/constants" -import { omit } from "lodash" +import { GardenApiVersion } from "../../../../src/constants.js" +import { omit } from "lodash-es" describe("resolveWorkflowConfig", () => { let garden: TestGarden diff --git a/core/test/unit/src/docs/common.ts b/core/test/unit/src/docs/common.ts index ebd337042d..0f535c540f 100644 --- a/core/test/unit/src/docs/common.ts +++ b/core/test/unit/src/docs/common.ts @@ -6,9 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { joi, JoiDescription } from "../../../../src/config/common" -import { JoiKeyDescription } from "../../../../src/docs/joi-schema" -import { flattenSchema } from "../../../../src/docs/common" +import type { JoiDescription } from "../../../../src/config/common.js" +import { joi } from "../../../../src/config/common.js" +import { JoiKeyDescription } from "../../../../src/docs/joi-schema.js" +import { flattenSchema } from "../../../../src/docs/common.js" import { expect } from "chai" describe("flattenSchema", () => { diff --git a/core/test/unit/src/docs/config.ts b/core/test/unit/src/docs/config.ts index ea8544d541..2664b7b20a 100644 --- a/core/test/unit/src/docs/config.ts +++ b/core/test/unit/src/docs/config.ts @@ -11,13 +11,14 @@ import { renderConfigReference, renderMarkdownLink, sanitizeYamlStringForGitBook, -} from "../../../../src/docs/config" +} from "../../../../src/docs/config.js" import { expect } from "chai" -import { joiArray, joi, joiEnvVars, JoiDescription } from "../../../../src/config/common" -import { buildDependencySchema } from "../../../../src/config/module" -import { JoiKeyDescription } from "../../../../src/docs/joi-schema" -import { BaseKeyDescription, flattenSchema } from "../../../../src/docs/common" -import { dedent } from "../../../../src/util/string" +import type { JoiDescription } from "../../../../src/config/common.js" +import { joiArray, joi, joiEnvVars } from "../../../../src/config/common.js" +import { buildDependencySchema } from "../../../../src/config/module.js" +import { JoiKeyDescription } from "../../../../src/docs/joi-schema.js" +import { BaseKeyDescription, flattenSchema } from "../../../../src/docs/common.js" +import { dedent } from "../../../../src/util/string.js" describe("docs config module", () => { const servicePortSchema = joi diff --git a/core/test/unit/src/docs/joi-schema.ts b/core/test/unit/src/docs/joi-schema.ts index 9cd12cf4da..d1b9001cfb 100644 --- a/core/test/unit/src/docs/joi-schema.ts +++ b/core/test/unit/src/docs/joi-schema.ts @@ -7,9 +7,10 @@ */ import { expect } from "chai" -import { joi, JoiDescription } from "../../../../src/config/common" -import { JoiKeyDescription } from "../../../../src/docs/joi-schema" -import { testJsonSchema } from "./json-schema" +import type { JoiDescription } from "../../../../src/config/common.js" +import { joi } from "../../../../src/config/common.js" +import { JoiKeyDescription } from "../../../../src/docs/joi-schema.js" +import { testJsonSchema } from "./json-schema.js" describe("JoiKeyDescription", () => { it("correctly set the basic attributes of an object schema", () => { diff --git a/core/test/unit/src/docs/json-schema.ts b/core/test/unit/src/docs/json-schema.ts index 78fa609500..0f7c651532 100644 --- a/core/test/unit/src/docs/json-schema.ts +++ b/core/test/unit/src/docs/json-schema.ts @@ -7,7 +7,7 @@ */ import { expect } from "chai" -import { JsonKeyDescription } from "../../../../src/docs/json-schema" +import { JsonKeyDescription } from "../../../../src/docs/json-schema.js" describe("JsonKeyDescription", () => { it("correctly set the basic attributes of an object schema", () => { diff --git a/core/test/unit/src/docs/table-of-contents.ts b/core/test/unit/src/docs/table-of-contents.ts index 62cce6acd5..830cf74a01 100644 --- a/core/test/unit/src/docs/table-of-contents.ts +++ b/core/test/unit/src/docs/table-of-contents.ts @@ -7,9 +7,9 @@ */ import { expect } from "chai" -import { generateTableOfContents } from "../../../../src/docs/table-of-contents" -import { getDataDir } from "../../../helpers" -import dedent = require("dedent") +import { generateTableOfContents } from "../../../../src/docs/table-of-contents.js" +import { getDataDir } from "../../../helpers.js" +import dedent from "dedent" describe("table of contents", () => { it("should return a correctly ordered table of contents", async () => { diff --git a/core/test/unit/src/docs/util.ts b/core/test/unit/src/docs/util.ts index 902f6e4cef..25c58ad6ca 100644 --- a/core/test/unit/src/docs/util.ts +++ b/core/test/unit/src/docs/util.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { dedent } from "../../../../src/util/string" +import { dedent } from "../../../../src/util/string.js" import { expect } from "chai" -import { convertMarkdownLinks, makeDocsLink, makeDocsLinkOpts } from "../../../../src/docs/common" -import { DOCS_BASE_URL } from "../../../../src/constants" +import { convertMarkdownLinks, makeDocsLink, makeDocsLinkOpts } from "../../../../src/docs/common.js" +import { DOCS_BASE_URL } from "../../../../src/constants.js" describe("convertMarkdownLinks", () => { it("should convert all markdown links in the given text to plain links", () => { diff --git a/core/test/unit/src/events.ts b/core/test/unit/src/events.ts index 85c04a4ced..2758248dd1 100644 --- a/core/test/unit/src/events.ts +++ b/core/test/unit/src/events.ts @@ -6,8 +6,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { range } from "lodash" -import { EventBus } from "../../../src/events/events" +import { range } from "lodash-es" +import { EventBus } from "../../../src/events/events.js" import { expect } from "chai" describe("EventBus", () => { diff --git a/core/test/unit/src/exceptions.ts b/core/test/unit/src/exceptions.ts index e4963f094b..20eb5687f6 100644 --- a/core/test/unit/src/exceptions.ts +++ b/core/test/unit/src/exceptions.ts @@ -7,18 +7,18 @@ */ import { expect } from "chai" +import type { GardenError, StackTraceMetadata } from "../../../src/exceptions.js" import { ChildProcessError, ConfigurationError, - GardenError, RuntimeError, - StackTraceMetadata, getStackTraceMetadata, isErrnoException, -} from "../../../src/exceptions" +} from "../../../src/exceptions.js" import dedent from "dedent" -import { testFlags } from "../../../src/util/util" -import { readFile } from "fs-extra" +import { testFlags } from "../../../src/util/util.js" +import fsExtra from "fs-extra" +const { readFile } = fsExtra import { resolve4 } from "dns/promises" import dns from "node:dns" @@ -62,7 +62,6 @@ describe("isErrnoException", async () => { expect(isErrnoException(err)).to.be.false }) }) - describe("GardenError", () => { // helper to avoid dealing with changing line numbers const filterTrace = (metadata) => { diff --git a/core/test/unit/src/garden.ts b/core/test/unit/src/garden.ts index c4a642eba3..9036ddbc3f 100644 --- a/core/test/unit/src/garden.ts +++ b/core/test/unit/src/garden.ts @@ -7,12 +7,12 @@ */ import { expect } from "chai" -import td from "testdouble" +import * as td from "testdouble" import tmp from "tmp-promise" import nock from "nock" -import { join, resolve } from "path" -import { Garden } from "../../../src/garden" +import { dirname, join, resolve } from "node:path" +import { Garden } from "../../../src/garden.js" import { expectError, makeTestGarden, @@ -32,41 +32,50 @@ import { makeModuleConfig, makeTempGarden, getEmptyPluginActionDefinitions, -} from "../../helpers" -import { getNames, findByName, exec } from "../../../src/util/util" -import { LinkedSource } from "../../../src/config-store/local" -import { getModuleVersionString, ModuleVersion, TreeVersion } from "../../../src/vcs/vcs" -import { getModuleCacheContext } from "../../../src/types/module" -import { createGardenPlugin, ProviderActionName } from "../../../src/plugin/plugin" -import { ConfigureProviderParams } from "../../../src/plugin/handlers/Provider/configureProvider" -import { ProjectConfig, defaultNamespace } from "../../../src/config/project" -import { ModuleConfig, baseModuleSpecSchema } from "../../../src/config/module" +} from "../../helpers.js" +import { getNames, findByName, exec } from "../../../src/util/util.js" +import type { LinkedSource } from "../../../src/config-store/local.js" +import type { ModuleVersion, TreeVersion } from "../../../src/vcs/vcs.js" +import { getModuleVersionString } from "../../../src/vcs/vcs.js" +import { getModuleCacheContext } from "../../../src/types/module.js" +import type { ProviderActionName } from "../../../src/plugin/plugin.js" +import { createGardenPlugin } from "../../../src/plugin/plugin.js" +import type { ConfigureProviderParams } from "../../../src/plugin/handlers/Provider/configureProvider.js" +import type { ProjectConfig } from "../../../src/config/project.js" +import { defaultNamespace } from "../../../src/config/project.js" +import type { ModuleConfig } from "../../../src/config/module.js" +import { baseModuleSpecSchema } from "../../../src/config/module.js" import { DEFAULT_BUILD_TIMEOUT_SEC, DEFAULT_GARDEN_CLOUD_DOMAIN, GardenApiVersion, gardenEnv, -} from "../../../src/constants" -import { providerConfigBaseSchema } from "../../../src/config/provider" -import { keyBy, set, mapValues, omit, cloneDeep } from "lodash" -import { joi } from "../../../src/config/common" -import { defaultDotIgnoreFile, makeTempDir } from "../../../src/util/fs" -import { realpath, writeFile, readFile, remove, pathExists, mkdirp, copy } from "fs-extra" -import { dedent, deline, randomString, wordWrap } from "../../../src/util/string" -import { getLinkedSources, addLinkedSources } from "../../../src/util/ext-source-util" +} from "../../../src/constants.js" +import { providerConfigBaseSchema } from "../../../src/config/provider.js" +import { keyBy, set, mapValues, omit, cloneDeep } from "lodash-es" +import { joi } from "../../../src/config/common.js" +import { defaultDotIgnoreFile, makeTempDir } from "../../../src/util/fs.js" +import fsExtra from "fs-extra" +const { realpath, writeFile, readFile, remove, pathExists, mkdirp, copy } = fsExtra +import { dedent, deline, randomString, wordWrap } from "../../../src/util/string.js" +import { getLinkedSources, addLinkedSources } from "../../../src/util/ext-source-util.js" import { dump } from "js-yaml" -import { TestVcsHandler } from "./vcs/vcs" -import { ActionRouter } from "../../../src/router/router" -import { convertExecModule } from "../../../src/plugins/exec/convert" -import { getLogMessages } from "../../../src/util/testing" -import { TreeCache } from "../../../src/cache" -import { omitUndefined } from "../../../src/util/objects" -import { CloudApi, CloudProject } from "../../../src/cloud/api" -import { GlobalConfigStore } from "../../../src/config-store/global" -import { getRootLogger } from "../../../src/logger/logger" +import { TestVcsHandler } from "./vcs/vcs.js" +import type { ActionRouter } from "../../../src/router/router.js" +import { convertExecModule } from "../../../src/plugins/exec/convert.js" +import { getLogMessages } from "../../../src/util/testing.js" +import { TreeCache } from "../../../src/cache.js" +import { omitUndefined } from "../../../src/util/objects.js" import { add } from "date-fns" -import { uuidv4 } from "../../../src/util/random" import stripAnsi from "strip-ansi" +import type { CloudProject } from "../../../src/cloud/api.js" +import { CloudApi } from "../../../src/cloud/api.js" +import { GlobalConfigStore } from "../../../src/config-store/global.js" +import { getRootLogger } from "../../../src/logger/logger.js" +import { uuidv4 } from "../../../src/util/random.js" +import { fileURLToPath } from "node:url" + +const moduleDirName = dirname(fileURLToPath(import.meta.url)) // TODO-G2: change all module config based tests to be action-based. @@ -987,7 +996,7 @@ describe("Garden", () => { }) it("should throw if plugin module exports invalid name", async () => { - const pluginPath = join(__dirname, "plugins", "invalid-name.js") + const pluginPath = join(moduleDirName, "plugins", "invalid-name.js") const plugins = [pluginPath] const projectRoot = getDataDir("test-project-empty") const garden = await makeTestGarden(projectRoot, { plugins }) @@ -1001,7 +1010,7 @@ describe("Garden", () => { }) it("should throw if plugin module doesn't contain plugin", async () => { - const pluginPath = join(__dirname, "plugins", "missing-plugin.js") + const pluginPath = join(moduleDirName, "plugins", "missing-plugin.js") const plugins = [pluginPath] const projectRoot = getDataDir("test-project-empty") const garden = await makeTestGarden(projectRoot, { plugins }) diff --git a/core/test/unit/src/graph/actions.ts b/core/test/unit/src/graph/actions.ts index 204de4087a..e6a4de273c 100644 --- a/core/test/unit/src/graph/actions.ts +++ b/core/test/unit/src/graph/actions.ts @@ -6,11 +6,12 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { makeGarden, makeTempDir, noOpTestPlugin, TestGarden } from "../../../helpers" -import { preprocessActionConfig } from "../../../../src/graph/actions" -import { RunActionConfig } from "../../../../src/actions/run" -import { DEFAULT_RUN_TIMEOUT_SEC } from "../../../../src/constants" -import tmp from "tmp-promise" +import type { TestGarden } from "../../../helpers.js" +import { makeGarden, makeTempDir, noOpTestPlugin } from "../../../helpers.js" +import { preprocessActionConfig } from "../../../../src/graph/actions.js" +import type { RunActionConfig } from "../../../../src/actions/run.js" +import { DEFAULT_RUN_TIMEOUT_SEC } from "../../../../src/constants.js" +import type tmp from "tmp-promise" import { expect } from "chai" // TODO: add more tests diff --git a/core/test/unit/src/graph/common.ts b/core/test/unit/src/graph/common.ts index 0dce4bd3d6..72ca2f99cd 100644 --- a/core/test/unit/src/graph/common.ts +++ b/core/test/unit/src/graph/common.ts @@ -7,17 +7,17 @@ */ import { expect } from "chai" -import { detectCycles, DependencyGraph } from "../../../../src/graph/common" -import { makeTestGarden, expectError, getDataDir } from "../../../helpers" -import { ModuleConfig } from "../../../../src/config/module" -import { ConfigurationError } from "../../../../src/exceptions" +import { detectCycles, DependencyGraph } from "../../../../src/graph/common.js" +import { makeTestGarden, expectError, getDataDir } from "../../../helpers.js" +import type { ModuleConfig } from "../../../../src/config/module.js" +import { ConfigurationError } from "../../../../src/exceptions.js" import { DEFAULT_BUILD_TIMEOUT_SEC, DEFAULT_RUN_TIMEOUT_SEC, DEFAULT_TEST_TIMEOUT_SEC, GardenApiVersion, -} from "../../../../src/constants" -import { detectMissingDependencies } from "../../../../src/graph/modules" +} from "../../../../src/constants.js" +import { detectMissingDependencies } from "../../../../src/graph/modules.js" describe("graph common", () => { describe("detectMissingDependencies", () => { diff --git a/core/test/unit/src/graph/solver.ts b/core/test/unit/src/graph/solver.ts index 2429ef03ab..3059bfffd5 100644 --- a/core/test/unit/src/graph/solver.ts +++ b/core/test/unit/src/graph/solver.ts @@ -7,12 +7,14 @@ */ import { expect } from "chai" -import { BaseTask, CommonTaskParams, TaskProcessParams, ValidResultType } from "../../../../src/tasks/base" -import { makeTestGarden, freezeTime, TestGarden, getDataDir, expectError } from "../../../helpers" -import { MakeOptional } from "../../../../src/util/util" -import { SolveOpts } from "../../../../src/graph/solver" -import { ActionState } from "../../../../src/actions/types" -import { GardenError, GenericGardenError } from "../../../../src/exceptions" +import type { CommonTaskParams, TaskProcessParams, ValidResultType } from "../../../../src/tasks/base.js" +import { BaseTask } from "../../../../src/tasks/base.js" +import type { TestGarden } from "../../../helpers.js" +import { makeTestGarden, freezeTime, getDataDir, expectError } from "../../../helpers.js" +import type { MakeOptional } from "../../../../src/util/util.js" +import type { SolveOpts } from "../../../../src/graph/solver.js" +import type { ActionState } from "../../../../src/actions/types.js" +import { GardenError, GenericGardenError } from "../../../../src/exceptions.js" const projectRoot = getDataDir("test-project-empty") diff --git a/core/test/unit/src/lib/minimist.ts b/core/test/unit/src/lib/minimist.ts index b6592d2b1b..68c6e66fa7 100644 --- a/core/test/unit/src/lib/minimist.ts +++ b/core/test/unit/src/lib/minimist.ts @@ -7,7 +7,7 @@ */ import { expect } from "chai" -import { customMinimist } from "../../../../src/lib/minimist" +import { customMinimist } from "../../../../src/lib/minimist.js" describe("customMinimist", () => { it("collects unspecified options and arguments to _unknown", () => { diff --git a/core/test/unit/src/logger/log-entry.ts b/core/test/unit/src/logger/log-entry.ts index a52ba07861..c0123cb806 100644 --- a/core/test/unit/src/logger/log-entry.ts +++ b/core/test/unit/src/logger/log-entry.ts @@ -8,10 +8,12 @@ import { expect } from "chai" -import { getRootLogger, LogLevel, Logger } from "../../../../src/logger/logger" -import { freezeTime } from "../../../helpers" -import { CoreLog, createActionLog, Log, LogMetadata } from "../../../../src/logger/log-entry" -import { omit } from "lodash" +import type { Logger } from "../../../../src/logger/logger.js" +import { getRootLogger, LogLevel } from "../../../../src/logger/logger.js" +import { freezeTime } from "../../../helpers.js" +import type { CoreLog, Log, LogMetadata } from "../../../../src/logger/log-entry.js" +import { createActionLog } from "../../../../src/logger/log-entry.js" +import { omit } from "lodash-es" import chalk from "chalk" const logger: Logger = getRootLogger() diff --git a/core/test/unit/src/logger/logger.ts b/core/test/unit/src/logger/logger.ts index 8f632578cd..00686b2330 100644 --- a/core/test/unit/src/logger/logger.ts +++ b/core/test/unit/src/logger/logger.ts @@ -7,11 +7,12 @@ */ import { expect } from "chai" -import { getRootLogger, Logger, LogLevel, RootLogger } from "../../../../src/logger/logger" -import { LogEntryEventPayload } from "../../../../src/cloud/buffered-event-stream" -import { freezeTime } from "../../../helpers" -import { QuietWriter } from "../../../../src/logger/writers/quiet-writer" -import { ConfigurationError } from "../../../../src/exceptions" +import type { Logger } from "../../../../src/logger/logger.js" +import { getRootLogger, LogLevel, RootLogger } from "../../../../src/logger/logger.js" +import type { LogEntryEventPayload } from "../../../../src/cloud/buffered-event-stream.js" +import { freezeTime } from "../../../helpers.js" +import { QuietWriter } from "../../../../src/logger/writers/quiet-writer.js" +import { ConfigurationError } from "../../../../src/exceptions.js" import chalk from "chalk" const logger: Logger = getRootLogger() diff --git a/core/test/unit/src/logger/renderers.ts b/core/test/unit/src/logger/renderers.ts index da9f3a0c3a..9efdf0d677 100644 --- a/core/test/unit/src/logger/renderers.ts +++ b/core/test/unit/src/logger/renderers.ts @@ -8,7 +8,8 @@ import { expect } from "chai" -import { getRootLogger, Logger } from "../../../../src/logger/logger" +import type { Logger } from "../../../../src/logger/logger.js" +import { getRootLogger } from "../../../../src/logger/logger.js" import { renderMsg, msgStyle, @@ -21,16 +22,17 @@ import { padSection, renderSection, warningStyle, -} from "../../../../src/logger/renderers" -import { GenericGardenError } from "../../../../src/exceptions" +} from "../../../../src/logger/renderers.js" +import { GenericGardenError } from "../../../../src/exceptions.js" -import { createActionLog, TaskMetadata } from "../../../../src/logger/log-entry" -import logSymbols = require("log-symbols") -import stripAnsi = require("strip-ansi") -import { highlightYaml, safeDumpYaml } from "../../../../src/util/serialization" -import { freezeTime } from "../../../helpers" -import chalk = require("chalk") -import format from "date-fns/format" +import type { TaskMetadata } from "../../../../src/logger/log-entry.js" +import { createActionLog } from "../../../../src/logger/log-entry.js" +import logSymbols from "log-symbols" +import stripAnsi from "strip-ansi" +import { highlightYaml, safeDumpYaml } from "../../../../src/util/serialization.js" +import { freezeTime } from "../../../helpers.js" +import chalk from "chalk" +import format from "date-fns/format/index.js" const logger: Logger = getRootLogger() diff --git a/core/test/unit/src/logger/writers/file-writer.ts b/core/test/unit/src/logger/writers/file-writer.ts index 0371d4132a..65330bddd5 100644 --- a/core/test/unit/src/logger/writers/file-writer.ts +++ b/core/test/unit/src/logger/writers/file-writer.ts @@ -9,11 +9,12 @@ import { expect } from "chai" import chalk from "chalk" import stripAnsi from "strip-ansi" -import { RuntimeError } from "../../../../../src/exceptions" +import { RuntimeError } from "../../../../../src/exceptions.js" -import { getRootLogger, Logger, LogLevel } from "../../../../../src/logger/logger" -import { renderError } from "../../../../../src/logger/renderers" -import { render } from "../../../../../src/logger/writers/file-writer" +import type { Logger } from "../../../../../src/logger/logger.js" +import { getRootLogger, LogLevel } from "../../../../../src/logger/logger.js" +import { renderError } from "../../../../../src/logger/renderers.js" +import { render } from "../../../../../src/logger/writers/file-writer.js" const logger: Logger = getRootLogger() diff --git a/core/test/unit/src/logger/writers/json-terminal-writer.ts b/core/test/unit/src/logger/writers/json-terminal-writer.ts index 0e5b7f84a3..4058ad8519 100644 --- a/core/test/unit/src/logger/writers/json-terminal-writer.ts +++ b/core/test/unit/src/logger/writers/json-terminal-writer.ts @@ -8,9 +8,10 @@ import { expect } from "chai" -import { JsonTerminalWriter } from "../../../../../src/logger/writers/json-terminal-writer" -import { getRootLogger, Logger } from "../../../../../src/logger/logger" -import { freezeTime } from "../../../../helpers" +import { JsonTerminalWriter } from "../../../../../src/logger/writers/json-terminal-writer.js" +import type { Logger } from "../../../../../src/logger/logger.js" +import { getRootLogger } from "../../../../../src/logger/logger.js" +import { freezeTime } from "../../../../helpers.js" const logger: Logger = getRootLogger() diff --git a/core/test/unit/src/logger/writers/terminal-writer.ts b/core/test/unit/src/logger/writers/terminal-writer.ts index 22a6981091..b86f233ef5 100644 --- a/core/test/unit/src/logger/writers/terminal-writer.ts +++ b/core/test/unit/src/logger/writers/terminal-writer.ts @@ -8,9 +8,10 @@ import { expect } from "chai" -import { TerminalWriter } from "../../../../../src/logger/writers/terminal-writer" -import { getRootLogger, Logger } from "../../../../../src/logger/logger" -import { formatForTerminal } from "../../../../../src/logger/renderers" +import { TerminalWriter } from "../../../../../src/logger/writers/terminal-writer.js" +import type { Logger } from "../../../../../src/logger/logger.js" +import { getRootLogger } from "../../../../../src/logger/logger.js" +import { formatForTerminal } from "../../../../../src/logger/renderers.js" const logger: Logger = getRootLogger() diff --git a/core/test/unit/src/outputs.ts b/core/test/unit/src/outputs.ts index 0c6263c6e3..68dc8d017b 100644 --- a/core/test/unit/src/outputs.ts +++ b/core/test/unit/src/outputs.ts @@ -6,15 +6,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import tmp from "tmp-promise" -import { createProjectConfig, makeTempDir, TestGarden } from "../../helpers" -import { resolveProjectOutputs } from "../../../src/outputs" +import type tmp from "tmp-promise" +import { createProjectConfig, makeTempDir, TestGarden } from "../../helpers.js" +import { resolveProjectOutputs } from "../../../src/outputs.js" import { expect } from "chai" -import { realpath } from "fs-extra" -import { createGardenPlugin } from "../../../src/plugin/plugin" -import { ProjectConfig } from "../../../src/config/project" -import { DEFAULT_BUILD_TIMEOUT_SEC, GardenApiVersion } from "../../../src/constants" -import { joi } from "../../../src/config/common" +import fsExtra from "fs-extra" +const { realpath } = fsExtra +import { createGardenPlugin } from "../../../src/plugin/plugin.js" +import type { ProjectConfig } from "../../../src/config/project.js" +import { DEFAULT_BUILD_TIMEOUT_SEC, GardenApiVersion } from "../../../src/constants.js" +import { joi } from "../../../src/config/common.js" describe("resolveProjectOutputs", () => { let tmpDir: tmp.DirectoryResult diff --git a/core/test/unit/src/plugins.ts b/core/test/unit/src/plugins.ts index 26eaa2e631..fa650446d0 100644 --- a/core/test/unit/src/plugins.ts +++ b/core/test/unit/src/plugins.ts @@ -7,13 +7,14 @@ */ import { expect } from "chai" -import { joi } from "../../../src/config/common" -import { getRootLogger } from "../../../src/logger/logger" -import { BuildActionDefinition } from "../../../src/plugin/action-types" -import { createGardenPlugin, PluginBuildActionParamsBase } from "../../../src/plugin/plugin" -import { resolvePlugins } from "../../../src/plugins" -import { findByName } from "../../../src/util/util" -import { expectError } from "../../helpers" +import { joi } from "../../../src/config/common.js" +import { getRootLogger } from "../../../src/logger/logger.js" +import type { BuildActionDefinition } from "../../../src/plugin/action-types.js" +import type { PluginBuildActionParamsBase } from "../../../src/plugin/plugin.js" +import { createGardenPlugin } from "../../../src/plugin/plugin.js" +import { resolvePlugins } from "../../../src/plugins.js" +import { findByName } from "../../../src/util/util.js" +import { expectError } from "../../helpers.js" describe("resolvePlugins", () => { const log = getRootLogger().createLog() diff --git a/core/test/unit/src/plugins/container/build.ts b/core/test/unit/src/plugins/container/build.ts index 3b0c3fcec1..10531b9538 100644 --- a/core/test/unit/src/plugins/container/build.ts +++ b/core/test/unit/src/plugins/container/build.ts @@ -9,16 +9,20 @@ import { expect } from "chai" import { join } from "path" import sinon from "sinon" -import { ResolvedBuildAction, BuildActionConfig } from "../../../../../src/actions/build" -import { ConfigGraph } from "../../../../../src/graph/config-graph" -import { ActionLog, createActionLog, Log } from "../../../../../src/logger/log-entry" -import { PluginContext } from "../../../../../src/plugin-context" -import { buildContainer, getContainerBuildStatus } from "../../../../../src/plugins/container/build" -import { ContainerProvider, gardenPlugin } from "../../../../../src/plugins/container/container" -import { containerHelpers } from "../../../../../src/plugins/container/helpers" -import { joinWithPosix } from "../../../../../src/util/fs" -import { getDataDir, TestGarden, makeTestGarden } from "../../../../helpers" -import { createFile } from "fs-extra" +import type { ResolvedBuildAction, BuildActionConfig } from "../../../../../src/actions/build.js" +import type { ConfigGraph } from "../../../../../src/graph/config-graph.js" +import type { ActionLog, Log } from "../../../../../src/logger/log-entry.js" +import { createActionLog } from "../../../../../src/logger/log-entry.js" +import type { PluginContext } from "../../../../../src/plugin-context.js" +import { buildContainer, getContainerBuildStatus } from "../../../../../src/plugins/container/build.js" +import type { ContainerProvider } from "../../../../../src/plugins/container/container.js" +import { gardenPlugin } from "../../../../../src/plugins/container/container.js" +import { containerHelpers } from "../../../../../src/plugins/container/helpers.js" +import { joinWithPosix } from "../../../../../src/util/fs.js" +import type { TestGarden } from "../../../../helpers.js" +import { getDataDir, makeTestGarden } from "../../../../helpers.js" +import fsExtra from "fs-extra" +const { createFile } = fsExtra context("build.ts", () => { const projectRoot = getDataDir("test-project-container") diff --git a/core/test/unit/src/plugins/container/container.ts b/core/test/unit/src/plugins/container/container.ts index 5ad869aa9c..1e6126bbe4 100644 --- a/core/test/unit/src/plugins/container/container.ts +++ b/core/test/unit/src/plugins/container/container.ts @@ -6,42 +6,49 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import td from "testdouble" +import * as td from "testdouble" -import { PluginContext } from "../../../../../src/plugin-context" +import type { PluginContext } from "../../../../../src/plugin-context.js" +import type { ContainerProvider } from "../../../../../src/plugins/container/container.js" import { gardenPlugin, - ContainerProvider, convertContainerModule, configureContainerModule, -} from "../../../../../src/plugins/container/container" -import { expectError, getDataDir, makeTestGarden, TestGarden } from "../../../../helpers" -import { Log } from "../../../../../src/logger/log-entry" -import { ConfigGraph } from "../../../../../src/graph/config-graph" -import { GardenModule, moduleFromConfig } from "../../../../../src/types/module" +} from "../../../../../src/plugins/container/container.js" +import type { TestGarden } from "../../../../helpers.js" +import { expectError, getDataDir, makeTestGarden } from "../../../../helpers.js" +import type { Log } from "../../../../../src/logger/log-entry.js" +import type { ConfigGraph } from "../../../../../src/graph/config-graph.js" +import type { GardenModule } from "../../../../../src/types/module.js" +import { moduleFromConfig } from "../../../../../src/types/module.js" import { expect } from "chai" -import { +import type { ContainerBuildActionSpec, ContainerModule, ContainerModuleConfig, ContainerRuntimeActionConfig, +} from "../../../../../src/plugins/container/moduleConfig.js" +import { defaultContainerResources, defaultDeploymentStrategy, defaultDockerfileName, -} from "../../../../../src/plugins/container/moduleConfig" -import { ExecBuildConfig } from "../../../../../src/plugins/exec/build" +} from "../../../../../src/plugins/container/moduleConfig.js" +import type { ExecBuildConfig } from "../../../../../src/plugins/exec/build.js" import { DEFAULT_BUILD_TIMEOUT_SEC, DEFAULT_RUN_TIMEOUT_SEC, DEFAULT_TEST_TIMEOUT_SEC, GardenApiVersion, -} from "../../../../../src/constants" +} from "../../../../../src/constants.js" import { resolve } from "path" -import { ConvertModuleParams } from "../../../../../src/plugin/handlers/Module/convert" -import { omit } from "lodash" -import { GardenTask, taskFromConfig } from "../../../../../src/types/task" -import { GardenService, serviceFromConfig } from "../../../../../src/types/service" -import { GardenTest, testFromConfig } from "../../../../../src/types/test" +import type { ConvertModuleParams } from "../../../../../src/plugin/handlers/Module/convert.js" +import { omit } from "lodash-es" +import type { GardenTask } from "../../../../../src/types/task.js" +import { taskFromConfig } from "../../../../../src/types/task.js" +import type { GardenService } from "../../../../../src/types/service.js" +import { serviceFromConfig } from "../../../../../src/types/service.js" +import type { GardenTest } from "../../../../../src/types/test.js" +import { testFromConfig } from "../../../../../src/types/test.js" describe("plugins.container", () => { const projectRoot = getDataDir("test-project-container") diff --git a/core/test/unit/src/plugins/container/helpers.ts b/core/test/unit/src/plugins/container/helpers.ts index 38d24248cb..1680007813 100644 --- a/core/test/unit/src/plugins/container/helpers.ts +++ b/core/test/unit/src/plugins/container/helpers.ts @@ -10,26 +10,24 @@ import { expect } from "chai" import { join } from "path" import cloneDeep from "fast-copy" -import td from "testdouble" +import * as td from "testdouble" import tmp from "tmp-promise" -import { writeFile, mkdir } from "fs-extra" - -import { Garden } from "../../../../../src/garden" -import { PluginContext } from "../../../../../src/plugin-context" -import { gardenPlugin } from "../../../../../src/plugins/container/container" -import { expectError, getDataDir, getPropertyName, makeTestGarden } from "../../../../helpers" -import { moduleFromConfig } from "../../../../../src/types/module" -import { ModuleConfig } from "../../../../../src/config/module" -import { Log } from "../../../../../src/logger/log-entry" -import { - ContainerModuleSpec, - ContainerModuleConfig, - defaultDockerfileName, -} from "../../../../../src/plugins/container/moduleConfig" -import { containerHelpers as helpers } from "../../../../../src/plugins/container/helpers" -import { DEFAULT_BUILD_TIMEOUT_SEC, GardenApiVersion } from "../../../../../src/constants" -import { dedent } from "../../../../../src/util/string" -import { ModuleVersion } from "../../../../../src/vcs/vcs" +import fsExtra from "fs-extra" +const { writeFile, mkdir } = fsExtra + +import { Garden } from "../../../../../src/garden.js" +import type { PluginContext } from "../../../../../src/plugin-context.js" +import { gardenPlugin } from "../../../../../src/plugins/container/container.js" +import { expectError, getDataDir, getPropertyName, makeTestGarden } from "../../../../helpers.js" +import { moduleFromConfig } from "../../../../../src/types/module.js" +import type { ModuleConfig } from "../../../../../src/config/module.js" +import type { Log } from "../../../../../src/logger/log-entry.js" +import type { ContainerModuleSpec, ContainerModuleConfig } from "../../../../../src/plugins/container/moduleConfig.js" +import { defaultDockerfileName } from "../../../../../src/plugins/container/moduleConfig.js" +import { containerHelpers as helpers } from "../../../../../src/plugins/container/helpers.js" +import { DEFAULT_BUILD_TIMEOUT_SEC, GardenApiVersion } from "../../../../../src/constants.js" +import { dedent } from "../../../../../src/util/string.js" +import type { ModuleVersion } from "../../../../../src/vcs/vcs.js" describe("containerHelpers", () => { const projectRoot = getDataDir("test-project-container") diff --git a/core/test/unit/src/plugins/exec/exec.ts b/core/test/unit/src/plugins/exec/exec.ts index 029f012178..ea3bd4fc9c 100644 --- a/core/test/unit/src/plugins/exec/exec.ts +++ b/core/test/unit/src/plugins/exec/exec.ts @@ -9,10 +9,12 @@ import { expect } from "chai" import { join } from "path" -import { Garden } from "../../../../../src/garden" -import { ExecProvider, gardenPlugin } from "../../../../../src/plugins/exec/exec" -import { ActionLog, createActionLog } from "../../../../../src/logger/log-entry" -import { keyBy, omit } from "lodash" +import type { Garden } from "../../../../../src/garden.js" +import type { ExecProvider } from "../../../../../src/plugins/exec/exec.js" +import { gardenPlugin } from "../../../../../src/plugins/exec/exec.js" +import type { ActionLog } from "../../../../../src/logger/log-entry.js" +import { createActionLog } from "../../../../../src/logger/log-entry.js" +import { keyBy, omit } from "lodash-es" import { getDataDir, makeTestModule, @@ -21,38 +23,35 @@ import { TestGarden, makeModuleConfig, makeTempDir, -} from "../../../../helpers" -import { RunTask } from "../../../../../src/tasks/run" -import { makeTestGarden } from "../../../../helpers" -import { ModuleConfig } from "../../../../../src/config/module" -import { ConfigGraph } from "../../../../../src/graph/config-graph" -import { pathExists, emptyDir } from "fs-extra" -import { TestTask } from "../../../../../src/tasks/test" -import { readFile, remove } from "fs-extra" -import { dedent } from "../../../../../src/util/string" -import { sleep } from "../../../../../src/util/util" -import { configureExecModule, ExecModuleConfig } from "../../../../../src/plugins/exec/moduleConfig" -import { actionFromConfig } from "../../../../../src/graph/actions" -import { TestAction, TestActionConfig } from "../../../../../src/actions/test" -import { PluginContext } from "../../../../../src/plugin-context" -import { - convertModules, - ConvertModulesResult, - findActionConfigInGroup, - findGroupConfig, -} from "../../../../../src/resolve-module" -import tmp from "tmp-promise" -import { ProjectConfig } from "../../../../../src/config/project" -import { BuildActionConfig } from "../../../../../src/actions/build" -import { DeployActionConfig } from "../../../../../src/actions/deploy" -import { RunActionConfig } from "../../../../../src/actions/run" -import { getLogFilePath } from "../../../../../src/plugins/exec/deploy" +} from "../../../../helpers.js" +import { RunTask } from "../../../../../src/tasks/run.js" +import { makeTestGarden } from "../../../../helpers.js" +import type { ModuleConfig } from "../../../../../src/config/module.js" +import type { ConfigGraph } from "../../../../../src/graph/config-graph.js" +import fsExtra from "fs-extra" +const { pathExists, emptyDir, readFile, remove } = fsExtra +import { TestTask } from "../../../../../src/tasks/test.js" +import { dedent } from "../../../../../src/util/string.js" +import { sleep } from "../../../../../src/util/util.js" +import type { ExecModuleConfig } from "../../../../../src/plugins/exec/moduleConfig.js" +import { configureExecModule } from "../../../../../src/plugins/exec/moduleConfig.js" +import { actionFromConfig } from "../../../../../src/graph/actions.js" +import type { TestAction, TestActionConfig } from "../../../../../src/actions/test.js" +import type { PluginContext } from "../../../../../src/plugin-context.js" +import type { ConvertModulesResult } from "../../../../../src/resolve-module.js" +import { convertModules, findActionConfigInGroup, findGroupConfig } from "../../../../../src/resolve-module.js" +import type tmp from "tmp-promise" +import type { ProjectConfig } from "../../../../../src/config/project.js" +import type { BuildActionConfig } from "../../../../../src/actions/build.js" +import type { DeployActionConfig } from "../../../../../src/actions/deploy.js" +import type { RunActionConfig } from "../../../../../src/actions/run.js" +import { getLogFilePath } from "../../../../../src/plugins/exec/deploy.js" import { DEFAULT_BUILD_TIMEOUT_SEC, DEFAULT_RUN_TIMEOUT_SEC, DEFAULT_TEST_TIMEOUT_SEC, -} from "../../../../../src/constants" -import { isRunning, killRecursive } from "../../../../../src/process" +} from "../../../../../src/constants.js" +import { isRunning, killRecursive } from "../../../../../src/process.js" describe("exec plugin", () => { context("test-project based tests", () => { diff --git a/core/test/unit/src/plugins/exec/logs.ts b/core/test/unit/src/plugins/exec/logs.ts index 64926faf9b..b92f4dd7f6 100644 --- a/core/test/unit/src/plugins/exec/logs.ts +++ b/core/test/unit/src/plugins/exec/logs.ts @@ -10,15 +10,17 @@ import tmp from "tmp-promise" import { expect } from "chai" import { join } from "path" import moment from "moment" -import { Garden } from "../../../../../src/garden" -import { gardenPlugin } from "../../../../../src/plugins/exec/exec" -import { Log } from "../../../../../src/logger/log-entry" -import { getDataDir, makeTestGarden } from "../../../../helpers" -import { appendFile, ensureFile, remove, writeFile } from "fs-extra" -import { randomString } from "../../../../../src/util/string" -import { ExecLogsFollower, LocalServiceLogEntry } from "../../../../../src/plugins/exec/logs" -import Stream from "ts-stream" -import { sleep } from "../../../../../src/util/util" +import type { Garden } from "../../../../../src/garden.js" +import { gardenPlugin } from "../../../../../src/plugins/exec/exec.js" +import type { Log } from "../../../../../src/logger/log-entry.js" +import { getDataDir, makeTestGarden } from "../../../../helpers.js" +import fsExtra from "fs-extra" +const { appendFile, ensureFile, remove, writeFile } = fsExtra +import { randomString } from "../../../../../src/util/string.js" +import type { LocalServiceLogEntry } from "../../../../../src/plugins/exec/logs.js" +import { ExecLogsFollower } from "../../../../../src/plugins/exec/logs.js" +import { Stream } from "ts-stream" +import { sleep } from "../../../../../src/util/util.js" const range = (length: number) => [...Array(length).keys()] const defaultSleep = 1000 diff --git a/core/test/unit/src/plugins/invalid-name.ts b/core/test/unit/src/plugins/invalid-name.ts index 9a7db0a9b9..3c8e39d12a 100644 --- a/core/test/unit/src/plugins/invalid-name.ts +++ b/core/test/unit/src/plugins/invalid-name.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { createGardenPlugin } from "../../../../src/plugin/plugin" +import { createGardenPlugin } from "../../../../src/plugin/plugin.js" export const gardenPlugin = () => createGardenPlugin({ diff --git a/core/test/unit/src/plugins/kubernetes/container/build/buildkit.ts b/core/test/unit/src/plugins/kubernetes/container/build/buildkit.ts index b72490303b..ef028214b7 100644 --- a/core/test/unit/src/plugins/kubernetes/container/build/buildkit.ts +++ b/core/test/unit/src/plugins/kubernetes/container/build/buildkit.ts @@ -7,20 +7,20 @@ */ import { expect } from "chai" -import { DeepPartial } from "utility-types" -import { ContainerBuildAction } from "../../../../../../../src/plugins/container/config" -import { +import type { DeepPartial } from "utility-types" +import type { ContainerBuildAction } from "../../../../../../../src/plugins/container/config.js" +import type { ClusterBuildkitCacheConfig, - defaultResources, KubernetesProvider, -} from "../../../../../../../src/plugins/kubernetes/config" -import { buildkitImageName, k8sUtilImageName } from "../../../../../../../src/plugins/kubernetes/constants" +} from "../../../../../../../src/plugins/kubernetes/config.js" +import { defaultResources } from "../../../../../../../src/plugins/kubernetes/config.js" +import { buildkitImageName, k8sUtilImageName } from "../../../../../../../src/plugins/kubernetes/constants.js" import { getBuildkitDeployment, getBuildkitFlags, getBuildkitImageFlags, -} from "../../../../../../../src/plugins/kubernetes/container/build/buildkit" -import { getDataDir, makeTestGarden } from "../../../../../../helpers" +} from "../../../../../../../src/plugins/kubernetes/container/build/buildkit.js" +import { getDataDir, makeTestGarden } from "../../../../../../helpers.js" describe("getBuildkitModuleFlags", () => { it("should correctly format the build target option", async () => { diff --git a/core/test/unit/src/plugins/kubernetes/container/build/common.ts b/core/test/unit/src/plugins/kubernetes/container/build/common.ts index 36a9a8911f..e495ba69dd 100644 --- a/core/test/unit/src/plugins/kubernetes/container/build/common.ts +++ b/core/test/unit/src/plugins/kubernetes/container/build/common.ts @@ -9,11 +9,12 @@ import { getUtilManifests, skopeoManifestUnknown, -} from "../../../../../../../src/plugins/kubernetes/container/build/common" +} from "../../../../../../../src/plugins/kubernetes/container/build/common.js" import { expect } from "chai" -import { defaultResources, KubernetesProvider } from "../../../../../../../src/plugins/kubernetes/config" -import { DeepPartial } from "../../../../../../../src/util/util" -import { k8sUtilImageName } from "../../../../../../../src/plugins/kubernetes/constants" +import type { KubernetesProvider } from "../../../../../../../src/plugins/kubernetes/config.js" +import { defaultResources } from "../../../../../../../src/plugins/kubernetes/config.js" +import type { DeepPartial } from "../../../../../../../src/util/util.js" +import { k8sUtilImageName } from "../../../../../../../src/plugins/kubernetes/constants.js" describe("common build", () => { describe("manifest error", () => { diff --git a/core/test/unit/src/plugins/kubernetes/container/build/kaniko.ts b/core/test/unit/src/plugins/kubernetes/container/build/kaniko.ts index e630df5078..b72cdca029 100644 --- a/core/test/unit/src/plugins/kubernetes/container/build/kaniko.ts +++ b/core/test/unit/src/plugins/kubernetes/container/build/kaniko.ts @@ -11,11 +11,12 @@ import { getKanikoFlags, DEFAULT_KANIKO_FLAGS, getKanikoBuilderPodManifest, -} from "../../../../../../../src/plugins/kubernetes/container/build/kaniko" +} from "../../../../../../../src/plugins/kubernetes/container/build/kaniko.js" import { expect } from "chai" -import { defaultResources, KubernetesProvider } from "../../../../../../../src/plugins/kubernetes/config" -import { defaultKanikoImageName, k8sUtilImageName } from "../../../../../../../src/plugins/kubernetes/constants" -import { DeepPartial } from "utility-types" +import type { KubernetesProvider } from "../../../../../../../src/plugins/kubernetes/config.js" +import { defaultResources } from "../../../../../../../src/plugins/kubernetes/config.js" +import { defaultKanikoImageName, k8sUtilImageName } from "../../../../../../../src/plugins/kubernetes/constants.js" +import type { DeepPartial } from "utility-types" describe("kaniko build", () => { it("should return as successful when immutable tag already exists in destination", () => { diff --git a/core/test/unit/src/plugins/kubernetes/container/service.ts b/core/test/unit/src/plugins/kubernetes/container/service.ts index fb4f39fe14..2b817e5f41 100644 --- a/core/test/unit/src/plugins/kubernetes/container/service.ts +++ b/core/test/unit/src/plugins/kubernetes/container/service.ts @@ -6,12 +6,12 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { createServiceResources } from "../../../../../../src/plugins/kubernetes/container/service" -import { makeTestGarden, getDataDir } from "../../../../../helpers" -import { gardenPlugin } from "../../../../../../src/plugins/container/container" -import { Garden } from "../../../../../../src/garden" +import { createServiceResources } from "../../../../../../src/plugins/kubernetes/container/service.js" +import { makeTestGarden, getDataDir } from "../../../../../helpers.js" +import { gardenPlugin } from "../../../../../../src/plugins/container/container.js" +import type { Garden } from "../../../../../../src/garden.js" import { expect } from "chai" -import { gardenAnnotationKey } from "../../../../../../src/util/string" +import { gardenAnnotationKey } from "../../../../../../src/util/string.js" describe("createServiceResources", () => { const projectRoot = getDataDir("test-project-container") diff --git a/core/test/unit/src/plugins/kubernetes/container/util.ts b/core/test/unit/src/plugins/kubernetes/container/util.ts index 44e00b928b..5f078bd2ed 100644 --- a/core/test/unit/src/plugins/kubernetes/container/util.ts +++ b/core/test/unit/src/plugins/kubernetes/container/util.ts @@ -7,7 +7,7 @@ */ import { expect } from "chai" -import { getResourceRequirements } from "../../../../../../src/plugins/kubernetes/container/util" +import { getResourceRequirements } from "../../../../../../src/plugins/kubernetes/container/util.js" describe("getResourceRequirements", () => { it("should return resources", () => { diff --git a/core/test/unit/src/plugins/kubernetes/dev-mode.ts b/core/test/unit/src/plugins/kubernetes/dev-mode.ts index 8518fda6c1..19493fdb81 100644 --- a/core/test/unit/src/plugins/kubernetes/dev-mode.ts +++ b/core/test/unit/src/plugins/kubernetes/dev-mode.ts @@ -7,7 +7,7 @@ */ import { expect } from "chai" -import { builtInExcludes, getLocalSyncPath, makeSyncConfig } from "../../../../../src/plugins/kubernetes/sync" +import { builtInExcludes, getLocalSyncPath, makeSyncConfig } from "../../../../../src/plugins/kubernetes/sync.js" describe("k8s sync helpers", () => { describe("getLocalSyncPath", () => { diff --git a/core/test/unit/src/plugins/kubernetes/ephemeral.ts b/core/test/unit/src/plugins/kubernetes/ephemeral.ts index 2cda4cdeea..6a8982f18e 100644 --- a/core/test/unit/src/plugins/kubernetes/ephemeral.ts +++ b/core/test/unit/src/plugins/kubernetes/ephemeral.ts @@ -7,13 +7,14 @@ */ import { expect } from "chai" -import { providerFromConfig } from "../../../../../src/config/provider" -import { Garden } from "../../../../../src/garden" -import { getRootLogger } from "../../../../../src/logger/logger" -import { configureProvider } from "../../../../../src/plugins/kubernetes/ephemeral/config" -import { gardenPlugin } from "../../../../../src/plugins/kubernetes/ephemeral/ephemeral" -import { TempDirectory, expectError, makeTempDir, makeTestGardenA } from "../../../../helpers" -import { FakeCloudApi } from "../../../../helpers/api" +import { providerFromConfig } from "../../../../../src/config/provider.js" +import type { Garden } from "../../../../../src/garden.js" +import { getRootLogger } from "../../../../../src/logger/logger.js" +import { configureProvider } from "../../../../../src/plugins/kubernetes/ephemeral/config.js" +import { gardenPlugin } from "../../../../../src/plugins/kubernetes/ephemeral/ephemeral.js" +import type { TempDirectory } from "../../../../helpers.js" +import { expectError, makeTempDir, makeTestGardenA } from "../../../../helpers.js" +import { FakeCloudApi } from "../../../../helpers/api.js" describe("ephemeral-kubernetes configureProvider", () => { const basicConfig = { diff --git a/core/test/unit/src/plugins/kubernetes/init.ts b/core/test/unit/src/plugins/kubernetes/init.ts index 4fe022f7b1..c85f6a9af2 100644 --- a/core/test/unit/src/plugins/kubernetes/init.ts +++ b/core/test/unit/src/plugins/kubernetes/init.ts @@ -8,22 +8,23 @@ import { expect } from "chai" import { join } from "path" -import td from "testdouble" -import { Garden } from "../../../../../src/garden" -import { prepareDockerAuth, getIngressMisconfigurationWarnings } from "../../../../../src/plugins/kubernetes/init" -import { dockerAuthSecretKey } from "../../../../../src/plugins/kubernetes/constants" -import { ConfigurationError } from "../../../../../src/exceptions" -import { KubernetesProvider, KubernetesConfig, defaultResources } from "../../../../../src/plugins/kubernetes/config" -import { gardenPlugin } from "../../../../../src/plugins/container/container" -import { defaultSystemNamespace } from "../../../../../src/plugins/kubernetes/system" -import { KubeApi } from "../../../../../src/plugins/kubernetes/api" -import { makeTestGarden, expectError, getDataDir } from "../../../../helpers" -import { KubernetesList, KubernetesResource } from "../../../../../src/plugins/kubernetes/types" -import { V1IngressClass, V1Secret } from "@kubernetes/client-node" -import { PluginContext } from "../../../../../src/plugin-context" -import { kubectlSpec } from "../../../../../src/plugins/kubernetes/kubectl" -import { PluginTool } from "../../../../../src/util/ext-tools" -import { uuidv4 } from "../../../../../src/util/random" +import * as td from "testdouble" +import type { Garden } from "../../../../../src/garden.js" +import { prepareDockerAuth, getIngressMisconfigurationWarnings } from "../../../../../src/plugins/kubernetes/init.js" +import { dockerAuthSecretKey } from "../../../../../src/plugins/kubernetes/constants.js" +import { ConfigurationError } from "../../../../../src/exceptions.js" +import type { KubernetesProvider, KubernetesConfig } from "../../../../../src/plugins/kubernetes/config.js" +import { defaultResources } from "../../../../../src/plugins/kubernetes/config.js" +import { gardenPlugin } from "../../../../../src/plugins/container/container.js" +import { defaultSystemNamespace } from "../../../../../src/plugins/kubernetes/system.js" +import { KubeApi } from "../../../../../src/plugins/kubernetes/api.js" +import { makeTestGarden, expectError, getDataDir } from "../../../../helpers.js" +import type { KubernetesList, KubernetesResource } from "../../../../../src/plugins/kubernetes/types.js" +import type { V1IngressClass, V1Secret } from "@kubernetes/client-node" +import type { PluginContext } from "../../../../../src/plugin-context.js" +import { kubectlSpec } from "../../../../../src/plugins/kubernetes/kubectl.js" +import { PluginTool } from "../../../../../src/util/ext-tools.js" +import { uuidv4 } from "../../../../../src/util/random.js" const basicConfig: KubernetesConfig = { name: "kubernetes", @@ -150,8 +151,12 @@ describe("kubernetes init", () => { }, ], }) - td.when(core.readNamespacedSecret("test-docker-auth", "default")).thenResolve(dockerSimpleAuthSecret) - td.when(core.readNamespacedSecret("test-cred-helper-auth", "default")).thenResolve(dockerCredentialHelperSecret) + td.when(core.readNamespacedSecret({ name: "test-docker-auth", namespace: "default" })).thenResolve( + dockerSimpleAuthSecret + ) + td.when(core.readNamespacedSecret({ name: "test-cred-helper-auth", namespace: "default" })).thenResolve( + dockerCredentialHelperSecret + ) td.replace(api, "upsert") }) it("should merge both", async () => { @@ -202,8 +207,10 @@ describe("kubernetes init", () => { }, ], }) - td.when(core.readNamespacedSecret("test-docker-auth", "default")).thenResolve(emptyDockerSimpleAuthSecret) - td.when(core.readNamespacedSecret("test-cred-helper-auth", "default")).thenResolve( + td.when(core.readNamespacedSecret({ name: "test-docker-auth", namespace: "default" })).thenResolve( + emptyDockerSimpleAuthSecret + ) + td.when(core.readNamespacedSecret({ name: "test-cred-helper-auth", namespace: "default" })).thenResolve( emptyDockerCredentialHelperSecret ) td.replace(api, "upsert") diff --git a/core/test/unit/src/plugins/kubernetes/kubernetes-type/common.ts b/core/test/unit/src/plugins/kubernetes/kubernetes-type/common.ts index 55daf01853..c5e8a97f64 100644 --- a/core/test/unit/src/plugins/kubernetes/kubernetes-type/common.ts +++ b/core/test/unit/src/plugins/kubernetes/kubernetes-type/common.ts @@ -6,8 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { KubernetesTargetResourceSpec, ServiceResourceSpec } from "../../../../../../src/plugins/kubernetes/config" -import { convertServiceResourceSpec } from "../../../../../../src/plugins/kubernetes/kubernetes-type/common" +import type { + KubernetesTargetResourceSpec, + ServiceResourceSpec, +} from "../../../../../../src/plugins/kubernetes/config.js" +import { convertServiceResourceSpec } from "../../../../../../src/plugins/kubernetes/kubernetes-type/common.js" import { expect } from "chai" describe("convertServiceResource", () => { diff --git a/core/test/unit/src/plugins/kubernetes/kubernetes.ts b/core/test/unit/src/plugins/kubernetes/kubernetes.ts index 78a8bf365b..596949d214 100644 --- a/core/test/unit/src/plugins/kubernetes/kubernetes.ts +++ b/core/test/unit/src/plugins/kubernetes/kubernetes.ts @@ -6,13 +6,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { configureProvider, gardenPlugin } from "../../../../../src/plugins/kubernetes/kubernetes" -import { KubernetesConfig, defaultResources } from "../../../../../src/plugins/kubernetes/config" -import { defaultSystemNamespace } from "../../../../../src/plugins/kubernetes/system" +import { configureProvider, gardenPlugin } from "../../../../../src/plugins/kubernetes/kubernetes.js" +import type { KubernetesConfig } from "../../../../../src/plugins/kubernetes/config.js" +import { defaultResources } from "../../../../../src/plugins/kubernetes/config.js" +import { defaultSystemNamespace } from "../../../../../src/plugins/kubernetes/system.js" import { expect } from "chai" -import { TempDirectory, makeTempDir } from "../../../../helpers" -import { providerFromConfig } from "../../../../../src/config/provider" -import { Garden, makeDummyGarden } from "../../../../../src/garden" +import type { TempDirectory } from "../../../../helpers.js" +import { makeTempDir } from "../../../../helpers.js" +import { providerFromConfig } from "../../../../../src/config/provider.js" +import type { Garden } from "../../../../../src/garden.js" +import { makeDummyGarden } from "../../../../../src/garden.js" describe("kubernetes configureProvider", () => { const basicConfig: KubernetesConfig = { diff --git a/core/test/unit/src/plugins/kubernetes/port-forward.ts b/core/test/unit/src/plugins/kubernetes/port-forward.ts index 2d41be9e04..61c2e26470 100644 --- a/core/test/unit/src/plugins/kubernetes/port-forward.ts +++ b/core/test/unit/src/plugins/kubernetes/port-forward.ts @@ -7,12 +7,12 @@ */ import { expect } from "chai" -import { getForwardablePorts } from "../../../../../src/plugins/kubernetes/port-forward" -import { +import { getForwardablePorts } from "../../../../../src/plugins/kubernetes/port-forward.js" +import type { KubernetesDeployActionConfig, KubernetesDeployActionSpec, -} from "../../../../../src/plugins/kubernetes/kubernetes-type/config" -import { ResolvedDeployAction } from "../../../../../src/actions/deploy" +} from "../../../../../src/plugins/kubernetes/kubernetes-type/config.js" +import type { ResolvedDeployAction } from "../../../../../src/actions/deploy.js" describe("getForwardablePorts", () => { it("returns all ports for Service resources", () => { diff --git a/core/test/unit/src/plugins/kubernetes/status/ingress.ts b/core/test/unit/src/plugins/kubernetes/status/ingress.ts index 44e7e606c7..6f97b431d0 100644 --- a/core/test/unit/src/plugins/kubernetes/status/ingress.ts +++ b/core/test/unit/src/plugins/kubernetes/status/ingress.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { V1Ingress } from "@kubernetes/client-node" +import type { V1Ingress } from "@kubernetes/client-node" import { expect } from "chai" -import { getK8sIngresses } from "../../../../../../src/plugins/kubernetes/status/ingress" -import { KubernetesResource } from "../../../../../../src/plugins/kubernetes/types" +import { getK8sIngresses } from "../../../../../../src/plugins/kubernetes/status/ingress.js" +import type { KubernetesResource } from "../../../../../../src/plugins/kubernetes/types.js" describe("getK8sIngresses", () => { it("ignores non-Ingress resources", () => { diff --git a/core/test/unit/src/plugins/kubernetes/util.ts b/core/test/unit/src/plugins/kubernetes/util.ts index 6f37cfdba7..3d84248186 100644 --- a/core/test/unit/src/plugins/kubernetes/util.ts +++ b/core/test/unit/src/plugins/kubernetes/util.ts @@ -7,7 +7,7 @@ */ import { expect } from "chai" -import { sortBy } from "lodash" +import { sortBy } from "lodash-es" import { millicpuToString, kilobytesToString, @@ -17,10 +17,10 @@ import { getSelectorString, makePodName, matchSelector, -} from "../../../../../src/plugins/kubernetes/util" -import { KubernetesPod, KubernetesServerResource } from "../../../../../src/plugins/kubernetes/types" -import { V1Pod } from "@kubernetes/client-node" -import { sleep } from "../../../../../src/util/util" +} from "../../../../../src/plugins/kubernetes/util.js" +import type { KubernetesPod, KubernetesServerResource } from "../../../../../src/plugins/kubernetes/types.js" +import type { V1Pod } from "@kubernetes/client-node" +import { sleep } from "../../../../../src/util/util.js" describe("deduplicatePodsByLabel", () => { it("should return a list of pods, unique by label so that the latest pod is kept", () => { diff --git a/core/test/unit/src/process.ts b/core/test/unit/src/process.ts index 6da5c59592..1eebdf5852 100644 --- a/core/test/unit/src/process.ts +++ b/core/test/unit/src/process.ts @@ -7,9 +7,10 @@ */ import { expect } from "chai" -import { GlobalConfigStore } from "../../../src/config-store/global" -import { registerProcess } from "../../../src/process" -import { freezeTime, makeTempDir, TempDirectory } from "../../helpers" +import { GlobalConfigStore } from "../../../src/config-store/global.js" +import { registerProcess } from "../../../src/process.js" +import type { TempDirectory } from "../../helpers.js" +import { freezeTime, makeTempDir } from "../../helpers.js" describe("registerProcess", () => { let store: GlobalConfigStore diff --git a/core/test/unit/src/resolve-module.ts b/core/test/unit/src/resolve-module.ts index 254af21876..90802e8556 100644 --- a/core/test/unit/src/resolve-module.ts +++ b/core/test/unit/src/resolve-module.ts @@ -8,10 +8,11 @@ import { expect } from "chai" import { join, dirname } from "path" -import { getDataDir, makeTestGarden, makeTestGardenA, TestGarden } from "../../helpers" -import { DEFAULT_BUILD_TIMEOUT_SEC } from "../../../src/constants" -import { ConfigGraph } from "../../../src/graph/config-graph" -import { loadYamlFile } from "../../../src/util/util" +import type { TestGarden } from "../../helpers.js" +import { getDataDir, makeTestGarden, makeTestGardenA } from "../../helpers.js" +import { DEFAULT_BUILD_TIMEOUT_SEC } from "../../../src/constants.js" +import type { ConfigGraph } from "../../../src/graph/config-graph.js" +import { loadYamlFile } from "../../../src/util/util.js" describe("ModuleResolver", () => { // Note: We test the ModuleResolver via the TestGarden.resolveModule method, for convenience. diff --git a/core/test/unit/src/router/_helpers.ts b/core/test/unit/src/router/_helpers.ts index d56f13a84e..c51560467a 100644 --- a/core/test/unit/src/router/_helpers.ts +++ b/core/test/unit/src/router/_helpers.ts @@ -6,25 +6,28 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import Joi from "@hapi/joi" -import { ensureFile } from "fs-extra" -import { omit } from "lodash" +import type Joi from "@hapi/joi" +import fsExtra from "fs-extra" +const { ensureFile } = fsExtra +import { omit } from "lodash-es" import { join } from "path" -import { BaseRuntimeActionConfig } from "../../../../src/actions/base" -import { BuildActionConfig } from "../../../../src/actions/build" -import { joi } from "../../../../src/config/common" -import { validateSchema } from "../../../../src/config/validation" -import { createActionLog } from "../../../../src/logger/log-entry" -import { getModuleHandlerDescriptions } from "../../../../src/plugin/module-types" -import { createGardenPlugin, PartialGardenPluginSpec } from "../../../../src/plugin/plugin" -import { getProviderActionDescriptions, ProviderHandlers } from "../../../../src/plugin/providers" -import { createProjectConfig, makeTestGarden, projectRootA } from "../../../helpers" +import type { BaseRuntimeActionConfig } from "../../../../src/actions/base.js" +import type { BuildActionConfig } from "../../../../src/actions/build.js" +import { joi } from "../../../../src/config/common.js" +import { validateSchema } from "../../../../src/config/validation.js" +import { createActionLog } from "../../../../src/logger/log-entry.js" +import { getModuleHandlerDescriptions } from "../../../../src/plugin/module-types.js" +import type { PartialGardenPluginSpec } from "../../../../src/plugin/plugin.js" +import { createGardenPlugin } from "../../../../src/plugin/plugin.js" +import type { ProviderHandlers } from "../../../../src/plugin/providers.js" +import { getProviderActionDescriptions } from "../../../../src/plugin/providers.js" +import { createProjectConfig, makeTestGarden, projectRootA } from "../../../helpers.js" import { DEFAULT_BUILD_TIMEOUT_SEC, DEFAULT_DEPLOY_TIMEOUT_SEC, DEFAULT_RUN_TIMEOUT_SEC, DEFAULT_TEST_TIMEOUT_SEC, -} from "../../../../src/constants" +} from "../../../../src/constants.js" export async function getRouterTestData() { const { basePlugin, dateUsedForCompleted, returnWrongOutputsCfgKey, testPluginA, testPluginB } = diff --git a/core/test/unit/src/router/base.ts b/core/test/unit/src/router/base.ts index a8ee887874..15fac3e1a8 100644 --- a/core/test/unit/src/router/base.ts +++ b/core/test/unit/src/router/base.ts @@ -9,18 +9,18 @@ import { expect } from "chai" import cloneDeep from "fast-copy" -import { ResolvedBuildAction } from "../../../../src/actions/build" -import { joi } from "../../../../src/config/common" -import { resolveAction } from "../../../../src/graph/actions" -import { BuildActionDefinition } from "../../../../src/plugin/action-types" -import { createGardenPlugin, GardenPluginSpec, PluginBuildActionParamsBase } from "../../../../src/plugin/plugin" -import { ActionKindRouter } from "../../../../src/router/base" -import { expectError, TestGarden, getDefaultProjectConfig, makeTempGarden, TempDirectory } from "../../../helpers" -import { getRouterTestData } from "./_helpers" +import type { ResolvedBuildAction } from "../../../../src/actions/build.js" +import { joi } from "../../../../src/config/common.js" +import { resolveAction } from "../../../../src/graph/actions.js" +import type { BuildActionDefinition } from "../../../../src/plugin/action-types.js" +import type { GardenPluginSpec, PluginBuildActionParamsBase } from "../../../../src/plugin/plugin.js" +import { createGardenPlugin } from "../../../../src/plugin/plugin.js" +import type { ActionKindRouter } from "../../../../src/router/base.js" +import type { TestGarden } from "../../../helpers.js" +import { expectError, getDefaultProjectConfig, makeTempGarden } from "../../../helpers.js" +import { getRouterTestData } from "./_helpers.js" describe("BaseActionRouter", () => { - let tmpDir: TempDirectory - const testHandler = (params: PluginBuildActionParamsBase) => { return { detail: {}, @@ -56,7 +56,6 @@ describe("BaseActionRouter", () => { }, }) garden = res.garden - tmpDir = res.tmpDir } const router = await garden.getActionRouter() diff --git a/core/test/unit/src/router/build.ts b/core/test/unit/src/router/build.ts index 7f7ac992d2..85c70262fc 100644 --- a/core/test/unit/src/router/build.ts +++ b/core/test/unit/src/router/build.ts @@ -7,13 +7,12 @@ */ import { expect } from "chai" -import { ResolvedBuildAction } from "../../../../src/actions/build" -import { ConfigGraph } from "../../../../src/graph/config-graph" -import { ActionLog } from "../../../../src/logger/log-entry" -import { ActionRouter } from "../../../../src/router/router" -import { GardenModule } from "../../../../src/types/module" -import { TestGarden } from "../../../helpers" -import { getRouterTestData } from "./_helpers" +import type { ResolvedBuildAction } from "../../../../src/actions/build.js" +import type { ConfigGraph } from "../../../../src/graph/config-graph.js" +import type { ActionLog } from "../../../../src/logger/log-entry.js" +import type { ActionRouter } from "../../../../src/router/router.js" +import type { TestGarden } from "../../../helpers.js" +import { getRouterTestData } from "./_helpers.js" describe("build actions", () => { let garden: TestGarden @@ -21,7 +20,6 @@ describe("build actions", () => { let log: ActionLog let actionRouter: ActionRouter let resolvedBuildAction: ResolvedBuildAction - let module: GardenModule before(async () => { const data = await getRouterTestData() @@ -30,7 +28,6 @@ describe("build actions", () => { log = data.log actionRouter = data.actionRouter resolvedBuildAction = data.resolvedBuildAction - module = data.module }) after(async () => { diff --git a/core/test/unit/src/router/deploy.ts b/core/test/unit/src/router/deploy.ts index f76d5ebd66..637eb2a895 100644 --- a/core/test/unit/src/router/deploy.ts +++ b/core/test/unit/src/router/deploy.ts @@ -7,14 +7,15 @@ */ import { expect } from "chai" -import Stream from "ts-stream" -import { ResolvedDeployAction } from "../../../../src/actions/deploy" -import { ConfigGraph } from "../../../../src/graph/config-graph" -import { ActionLog } from "../../../../src/logger/log-entry" -import { ActionRouter } from "../../../../src/router/router" -import { DeployLogEntry } from "../../../../src/types/service" -import { TestGarden, expectError } from "../../../helpers" -import { getRouterTestData } from "./_helpers" +import { Stream } from "ts-stream" +import type { ResolvedDeployAction } from "../../../../src/actions/deploy.js" +import type { ConfigGraph } from "../../../../src/graph/config-graph.js" +import type { ActionLog } from "../../../../src/logger/log-entry.js" +import type { ActionRouter } from "../../../../src/router/router.js" +import type { DeployLogEntry } from "../../../../src/types/service.js" +import type { TestGarden } from "../../../helpers.js" +import { expectError } from "../../../helpers.js" +import { getRouterTestData } from "./_helpers.js" describe("deploy actions", () => { let garden: TestGarden diff --git a/core/test/unit/src/router/modules.ts b/core/test/unit/src/router/modules.ts index bf4fb94bc4..171dd45b54 100644 --- a/core/test/unit/src/router/modules.ts +++ b/core/test/unit/src/router/modules.ts @@ -7,11 +7,11 @@ */ import { expect } from "chai" -import { Log } from "../../../../src/logger/log-entry" -import { ActionRouter } from "../../../../src/router/router" -import { TestGarden } from "../../../helpers" -import { getRouterTestData } from "./_helpers" -import { DEFAULT_BUILD_TIMEOUT_SEC } from "../../../../src/constants" +import type { Log } from "../../../../src/logger/log-entry.js" +import type { ActionRouter } from "../../../../src/router/router.js" +import type { TestGarden } from "../../../helpers.js" +import { getRouterTestData } from "./_helpers.js" +import { DEFAULT_BUILD_TIMEOUT_SEC } from "../../../../src/constants.js" describe("module actions", () => { let garden: TestGarden diff --git a/core/test/unit/src/router/provider.ts b/core/test/unit/src/router/provider.ts index 94061c4828..67e3379fe2 100644 --- a/core/test/unit/src/router/provider.ts +++ b/core/test/unit/src/router/provider.ts @@ -7,13 +7,13 @@ */ import { expect } from "chai" -import { providerFromConfig } from "../../../../src/config/provider" -import { ConfigGraph } from "../../../../src/graph/config-graph" -import { Log } from "../../../../src/logger/log-entry" -import { DashboardPage } from "../../../../src/plugin/handlers/Provider/getDashboardPage" -import { ActionRouter } from "../../../../src/router/router" -import { TestGarden } from "../../../helpers" -import { getRouterTestData } from "./_helpers" +import { providerFromConfig } from "../../../../src/config/provider.js" +import type { ConfigGraph } from "../../../../src/graph/config-graph.js" +import type { Log } from "../../../../src/logger/log-entry.js" +import type { DashboardPage } from "../../../../src/plugin/handlers/Provider/getDashboardPage.js" +import type { ActionRouter } from "../../../../src/router/router.js" +import type { TestGarden } from "../../../helpers.js" +import { getRouterTestData } from "./_helpers.js" describe("provider actions", async () => { let garden: TestGarden diff --git a/core/test/unit/src/router/run.ts b/core/test/unit/src/router/run.ts index 4d966c6b95..6c0c37b0ce 100644 --- a/core/test/unit/src/router/run.ts +++ b/core/test/unit/src/router/run.ts @@ -7,14 +7,16 @@ */ import { expect } from "chai" -import { emptyDir, pathExists, readFile } from "fs-extra" +import fsExtra from "fs-extra" +const { emptyDir, pathExists, readFile } = fsExtra import { join } from "path" -import { ResolvedRunAction } from "../../../../src/actions/run" -import { ConfigGraph } from "../../../../src/graph/config-graph" -import { ActionLog } from "../../../../src/logger/log-entry" -import { ActionRouter } from "../../../../src/router/router" -import { TestGarden, expectError } from "../../../helpers" -import { getRouterTestData } from "./_helpers" +import type { ResolvedRunAction } from "../../../../src/actions/run.js" +import type { ConfigGraph } from "../../../../src/graph/config-graph.js" +import type { ActionLog } from "../../../../src/logger/log-entry.js" +import type { ActionRouter } from "../../../../src/router/router.js" +import type { TestGarden } from "../../../helpers.js" +import { expectError } from "../../../helpers.js" +import { getRouterTestData } from "./_helpers.js" describe("run actions", () => { let garden: TestGarden diff --git a/core/test/unit/src/router/test.ts b/core/test/unit/src/router/test.ts index 05541f3c0a..3e79bc1a31 100644 --- a/core/test/unit/src/router/test.ts +++ b/core/test/unit/src/router/test.ts @@ -7,23 +7,22 @@ */ import { expect } from "chai" -import { emptyDir, pathExists, readFile } from "fs-extra" +import fsExtra from "fs-extra" +const { emptyDir, pathExists, readFile } = fsExtra import { join } from "path" -import { TestActionConfig, TestAction } from "../../../../src/actions/test" -import { actionFromConfig } from "../../../../src/graph/actions" -import { ConfigGraph } from "../../../../src/graph/config-graph" -import { ActionLog } from "../../../../src/logger/log-entry" -import { ActionRouter } from "../../../../src/router/router" -import { GardenModule } from "../../../../src/types/module" -import { TestGarden } from "../../../helpers" -import { getRouterTestData } from "./_helpers" +import type { TestActionConfig, TestAction } from "../../../../src/actions/test.js" +import { actionFromConfig } from "../../../../src/graph/actions.js" +import type { ConfigGraph } from "../../../../src/graph/config-graph.js" +import type { ActionLog } from "../../../../src/logger/log-entry.js" +import type { ActionRouter } from "../../../../src/router/router.js" +import type { TestGarden } from "../../../helpers.js" +import { getRouterTestData } from "./_helpers.js" describe("test actions", () => { let garden: TestGarden let graph: ConfigGraph let log: ActionLog let actionRouter: ActionRouter - let module: GardenModule async function getResolvedAction(testConfig: TestActionConfig) { const action = (await actionFromConfig({ @@ -47,7 +46,6 @@ describe("test actions", () => { graph = data.graph log = data.log actionRouter = data.actionRouter - module = data.module }) after(async () => { diff --git a/core/test/unit/src/server/server.ts b/core/test/unit/src/server/server.ts index 76cdf6c73d..fcb47b3cf4 100644 --- a/core/test/unit/src/server/server.ts +++ b/core/test/unit/src/server/server.ts @@ -6,22 +6,23 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { expectError, makeTestGardenA, taskResultOutputs, testPluginReferences } from "../../../helpers" -import { Server } from "http" -import { GardenServer, startServer } from "../../../../src/server/server" -import { Garden } from "../../../../src/garden" +import { expectError, makeTestGardenA, taskResultOutputs, testPluginReferences } from "../../../helpers.js" +import type { Server } from "http" +import { GardenServer, startServer } from "../../../../src/server/server.js" +import type { Garden } from "../../../../src/garden.js" import { expect } from "chai" -import { authTokenHeader } from "../../../../src/cloud/auth" -import { ServeCommand } from "../../../../src/commands/serve" -import { gardenEnv } from "../../../../src/constants" -import { deepOmitUndefined } from "../../../../src/util/objects" -import { uuidv4 } from "../../../../src/util/random" -import { GardenInstanceManager } from "../../../../src/server/instance-manager" -import { Command, CommandParams } from "../../../../src/commands/base" -import request = require("supertest") -import getPort = require("get-port") -import WebSocket = require("ws") -import { FakeCloudApi } from "../../../helpers/api" +import { authTokenHeader } from "../../../../src/cloud/auth.js" +import { ServeCommand } from "../../../../src/commands/serve.js" +import { gardenEnv } from "../../../../src/constants.js" +import { deepOmitUndefined } from "../../../../src/util/objects.js" +import { uuidv4 } from "../../../../src/util/random.js" +import { GardenInstanceManager } from "../../../../src/server/instance-manager.js" +import type { CommandParams } from "../../../../src/commands/base.js" +import { Command } from "../../../../src/commands/base.js" +import request from "supertest" +import getPort from "get-port" +import WebSocket from "ws" +import { FakeCloudApi } from "../../../helpers/api.js" describe("GardenServer", () => { let garden: Garden diff --git a/core/test/unit/src/tasks/base.ts b/core/test/unit/src/tasks/base.ts index 60aae72cf8..4ad5560762 100644 --- a/core/test/unit/src/tasks/base.ts +++ b/core/test/unit/src/tasks/base.ts @@ -7,12 +7,14 @@ */ import { expect } from "chai" -import { getDataDir, makeTestGarden, TestGarden } from "../../../helpers" -import { Log } from "../../../../src/logger/log-entry" -import { ConfigGraph } from "../../../../src/graph/config-graph" -import { BaseActionTask, ValidResultType } from "../../../../src/tasks/base" -import { TestAction } from "../../../../src/actions/test" -import { DEFAULT_TEST_TIMEOUT_SEC } from "../../../../src/constants" +import type { TestGarden } from "../../../helpers.js" +import { getDataDir, makeTestGarden } from "../../../helpers.js" +import type { Log } from "../../../../src/logger/log-entry.js" +import type { ConfigGraph } from "../../../../src/graph/config-graph.js" +import type { ValidResultType } from "../../../../src/tasks/base.js" +import { BaseActionTask } from "../../../../src/tasks/base.js" +import type { TestAction } from "../../../../src/actions/test.js" +import { DEFAULT_TEST_TIMEOUT_SEC } from "../../../../src/constants.js" describe("BaseActionTask", () => { let garden: TestGarden diff --git a/core/test/unit/src/tasks/build.ts b/core/test/unit/src/tasks/build.ts index 4be7ec124b..1c41e66738 100644 --- a/core/test/unit/src/tasks/build.ts +++ b/core/test/unit/src/tasks/build.ts @@ -6,14 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import tmp from "tmp-promise" +import type tmp from "tmp-promise" import { expect } from "chai" -import type { ProjectConfig } from "../../../../src/config/project" -import { freezeTime, createProjectConfig, makeTempDir, TestGarden } from "../../../helpers" -import { GardenPluginSpec, createGardenPlugin } from "../../../../src/plugin/plugin" -import { joi } from "../../../../src/config/common" -import { ConfigGraph } from "../../../../src/graph/config-graph" -import { BuildTask } from "../../../../src/tasks/build" +import type { ProjectConfig } from "../../../../src/config/project.js" +import { freezeTime, createProjectConfig, makeTempDir, TestGarden } from "../../../helpers.js" +import type { GardenPluginSpec } from "../../../../src/plugin/plugin.js" +import { createGardenPlugin } from "../../../../src/plugin/plugin.js" +import { joi } from "../../../../src/config/common.js" +import type { ConfigGraph } from "../../../../src/graph/config-graph.js" +import { BuildTask } from "../../../../src/tasks/build.js" describe("BuildTask", () => { let tmpDir: tmp.DirectoryResult diff --git a/core/test/unit/src/tasks/deploy.ts b/core/test/unit/src/tasks/deploy.ts index cedb74d9fe..20d3245945 100644 --- a/core/test/unit/src/tasks/deploy.ts +++ b/core/test/unit/src/tasks/deploy.ts @@ -6,15 +6,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import tmp from "tmp-promise" +import type tmp from "tmp-promise" -import { ProjectConfig } from "../../../../src/config/project" -import { ConfigGraph } from "../../../../src/graph/config-graph" -import { createGardenPlugin, GardenPluginSpec } from "../../../../src/plugin/plugin" -import { DeployTask } from "../../../../src/tasks/deploy" +import type { ProjectConfig } from "../../../../src/config/project.js" +import type { ConfigGraph } from "../../../../src/graph/config-graph.js" +import type { GardenPluginSpec } from "../../../../src/plugin/plugin.js" +import { createGardenPlugin } from "../../../../src/plugin/plugin.js" +import { DeployTask } from "../../../../src/tasks/deploy.js" import { expect } from "chai" -import { createProjectConfig, freezeTime, makeTempDir, TestGarden } from "../../../helpers" -import { joi } from "../../../../src/config/common" +import { createProjectConfig, freezeTime, makeTempDir, TestGarden } from "../../../helpers.js" +import { joi } from "../../../../src/config/common.js" describe("DeployTask", () => { let tmpDir: tmp.DirectoryResult diff --git a/core/test/unit/src/tasks/resolve-action.ts b/core/test/unit/src/tasks/resolve-action.ts index be130a5574..8aa432294d 100644 --- a/core/test/unit/src/tasks/resolve-action.ts +++ b/core/test/unit/src/tasks/resolve-action.ts @@ -7,21 +7,21 @@ */ import { expect } from "chai" -import { ResolvedBuildAction } from "../../../../src/actions/build" -import { ActionKind, ActionModeMap } from "../../../../src/actions/types" -import { configTemplateKind } from "../../../../src/config/base" -import { joi } from "../../../../src/config/common" -import { Log } from "../../../../src/logger/log-entry" -import { createGardenPlugin } from "../../../../src/plugin/plugin" -import { ResolveActionTask } from "../../../../src/tasks/resolve-action" +import { ResolvedBuildAction } from "../../../../src/actions/build.js" +import type { ActionKind, ActionModeMap } from "../../../../src/actions/types.js" +import { configTemplateKind } from "../../../../src/config/base.js" +import { joi } from "../../../../src/config/common.js" +import type { Log } from "../../../../src/logger/log-entry.js" +import { createGardenPlugin } from "../../../../src/plugin/plugin.js" +import { ResolveActionTask } from "../../../../src/tasks/resolve-action.js" +import type { TestGarden } from "../../../helpers.js" import { - TestGarden, makeTestGarden, getDataDir, expectError, getAllTaskResults, getDefaultProjectConfig, -} from "../../../helpers" +} from "../../../helpers.js" describe("ResolveActionTask", () => { let garden: TestGarden diff --git a/core/test/unit/src/tasks/resolve-provider.ts b/core/test/unit/src/tasks/resolve-provider.ts index d6e421cd52..ad010e965c 100644 --- a/core/test/unit/src/tasks/resolve-provider.ts +++ b/core/test/unit/src/tasks/resolve-provider.ts @@ -6,24 +6,20 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { PluginMap, createGardenPlugin } from "../../../../src/plugin/plugin" -import { getPluginBases } from "../../../../src/plugins" +import type { PluginMap } from "../../../../src/plugin/plugin.js" +import { createGardenPlugin } from "../../../../src/plugin/plugin.js" +import { getPluginBases } from "../../../../src/plugins.js" import { expect } from "chai" -import { sortBy } from "lodash" -import { - makeTempDir, - TempDirectory, - TestGarden, - makeTestGarden, - stubProviderAction, - createProjectConfig, -} from "../../../helpers" -import { ResolveProviderTask } from "../../../../src/tasks/resolve-provider" -import { pathExists, writeFile, remove } from "fs-extra" +import { sortBy } from "lodash-es" +import type { TempDirectory, TestGarden } from "../../../helpers.js" +import { makeTempDir, makeTestGarden, stubProviderAction, createProjectConfig } from "../../../helpers.js" +import { ResolveProviderTask } from "../../../../src/tasks/resolve-provider.js" +import fsExtra from "fs-extra" +const { pathExists, writeFile, remove } = fsExtra import { join } from "path" import { serialize } from "v8" import moment from "moment" -import { GraphResults } from "../../../../src/graph/results" +import { GraphResults } from "../../../../src/graph/results.js" describe("ResolveProviderTask", () => { let tmpDir: TempDirectory diff --git a/core/test/unit/src/tasks/run.ts b/core/test/unit/src/tasks/run.ts index e49784c2a6..eda7ffb1ac 100644 --- a/core/test/unit/src/tasks/run.ts +++ b/core/test/unit/src/tasks/run.ts @@ -6,14 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import tmp from "tmp-promise" +import type tmp from "tmp-promise" import { expect } from "chai" -import { createProjectConfig, freezeTime, makeTempDir, TestGarden } from "../../../helpers" -import { ProjectConfig } from "../../../../src/config/project" -import { createGardenPlugin } from "../../../../src/plugin/plugin" -import { RunTask } from "../../../../src/tasks/run" -import { GetRunResult } from "../../../../src/plugin/handlers/Run/get-result" -import { joi } from "../../../../src/config/common" +import { createProjectConfig, freezeTime, makeTempDir, TestGarden } from "../../../helpers.js" +import type { ProjectConfig } from "../../../../src/config/project.js" +import { createGardenPlugin } from "../../../../src/plugin/plugin.js" +import { RunTask } from "../../../../src/tasks/run.js" +import type { GetRunResult } from "../../../../src/plugin/handlers/Run/get-result.js" +import { joi } from "../../../../src/config/common.js" describe("RunTask", () => { let tmpDir: tmp.DirectoryResult diff --git a/core/test/unit/src/tasks/test.ts b/core/test/unit/src/tasks/test.ts index 956accd6eb..3394576ee8 100644 --- a/core/test/unit/src/tasks/test.ts +++ b/core/test/unit/src/tasks/test.ts @@ -7,10 +7,11 @@ */ import { expect } from "chai" -import { TestTask } from "../../../../src/tasks/test" -import { freezeTime, getDataDir, makeTestGarden, TestGarden } from "../../../helpers" -import { Log } from "../../../../src/logger/log-entry" -import { ConfigGraph } from "../../../../src/graph/config-graph" +import { TestTask } from "../../../../src/tasks/test.js" +import type { TestGarden } from "../../../helpers.js" +import { freezeTime, getDataDir, makeTestGarden } from "../../../helpers.js" +import type { Log } from "../../../../src/logger/log-entry.js" +import type { ConfigGraph } from "../../../../src/graph/config-graph.js" describe("TestTask", () => { let garden: TestGarden diff --git a/core/test/unit/src/template-string.ts b/core/test/unit/src/template-string.ts index fa5e642e39..ce9feb91e3 100644 --- a/core/test/unit/src/template-string.ts +++ b/core/test/unit/src/template-string.ts @@ -13,12 +13,13 @@ import { collectTemplateReferences, throwOnMissingSecretKeys, getActionTemplateReferences, -} from "../../../src/template-string/template-string" -import { ConfigContext } from "../../../src/config/template-contexts/base" -import { expectError, getDataDir, makeTestGarden, TestGarden } from "../../helpers" -import { dedent } from "../../../src/util/string" +} from "../../../src/template-string/template-string.js" +import { ConfigContext } from "../../../src/config/template-contexts/base.js" +import type { TestGarden } from "../../helpers.js" +import { expectError, getDataDir, makeTestGarden } from "../../helpers.js" +import { dedent } from "../../../src/util/string.js" import stripAnsi from "strip-ansi" -import { TemplateStringError } from "../../../src/exceptions" +import { TemplateStringError } from "../../../src/exceptions.js" class TestContext extends ConfigContext { constructor(context) { diff --git a/core/test/unit/src/types/container.ts b/core/test/unit/src/types/container.ts index 2f7d8e918c..3bcdb2fd83 100644 --- a/core/test/unit/src/types/container.ts +++ b/core/test/unit/src/types/container.ts @@ -7,8 +7,8 @@ */ import { expect } from "chai" -import { validateSchema } from "../../../../src/config/validation" -import { portSchema } from "../../../../src/plugins/container/config" +import { validateSchema } from "../../../../src/config/validation.js" +import { portSchema } from "../../../../src/plugins/container/config.js" describe("portSchema", () => { it("should default servicePort to containerPorts value", async () => { diff --git a/core/test/unit/src/types/service.ts b/core/test/unit/src/types/service.ts index 3a78efcab4..46d29f8b80 100644 --- a/core/test/unit/src/types/service.ts +++ b/core/test/unit/src/types/service.ts @@ -7,9 +7,9 @@ */ import { expect } from "chai" -import { combineStates, deployStates, serviceFromConfig } from "../../../../src/types/service" -import { ServiceConfig } from "../../../../src/config/service" -import { makeTestGardenA } from "../../../helpers" +import { combineStates, deployStates, serviceFromConfig } from "../../../../src/types/service.js" +import type { ServiceConfig } from "../../../../src/config/service.js" +import { makeTestGardenA } from "../../../helpers.js" describe("combineStates", () => { it("should return ready if all states are ready", () => { diff --git a/core/test/unit/src/types/task.ts b/core/test/unit/src/types/task.ts index 40233efbe0..cdbd91576b 100644 --- a/core/test/unit/src/types/task.ts +++ b/core/test/unit/src/types/task.ts @@ -7,10 +7,10 @@ */ import { expect } from "chai" -import { makeTestGardenA } from "../../../helpers" -import { TaskConfig } from "../../../../src/config/task" -import { taskFromConfig } from "../../../../src/types/task" -import { DEFAULT_RUN_TIMEOUT_SEC } from "../../../../src/constants" +import { makeTestGardenA } from "../../../helpers.js" +import type { TaskConfig } from "../../../../src/config/task.js" +import { taskFromConfig } from "../../../../src/types/task.js" +import { DEFAULT_RUN_TIMEOUT_SEC } from "../../../../src/constants.js" describe("taskFromConfig", () => { it("should propagate the disabled flag from the config", async () => { diff --git a/core/test/unit/src/types/test.ts b/core/test/unit/src/types/test.ts index c9a783896d..c1f69db98c 100644 --- a/core/test/unit/src/types/test.ts +++ b/core/test/unit/src/types/test.ts @@ -7,12 +7,12 @@ */ import { expect } from "chai" -import { getDataDir, makeTestGarden, makeTestGardenA } from "../../../helpers" -import { TestConfig } from "../../../../src/config/test" -import { testFromConfig } from "../../../../src/types/test" +import { getDataDir, makeTestGarden, makeTestGardenA } from "../../../helpers.js" +import type { TestConfig } from "../../../../src/config/test.js" +import { testFromConfig } from "../../../../src/types/test.js" import cloneDeep from "fast-copy" -import { DEFAULT_TEST_TIMEOUT_SEC } from "../../../../src/constants" +import { DEFAULT_TEST_TIMEOUT_SEC } from "../../../../src/constants.js" describe("testFromConfig", () => { it("should propagate the disabled flag from the config", async () => { diff --git a/core/test/unit/src/util/artifacts.ts b/core/test/unit/src/util/artifacts.ts index 6d8b0d7db2..c524a05604 100644 --- a/core/test/unit/src/util/artifacts.ts +++ b/core/test/unit/src/util/artifacts.ts @@ -8,11 +8,12 @@ import { expect } from "chai" import tmp from "tmp-promise" -import { realpath, writeFile } from "fs-extra" +import fsExtra from "fs-extra" +const { realpath, writeFile } = fsExtra import normalizePath from "normalize-path" import { join } from "path" -import { getArtifactFileList, getArtifactKey } from "../../../../src/util/artifacts" -import { getRootLogger } from "../../../../src/logger/logger" +import { getArtifactFileList, getArtifactKey } from "../../../../src/util/artifacts.js" +import { getRootLogger } from "../../../../src/logger/logger.js" describe("artifacts", () => { describe("getArtifactKey", () => { diff --git a/core/test/unit/src/util/enumerate.ts b/core/test/unit/src/util/enumerate.ts index 88632c994e..838c48663e 100644 --- a/core/test/unit/src/util/enumerate.ts +++ b/core/test/unit/src/util/enumerate.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { enumerate } from "../../../../src/util/enumerate" +import { enumerate } from "../../../../src/util/enumerate.js" import { expect } from "chai" describe("enumerate", () => { diff --git a/core/test/unit/src/util/ext-source-util.ts b/core/test/unit/src/util/ext-source-util.ts index 12006e0905..ad45d956d4 100644 --- a/core/test/unit/src/util/ext-source-util.ts +++ b/core/test/unit/src/util/ext-source-util.ts @@ -14,9 +14,9 @@ import { removeLinkedSources, getRemoteSourceLocalPath, hashRepoUrl, -} from "../../../../src/util/ext-source-util" -import { expectError, makeTestGardenA } from "../../../helpers" -import { Garden } from "../../../../src/garden" +} from "../../../../src/util/ext-source-util.js" +import { expectError, makeTestGardenA } from "../../../helpers.js" +import type { Garden } from "../../../../src/garden.js" import { join } from "path" describe("ext-source-util", () => { diff --git a/core/test/unit/src/util/fs.ts b/core/test/unit/src/util/fs.ts index 81cdd98c54..f3e0922323 100644 --- a/core/test/unit/src/util/fs.ts +++ b/core/test/unit/src/util/fs.ts @@ -8,7 +8,7 @@ import { expect } from "chai" import { join } from "path" -import { getDataDir, makeTestGardenA, makeTestGarden } from "../../../helpers" +import { getDataDir, makeTestGardenA, makeTestGarden } from "../../../helpers.js" import { scanDirectory, toCygwinPath, @@ -17,9 +17,10 @@ import { getWorkingCopyId, findConfigPathsInPath, joinWithPosix, -} from "../../../../src/util/fs" +} from "../../../../src/util/fs.js" import { withDir } from "tmp-promise" -import { mkdirp, writeFile } from "fs-extra" +import fsExtra from "fs-extra" +const { mkdirp, writeFile } = fsExtra describe("scanDirectory", () => { it("should iterate through all files in a directory", async () => { diff --git a/core/test/unit/src/util/logging.ts b/core/test/unit/src/util/logging.ts index 064ce8a10d..5466a89162 100644 --- a/core/test/unit/src/util/logging.ts +++ b/core/test/unit/src/util/logging.ts @@ -7,12 +7,13 @@ */ import { expect } from "chai" -import { makeDummyGarden } from "../../../../src/garden" -import { joi } from "../../../../src/config/common" -import type { Log } from "../../../../src/logger/log-entry" -import { getRootLogger, Logger } from "../../../../src/logger/logger" -import { sanitizeValue } from "../../../../src/util/logging" -import { projectRootA } from "../../../helpers" +import { makeDummyGarden } from "../../../../src/garden.js" +import { joi } from "../../../../src/config/common.js" +import type { Log } from "../../../../src/logger/log-entry.js" +import type { Logger } from "../../../../src/logger/logger.js" +import { getRootLogger } from "../../../../src/logger/logger.js" +import { sanitizeValue } from "../../../../src/util/logging.js" +import { projectRootA } from "../../../helpers.js" describe("sanitizeValue", () => { const logger: Logger = getRootLogger() diff --git a/core/test/unit/src/util/module-overlap.ts b/core/test/unit/src/util/module-overlap.ts index ff9ae55429..1634bc8c37 100644 --- a/core/test/unit/src/util/module-overlap.ts +++ b/core/test/unit/src/util/module-overlap.ts @@ -8,8 +8,9 @@ import { expect } from "chai" import { join } from "path" -import { detectModuleOverlap, ModuleOverlap } from "../../../../src/util/module-overlap" -import { ModuleConfig } from "../../../../src/config/module" +import type { ModuleOverlap } from "../../../../src/util/module-overlap.js" +import { detectModuleOverlap } from "../../../../src/util/module-overlap.js" +import type { ModuleConfig } from "../../../../src/config/module.js" describe("detectModuleOverlap", () => { const projectRoot = join("/", "user", "code") diff --git a/core/test/unit/src/util/objects.ts b/core/test/unit/src/util/objects.ts index ce40fdd385..6956f66115 100644 --- a/core/test/unit/src/util/objects.ts +++ b/core/test/unit/src/util/objects.ts @@ -7,7 +7,7 @@ */ import { expect } from "chai" -import { deepFilter, deepOmitUndefined } from "../../../../src/util/objects" +import { deepFilter, deepOmitUndefined } from "../../../../src/util/objects.js" describe("deepFilter", () => { const fn = (v) => v !== 99 diff --git a/core/test/unit/src/util/profiling.ts b/core/test/unit/src/util/profiling.ts index 99d130f44b..633c6a3dac 100644 --- a/core/test/unit/src/util/profiling.ts +++ b/core/test/unit/src/util/profiling.ts @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Profiler, Profile, profile, profileAsync } from "../../../../src/util/profiling" +import { Profiler, Profile, profile, profileAsync } from "../../../../src/util/profiling.js" import { expect } from "chai" describe("profiling", () => { diff --git a/core/test/unit/src/util/recoverable-process.ts b/core/test/unit/src/util/recoverable-process.ts index d6fccb792b..220b483162 100644 --- a/core/test/unit/src/util/recoverable-process.ts +++ b/core/test/unit/src/util/recoverable-process.ts @@ -8,15 +8,13 @@ import env from "env-var" import { expect } from "chai" -import { - RecoverableProcess, - RecoverableProcessState, - validateRetryConfig, -} from "../../../../src/util/recoverable-process" -import { getRootLogger } from "../../../../src/logger/logger" -import { sleep } from "../../../../src/util/util" -import { initTestLogger, makeTempGarden, TestGarden } from "../../../helpers" -import { PluginEventBroker } from "../../../../src/plugin-context" +import type { RecoverableProcessState } from "../../../../src/util/recoverable-process.js" +import { RecoverableProcess, validateRetryConfig } from "../../../../src/util/recoverable-process.js" +import { getRootLogger } from "../../../../src/logger/logger.js" +import { sleep } from "../../../../src/util/util.js" +import type { TestGarden } from "../../../helpers.js" +import { initTestLogger, makeTempGarden } from "../../../helpers.js" +import { PluginEventBroker } from "../../../../src/plugin-context.js" describe("validateRetryConfig", () => { it("must fail on negative minTimeoutMs", () => { @@ -218,8 +216,8 @@ describe("RecoverableProcess", async () => { const maxRetries = 0 const minTimeoutMs = 0 - let parent: RecoverableProcess = longSleepingProcess(maxRetries, minTimeoutMs) - let child: RecoverableProcess = longSleepingProcess(maxRetries, minTimeoutMs) + let parent: RecoverableProcess + let child: RecoverableProcess beforeEach(() => { parent = longSleepingProcess(maxRetries, minTimeoutMs) diff --git a/core/test/unit/src/util/streams.ts b/core/test/unit/src/util/streams.ts index 06de702485..c729763212 100644 --- a/core/test/unit/src/util/streams.ts +++ b/core/test/unit/src/util/streams.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { SortedStreamIntersection } from "../../../../src/util/streams" +import { SortedStreamIntersection } from "../../../../src/util/streams.js" import { expect } from "chai" -import { splitStream } from "../../../../src/util/streams" -import { expectFuzzyMatch } from "../../../helpers" +import { splitStream } from "../../../../src/util/streams.js" +import { expectFuzzyMatch } from "../../../helpers.js" describe("SortedStreamIntersection", () => { const comparator = (a: Buffer, b: Buffer) => a.toString().localeCompare(b.toString()) diff --git a/core/test/unit/src/util/string.ts b/core/test/unit/src/util/string.ts index 1487706062..2f9fd65ea7 100644 --- a/core/test/unit/src/util/string.ts +++ b/core/test/unit/src/util/string.ts @@ -7,7 +7,7 @@ */ import { expect } from "chai" -import { tailString, stripQuotes } from "../../../../src/util/string" +import { tailString, stripQuotes } from "../../../../src/util/string.js" describe("tailString", () => { it("should return string unchanged if it's shorter than maxLength", () => { diff --git a/core/test/unit/src/util/util.ts b/core/test/unit/src/util/util.ts index 4d051fb47e..14dc2fc729 100644 --- a/core/test/unit/src/util/util.ts +++ b/core/test/unit/src/util/util.ts @@ -8,7 +8,7 @@ import { expect } from "chai" import { describe } from "mocha" -import { includes } from "lodash" +import { includes } from "lodash-es" import { pickKeys, getEnvVarName, @@ -17,13 +17,13 @@ import { spawn, relationshipClasses, isValidDateInstance, -} from "../../../../src/util/util" -import { expectError } from "../../../helpers" -import { splitLast, splitFirst } from "../../../../src/util/string" -import { getRootLogger } from "../../../../src/logger/logger" -import { dedent } from "../../../../src/util/string" -import { safeDumpYaml } from "../../../../src/util/serialization" -import { ChildProcessError } from "../../../../src/exceptions" +} from "../../../../src/util/util.js" +import { expectError } from "../../../helpers.js" +import { splitLast, splitFirst } from "../../../../src/util/string.js" +import { getRootLogger } from "../../../../src/logger/logger.js" +import { dedent } from "../../../../src/util/string.js" +import { safeDumpYaml } from "../../../../src/util/serialization.js" +import { ChildProcessError } from "../../../../src/exceptions.js" function isLinuxOrDarwin() { return process.platform === "darwin" || process.platform === "linux" diff --git a/core/test/unit/src/util/validateInstall.ts b/core/test/unit/src/util/validateInstall.ts index 9b6d09a7de..8d0351dd88 100644 --- a/core/test/unit/src/util/validateInstall.ts +++ b/core/test/unit/src/util/validateInstall.ts @@ -7,9 +7,9 @@ */ import { describe } from "mocha" -import { expectError } from "../../../../src/util/testing" -import { validateInstall } from "../../../../src/util/validateInstall" -import { gitVersionRegex } from "../../../../src/vcs/vcs" +import { expectError } from "../../../../src/util/testing.js" +import { validateInstall } from "../../../../src/util/validateInstall.js" +import { gitVersionRegex } from "../../../../src/vcs/vcs.js" describe("validateInstall", () => { it("should validate a binary version", async () => { diff --git a/core/test/unit/src/vcs/git-repo.ts b/core/test/unit/src/vcs/git-repo.ts index 8cd4d043a8..807a01e736 100644 --- a/core/test/unit/src/vcs/git-repo.ts +++ b/core/test/unit/src/vcs/git-repo.ts @@ -6,8 +6,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { GitRepoHandler } from "../../../../src/vcs/git-repo" -import { commonGitHandlerTests } from "./git" +import { GitRepoHandler } from "../../../../src/vcs/git-repo.js" +import { commonGitHandlerTests } from "./git.js" describe("GitRepoHandler", () => { describe("getFiles", () => commonGitHandlerTests(GitRepoHandler)) diff --git a/core/test/unit/src/vcs/git.ts b/core/test/unit/src/vcs/git.ts index fe1ceeeff0..34a280012a 100644 --- a/core/test/unit/src/vcs/git.ts +++ b/core/test/unit/src/vcs/git.ts @@ -6,21 +6,24 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import execa = require("execa") +import execa from "execa" import { expect } from "chai" import tmp from "tmp-promise" -import { createFile, ensureSymlink, lstat, mkdir, mkdirp, realpath, remove, symlink, writeFile } from "fs-extra" +import fsExtra from "fs-extra" +const { createFile, ensureSymlink, lstat, mkdir, mkdirp, realpath, remove, symlink, writeFile } = fsExtra import { basename, join, relative, resolve } from "path" -import { expectError, makeTestGardenA, TestGarden } from "../../../helpers" -import { getCommitIdFromRefList, GitCli, GitHandler, parseGitUrl } from "../../../../src/vcs/git" -import { Log } from "../../../../src/logger/log-entry" -import { hashRepoUrl } from "../../../../src/util/ext-source-util" -import { deline } from "../../../../src/util/string" -import { uuidv4 } from "../../../../src/util/random" -import { VcsHandlerParams } from "../../../../src/vcs/vcs" -import { repoRoot } from "../../../../src/util/testing" -import { GardenError } from "../../../../src/exceptions" +import type { TestGarden } from "../../../helpers.js" +import { expectError, makeTestGardenA } from "../../../helpers.js" +import type { GitCli } from "../../../../src/vcs/git.js" +import { getCommitIdFromRefList, GitHandler, parseGitUrl } from "../../../../src/vcs/git.js" +import type { Log } from "../../../../src/logger/log-entry.js" +import { hashRepoUrl } from "../../../../src/util/ext-source-util.js" +import { deline } from "../../../../src/util/string.js" +import { uuidv4 } from "../../../../src/util/random.js" +import type { VcsHandlerParams } from "../../../../src/vcs/vcs.js" +import { repoRoot } from "../../../../src/util/testing.js" +import { GardenError } from "../../../../src/exceptions.js" // Overriding this to make sure any ignorefile name is respected export const defaultIgnoreFilename = ".testignore" diff --git a/core/test/unit/src/vcs/vcs.ts b/core/test/unit/src/vcs/vcs.ts index b4a469363e..2fffd337b0 100644 --- a/core/test/unit/src/vcs/vcs.ts +++ b/core/test/unit/src/vcs/vcs.ts @@ -6,39 +6,43 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { - VcsHandler, +import type { TreeVersions, TreeVersion, + GetFilesParams, + VcsFile, + NamedModuleVersion, + NamedTreeVersion, + GetTreeVersionParams, +} from "../../../../src/vcs/vcs.js" +import { + VcsHandler, getModuleVersionString, writeTreeVersionFile, readTreeVersionFile, - GetFilesParams, - VcsFile, getResourceTreeCacheKey, hashModuleVersion, - NamedModuleVersion, - NamedTreeVersion, describeConfig, getSourcePath, getConfigFilePath, - GetTreeVersionParams, -} from "../../../../src/vcs/vcs" -import { makeTestGardenA, makeTestGarden, getDataDir, TestGarden, defaultModuleConfig } from "../../../helpers" +} from "../../../../src/vcs/vcs.js" +import type { TestGarden } from "../../../helpers.js" +import { makeTestGardenA, makeTestGarden, getDataDir, defaultModuleConfig } from "../../../helpers.js" import { expect } from "chai" import cloneDeep from "fast-copy" -import { ModuleConfig } from "../../../../src/config/module" -import { GitHandler } from "../../../../src/vcs/git" +import type { ModuleConfig } from "../../../../src/config/module.js" +import { GitHandler } from "../../../../src/vcs/git.js" import { resolve, join } from "path" -import td from "testdouble" +import * as td from "testdouble" import tmp from "tmp-promise" -import { realpath, readFile, writeFile, rm, rename } from "fs-extra" -import { DEFAULT_BUILD_TIMEOUT_SEC, GARDEN_VERSIONFILE_NAME, GardenApiVersion } from "../../../../src/constants" -import { defaultDotIgnoreFile, fixedProjectExcludes } from "../../../../src/util/fs" -import { createActionLog } from "../../../../src/logger/log-entry" -import { BaseActionConfig } from "../../../../src/actions/types" -import { TreeCache } from "../../../../src/cache" +import fsExtra from "fs-extra" +const { realpath, readFile, writeFile, rm, rename } = fsExtra +import { DEFAULT_BUILD_TIMEOUT_SEC, GARDEN_VERSIONFILE_NAME, GardenApiVersion } from "../../../../src/constants.js" +import { defaultDotIgnoreFile, fixedProjectExcludes } from "../../../../src/util/fs.js" +import { createActionLog } from "../../../../src/logger/log-entry.js" +import type { BaseActionConfig } from "../../../../src/actions/types.js" +import { TreeCache } from "../../../../src/cache.js" export class TestVcsHandler extends VcsHandler { name = "test" diff --git a/core/test/unit/src/watch.ts b/core/test/unit/src/watch.ts index 825c19a355..6f7ac489af 100644 --- a/core/test/unit/src/watch.ts +++ b/core/test/unit/src/watch.ts @@ -9,18 +9,15 @@ import pEvent from "p-event" import { resolve, join } from "path" import { expect } from "chai" -import { TestGarden, makeTestGarden, getDataDir } from "../../helpers" -import { CacheContext, pathToCacheContext } from "../../../src/cache" -import { Watcher } from "../../../src/watch" -import { sleep } from "../../../src/util/util" +import type { TestGarden } from "../../helpers.js" +import { makeTestGarden, getDataDir } from "../../helpers.js" +import { Watcher } from "../../../src/watch.js" +import { sleep } from "../../../src/util/util.js" import touch from "touch" describe("Watcher", () => { let garden: TestGarden let modulePath: string - let doubleModulePath: string - let includeModulePath: string - let moduleContext: CacheContext let watcher: Watcher // function emitEvent(name: string, payload: any) { @@ -31,9 +28,6 @@ describe("Watcher", () => { garden = await makeTestGarden(getDataDir("test-project-watch"), { noTempDir: true, noCache: true }) modulePath = resolve(garden.projectRoot, "module-a") - doubleModulePath = resolve(garden.projectRoot, "double-module") - includeModulePath = resolve(garden.projectRoot, "with-include") - moduleContext = pathToCacheContext(modulePath) await garden.scanAndAddConfigs() garden.watchPaths() diff --git a/core/tsconfig.json b/core/tsconfig.json index 62217c9def..a0d4adfa30 100644 --- a/core/tsconfig.json +++ b/core/tsconfig.json @@ -11,11 +11,16 @@ "test/integ/src/**/*.ts", "test/unit/*.ts", "test/unit/src/**/*.ts", - "src/commands/dev.tsx" + "src/commands/dev.tsx", + "src/util/ink-divider.tsx", + "package.json", ], "compilerOptions": { "composite": true, "outDir": "build", - "jsx": "react" + "jsx": "react", + "resolveJsonModule": true, + "module": "nodenext", + "moduleResolution": "nodenext" } -} \ No newline at end of file +} diff --git a/docs/contributing/README.md b/docs/contributing/README.md index 7a7674c80a..6fd722cb0a 100644 --- a/docs/contributing/README.md +++ b/docs/contributing/README.md @@ -123,7 +123,7 @@ automatically checked during CI. You can run the check with `npm run check-licen Our release process generates the following packages: -* An executable for OSX, Linux, and Windows, generated by [Pkg](https://github.com/vercel/pkg) and hosted on our [Github page](https://github.com/garden-io/garden/releases). +* An executable for OSX, Linux, and Windows hosted on our [Github page](https://github.com/garden-io/garden/releases). * A [Homebrew](https://brew.sh/) package for OSX users. ### Process diff --git a/docs/contributing/developing-garden.md b/docs/contributing/developing-garden.md index d8245dbbfe..94888c572d 100644 --- a/docs/contributing/developing-garden.md +++ b/docs/contributing/developing-garden.md @@ -28,21 +28,28 @@ You should now be able to inspect the code at run time in the **Console** tab of ## Release binaries and Docker containers +The Garden production binaries are a small Rust single application binary that extracts NodeJS binaries and the bundled Garden source code into a temporary directory, and then spawns NodeJS. + +To build the production binaries you'll need the [Rust toolchain](https://www.rust-lang.org/learn/get-started) and [`cross`](https://github.com/cross-rs/cross#installation), which we use for cross-compiling to different architectures and operating systems. + +To install the required tools, follow the [Cross getting started guide](https://github.com/cross-rs/cross/wiki/Getting-Started). + You can build the release binaries using the command ```shell -yarn dist +npm run dist [target] # Valid targets are currently `windows-amd64`, `linux-arm64`, `linux-amd64`, `macos-arm64` and `macos-amd64`. + ``` You can then find the release binaries and archives under `dist/`. We release a number of Docker containers on [Docker Hub](https://hub.docker.com/u/gardendev). -The Docker containers meant to be used directly by the general public are defined in `support/docker-bake.hcl`. +The Docker containers meant to be used directly by the general public are defined in `support/docker-bake.hcl` and listed in the [DockerHub containers reference guide](../reference/dockerhub-containers.md). When making changes to the `Dockerfile` definitions in `support/` it is helpful to build the containers on your local machine. -For that, first run `yarn dist`, and then run `docker buildx bake` like so: +For that, first run `npm run dist`, and then run `docker buildx bake` like so: ```shell MAJOR_VERSION=0 MINOR_VERSION=13 PATCH_VERSION=0 CODENAME=bonsai \ @@ -51,7 +58,7 @@ MAJOR_VERSION=0 MINOR_VERSION=13 PATCH_VERSION=0 CODENAME=bonsai \ The environment variables will influence the tags that `buildx bake` will create on your local machine (e.g. stable release tags, prerelease tags, version number, etc.). -To run the tests on your local machine, first run `yarn dist` (if not already done so), and then run +To run the tests on your local machine, first run `npm run dist` (if not already done so), and then run ```shell bash support/docker-bake-test.sh @@ -59,17 +66,17 @@ bash support/docker-bake-test.sh ## Tests -Unit tests are run using `mocha` via `yarn test` from the directory of the package you want to test. To run a specific test, you can grep the test description with the `-g` flag.: +Unit tests are run using `mocha` via `npm run test` from the directory of the package you want to test. To run a specific test, you can grep the test description with the `-g` flag.: ```sh cd core -yarn test # run all unit tests -yarn test -- -g "taskGraph" # run only tests with descriptions matching "taskGraph" +npm run test # run all unit tests +npm run test -- -g "taskGraph" # run only tests with descriptions matching "taskGraph" ``` ### ARM64 compatibility -On ARM64 platforms (like Mac machines with M1 chips) the `yarn test` command may fail with the following error: +On ARM64 platforms (like Mac machines with M1 chips) the `npm run test` command may fail with the following error: ```sh FATAL ERROR: wasm code commit Allocation failed - process out of memory @@ -81,19 +88,19 @@ In order to fix it, the terminal must be running in the **Rosetta** mode, the de Integration tests are run with: ```sh -yarn integ-local +npm run integ-local ``` End-to-end tests are run with: ```sh -yarn run e2e +npm run run e2e ``` You can also run the end-to-end tests for a specific example project using: ```sh -yarn run e2e-project -- --project= +npm run run e2e-project -- --project= ``` End-to-end tests are run in CI by using Garden itself to test the project defined in `./core/test/e2e/garden.yml`. Cf. the appropriate job in `circleci/config.yml` for details. diff --git a/e2e/.mocharc.yml b/e2e/.mocharc.yml index 3f349997dd..f0047ae7a6 100644 --- a/e2e/.mocharc.yml +++ b/e2e/.mocharc.yml @@ -1,4 +1,4 @@ -require: ts-node/register +node-option: ["experimental-specifier-resolution=node", "loader=ts-node/esm"] ignore: - .garden reporter: spec diff --git a/e2e/e2e-project.ts b/e2e/e2e-project.ts index 4b18ff6182..bbf67ac13a 100755 --- a/e2e/e2e-project.ts +++ b/e2e/e2e-project.ts @@ -8,12 +8,16 @@ import execa from "execa" import minimist from "minimist" -import { resolve } from "path" -import { projectsDir } from "./helpers" +import { dirname, resolve } from "node:path" +import { projectsDir } from "./helpers.js" import dedent from "dedent" import chalk from "chalk" import { join } from "path" -import { realpath } from "fs-extra" +import fsExtra from "fs-extra" +const { realpath } = fsExtra +import { fileURLToPath } from "node:url" + +const moduleDirName = dirname(fileURLToPath(import.meta.url)) export const parsedArgs = minimist(process.argv.slice(2)) @@ -62,7 +66,7 @@ async function run() { chalk.cyan.bold("*** Starting e2e tests for project ") + chalk.white.bold(project) + chalk.cyan.bold(" ***") ) - const mochaOpts = ["--config", join(__dirname, ".mocharc.yml")] + const mochaOpts = ["--config", join(moduleDirName, ".mocharc.yml")] if (parsedArgs.b) { mochaOpts.push("-b") @@ -74,9 +78,9 @@ async function run() { } } - const mochaBinPath = resolve(__dirname, "node_modules/.bin/mocha") + const mochaBinPath = resolve(moduleDirName, "node_modules/.bin/mocha") await execa(mochaBinPath, mochaOpts, { - cwd: __dirname, + cwd: moduleDirName, stdio: "inherit", }) diff --git a/e2e/helpers.ts b/e2e/helpers.ts index cfabbf694d..cda216a5ff 100644 --- a/e2e/helpers.ts +++ b/e2e/helpers.ts @@ -8,14 +8,15 @@ import chalk from "chalk" import execa from "execa" -import { remove } from "fs-extra" -import { get, intersection, padEnd } from "lodash" +import fsExtra from "fs-extra" +const { remove } = fsExtra +import { get, intersection, padEnd } from "lodash-es" import parseArgs from "minimist" import { resolve } from "path" -import { DEFAULT_GARDEN_DIR_NAME, GARDEN_CORE_ROOT } from "@garden-io/core/build/src/constants" -import { TaskLogStatus } from "@garden-io/core/build/src/logger/log-entry" -import { JsonLogEntry } from "@garden-io/core/build/src/logger/writers/json-terminal-writer" -import { WatchTestConditionState } from "./run-garden" +import { DEFAULT_GARDEN_DIR_NAME, GARDEN_CORE_ROOT } from "@garden-io/core/build/src/constants.js" +import type { TaskLogStatus } from "@garden-io/core/build/src/logger/log-entry.js" +import type { JsonLogEntry } from "@garden-io/core/build/src/logger/writers/json-terminal-writer.js" +import type { WatchTestConditionState } from "./run-garden.js" export const parsedArgs = parseArgs(process.argv.slice(2)) export const projectsDir = resolve(GARDEN_CORE_ROOT, "..", "e2e", "projects") diff --git a/e2e/package.json b/e2e/package.json index 79fd7e1f05..1e9c80aa67 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -2,6 +2,7 @@ "name": "@garden-io/e2e", "version": "0.13.18", "description": "End-to-end tests for the Garden CLI", + "type": "module", "repository": { "type": "git", "url": "git+https://github.com/garden-io/garden.git" @@ -25,7 +26,7 @@ }, "devDependencies": { "@types/chai": "^4.3.6", - "@types/lodash": "^4.14.191", + "@types/lodash-es": "^4.17.9", "@types/minimist": "^1.2.2", "@types/mocha": "^10.0.1", "@types/node": "^18", @@ -34,7 +35,7 @@ "dedent": "^0.7.0", "execa": "^4.1.0", "fs-extra": "^11.1.0", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "minimist": "^1.2.8", "mocha": "^10.2.0", "prettier": "3.0.0", diff --git a/e2e/run-garden.ts b/e2e/run-garden.ts index 5d637aa440..5c19a1966e 100644 --- a/e2e/run-garden.ts +++ b/e2e/run-garden.ts @@ -6,22 +6,23 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ChildProcess, spawn } from "child_process" +import type { ChildProcess } from "child_process" +import { spawn } from "child_process" import execa from "execa" import { resolve } from "path" -import { sleep } from "@garden-io/core/build/src/util/util" -import { searchLog, findTasks, touchFile, parsedArgs, parseLogEntry, stringifyJsonLog } from "./helpers" -import { JsonLogEntry } from "@garden-io/core/build/src/logger/writers/json-terminal-writer" -import { ParameterError, TimeoutError } from "@garden-io/core/build/src/exceptions" -import { dedent, deline } from "@garden-io/core/build/src/util/string" -import { GARDEN_CLI_ROOT } from "@garden-io/core/build/src/constants" +import { sleep } from "@garden-io/core/build/src/util/util.js" +import { searchLog, findTasks, touchFile, parsedArgs, parseLogEntry, stringifyJsonLog } from "./helpers.js" +import type { JsonLogEntry } from "@garden-io/core/build/src/logger/writers/json-terminal-writer.js" +import { ParameterError, TimeoutError } from "@garden-io/core/build/src/exceptions.js" +import { dedent, deline } from "@garden-io/core/build/src/util/string.js" +import { GARDEN_CLI_ROOT } from "@garden-io/core/build/src/constants.js" import chalk from "chalk" -import split2 = require("split2") +import split2 from "split2" export const DEFAULT_CHECK_INTERVAL_MS = 500 export const DEFAULT_RUN_TIMEOUT_SECS = 360 -export const gardenBinPath = parsedArgs.binPath || resolve(GARDEN_CLI_ROOT, "bin", "garden") +export const gardenBinPath = parsedArgs.binPath || resolve(GARDEN_CLI_ROOT, "bin", "garden.js") export const showLog = !!parsedArgs.showlog const DEFAULT_ARGS = ["--logger-type", "json", "--log-level", "silly"] diff --git a/e2e/test/pre-release.ts b/e2e/test/pre-release.ts index c58a236520..43157f29cf 100644 --- a/e2e/test/pre-release.ts +++ b/e2e/test/pre-release.ts @@ -10,8 +10,8 @@ import execa from "execa" import chalk from "chalk" import { expect } from "chai" import { resolve } from "path" -import { replaceInFile } from "replace-in-file" -import { changeFileStep, GardenWatch, runGarden, waitingForChangesStep, sleepStep } from "../run-garden" +import replaceInFile from "replace-in-file" +import { changeFileStep, GardenWatch, runGarden, waitingForChangesStep, sleepStep } from "../run-garden.js" import { projectsDir, deleteExampleNamespaces, @@ -19,9 +19,10 @@ import { searchLog, removeExampleDotGardenDir, stringifyJsonLog, -} from "../helpers" +} from "../helpers.js" import username from "username" -import { realpath } from "fs-extra" +import fsExtra from "fs-extra" +const { realpath } = fsExtra function log(msg: string) { // eslint-disable-next-line @@ -132,7 +133,7 @@ describe("PreReleaseTests", () => { { description: "change 'Node' -> 'foo' in node-service/app.js", action: async () => { - await replaceInFile({ + await replaceInFile.replaceInFile({ files: resolve(projectPath, "node-service/src/app.js"), from: /Hello from Node/, to: "Hello from foo", diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json index f8a0db520d..7356261020 100644 --- a/e2e/tsconfig.json +++ b/e2e/tsconfig.json @@ -9,7 +9,9 @@ ], "compilerOptions": { "composite": true, - "outDir": "build" + "outDir": "build", + "module": "nodenext", + "moduleResolution": "nodenext" }, "references": [ { @@ -17,4 +19,4 @@ }, { "path": "../core" } ] -} \ No newline at end of file +} diff --git a/garden-sea/.gitignore b/garden-sea/.gitignore new file mode 100644 index 0000000000..63cafd4927 --- /dev/null +++ b/garden-sea/.gitignore @@ -0,0 +1,3 @@ +target +test_script +tmp diff --git a/garden-sea/Cargo.lock b/garden-sea/Cargo.lock new file mode 100644 index 0000000000..9e411209ae --- /dev/null +++ b/garden-sea/Cargo.lock @@ -0,0 +1,585 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" +dependencies = [ + "cfg-if", + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ctrlc" +version = "3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e95fbd621905b854affdc67943b043a0fbb6ed7385fd5a25650d19a8a6cfdf" +dependencies = [ + "nix", + "windows-sys", +] + +[[package]] +name = "directories" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys", +] + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" + +[[package]] +name = "eyre" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb" +dependencies = [ + "indenter", + "once_cell", +] + +[[package]] +name = "filetime" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.3.5", + "windows-sys", +] + +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "garden" +version = "0.1.0" +dependencies = [ + "crossbeam", + "ctrlc", + "directories", + "eyre", + "flate2", + "lazy_static", + "nix", + "process_path", + "rand", + "sysinfo", + "tar", + "windows", +] + +[[package]] +name = "getrandom" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" + +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "nix" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" +dependencies = [ + "bitflags 2.4.1", + "cfg-if", + "libc", +] + +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "proc-macro2" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "process_path" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f676f11eb0b3e2ea0fbaee218fa6b806689e2297b8c8adc5bf73df465c4f6171" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rayon" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom", + "redox_syscall 0.2.16", + "thiserror", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "syn" +version = "2.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sysinfo" +version = "0.29.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a18d114d420ada3a891e6bc8e96a2023402203296a47cdd65083377dad18ba5" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "rayon", + "winapi", +] + +[[package]] +name = "tar" +version = "0.4.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "thiserror" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9" +dependencies = [ + "windows-core", + "windows-targets", +] + +[[package]] +name = "windows-core" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "xattr" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" +dependencies = [ + "libc", +] diff --git a/garden-sea/Cargo.toml b/garden-sea/Cargo.toml new file mode 100644 index 0000000000..976514a018 --- /dev/null +++ b/garden-sea/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "garden" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +crossbeam = { version = "0.8.2", features = ["crossbeam-channel"] } +ctrlc = { version = "3.4.1", features = ["termination"] } +directories = "5.0.1" +eyre = "0.6.8" +flate2 = "1.0.28" +lazy_static = "1.4.0" +nix = "0.27.1" +process_path = "0.1.4" +rand = "0.8.5" +sysinfo = "0.29.10" +tar = "0.4.40" +windows = { version = "0.51.1", features = ["Win32_System_Console", "Win32_Foundation"] } diff --git a/garden-sea/Cross.toml b/garden-sea/Cross.toml new file mode 100644 index 0000000000..1e409388d8 --- /dev/null +++ b/garden-sea/Cross.toml @@ -0,0 +1,8 @@ + +[target.x86_64-unknown-linux-gnu] +# Link with glibc 2.17 to make sure we stay compatible with old Linux distros, to retain the same compatibility that we had with pkg. +image = "ghcr.io/cross-rs/x86_64-unknown-linux-gnu:main-centos" + +[target.aarch64-unknown-linux-gnu] +# Link with glibc 2.17 to make sure we stay compatible with old Linux distros, to retain the same compatibility that we had with pkg. +image = "ghcr.io/cross-rs/aarch64-unknown-linux-gnu:main-centos" diff --git a/garden-sea/README.md b/garden-sea/README.md new file mode 100644 index 0000000000..8fdb0002ee --- /dev/null +++ b/garden-sea/README.md @@ -0,0 +1,44 @@ +# Garden SEA + +Garden SEA is an Self-Extracting Archive to enable us to ship a Single Executable Application :) + +## Development +The Garden production binaries are a small Rust single application binary that extracts NodeJS binaries and the bundled Garden source code into a temporary directory, and then spawns NodeJS. + +To build the production binaries you'll need the [Rust toolchain](https://www.rust-lang.org/learn/get-started) and [`cross`](https://github.com/cross-rs/cross#installation), which we use for cross-compiling to different architectures and operating systems. + +To install the required tools, follow the [Cross getting started guide](https://github.com/cross-rs/cross/wiki/Getting-Started). + +You can build the release binaries using the command + +```shell +npm run dist [target] # Valid targets are currently `windows-amd64`, `linux-arm64`, `linux-amd64`, `macos-arm64` and `macos-amd64`. +``` +You can then find the release binaries and archives under `dist/`. + +After you ran `npm run dist` for the first time the artifacts we reference using the `include_bytes!` macro in `artifacts.rs` have been generated in the appropriate location. From then on you can also build and test the application using cargo commands, like any other Rust application: + +```shell +cargo build +``` + +```shell +cargo test +``` + +## Responsibilities + +Garden SEA performs the following tasks: +- Choose a platform-specific temporary path for Garden application data (`main.rs`) +- Extract if needed, and avoid race conditions (`extract.rs`) + - Extract the NodeJS binary and native add-ons (`bin/` and `native/`) + - Extract the bundled source code (`rollup/`) +- Clean up directories with outdated versions when possible (`cleanup.rs`) +- Start Garden by spawning the NodeJS binary with the appropriate options (`node.rs`) + - Allow overriding certain GC settings using environment variables (`GARDEN_MAX_OLD_SPACE_SIZE` and `GARDEN_MAX_SEMI_SPACE_SIZE`) +- Wait until the NodeJS process terminates, and forward signals / CTRL-C events. (`signal.rs` and `terminate.rs`) + +## Current limitations + +- If the Rust binary (`garden` or `garden.exe`) is terminated using the Task manager on Windows, or using `kill -9` on Linux/MacOS, the NodeJS process (`node` or `node.exe`) is not terminated correctly. The only way to avoid that is to monitor the parent process in the NodeJS application. +- When spawning a lot of Garden processes in parallel for the first time, some processes might fail due to race conditions in the extraction and cleanup routines. We believe that in practice that should not happen, but might have to make this more robust if we see this issue in the wild. diff --git a/garden-sea/src/artifacts.rs b/garden-sea/src/artifacts.rs new file mode 100644 index 0000000000..7d8a62fb15 --- /dev/null +++ b/garden-sea/src/artifacts.rs @@ -0,0 +1,110 @@ +#[derive(Copy, Clone)] +pub struct GardenArtifact { + pub name: &'static str, + pub archive: &'static [u8], + pub sha256: &'static [u8], +} + +// source + +pub static SOURCE: GardenArtifact = GardenArtifact { + name: "source", + archive: include_bytes!("../tmp/source.tar.gz"), + sha256: include_bytes!("../tmp/source.sha256"), +}; + +// static + +pub static STATIC: GardenArtifact = GardenArtifact { + name: "static", + archive: include_bytes!("../tmp/static.tar.gz"), + sha256: include_bytes!("../tmp/static.sha256"), +}; + +// bin + +#[cfg(all(target_os = "windows", target_arch = "x86_64"))] +pub static NODE_BINARY: GardenArtifact = GardenArtifact { + name: "bin", + archive: include_bytes!("../tmp/node/windows-amd64/node.tar.gz"), + sha256: include_bytes!("../tmp/node/windows-amd64/node.sha256"), +}; + +#[cfg(all(target_os = "macos", target_arch = "x86_64"))] +pub static NODE_BINARY: GardenArtifact = GardenArtifact { + name: "bin", + archive: include_bytes!("../tmp/node/macos-amd64/node.tar.gz"), + sha256: include_bytes!("../tmp/node/macos-amd64/node.sha256"), +}; + +#[cfg(all(target_os = "macos", target_arch = "aarch64"))] +pub static NODE_BINARY: GardenArtifact = GardenArtifact { + name: "bin", + archive: include_bytes!("../tmp/node/macos-arm64/node.tar.gz"), + sha256: include_bytes!("../tmp/node/macos-arm64/node.sha256"), +}; + +#[cfg(all(target_os = "linux", target_arch = "x86_64", target_env = "gnu"))] +pub static NODE_BINARY: GardenArtifact = GardenArtifact { + name: "bin", + archive: include_bytes!("../tmp/node/linux-amd64/node.tar.gz"), + sha256: include_bytes!("../tmp/node/linux-amd64/node.sha256"), +}; + +#[cfg(all(target_os = "linux", target_arch = "aarch64", target_env = "gnu"))] +pub static NODE_BINARY: GardenArtifact = GardenArtifact { + name: "bin", + archive: include_bytes!("../tmp/node/linux-arm64/node.tar.gz"), + sha256: include_bytes!("../tmp/node/linux-arm64/node.sha256"), +}; + +#[cfg(all(target_os = "linux", target_arch = "x86_64", target_env = "musl"))] +pub static NODE_BINARY: GardenArtifact = GardenArtifact { + name: "bin", + archive: include_bytes!("../tmp/node/alpine-amd64/node.tar.gz"), + sha256: include_bytes!("../tmp/node/alpine-amd64/node.sha256"), +}; + +// native + +#[cfg(all(target_os = "windows", target_arch = "x86_64"))] +pub static NATIVE_MODULES: GardenArtifact = GardenArtifact { + name: "native", + archive: include_bytes!("../tmp/windows-amd64-native.tar.gz"), + sha256: include_bytes!("../tmp/windows-amd64-native.sha256"), +}; + +#[cfg(all(target_os = "macos", target_arch = "x86_64"))] +pub static NATIVE_MODULES: GardenArtifact = GardenArtifact { + name: "native", + archive: include_bytes!("../tmp/macos-amd64-native.tar.gz"), + sha256: include_bytes!("../tmp/macos-amd64-native.sha256"), +}; + +#[cfg(all(target_os = "macos", target_arch = "aarch64"))] +pub static NATIVE_MODULES: GardenArtifact = GardenArtifact { + name: "native", + archive: include_bytes!("../tmp/macos-arm64-native.tar.gz"), + sha256: include_bytes!("../tmp/macos-arm64-native.sha256"), +}; + +#[cfg(all(target_os = "linux", target_arch = "x86_64", target_env = "gnu"))] +pub static NATIVE_MODULES: GardenArtifact = GardenArtifact { + name: "native", + archive: include_bytes!("../tmp/linux-amd64-native.tar.gz"), + sha256: include_bytes!("../tmp/linux-amd64-native.sha256"), +}; + +#[cfg(all(target_os = "linux", target_arch = "aarch64", target_env = "gnu"))] +pub static NATIVE_MODULES: GardenArtifact = GardenArtifact { + name: "native", + archive: include_bytes!("../tmp/linux-arm64-native.tar.gz"), + sha256: include_bytes!("../tmp/linux-arm64-native.sha256"), +}; + +#[cfg(all(target_os = "linux", target_arch = "x86_64", target_env = "musl"))] +pub static NATIVE_MODULES: GardenArtifact = GardenArtifact { + name: "native", + archive: include_bytes!("../tmp/alpine-amd64-native.tar.gz"), + sha256: include_bytes!("../tmp/alpine-amd64-native.sha256"), +}; diff --git a/garden-sea/src/cleanup.rs b/garden-sea/src/cleanup.rs new file mode 100644 index 0000000000..b9bbd139eb --- /dev/null +++ b/garden-sea/src/cleanup.rs @@ -0,0 +1,84 @@ +use std::path::Path; + +use crate::log::debug; +use eyre::Result; +use std::path::PathBuf; + +// background cleanup thread +pub(crate) fn start_cleanup_thread(cleanup_dirs: Vec, current_dir: PathBuf) { + std::thread::spawn(move || { + for dir in cleanup_dirs { + if dir != current_dir { + debug!("Determining if {:?} is currently used...", dir); + let result = is_directory_used(&dir); + if let Ok(is_in_use) = result { + if is_in_use { + debug!("Skipping {:?} as it is currently in use", dir); + continue; + } + } else { + debug!( + "Failed to determine if {:?} is currently used: {:?}", + dir, result + ); + continue; + } + + debug!("Removing {:?}...", dir); + let result = std::fs::remove_dir_all(dir.clone()); + if let Err(e) = result { + debug!("Failed to remove {:?}: {:?}", dir, e); + } else { + debug!("Removed {:?}", dir); + } + } + } + }); +} + +// platform-specific code + +#[cfg(unix)] +fn is_directory_used(path: &Path) -> Result { + use sysinfo::{ProcessExt, System, SystemExt}; + + let mut sys = System::new(); + sys.refresh_processes(); + + let paths: Vec = sys + .processes() + .iter() + .map(|(_pid, process)| { + return process.exe().to_owned(); + }) + .collect(); + + for exe in paths { + if exe.starts_with(path) { + debug!( + "is_directory_used: {:?} is in use by a running garden process.", + path + ); + return Ok(true); + } + } + + // Of course there is the possibility of races. Only way to exclude that possibility is using locks, which comes with it's own complexities. + debug!("is_directory_used: Not used: Did not find any running process whose executable lives in {:?}.", path); + Ok(false) +} + +#[cfg(windows)] +fn is_directory_used(path: &Path) -> Result { + match std::fs::rename(path, path) { + Ok(()) => { + // Of course there is the possibility of races. Only way to exclude that possibility is using locks, which comes with it's own complexities. + debug!("is_directory_used: {:?} successfully renamed. Not in use by a running garden process.", path); + return Ok(false); + } + Err(err) => { + debug!("is_directory_used: {:?} could not be renamed. Likely in use by a running garden process. Error: {:?}", path, err); + return Ok(true); + } + } +} diff --git a/garden-sea/src/extract.rs b/garden-sea/src/extract.rs new file mode 100644 index 0000000000..cd233597e5 --- /dev/null +++ b/garden-sea/src/extract.rs @@ -0,0 +1,182 @@ +use rand::distributions::Alphanumeric; +use rand::{thread_rng, Rng}; +use std::ffi::OsString; +use std::path::{Path, PathBuf}; +use std::time::SystemTime; +use std::{fs, io::Write}; + +use eyre::{Result, WrapErr}; + +use crate::artifacts::{GardenArtifact, NATIVE_MODULES, NODE_BINARY, SOURCE, STATIC}; +use crate::cleanup::start_cleanup_thread; +use crate::log::debug; + +pub(crate) fn extract_archives_if_needed(root_path: &Path) -> Result { + fs::create_dir_all(root_path)?; + + let (latest_dir, older_dirs) = find_existing_extract_dirs(root_path)?; + + if let Some(p) = latest_dir { + if !extracts_needed(&p)? { + // cleanup happens in the background to avoid users waiting for it + start_cleanup_thread(older_dirs, p.clone()); + + return Ok(p); + } + } + + // generate a random directory name, ending with "r" + let mut rng = thread_rng(); + let s: String = (0..7).map(|_| rng.sample(Alphanumeric) as char).collect(); + let current_time = SystemTime::now() + .duration_since(SystemTime::UNIX_EPOCH) + .unwrap(); + let dirname = format!("{}-{}.r", current_time.as_secs(), s); + let extract_path = root_path.join(OsString::from(dirname.clone())); + + if extract_path.exists() { + debug!("{}: already exists", extract_path.display()); + + // Just try again in the unlikely case that the randomly generated path already exists. + return extract_archives_if_needed(root_path); + } + + fs::create_dir_all(extract_path.clone())?; + + extract_archive(&extract_path, NODE_BINARY)?; + extract_archive(&extract_path, NATIVE_MODULES)?; + extract_archive(&extract_path, STATIC)?; + extract_archive(&extract_path, SOURCE)?; + + // cleanup happens in the background to avoid users waiting for it + start_cleanup_thread(older_dirs, extract_path.clone()); + + Ok(extract_path) +} + +fn extracts_needed(path: &Path) -> Result { + Ok(is_extract_needed(path, NODE_BINARY)? + || is_extract_needed(path, NATIVE_MODULES)? + || is_extract_needed(path, STATIC)? + || is_extract_needed(path, SOURCE)?) +} + +fn find_existing_extract_dirs(root_path: &Path) -> Result<(Option, Vec)> { + // list all Garden extraction directories in the temporary directory root_path + let mut directories: Vec = fs::read_dir(root_path) + .wrap_err_with(|| format!("Failed to read directory {:?}", root_path))? + .flatten() // remove failed directories, e.g. where permissions are not sufficient + .map(|entry| entry.path()) + .filter(|path| { + if !path.is_dir() { + return false; + } + + // match only directories ending with ".r" for root + // This allows us to add other files or directories to the temp directory in the future, without interfering with the extraction process + let ext = path.extension().unwrap_or_default(); + if ext == "r" { + return true; + } + + false + }) + .collect(); + + // sort by filename. The names contain the seconds since unix epoch, so they will be sorted by creation time. + directories.sort(); + + let latest_entry = directories.pop(); + let cleanup_dirs: Vec = directories; + + Ok((latest_entry, cleanup_dirs)) +} + +// extract needed check + +fn is_extract_needed(path: &Path, artifact: GardenArtifact) -> Result { + let checksum_file = path.join(format!("{}.sha256sum", artifact.name)); + + if !checksum_file.exists() { + debug!( + "{}: checksum file does not exist: {:?}", + artifact.name, checksum_file + ); + return Ok(true); + } + + if checksum_file.exists() + && fs::read(checksum_file.clone()) + .wrap_err_with(|| format!("Failed read {:?}", checksum_file))? + == artifact.sha256.to_vec() + { + debug!( + "{}: already extracted (checksum file: {:?})", + artifact.name, checksum_file + ); + return Ok(false); + } + + debug!("{}: Needs extraction", artifact.name); + + Ok(true) +} + +// extraction + +fn extract_archive(path: &Path, artifact: GardenArtifact) -> Result<()> { + debug!( + "{}: extracting {:?} bytes...", + artifact.name, + artifact.archive.len() + ); + + // if not match, extract the NODE_BINARY_ARCHIVE + unpack(path, artifact.archive).wrap_err_with(|| { + format!( + "Failed to extract archive {} into {:?}", + artifact.name, path + ) + })?; + + debug!("{}: Successfully extracted to {:?}", artifact.name, path); + + let checksum_file = path.join(format!("{}.sha256sum", artifact.name)); + + // write the checksum file + fs::File::create(checksum_file.clone()) + .wrap_err_with(|| format!("Failed to create checksum file {:?}", checksum_file))? + .write_all(artifact.sha256) + .wrap_err_with(|| format!("Failed to write checksum file {:?}", checksum_file))?; + + Ok(()) +} + +fn unpack(path: &Path, archive: &[u8]) -> Result<(), std::io::Error> { + // extract the NODE_BINARY_ARCHIVE + let decoder = flate2::read::GzDecoder::new(archive); + let mut archive = tar::Archive::new(decoder); + + archive.unpack(path)?; + + Ok(()) +} + +#[cfg(test)] +mod tests { + use std::{path::PathBuf, fs}; + + use super::extract_archives_if_needed; + + #[test] + fn test_extract_smoke() { + let dir: PathBuf = "/tmp/garden-sea-test".into(); + + if dir.exists() { + fs::remove_dir_all(&dir).expect("Failed to delete temporary directory"); + } + + // This test mostly ensures that we have no panic due to corrupt archives in release builds. + extract_archives_if_needed(&dir).expect("Failed self-extract"); + } +} diff --git a/garden-sea/src/log.rs b/garden-sea/src/log.rs new file mode 100644 index 0000000000..765b18aba2 --- /dev/null +++ b/garden-sea/src/log.rs @@ -0,0 +1,15 @@ +use lazy_static::lazy_static; +use std::env::var; + +lazy_static! { + pub static ref GARDEN_SEA_DEBUG: bool = var("GARDEN_SEA_DEBUG").is_ok(); +} + +macro_rules! debug { + ($fmt:expr $(, $($arg:tt)*)?) => { + if *$crate::log::GARDEN_SEA_DEBUG { + eprintln!(concat!("[garden-sea] debug: ", $fmt), $($($arg)*)?) + } + }; +} +pub(crate) use debug; diff --git a/garden-sea/src/main.rs b/garden-sea/src/main.rs new file mode 100644 index 0000000000..b86b246501 --- /dev/null +++ b/garden-sea/src/main.rs @@ -0,0 +1,33 @@ +mod artifacts; +mod cleanup; +mod extract; +mod log; +mod node; +mod signal; +mod terminate; + +use eyre::{Result, WrapErr}; +use std::process::exit; + +use crate::extract::extract_archives_if_needed; + +const EXIT_GARDEN_SEA_ERROR: i32 = 11; + +fn main() -> Result<()> { + let directories = directories::ProjectDirs::from("io", "garden", "garden") + .expect("Failed to get temporary directory"); + + let tmp_root = directories.data_dir(); + let extracted_root = extract_archives_if_needed(tmp_root).wrap_err("Failed self-extract")?; + + let child = + node::spawn_garden(&extracted_root, std::env::args()).wrap_err("Failed to spawn garden")?; + + let pid = child.id(); + + let exit_code = + node::wait(child).wrap_err_with(|| format!("Failed waiting for garden (pid {})", pid))?; + + // we need to unwrap, as in case the child was terminated by a signal, we don't have an exit code + exit(exit_code.unwrap_or(EXIT_GARDEN_SEA_ERROR)) +} diff --git a/garden-sea/src/node.rs b/garden-sea/src/node.rs new file mode 100644 index 0000000000..c1a70edd38 --- /dev/null +++ b/garden-sea/src/node.rs @@ -0,0 +1,112 @@ +use std::{ + env, + ffi::OsString, + path::Path, + process::{Child, Command}, + thread::JoinHandle, +}; + +use eyre::{Result, WrapErr}; + +use crate::{log::debug, signal}; + +pub(crate) fn spawn_garden(path: &Path, sea_args: T) -> Result +where + T: Iterator, +{ + #[cfg(unix)] + let node = "bin/node"; + #[cfg(windows)] + let node = "bin/node.exe"; + + // We do allow users to set NODE_* variables and they are passed through to the underlying node by default. + // Some users depend on this, e.g. for NODE_EXTRA_CA_CERTS. + let mut command = Command::new(path.join(node)); + + command.env("GARDEN_SEA_EXTRACTED_ROOT", OsString::from(path)); + command.env( + "GARDEN_SEA_EXECUTABLE_PATH", + process_path::get_executable_path().expect("Failed to get executable path"), + ); + + // Allow users to override the heap size if needed. + let max_old_space_size = env::var("GARDEN_MAX_OLD_SPACE_SIZE").unwrap_or("4096".into()); + let max_semi_space_size = env::var("GARDEN_MAX_SEMI_SPACE_SIZE").unwrap_or("64".into()); + + let mut node_args: Vec = vec![ + // Allow larger heap size than default + // TODO: consider what happens when users also set the NODE_OPTIONS env var + format!("--max-semi-space-size={}", max_semi_space_size).into(), + format!("--max-old-space-size={}", max_old_space_size).into(), + // execute garden.mjs + path.join("rollup").join("garden.mjs").into(), + ]; + + node_args.extend(sea_args.skip(1).map(|s| s.into())); + + debug!("Spawning {} with {:?}", node, node_args); + for env in command.get_envs() { + debug!("Environment variable: {:?}={:?}", env.0, env.1.unwrap()); + } + command.args(node_args.clone()); + + Command::spawn(&mut command) + .wrap_err_with(|| format!("Failed to spawn {} with {:?}", node, node_args)) +} + +pub(crate) fn wait(mut child: Child) -> Result> { + let child_id: u32 = child.id(); + + let thread: JoinHandle> = std::thread::spawn(move || { + let result = child + .wait() + // This should not happen, as we wait immediately after spawning + .expect("Failed to wait for child process: Is the child process still running?"); + + result.code() + }); + + signal::set_console_ctrl_handler(child_id)?; + + let result = thread + .join() + .expect("Failed to join thread waiting for child"); + + if let Some(exit_status) = result { + debug!("Child exited with status: {}", exit_status); + return Ok(Some(exit_status)); + } + + debug!("Child exited due to signal"); + + Ok(None) +} + +#[cfg(test)] +mod tests { + use std::env; + + use crate::{extract::extract_archives_if_needed, node::spawn_garden}; + + use super::wait; + + #[test] + #[ignore = "This test does not work in cross, because the git binary is missing in the container."] + fn test_garden_version() { + let directories = directories::ProjectDirs::from("io", "garden", "garden-test") + .expect("Failed to get temporary directory"); + + let root_path = directories.data_dir(); + + // windows tests are running in wine, node doesn't like that. + env::set_var("NODE_SKIP_PLATFORM_CHECK", "1"); + + // This test mostly ensures that we have no panic due to corrupt archives in release builds. + let result = extract_archives_if_needed(root_path).expect("Failed self-extract"); + + let child = spawn_garden(&result, ["garden".into(), "version".into()].into_iter()) + .expect("Failed to spawn garden"); + let return_code = wait(child).expect("Failed waiting for garden").unwrap(); + assert!(return_code == 0); + } +} diff --git a/garden-sea/src/signal.rs b/garden-sea/src/signal.rs new file mode 100644 index 0000000000..79e6352b29 --- /dev/null +++ b/garden-sea/src/signal.rs @@ -0,0 +1,81 @@ +#[cfg(windows)] +use crossbeam::channel::{bounded, select, Receiver, Sender}; + +#[cfg(windows)] +use lazy_static::lazy_static; +#[cfg(windows)] +use windows::Win32::Foundation::BOOL; +#[cfg(windows)] +use windows::Win32::System::Console::{ + SetConsoleCtrlHandler, CTRL_BREAK_EVENT, CTRL_CLOSE_EVENT, CTRL_C_EVENT, CTRL_LOGOFF_EVENT, + CTRL_SHUTDOWN_EVENT, +}; + +use crate::log::debug; +use crate::terminate; + +#[cfg(windows)] +#[derive(Debug)] +enum Signal { + CtrlC, +} + +#[cfg(windows)] +lazy_static! { + static ref _C: (Sender, Receiver) = bounded(100); + static ref SEND: Sender = _C.0.clone(); + static ref RECEIVE: Receiver = _C.1.clone(); +} + +#[cfg(windows)] +extern "system" fn console_ctrl_handler(ctrl_type: u32) -> BOOL { + match ctrl_type { + CTRL_C_EVENT | CTRL_BREAK_EVENT | CTRL_CLOSE_EVENT | CTRL_SHUTDOWN_EVENT + | CTRL_LOGOFF_EVENT => { + debug!("Control event received: {}", ctrl_type); + SEND.send(Signal::CtrlC) + .expect("Failed to send CtrlC signal"); + BOOL(1) // Indicate that the event has been handled + } + _ => BOOL(0), // Event has not been handled + } +} + +#[cfg(windows)] +pub fn set_console_ctrl_handler(pid: u32) -> windows::core::Result<()> { + unsafe { + SetConsoleCtrlHandler(Some(console_ctrl_handler), true)?; + } + + std::thread::spawn(move || { + select! { + recv(RECEIVE) -> msg => { + if let Ok(signal) = msg { + debug!("Received signal {:?}", signal); + if !terminate::interrupt(pid).is_ok() { + debug!("Failed to forward signal {:?} to process: {:?}", signal, pid); + } + } else { + debug!("Receive error: ${:?}", msg); + } + }, + } + }); + + Ok(()) +} + +#[cfg(unix)] +pub fn set_console_ctrl_handler(pid: u32) -> Result<(), nix::errno::Errno> { + ctrlc::set_handler(move || { + debug!("Received Ctrl+C / SIGINT!"); + let result = terminate::interrupt(pid); + match result { + Ok(_) => debug!("Successfully forwarded ctrlc to process: {:?}", pid), + Err(e) => debug!("Failed to forward ctrlc to process: {:?}", e), + } + }) + .expect("Error setting Ctrl-C handler"); + + Ok(()) +} diff --git a/garden-sea/src/terminate.rs b/garden-sea/src/terminate.rs new file mode 100644 index 0000000000..c7b73c6f99 --- /dev/null +++ b/garden-sea/src/terminate.rs @@ -0,0 +1,27 @@ +#[cfg(unix)] +use nix::unistd::Pid; + +#[cfg(unix)] +use nix::sys::signal::{self, Signal}; + +#[cfg(windows)] +use windows::Win32::System::Console::{ + AttachConsole, FreeConsole, GenerateConsoleCtrlEvent, SetConsoleCtrlHandler, CTRL_C_EVENT, +}; + +#[cfg(unix)] +pub fn interrupt(pid: u32) -> Result<(), nix::errno::Errno> { + signal::kill(Pid::from_raw(pid.try_into().unwrap()), Signal::SIGINT)?; + Ok(()) +} + +#[cfg(windows)] +pub fn interrupt(pid: u32) -> windows::core::Result<()> { + unsafe { + FreeConsole()?; + AttachConsole(pid)?; + SetConsoleCtrlHandler(None, true)?; + GenerateConsoleCtrlEvent(CTRL_C_EVENT, 0)?; + } + Ok(()) +} diff --git a/package-lock.json b/package-lock.json index e7615476ef..72a93737ac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,9 +18,14 @@ "devDependencies": { "@commitlint/cli": "^17.6.7", "@commitlint/config-conventional": "^17.6.7", - "@types/bluebird": "^3.5.32", + "@rollup/plugin-commonjs": "^25.0.5", + "@rollup/plugin-esm-shim": "^0.1.3", + "@rollup/plugin-json": "^6.0.1", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-replace": "^5.0.3", + "@rollup/plugin-url": "^8.0.2", "@types/fs-extra": "^9.0.1", - "@types/lodash": "^4.14.153", + "@types/lodash-es": "^4.17.9", "@types/node": "^18", "@types/prettier": "2.7.3", "@types/semver": "^7.5.0", @@ -48,7 +53,7 @@ "handlebars": "^4.7.6", "husky": "^4.2.5", "inquirer": "^8.2.6", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "markdown-link-check": "^3.11.2", "minimatch": "^3.0.4", "minimist": "^1.2.6", @@ -56,6 +61,8 @@ "npm-license-crawler": "^0.2.1", "prettier": "3.0.0", "replace-in-file": "^6.0.0", + "rollup": "^4.0.2", + "rollup-plugin-natives": "^0.7.8", "semver": "^7.5.4", "shx": "^0.3.2", "split2": "^4.1.0", @@ -75,7 +82,6 @@ "cli": { "name": "@garden-io/cli", "version": "0.13.18", - "hasInstallScript": true, "license": "MPL-2.0", "dependencies": { "@garden-io/core": "*", @@ -88,27 +94,23 @@ "@scg82/exit-hook": "^3.4.1", "chalk": "^4.1.2", "node-abi": "^3.45.0", - "patch-package": "^6.5.1", - "pkg": "5.8.1", - "source-map-support": "^0.5.21" + "tar": "^6.2.0", + "undici": "^5.26.5", + "unzipper": "^0.10.14" }, "bin": { - "garden": "bin/garden" + "garden": "bin/garden.js" }, "devDependencies": { "@types/chai": "^4.3.4", "@types/mocha": "^10.0.1", - "bluebird": "^3.7.2", + "@types/tar": "^6.1.7", + "@types/unzipper": "^0.10.8", "chai": "^4.3.7", - "execa": "^4.1.0", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "minimist": "^1.2.8", "mocha": "^10.2.0", - "postinstall-postinstall": "^2.1.0", - "prettier": "3.0.0", - "split2": "^4.1.0", - "typescript": "^5.1.3", - "username": "^5.1.0" + "typescript": "^5.1.3" }, "engines": { "node": ">=18", @@ -124,36 +126,58 @@ } }, "cli/node_modules/@types/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", + "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==", "dev": true }, "cli/node_modules/@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.3.tgz", + "integrity": "sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ==", "dev": true }, - "cli/node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true + "cli/node_modules/@types/tar": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@types/tar/-/tar-6.1.7.tgz", + "integrity": "sha512-57ovoJf/lFhugSbDqDgpulTfm78uwO0Pa3EwgO3Op2IAIDZaDE4Z/orZ2yl25QRr8NQa1xjms9ElcoHx4pUedQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "minipass": "^4.0.0" + } + }, + "cli/node_modules/@types/tar/node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "cli/node_modules/@types/unzipper": { + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/@types/unzipper/-/unzipper-0.10.8.tgz", + "integrity": "sha512-Cior/4Y78R1ZVF6tnWEHWIkAMDqKxU5pPCbaC62826oEfchPGg90fKdi3sLZ2D7oB7GrFu3+PW2elEMBOtd27w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } }, "cli/node_modules/chai": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", - "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.0.8" }, "engines": { "node": ">=4" @@ -169,10 +193,13 @@ } }, "cli/node_modules/chai/node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -199,12 +226,12 @@ } }, "cli/node_modules/chai/node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "cli/node_modules/chai/node_modules/pathval": { @@ -1051,9 +1078,9 @@ } }, "cli/node_modules/node-abi": { - "version": "3.47.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.47.0.tgz", - "integrity": "sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==", + "version": "3.51.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.51.0.tgz", + "integrity": "sha512-SQkEP4hmNWjlniS5zdnfIXTk1x7Ome85RDzHlTbBtzE97Gfwz/Ipw4v/Ryk20DWIy3yCNVLVlGKApCnmvYoJbA==", "dependencies": { "semver": "^7.3.5" }, @@ -1061,244 +1088,234 @@ "node": ">=10" } }, - "cli/node_modules/patch-package": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz", - "integrity": "sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==", + "cli/node_modules/tar": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", "dependencies": { - "@yarnpkg/lockfile": "^1.1.0", - "chalk": "^4.1.2", - "cross-spawn": "^6.0.5", - "find-yarn-workspace-root": "^2.0.0", - "fs-extra": "^9.0.0", - "is-ci": "^2.0.0", - "klaw-sync": "^6.0.0", - "minimist": "^1.2.6", - "open": "^7.4.2", - "rimraf": "^2.6.3", - "semver": "^5.6.0", - "slash": "^2.0.0", - "tmp": "^0.0.33", - "yaml": "^1.10.2" - }, - "bin": { - "patch-package": "index.js" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" }, "engines": { - "node": ">=10", - "npm": ">5" + "node": ">=10" } }, - "cli/node_modules/patch-package/node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==" + "cli/node_modules/tar/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } }, - "cli/node_modules/patch-package/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "cli/node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "minipass": "^3.0.0" }, "engines": { - "node": ">=4.8" + "node": ">= 8" } }, - "cli/node_modules/patch-package/node_modules/cross-spawn/node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "cli/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, - "cli/node_modules/patch-package/node_modules/cross-spawn/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "cli/node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "engines": { - "node": ">=4" + "node": ">=8" } }, - "cli/node_modules/patch-package/node_modules/cross-spawn/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "cli/node_modules/tar/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dependencies": { - "shebang-regex": "^1.0.0" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "cli/node_modules/patch-package/node_modules/cross-spawn/node_modules/shebang-command/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "cli/node_modules/tar/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "cli/node_modules/patch-package/node_modules/cross-spawn/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "cli/node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "cli/node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "cli/node_modules/undici": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.27.0.tgz", + "integrity": "sha512-l3ydWhlhOJzMVOYkymLykcRRXqbUaQriERtR70B9LzNkZ4bX52Fc8wbTDneMiwo8T+AemZXvXaTx+9o5ROxrXg==", "dependencies": { - "isexe": "^2.0.0" + "@fastify/busboy": "^2.0.0" }, - "bin": { - "which": "bin/which" + "engines": { + "node": ">=14.0" } }, - "cli/node_modules/patch-package/node_modules/cross-spawn/node_modules/which/node_modules/isexe": { + "cli/node_modules/undici/node_modules/@fastify/busboy": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz", + "integrity": "sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==", + "engines": { + "node": ">=14" + } }, - "cli/node_modules/patch-package/node_modules/find-yarn-workspace-root": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", - "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "cli/node_modules/unzipper": { + "version": "0.10.14", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", "dependencies": { - "micromatch": "^4.0.2" + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" } }, - "cli/node_modules/patch-package/node_modules/find-yarn-workspace-root/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, + "cli/node_modules/unzipper/node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", "engines": { - "node": ">=8.6" + "node": ">=0.6" } }, - "cli/node_modules/patch-package/node_modules/find-yarn-workspace-root/node_modules/micromatch/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "cli/node_modules/unzipper/node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", "dependencies": { - "fill-range": "^7.0.1" + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" }, "engines": { - "node": ">=8" + "node": "*" } }, - "cli/node_modules/patch-package/node_modules/find-yarn-workspace-root/node_modules/micromatch/node_modules/braces/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, + "cli/node_modules/unzipper/node_modules/binary/node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", "engines": { - "node": ">=8" + "node": ">=0.2.0" } }, - "cli/node_modules/patch-package/node_modules/find-yarn-workspace-root/node_modules/micromatch/node_modules/braces/node_modules/fill-range/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "cli/node_modules/unzipper/node_modules/binary/node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", "dependencies": { - "is-number": "^7.0.0" + "traverse": ">=0.3.0 <0.4" }, "engines": { - "node": ">=8.0" + "node": "*" } }, - "cli/node_modules/patch-package/node_modules/find-yarn-workspace-root/node_modules/micromatch/node_modules/braces/node_modules/fill-range/node_modules/to-regex-range/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "cli/node_modules/unzipper/node_modules/binary/node_modules/chainsaw/node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", "engines": { - "node": ">=0.12.0" + "node": "*" } }, - "cli/node_modules/patch-package/node_modules/find-yarn-workspace-root/node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } + "cli/node_modules/unzipper/node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" }, - "cli/node_modules/patch-package/node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" + "cli/node_modules/unzipper/node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "engines": { + "node": ">=0.10" } }, - "cli/node_modules/patch-package/node_modules/is-ci/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - }, - "cli/node_modules/patch-package/node_modules/klaw-sync": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", - "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "cli/node_modules/unzipper/node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", "dependencies": { - "graceful-fs": "^4.1.11" + "readable-stream": "^2.0.2" } }, - "cli/node_modules/patch-package/node_modules/klaw-sync/node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "cli/node_modules/patch-package/node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "cli/node_modules/unzipper/node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.6" } }, - "cli/node_modules/patch-package/node_modules/open/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "cli/node_modules/unzipper/node_modules/fstream/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "cli/node_modules/patch-package/node_modules/open/node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "cli/node_modules/unzipper/node_modules/fstream/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dependencies": { - "is-docker": "^2.0.0" + "minimist": "^1.2.6" }, - "engines": { - "node": ">=8" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "cli/node_modules/patch-package/node_modules/rimraf": { + "cli/node_modules/unzipper/node_modules/fstream/node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", @@ -1309,7 +1326,7 @@ "rimraf": "bin.js" } }, - "cli/node_modules/patch-package/node_modules/rimraf/node_modules/glob": { + "cli/node_modules/unzipper/node_modules/fstream/node_modules/rimraf/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", @@ -1328,12 +1345,12 @@ "url": "https://github.com/sponsors/isaacs" } }, - "cli/node_modules/patch-package/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath": { + "cli/node_modules/unzipper/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, - "cli/node_modules/patch-package/node_modules/rimraf/node_modules/glob/node_modules/inflight": { + "cli/node_modules/unzipper/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", @@ -1342,1585 +1359,43 @@ "wrappy": "1" } }, - "cli/node_modules/patch-package/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy": { + "cli/node_modules/unzipper/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "cli/node_modules/patch-package/node_modules/rimraf/node_modules/glob/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "cli/node_modules/patch-package/node_modules/rimraf/node_modules/glob/node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "cli/node_modules/patch-package/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "cli/node_modules/patch-package/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "cli/node_modules/patch-package/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "cli/node_modules/patch-package/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "engines": { - "node": ">=6" - } - }, - "cli/node_modules/patch-package/node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "cli/node_modules/patch-package/node_modules/tmp/node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "engines": { - "node": ">=0.10.0" - } - }, - "cli/node_modules/patch-package/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, - "cli/node_modules/pkg": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/pkg/-/pkg-5.8.1.tgz", - "integrity": "sha512-CjBWtFStCfIiT4Bde9QpJy0KeH19jCfwZRJqHFDFXfhUklCx8JoFmMj3wgnEYIwGmZVNkhsStPHEOnrtrQhEXA==", - "dependencies": { - "@babel/generator": "7.18.2", - "@babel/parser": "7.18.4", - "@babel/types": "7.19.0", - "chalk": "^4.1.2", - "fs-extra": "^9.1.0", - "globby": "^11.1.0", - "into-stream": "^6.0.0", - "is-core-module": "2.9.0", - "minimist": "^1.2.6", - "multistream": "^4.1.0", - "pkg-fetch": "3.4.2", - "prebuild-install": "7.1.1", - "resolve": "^1.22.0", - "stream-meter": "^1.0.4" - }, - "bin": { - "pkg": "lib-es5/bin.js" - }, - "peerDependencies": { - "node-notifier": ">=9.0.1" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "cli/node_modules/pkg/node_modules/@babel/generator": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", - "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", - "dependencies": { - "@babel/types": "^7.18.2", - "@jridgewell/gen-mapping": "^0.3.0", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "cli/node_modules/pkg/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "cli/node_modules/pkg/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "engines": { - "node": ">=6.0.0" - } - }, - "cli/node_modules/pkg/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "cli/node_modules/pkg/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "cli/node_modules/pkg/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "engines": { - "node": ">=6.0.0" - } - }, - "cli/node_modules/pkg/node_modules/@babel/generator/node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "cli/node_modules/pkg/node_modules/@babel/parser": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.4.tgz", - "integrity": "sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "cli/node_modules/pkg/node_modules/@babel/types": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", - "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", - "dependencies": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "cli/node_modules/pkg/node_modules/@babel/types/node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "engines": { - "node": ">=6.9.0" - } - }, - "cli/node_modules/pkg/node_modules/@babel/types/node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "engines": { - "node": ">=6.9.0" - } - }, - "cli/node_modules/pkg/node_modules/@babel/types/node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } - }, - "cli/node_modules/pkg/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "engines": { - "node": ">=8" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/dir-glob/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/fast-glob/node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "engines": { - "node": ">= 8" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/fast-glob/node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/fast-glob/node_modules/@nodelib/fs.walk/node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/fast-glob/node_modules/@nodelib/fs.walk/node_modules/@nodelib/fs.scandir/node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/fast-glob/node_modules/@nodelib/fs.walk/node_modules/@nodelib/fs.scandir/node_modules/run-parallel/node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/fast-glob/node_modules/@nodelib/fs.walk/node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/fast-glob/node_modules/@nodelib/fs.walk/node_modules/fastq/node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/fast-glob/node_modules/glob-parent/node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/fast-glob/node_modules/glob-parent/node_modules/is-glob/node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/fast-glob/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/braces/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/braces/node_modules/fill-range/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/braces/node_modules/fill-range/node_modules/to-regex-range/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "engines": { - "node": ">= 4" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "cli/node_modules/pkg/node_modules/globby/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "cli/node_modules/pkg/node_modules/into-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz", - "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", - "dependencies": { - "from2": "^2.3.0", - "p-is-promise": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "cli/node_modules/pkg/node_modules/into-stream/node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "cli/node_modules/pkg/node_modules/into-stream/node_modules/from2/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "cli/node_modules/pkg/node_modules/into-stream/node_modules/from2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "cli/node_modules/pkg/node_modules/into-stream/node_modules/from2/node_modules/readable-stream/node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "cli/node_modules/pkg/node_modules/into-stream/node_modules/from2/node_modules/readable-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "cli/node_modules/pkg/node_modules/into-stream/node_modules/from2/node_modules/readable-stream/node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "cli/node_modules/pkg/node_modules/into-stream/node_modules/from2/node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "cli/node_modules/pkg/node_modules/into-stream/node_modules/from2/node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "cli/node_modules/pkg/node_modules/into-stream/node_modules/from2/node_modules/readable-stream/node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "cli/node_modules/pkg/node_modules/into-stream/node_modules/p-is-promise": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", - "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", - "engines": { - "node": ">=8" - } - }, - "cli/node_modules/pkg/node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "cli/node_modules/pkg/node_modules/is-core-module/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "cli/node_modules/pkg/node_modules/is-core-module/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "cli/node_modules/pkg/node_modules/multistream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/multistream/-/multistream-4.1.0.tgz", - "integrity": "sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "once": "^1.4.0", - "readable-stream": "^3.6.0" - } - }, - "cli/node_modules/pkg/node_modules/multistream/node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "cli/node_modules/pkg/node_modules/multistream/node_modules/once/node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "cli/node_modules/pkg/node_modules/multistream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "cli/node_modules/pkg/node_modules/multistream/node_modules/readable-stream/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "cli/node_modules/pkg/node_modules/multistream/node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "cli/node_modules/pkg/node_modules/multistream/node_modules/readable-stream/node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "cli/node_modules/pkg/node_modules/multistream/node_modules/readable-stream/node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "cli/node_modules/pkg/node_modules/pkg-fetch": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/pkg-fetch/-/pkg-fetch-3.4.2.tgz", - "integrity": "sha512-0+uijmzYcnhC0hStDjm/cl2VYdrmVVBpe7Q8k9YBojxmR5tG8mvR9/nooQq3QSXiQqORDVOTY3XqMEqJVIzkHA==", - "dependencies": { - "chalk": "^4.1.2", - "fs-extra": "^9.1.0", - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.6", - "progress": "^2.0.3", - "semver": "^7.3.5", - "tar-fs": "^2.1.1", - "yargs": "^16.2.0" - }, - "bin": { - "pkg-fetch": "lib-es5/bin.js" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/https-proxy-agent/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/https-proxy-agent/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/node-fetch/node_modules/whatwg-url/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/node-fetch/node_modules/whatwg-url/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "engines": { - "node": ">=0.4.0" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs/node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs/node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs/node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs/node_modules/pump/node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs/node_modules/pump/node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs/node_modules/pump/node_modules/once/node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs/node_modules/tar-stream/node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs/node_modules/tar-stream/node_modules/bl/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs/node_modules/tar-stream/node_modules/bl/node_modules/buffer/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs/node_modules/tar-stream/node_modules/bl/node_modules/buffer/node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs/node_modules/tar-stream/node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs/node_modules/tar-stream/node_modules/end-of-stream/node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs/node_modules/tar-stream/node_modules/end-of-stream/node_modules/once/node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs/node_modules/tar-stream/node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs/node_modules/tar-stream/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/yargs/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/yargs/node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/yargs/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/yargs/node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/yargs/node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/yargs/node_modules/string-width/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/yargs/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "cli/node_modules/pkg/node_modules/pkg-fetch/node_modules/yargs/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "engines": { - "node": ">=10" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "engines": { - "node": ">=8" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "engines": { - "node": ">=6" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/pump/node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/pump/node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/pump/node_modules/once/node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/rc/node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/rc/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/simple-get/node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/simple-get/node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/simple-get/node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/simple-get/node_modules/once/node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/simple-get/node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/tar-fs/node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/bl/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/bl/node_modules/buffer/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/bl/node_modules/buffer/node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/end-of-stream/node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/end-of-stream/node_modules/once/node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "cli/node_modules/pkg/node_modules/prebuild-install/node_modules/tunnel-agent/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "cli/node_modules/pkg/node_modules/resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "cli/node_modules/unzipper/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "wrappy": "1" } }, - "cli/node_modules/pkg/node_modules/resolve/node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "cli/node_modules/unzipper/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "cli/node_modules/pkg/node_modules/resolve/node_modules/is-core-module/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, + "cli/node_modules/unzipper/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "engines": { - "node": ">= 0.4.0" + "node": ">=0.10.0" } }, - "cli/node_modules/pkg/node_modules/resolve/node_modules/is-core-module/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "cli/node_modules/pkg/node_modules/resolve/node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "cli/node_modules/pkg/node_modules/resolve/node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "cli/node_modules/unzipper/node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, - "cli/node_modules/pkg/node_modules/stream-meter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stream-meter/-/stream-meter-1.0.4.tgz", - "integrity": "sha512-4sOEtrbgFotXwnEuzzsQBYEV1elAeFSO8rSGeTwabuX1RRn/kEq9JVH7I0MRBhKVRR0sJkr0M0QCH7yOLf9fhQ==", - "dependencies": { - "readable-stream": "^2.1.4" - } + "cli/node_modules/unzipper/node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" }, - "cli/node_modules/pkg/node_modules/stream-meter/node_modules/readable-stream": { + "cli/node_modules/unzipper/node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", @@ -2934,32 +1409,32 @@ "util-deprecate": "~1.0.1" } }, - "cli/node_modules/pkg/node_modules/stream-meter/node_modules/readable-stream/node_modules/core-util-is": { + "cli/node_modules/unzipper/node_modules/readable-stream/node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, - "cli/node_modules/pkg/node_modules/stream-meter/node_modules/readable-stream/node_modules/inherits": { + "cli/node_modules/unzipper/node_modules/readable-stream/node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "cli/node_modules/pkg/node_modules/stream-meter/node_modules/readable-stream/node_modules/isarray": { + "cli/node_modules/unzipper/node_modules/readable-stream/node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, - "cli/node_modules/pkg/node_modules/stream-meter/node_modules/readable-stream/node_modules/process-nextick-args": { + "cli/node_modules/unzipper/node_modules/readable-stream/node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, - "cli/node_modules/pkg/node_modules/stream-meter/node_modules/readable-stream/node_modules/safe-buffer": { + "cli/node_modules/unzipper/node_modules/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "cli/node_modules/pkg/node_modules/stream-meter/node_modules/readable-stream/node_modules/string_decoder": { + "cli/node_modules/unzipper/node_modules/readable-stream/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", @@ -2967,302 +1442,15 @@ "safe-buffer": "~5.1.0" } }, - "cli/node_modules/pkg/node_modules/stream-meter/node_modules/readable-stream/node_modules/util-deprecate": { + "cli/node_modules/unzipper/node_modules/readable-stream/node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "cli/node_modules/postinstall-postinstall": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz", - "integrity": "sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ==", - "dev": true, - "hasInstallScript": true - }, - "cli/node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "cli/node_modules/source-map-support/node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "cli/node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "cli/node_modules/username": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/username/-/username-5.1.0.tgz", - "integrity": "sha512-PCKbdWw85JsYMvmCv5GH3kXmM66rCd9m1hBEDutPNv94b/pqCMT4NtcKyeWYvLFiE8b+ha1Jdl8XAaUdPn5QTg==", - "dev": true, - "dependencies": { - "execa": "^1.0.0", - "mem": "^4.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "cli/node_modules/username/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "cli/node_modules/username/node_modules/execa/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "cli/node_modules/username/node_modules/execa/node_modules/cross-spawn/node_modules/nice-try": { + "cli/node_modules/unzipper/node_modules/setimmediate": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "cli/node_modules/username/node_modules/execa/node_modules/cross-spawn/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "cli/node_modules/username/node_modules/execa/node_modules/cross-spawn/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "cli/node_modules/username/node_modules/execa/node_modules/cross-spawn/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "cli/node_modules/username/node_modules/execa/node_modules/cross-spawn/node_modules/shebang-command/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "cli/node_modules/username/node_modules/execa/node_modules/cross-spawn/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "cli/node_modules/username/node_modules/execa/node_modules/cross-spawn/node_modules/which/node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "cli/node_modules/username/node_modules/execa/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "cli/node_modules/username/node_modules/execa/node_modules/get-stream/node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "cli/node_modules/username/node_modules/execa/node_modules/get-stream/node_modules/pump/node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "cli/node_modules/username/node_modules/execa/node_modules/get-stream/node_modules/pump/node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "cli/node_modules/username/node_modules/execa/node_modules/get-stream/node_modules/pump/node_modules/once/node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "cli/node_modules/username/node_modules/execa/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "cli/node_modules/username/node_modules/execa/node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "cli/node_modules/username/node_modules/execa/node_modules/npm-run-path/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "cli/node_modules/username/node_modules/execa/node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "cli/node_modules/username/node_modules/execa/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "cli/node_modules/username/node_modules/execa/node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "cli/node_modules/username/node_modules/mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "dependencies": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "cli/node_modules/username/node_modules/mem/node_modules/map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "dependencies": { - "p-defer": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "cli/node_modules/username/node_modules/mem/node_modules/map-age-cleaner/node_modules/p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "cli/node_modules/username/node_modules/mem/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "cli/node_modules/username/node_modules/mem/node_modules/p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true, - "engines": { - "node": ">=6" - } + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, "core": { "name": "@garden-io/core", @@ -3272,15 +1460,16 @@ "@codenamize/codenamize": "^1.1.1", "@hapi/joi": "git+https://github.com/garden-io/joi.git#master", "@jsdevtools/readdir-enhanced": "^6.0.4", - "@kubernetes/client-node": "=0.18.0", - "@opentelemetry/api": "^1.4.1", - "@opentelemetry/exporter-trace-otlp-http": "^0.41.1", - "@opentelemetry/instrumentation-http": "^0.41.1", - "@opentelemetry/otlp-exporter-base": "^0.41.1", - "@opentelemetry/resources": "^1.14.0", - "@opentelemetry/sdk-node": "^0.41.1", - "@opentelemetry/sdk-trace-base": "^1.14.0", - "@opentelemetry/semantic-conventions": "^1.14.0", + "@kubernetes/client-node": "github:davidgamero/javascript#c17ff3193dbd111b9e5b5db939647af70005381e", + "@opentelemetry/api": "^1.6.0", + "@opentelemetry/core": "^1.17.1", + "@opentelemetry/exporter-trace-otlp-http": "0.43.0", + "@opentelemetry/instrumentation-http": "^0.44.0", + "@opentelemetry/otlp-exporter-base": "^0.44.0", + "@opentelemetry/resources": "^1.17.1", + "@opentelemetry/sdk-node": "^0.44.0", + "@opentelemetry/sdk-trace-base": "^1.17.1", + "@opentelemetry/semantic-conventions": "^1.17.1", "@scg82/exit-hook": "^3.4.1", "ajv": "^8.12.0", "ajv-formats": "^2.1.1", @@ -3288,7 +1477,6 @@ "archiver": "^5.3.1", "async": "^3.2.4", "async-lock": "^1.4.0", - "certpem": "^1.1.3", "chalk": "^4.1.2", "chokidar": "^3.5.3", "ci-info": "^3.8.0", @@ -3311,12 +1499,12 @@ "eventemitter3": "^5.0.0", "execa": "^4.1.0", "fast-copy": "^3.0.1", - "fs-extra": "^11.1.0", + "fs-extra": "^11.1.1", "get-port": "^5.1.1", "get-port-please": "^3.1.1", "glob": "^10.2.6", "global-agent": "^3.0.0", - "got": "^11.8.6", + "got": "^13.0.0", "gray-matter": "^4.0.3", "handlebars": "^4.7.7", "has-ansi": "^4.0.1", @@ -3325,9 +1513,8 @@ "humanize-string": "^2.1.0", "import-lazy": "^4.0.0", "indent-string": "^4.0.0", - "ink": "^3.2.0", - "ink-divider": "^3.0.0", - "ink-spinner": "^4.0.3", + "ink": "^4.4.1", + "ink-spinner": "^5.0.0", "inquirer": "^7.3.3", "ip": "^1.1.8", "is-glob": "^4.0.3", @@ -3346,38 +1533,39 @@ "koa-static": "^5.0.0", "koa-websocket": "^6.0.0", "linewrap": "^0.2.1", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "log-symbols": "^4.1.0", "micromatch": "^4.0.5", "mimic-fn": "^3.1.0", "minimatch": "^7.1.1", "minimist": "^1.2.8", "moment": "^2.29.4", - "node-abi": "^3.45.0", + "node-fetch": "^3.3.2", "node-forge": "^1.3.1", "node-pty-prebuilt-multiarch": "^0.10.1-pre.5", "normalize-path": "^3.0.0", "normalize-url": "^5.3.1", - "open": "^8.4.2", + "open": "^9.1.0", "p-filter": "^2.1.0", "p-limit": "^3.1.0", "p-map": "^4.0.0", "p-props": "^4.0.0", - "p-queue": "^6.0.0", + "p-queue": "^7.4.1", "p-retry": "^4.6.2", "parse-duration": "^1.0.2", "parse-git-config": "^3.0.0", "path-is-inside": "^1.0.2", "pluralize": "^8.0.0", + "prop-types": "^15.8.1", "proper-lockfile": "^4.1.2", "proper-url-join": "^2.1.1", + "proxy-agent": "^6.3.1", "qs": "^6.11.2", "query-string": "^6.14.1", "react": "^18.2.0", "readdir-enhanced": "^6.0.4", - "request": "^2.88.2", - "request-promise": "^4.2.5", "respawn": "^2.6.0", + "semver": "^7.5.4", "slash": "^3.0.0", "slice-ansi": "^4.0.0", "source-map-support": "^0.5.21", @@ -3398,7 +1586,7 @@ "typescript-memoize": "^1.1.1", "uniqid": "^5.4.0", "unixify": "^1.0.0", - "unzipper": "^0.10.14", + "unzip-stream": "^0.3.1", "username": "^5.1.0", "uuid": "^9.0.0", "which": "^3.0.0", @@ -3446,12 +1634,12 @@ "@types/koa-router": "^7.4.4", "@types/koa-static": "^4.0.2", "@types/koa-websocket": "^5.0.7", - "@types/lodash": "^4.14.191", + "@types/lodash": "^4.14.200", + "@types/lodash-es": "^4.17.9", "@types/micromatch": "^4.0.2", "@types/minimist": "^1.2.2", "@types/mocha": "^10.0.1", "@types/node": "^18", - "@types/node-fetch": "^2.6.6", "@types/node-forge": "^1.3.1", "@types/normalize-path": "^3.0.0", "@types/parse-git-config": "^3.0.1", @@ -3461,8 +1649,6 @@ "@types/ps-tree": "^1.1.2", "@types/qs": "^6.9.8", "@types/react": "^18.0.28", - "@types/request": "^2.48.8", - "@types/request-promise": "^4.1.48", "@types/sinon": "^10.0.14", "@types/slice-ansi": "^4.0.0", "@types/split2": "^3.2.1", @@ -3472,7 +1658,7 @@ "@types/touch": "^3.1.2", "@types/tough-cookie": "^4.0.2", "@types/uniqid": "^5.3.2", - "@types/unzipper": "^0.10.6", + "@types/unzip-stream": "^0.3.2", "@types/uuid": "^9.0.1", "@types/which": "^1.3.2", "@types/wrap-ansi": "^3.0.0", @@ -3492,7 +1678,6 @@ "md5": "^2.3.0", "mocha": "^10.2.0", "nock": "^12.0.3", - "node-fetch": "^2.7.0", "nodemon": "^3.0.1", "nyc": "^15.1.0", "p-event": "^4.2.0", @@ -3550,9 +1735,9 @@ } }, "core/node_modules/@google-cloud/artifact-registry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@google-cloud/artifact-registry/-/artifact-registry-3.0.1.tgz", - "integrity": "sha512-kMnmjwG14xj4VBC6rw9v64bA3FvBQ6yBAAv08CPTPacHXtcKS5GVIPhVDdDMyT2tlpwOz6cKFJFEJ/hO5foxQQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@google-cloud/artifact-registry/-/artifact-registry-3.1.0.tgz", + "integrity": "sha512-TrCWoqYrS+tr+DZN1EZpit2vsvUxzILcQW28qcrK970nxM/vBDaSzuokkq2CzGEqE+CbCJ6iiG/Q/gfEFXNoGA==", "dev": true, "dependencies": { "google-gax": "^4.0.3" @@ -3562,12 +1747,12 @@ } }, "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-4.0.4.tgz", - "integrity": "sha512-Yoey/ABON2HaTUIRUt5tTQAvwQ6E/2etSyFXwHNVcYtIiYDpKix7G4oorZdkp17gFiYovzRCRhRZYrfdCgRK9Q==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-4.0.5.tgz", + "integrity": "sha512-yLoYtp4zE+8OQA74oBEbNkbzI6c95W01JSL7RqC8XERKpRvj3ytZp1dgnbA6G9aRsc8pZB25xWYBcCmrbYOEhA==", "dev": true, "dependencies": { - "@grpc/grpc-js": "~1.9.0", + "@grpc/grpc-js": "~1.9.6", "@grpc/proto-loader": "^0.7.0", "@types/long": "^4.0.0", "abort-controller": "^3.0.0", @@ -3577,16 +1762,16 @@ "object-hash": "^3.0.0", "proto3-json-serializer": "^2.0.0", "protobufjs": "7.2.5", - "retry-request": "^6.0.0" + "retry-request": "^7.0.0" }, "engines": { "node": ">=14" } }, "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/@grpc/grpc-js": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.3.tgz", - "integrity": "sha512-b8iWtdrYIeT5fdZdS4Br/6h/kuk0PW5EVBUGk1amSbrpL8DlktJD43CdcCWwRdd6+jgwHhADSbL9CsNnm6EUPA==", + "version": "1.9.9", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.9.tgz", + "integrity": "sha512-vQ1qwi/Kiyprt+uhb1+rHMpyk4CVRMTGNUGGPRGS7pLNfWkdCHrGEnT6T3/JyC2VZgoOX/X1KwdoU0WYQAeYcQ==", "dev": true, "dependencies": { "@grpc/proto-loader": "^0.7.8", @@ -3750,6 +1935,48 @@ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "dev": true }, + "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/node-fetch/node_modules/whatwg-url/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/node-fetch/node_modules/whatwg-url/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/object-hash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", @@ -3866,18 +2093,100 @@ "dev": true }, "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/retry-request": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-6.0.0.tgz", - "integrity": "sha512-24kaFMd3wCnT3n4uPnsQh90ZSV8OISpfTFXJ00Wi+/oD2OPrp63EQ8hznk6rhxdlpwx2QBhQSDz2Fg46ki852g==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.1.tgz", + "integrity": "sha512-ZI6vJp9rfB71mrZpw+n9p/B6HCsd7QJlSEQftZ+xfJzr3cQ9EPGKw1FF0BnViJ0fYREX6FhymBD2CARpmsFciQ==", "dev": true, "dependencies": { + "@types/request": "^2.48.8", "debug": "^4.1.1", - "extend": "^3.0.2" + "extend": "^3.0.2", + "teeny-request": "^9.0.0" }, "engines": { "node": ">=14" } }, + "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/retry-request/node_modules/@types/request": { + "version": "2.48.11", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.11.tgz", + "integrity": "sha512-HuihY1+Vss5RS9ZHzRyTGIzwPTdrJBkCm/mAeLRYrOQu/MGqyezKXWOK1VhCnR+SDbp9G2mRUP+OVEqCrzpcfA==", + "dev": true, + "dependencies": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + } + }, + "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/retry-request/node_modules/@types/request/node_modules/@types/caseless": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.4.tgz", + "integrity": "sha512-2in/lrHRNmDvHPgyormtEralhPcN3An1gLjJzj2Bw145VBxkQ75JEXW6CTdMAwShiHQcYsl2d10IjQSdJSJz4g==", + "dev": true + }, + "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/retry-request/node_modules/@types/request/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/retry-request/node_modules/@types/request/node_modules/form-data/node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/retry-request/node_modules/@types/request/node_modules/form-data/node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/retry-request/node_modules/@types/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/retry-request/node_modules/@types/request/node_modules/form-data/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/retry-request/node_modules/@types/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/retry-request/node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -3907,6 +2216,97 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, + "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/retry-request/node_modules/teeny-request": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", + "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.9", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/retry-request/node_modules/teeny-request/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/retry-request/node_modules/teeny-request/node_modules/http-proxy-agent/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/retry-request/node_modules/teeny-request/node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/retry-request/node_modules/teeny-request/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/retry-request/node_modules/teeny-request/node_modules/https-proxy-agent/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/retry-request/node_modules/teeny-request/node_modules/stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "dev": true, + "dependencies": { + "stubs": "^3.0.0" + } + }, + "core/node_modules/@google-cloud/artifact-registry/node_modules/google-gax/node_modules/retry-request/node_modules/teeny-request/node_modules/stream-events/node_modules/stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", + "dev": true + }, "core/node_modules/@hapi/joi": { "version": "16.1.8", "resolved": "git+ssh://git@github.com/garden-io/joi.git#d521a2647cc5f60ade1f42bed921a98bd1c63212", @@ -3983,42 +2383,65 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, "core/node_modules/@kubernetes/client-node": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.18.0.tgz", - "integrity": "sha512-Mp6q0OkZQBp+HslIgvHYpsPJk8z6mch231QWtIZQHvs+PaTE6mkUfusYE8fNw3jMjru5mVO/JDz6PTjB9YT2rQ==", + "version": "1.0.0-rc3", + "resolved": "git+ssh://git@github.com/davidgamero/javascript.git#c17ff3193dbd111b9e5b5db939647af70005381e", + "integrity": "sha512-zsVvAfTSltL5+Vo8rau/IsyjEO97ked4gf4JLOajvXZ6upOheoFPGAxbNUeUGVfJypehzKxmwKuiCCQ7xP8ARg==", + "license": "Apache-2.0", "dependencies": { "@types/js-yaml": "^4.0.1", - "@types/node": "^10.12.0", - "@types/request": "^2.47.1", - "@types/ws": "^6.0.1", + "@types/node": "^20.3.1", + "@types/node-fetch": "^2.6.3", + "@types/stream-buffers": "^3.0.3", + "@types/tar": "^6.1.1", + "@types/underscore": "^1.8.9", + "@types/ws": "^8.5.4", "byline": "^5.0.0", - "execa": "5.0.0", - "isomorphic-ws": "^4.0.1", + "form-data": "^4.0.0", + "isomorphic-ws": "^5.0.0", "js-yaml": "^4.1.0", - "jsonpath-plus": "^0.19.0", - "request": "^2.88.0", + "jsonpath-plus": "^7.2.0", + "node-fetch": "^2.6.9", + "openid-client": "^5.4.2", "rfc4648": "^1.3.0", - "shelljs": "^0.8.5", "stream-buffers": "^3.0.2", "tar": "^6.1.11", "tmp-promise": "^3.0.2", - "tslib": "^2.4.1", - "underscore": "^1.13.6", - "ws": "^7.3.1" - }, - "optionalDependencies": { - "openid-client": "^5.3.0" + "tslib": "^2.5.0", + "underscore": "^1.9.1", + "url-parse": "^1.4.3", + "ws": "^8.13.0" } }, "core/node_modules/@kubernetes/client-node/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + "version": "20.8.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.10.tgz", + "integrity": "sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "core/node_modules/@kubernetes/client-node/node_modules/@types/node/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "core/node_modules/@kubernetes/client-node/node_modules/@types/stream-buffers": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/stream-buffers/-/stream-buffers-3.0.6.tgz", + "integrity": "sha512-Bmtln6lFtcSjfQ5UqbmL/i6ARjWs33Xxf/O9KwICslxCTIVN5DYhwq87AdZ64yASm+hHgaeMAg637H4GaxH3qQ==", + "dependencies": { + "@types/node": "*" + } + }, + "core/node_modules/@kubernetes/client-node/node_modules/@types/underscore": { + "version": "1.11.12", + "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.12.tgz", + "integrity": "sha512-beX81q12OQo809WJ/UYCvUDvJR3YQ4wtehYYQ6eNw5VLyd+KUNBRV4FgzZCHBmACbdPulH9F9ifhxzFFU9TWvQ==" }, "core/node_modules/@kubernetes/client-node/node_modules/@types/ws": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-6.0.4.tgz", - "integrity": "sha512-PpPrX7SZW9re6+Ha8ojZG4Se8AZXgf0GK6zmfqEuCsY49LFDNXO3SByp44X3dFEqtB73lkCDAdUazhAjVPiNwg==", + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.8.tgz", + "integrity": "sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg==", "dependencies": { "@types/node": "*" } @@ -4031,140 +2454,114 @@ "node": ">=0.10.0" } }, - "core/node_modules/@kubernetes/client-node/node_modules/execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "core/node_modules/@kubernetes/client-node/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "core/node_modules/@kubernetes/client-node/node_modules/execa/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "core/node_modules/@kubernetes/client-node/node_modules/execa/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "engines": { - "node": ">=10.17.0" - } - }, - "core/node_modules/@kubernetes/client-node/node_modules/execa/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 6" } }, - "core/node_modules/@kubernetes/client-node/node_modules/execa/node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "core/node_modules/@kubernetes/client-node/node_modules/form-data/node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, - "core/node_modules/@kubernetes/client-node/node_modules/execa/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "core/node_modules/@kubernetes/client-node/node_modules/form-data/node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dependencies": { - "path-key": "^3.0.0" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "core/node_modules/@kubernetes/client-node/node_modules/execa/node_modules/npm-run-path/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "core/node_modules/@kubernetes/client-node/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "engines": { - "node": ">=8" + "node": ">=0.4.0" } }, - "core/node_modules/@kubernetes/client-node/node_modules/execa/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "core/node_modules/@kubernetes/client-node/node_modules/form-data/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { - "mimic-fn": "^2.1.0" + "mime-db": "1.52.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "core/node_modules/@kubernetes/client-node/node_modules/execa/node_modules/onetime/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "core/node_modules/@kubernetes/client-node/node_modules/form-data/node_modules/mime-types/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "engines": { - "node": ">=6" + "node": ">= 0.6" } }, - "core/node_modules/@kubernetes/client-node/node_modules/execa/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "core/node_modules/@kubernetes/client-node/node_modules/execa/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "core/node_modules/@kubernetes/client-node/node_modules/jsonpath-plus": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-7.2.0.tgz", + "integrity": "sha512-zBfiUPM5nD0YZSBT/o/fbCUlCcepMIdP0CJZxM1+KgA4f2T206f6VAg9e7mX35+KlMaIc5qXW34f3BnwJ3w+RA==", "engines": { - "node": ">=6" + "node": ">=12.0.0" } }, - "core/node_modules/@kubernetes/client-node/node_modules/isomorphic-ws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "core/node_modules/@kubernetes/client-node/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, "peerDependencies": { - "ws": "*" + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "core/node_modules/@kubernetes/client-node/node_modules/jsonpath-plus": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-0.19.0.tgz", - "integrity": "sha512-GSVwsrzW9LsA5lzsqe4CkuZ9wp+kxBb2GwNniaWzI2YFn5Ig42rSW8ZxVpWXaAfakXNrx5pgY5AbQq7kzX29kg==", - "engines": { - "node": ">=6.0" + "core/node_modules/@kubernetes/client-node/node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, + "core/node_modules/@kubernetes/client-node/node_modules/node-fetch/node_modules/whatwg-url/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "core/node_modules/@kubernetes/client-node/node_modules/node-fetch/node_modules/whatwg-url/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, "core/node_modules/@kubernetes/client-node/node_modules/openid-client": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.5.0.tgz", - "integrity": "sha512-Y7Xl8BgsrkzWLHkVDYuroM67hi96xITyEDSkmWaGUiNX6CkcXC3XyQGdv5aWZ6dukVKBFVQCADi9gCavOmU14w==", - "optional": true, + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.6.1.tgz", + "integrity": "sha512-PtrWsY+dXg6y8mtMPyL/namZSYVz8pjXz3yJiBNZsEdCnu9miHLB4ELVC85WvneMKo2Rg62Ay7NkuCpM0bgiLQ==", "dependencies": { - "jose": "^4.14.4", + "jose": "^4.15.1", "lru-cache": "^6.0.0", "object-hash": "^2.2.0", "oidc-token-hash": "^5.0.3" @@ -4174,10 +2571,9 @@ } }, "core/node_modules/@kubernetes/client-node/node_modules/openid-client/node_modules/jose": { - "version": "4.14.6", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.6.tgz", - "integrity": "sha512-EqJPEUlZD0/CSUMubKtMaYUOtWe91tZXTWMJZoKSbLk+KtdhNdcvppH8lA9XwVu2V4Ailvsj0GBZJ2ZwDjfesQ==", - "optional": true, + "version": "4.15.4", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.4.tgz", + "integrity": "sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==", "funding": { "url": "https://github.com/sponsors/panva" } @@ -4186,7 +2582,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "optional": true, "dependencies": { "yallist": "^4.0.0" }, @@ -4197,14 +2592,12 @@ "core/node_modules/@kubernetes/client-node/node_modules/openid-client/node_modules/lru-cache/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "core/node_modules/@kubernetes/client-node/node_modules/openid-client/node_modules/object-hash": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", - "optional": true, "engines": { "node": ">= 6" } @@ -4213,203 +2606,14 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz", "integrity": "sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==", - "optional": true, "engines": { "node": "^10.13.0 || >=12.0.0" } }, "core/node_modules/@kubernetes/client-node/node_modules/rfc4648": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/rfc4648/-/rfc4648-1.5.2.tgz", - "integrity": "sha512-tLOizhR6YGovrEBLatX1sdcuhoSCXddw3mqNVAcKxGJ+J0hFeJ+SjeWCv5UPA/WU3YzWPPuCVYgXBKZUPGpKtg==" - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs/node_modules/glob/node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs/node_modules/glob/node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs/node_modules/glob/node_modules/inflight/node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs/node_modules/glob/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs/node_modules/glob/node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs/node_modules/glob/node_modules/once/node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs/node_modules/glob/node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs/node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "engines": { - "node": ">= 0.10" - } - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs/node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs/node_modules/rechoir/node_modules/resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs/node_modules/rechoir/node_modules/resolve/node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs/node_modules/rechoir/node_modules/resolve/node_modules/is-core-module/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs/node_modules/rechoir/node_modules/resolve/node_modules/is-core-module/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs/node_modules/rechoir/node_modules/resolve/node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "core/node_modules/@kubernetes/client-node/node_modules/shelljs/node_modules/rechoir/node_modules/resolve/node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/rfc4648/-/rfc4648-1.5.3.tgz", + "integrity": "sha512-MjOWxM065+WswwnmNONOT+bD1nXzY9Km6u3kzvnx8F8/HXGZdz3T6e6vZJ8Q/RIMUSp/nxqjH3GwvJDy8ijeQQ==" }, "core/node_modules/@kubernetes/client-node/node_modules/stream-buffers": { "version": "3.0.2", @@ -4429,40 +2633,39 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" }, - "core/node_modules/@kubernetes/client-node/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "core/node_modules/@kubernetes/client-node/node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" } }, + "core/node_modules/@kubernetes/client-node/node_modules/url-parse/node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "core/node_modules/@kubernetes/client-node/node_modules/url-parse/node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, "core/node_modules/@opentelemetry/api": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.1.tgz", - "integrity": "sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.6.0.tgz", + "integrity": "sha512-OWlrQAnWn9577PhVgqjUvMr1pg57Bc4jv0iL4w0PRuOSRvq67rvHW9Ie/dZVMvCzhSCB+UxhcY/PmCmFj33Q+g==", "engines": { "node": ">=8.0.0" } }, "core/node_modules/@opentelemetry/core": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.17.0.tgz", - "integrity": "sha512-tfnl3h+UefCgx1aeN2xtrmr6BmdWGKXypk0pflQR0urFS40aE88trnkOMc2HTJZbMrqEEl4HsaBeFhwLVXsrJg==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.17.1.tgz", + "integrity": "sha512-I6LrZvl1FF97FQXPR0iieWQmKnGxYtMbWA1GrAXnLUR+B1Hn2m8KqQNEIlZAucyv00GBgpWkpllmULmZfG8P3g==", "dependencies": { - "@opentelemetry/semantic-conventions": "1.17.0" + "@opentelemetry/semantic-conventions": "1.17.1" }, "engines": { "node": ">=14" @@ -4472,15 +2675,15 @@ } }, "core/node_modules/@opentelemetry/exporter-trace-otlp-http": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.41.2.tgz", - "integrity": "sha512-Y0fGLipjZXLMelWtlS1/MDtrPxf25oM408KukRdkN31a1MEFo4h/ZkNwS7ZfmqHGUa+4rWRt2bi6JBiqy7Ytgw==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.43.0.tgz", + "integrity": "sha512-X6RGl4RTWC13EBrFstAbTh4vKqVqf6afpvFcud9qYhvl2A53OZ5RTAQP+9MrAMhthiKQaftNsEDdB2/0Sq+Xkw==", "dependencies": { - "@opentelemetry/core": "1.15.2", - "@opentelemetry/otlp-exporter-base": "0.41.2", - "@opentelemetry/otlp-transformer": "0.41.2", - "@opentelemetry/resources": "1.15.2", - "@opentelemetry/sdk-trace-base": "1.15.2" + "@opentelemetry/core": "1.17.0", + "@opentelemetry/otlp-exporter-base": "0.43.0", + "@opentelemetry/otlp-transformer": "0.43.0", + "@opentelemetry/resources": "1.17.0", + "@opentelemetry/sdk-trace-base": "1.17.0" }, "engines": { "node": ">=14" @@ -4490,50 +2693,64 @@ } }, "core/node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/core": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.15.2.tgz", - "integrity": "sha512-+gBv15ta96WqkHZaPpcDHiaz0utiiHZVfm2YOYSqFGrUaJpPkMoSuLBB58YFQGi6Rsb9EHos84X6X5+9JspmLw==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.17.0.tgz", + "integrity": "sha512-tfnl3h+UefCgx1aeN2xtrmr6BmdWGKXypk0pflQR0urFS40aE88trnkOMc2HTJZbMrqEEl4HsaBeFhwLVXsrJg==", "dependencies": { - "@opentelemetry/semantic-conventions": "1.15.2" + "@opentelemetry/semantic-conventions": "1.17.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" + "@opentelemetry/api": ">=1.0.0 <1.7.0" } }, "core/node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.15.2.tgz", - "integrity": "sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.17.0.tgz", + "integrity": "sha512-+fguCd2d8d2qruk0H0DsCEy2CTK3t0Tugg7MhZ/UQMvmewbZLNnJ6heSYyzIZWG5IPfAXzoj4f4F/qpM7l4VBA==", "engines": { "node": ">=14" } }, + "core/node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.43.0.tgz", + "integrity": "sha512-LXNtRFVuPRXB9q0qdvrLikQ3NtT9Jmv255Idryz3RJPhOh/Fa03sBASQoj3D55OH3xazmA90KFHfhJ/d8D8y4A==", + "dependencies": { + "@opentelemetry/core": "1.17.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, "core/node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/otlp-transformer": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.41.2.tgz", - "integrity": "sha512-jJbPwB0tNu2v+Xi0c/v/R3YBLJKLonw1p+v3RVjT2VfzeUyzSp/tBeVdY7RZtL6dzZpA9XSmp8UEfWIFQo33yA==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.43.0.tgz", + "integrity": "sha512-KXYmgzWdVBOD5NvPmGW1nEMJjyQ8gK3N8r6pi4HvmEhTp0v4T13qDSax4q0HfsqmbPJR355oqQSJUnu1dHNutw==", "dependencies": { - "@opentelemetry/api-logs": "0.41.2", - "@opentelemetry/core": "1.15.2", - "@opentelemetry/resources": "1.15.2", - "@opentelemetry/sdk-logs": "0.41.2", - "@opentelemetry/sdk-metrics": "1.15.2", - "@opentelemetry/sdk-trace-base": "1.15.2" + "@opentelemetry/api-logs": "0.43.0", + "@opentelemetry/core": "1.17.0", + "@opentelemetry/resources": "1.17.0", + "@opentelemetry/sdk-logs": "0.43.0", + "@opentelemetry/sdk-metrics": "1.17.0", + "@opentelemetry/sdk-trace-base": "1.17.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.5.0" + "@opentelemetry/api": ">=1.3.0 <1.7.0" } }, "core/node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/api-logs": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.41.2.tgz", - "integrity": "sha512-JEV2RAqijAFdWeT6HddYymfnkiRu2ASxoTBr4WsnGJhOjWZkEy6vp+Sx9ozr1NaIODOa2HUyckExIqQjn6qywQ==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.43.0.tgz", + "integrity": "sha512-0CXMOYPXgAdLM2OzVkiUfAL6QQwWVhnMfUXCqLsITY42FZ9TxAhZIHkoc4mfVxvPuXsBnRYGR8UQZX86p87z4A==", "dependencies": { "@opentelemetry/api": "^1.0.0" }, @@ -4542,35 +2759,35 @@ } }, "core/node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/sdk-logs": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.41.2.tgz", - "integrity": "sha512-smqKIw0tTW15waj7BAPHFomii5c3aHnSE4LQYTszGoK5P9nZs8tEAIpu15UBxi3aG31ZfsLmm4EUQkjckdlFrw==", + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.43.0.tgz", + "integrity": "sha512-JyJ2BBRKm37Mc4cSEhFmsMl5ASQn1dkGhEWzAAMSlhPtLRTv5PfvJwhR+Mboaic/eDLAlciwsgijq8IFlf6IgQ==", "dependencies": { - "@opentelemetry/core": "1.15.2", - "@opentelemetry/resources": "1.15.2" + "@opentelemetry/core": "1.17.0", + "@opentelemetry/resources": "1.17.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.4.0 <1.5.0", + "@opentelemetry/api": ">=1.4.0 <1.7.0", "@opentelemetry/api-logs": ">=0.39.1" } }, "core/node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/sdk-metrics": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.15.2.tgz", - "integrity": "sha512-9aIlcX8GnhcsAHW/Wl8bzk4ZnWTpNlLtud+fxUfBtFATu6OZ6TrGrF4JkT9EVrnoxwtPIDtjHdEsSjOqisY/iA==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.17.0.tgz", + "integrity": "sha512-HlWM27yGmYuwCoVRe3yg2PqKnIsq0kEF0HQgvkeDWz2NYkq9fFaSspR6kvjxUTbghAlZrabiqbgyKoYpYaXS3w==", "dependencies": { - "@opentelemetry/core": "1.15.2", - "@opentelemetry/resources": "1.15.2", + "@opentelemetry/core": "1.17.0", + "@opentelemetry/resources": "1.17.0", "lodash.merge": "^4.6.2" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.5.0" + "@opentelemetry/api": ">=1.3.0 <1.7.0" } }, "core/node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/sdk-metrics/node_modules/lodash.merge": { @@ -4579,61 +2796,61 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, "core/node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/resources": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.15.2.tgz", - "integrity": "sha512-xmMRLenT9CXmm5HMbzpZ1hWhaUowQf8UB4jMjFlAxx1QzQcsD3KFNAVX/CAWzFPtllTyTplrA4JrQ7sCH3qmYw==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.17.0.tgz", + "integrity": "sha512-+u0ciVnj8lhuL/qGRBPeVYvk7fL+H/vOddfvmOeJaA1KC+5/3UED1c9KoZQlRsNT5Kw1FaK8LkY2NVLYfOVZQw==", "dependencies": { - "@opentelemetry/core": "1.15.2", - "@opentelemetry/semantic-conventions": "1.15.2" + "@opentelemetry/core": "1.17.0", + "@opentelemetry/semantic-conventions": "1.17.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" + "@opentelemetry/api": ">=1.0.0 <1.7.0" } }, "core/node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.15.2.tgz", - "integrity": "sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.17.0.tgz", + "integrity": "sha512-+fguCd2d8d2qruk0H0DsCEy2CTK3t0Tugg7MhZ/UQMvmewbZLNnJ6heSYyzIZWG5IPfAXzoj4f4F/qpM7l4VBA==", "engines": { "node": ">=14" } }, "core/node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.15.2.tgz", - "integrity": "sha512-BEaxGZbWtvnSPchV98qqqqa96AOcb41pjgvhfzDij10tkBhIu9m0Jd6tZ1tJB5ZHfHbTffqYVYE0AOGobec/EQ==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.17.0.tgz", + "integrity": "sha512-2T5HA1/1iE36Q9eg6D4zYlC4Y4GcycI1J6NsHPKZY9oWfAxWsoYnRlkPfUqyY5XVtocCo/xHpnJvGNHwzT70oQ==", "dependencies": { - "@opentelemetry/core": "1.15.2", - "@opentelemetry/resources": "1.15.2", - "@opentelemetry/semantic-conventions": "1.15.2" + "@opentelemetry/core": "1.17.0", + "@opentelemetry/resources": "1.17.0", + "@opentelemetry/semantic-conventions": "1.17.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" + "@opentelemetry/api": ">=1.0.0 <1.7.0" } }, "core/node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.15.2.tgz", - "integrity": "sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.17.0.tgz", + "integrity": "sha512-+fguCd2d8d2qruk0H0DsCEy2CTK3t0Tugg7MhZ/UQMvmewbZLNnJ6heSYyzIZWG5IPfAXzoj4f4F/qpM7l4VBA==", "engines": { "node": ">=14" } }, "core/node_modules/@opentelemetry/instrumentation-http": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.41.2.tgz", - "integrity": "sha512-dzOC6xkfK0LM6Dzo91aInLdSbdIzKA0IgSDnyLi6YZ0Z7c1bfrFncFx/3gZs8vi+KXLALgfMlpzE7IYDW/cM3A==", + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.44.0.tgz", + "integrity": "sha512-Nlvj3Y2n9q6uIcQq9f33HbcB4Dr62erSwYA37+vkorYnzI2j9PhxKitocRTZnbYsrymYmQJW9mdq/IAfbtVnNg==", "dependencies": { - "@opentelemetry/core": "1.15.2", - "@opentelemetry/instrumentation": "0.41.2", - "@opentelemetry/semantic-conventions": "1.15.2", - "semver": "^7.5.1" + "@opentelemetry/core": "1.17.1", + "@opentelemetry/instrumentation": "0.44.0", + "@opentelemetry/semantic-conventions": "1.17.1", + "semver": "^7.5.2" }, "engines": { "node": ">=14" @@ -4642,29 +2859,15 @@ "@opentelemetry/api": "^1.3.0" } }, - "core/node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.15.2.tgz", - "integrity": "sha512-+gBv15ta96WqkHZaPpcDHiaz0utiiHZVfm2YOYSqFGrUaJpPkMoSuLBB58YFQGi6Rsb9EHos84X6X5+9JspmLw==", - "dependencies": { - "@opentelemetry/semantic-conventions": "1.15.2" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" - } - }, "core/node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/instrumentation": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.41.2.tgz", - "integrity": "sha512-rxU72E0pKNH6ae2w5+xgVYZLzc5mlxAbGzF4shxMVK8YC2QQsfN38B2GPbj0jvrKWWNUElfclQ+YTykkNg/grw==", + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.44.0.tgz", + "integrity": "sha512-B6OxJTRRCceAhhnPDBshyQO7K07/ltX3quOLu0icEvPK9QZ7r9P1y0RQX8O5DxB4vTv4URRkxkg+aFU/plNtQw==", "dependencies": { "@types/shimmer": "^1.0.2", "import-in-the-middle": "1.4.2", "require-in-the-middle": "^7.1.1", - "semver": "^7.5.1", + "semver": "^7.5.2", "shimmer": "^1.2.1" }, "engines": { @@ -4675,9 +2878,9 @@ } }, "core/node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/instrumentation/node_modules/@types/shimmer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.0.3.tgz", - "integrity": "sha512-F/IjUGnV6pIN7R4ZV4npHJVoNtaLZWvb+2/9gctxjb99wkpI7Ozg8VPogwDiTRyjLwZXAYxjvdg1KS8LTHKdDA==" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.0.4.tgz", + "integrity": "sha512-hsughtxFsdJ9+Gxd/qH8zHE+KT6YEAxx9hJLoSXhxTBKHMQ2NMhN23fRJ75M9RRn2hDMNn13H3gS1EktA9VgDA==" }, "core/node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/instrumentation/node_modules/import-in-the-middle": { "version": "1.4.2", @@ -4691,9 +2894,9 @@ } }, "core/node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/instrumentation/node_modules/import-in-the-middle/node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "bin": { "acorn": "bin/acorn" }, @@ -4759,9 +2962,9 @@ "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" }, "core/node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/instrumentation/node_modules/require-in-the-middle/node_modules/resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -4775,22 +2978,33 @@ } }, "core/node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/instrumentation/node_modules/require-in-the-middle/node_modules/resolve/node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "core/node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/instrumentation/node_modules/require-in-the-middle/node_modules/resolve/node_modules/is-core-module/node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "core/node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/instrumentation/node_modules/require-in-the-middle/node_modules/resolve/node_modules/is-core-module/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" + } + }, + "core/node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/instrumentation/node_modules/require-in-the-middle/node_modules/resolve/node_modules/is-core-module/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "core/node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/instrumentation/node_modules/require-in-the-middle/node_modules/resolve/node_modules/path-parse": { @@ -4814,20 +3028,12 @@ "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" }, - "core/node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.15.2.tgz", - "integrity": "sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw==", - "engines": { - "node": ">=14" - } - }, "core/node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.41.2.tgz", - "integrity": "sha512-pfwa6d+Dax3itZcGWiA0AoXeVaCuZbbqUTsCtOysd2re8C2PWXNxDONUfBWsn+KgxAdi+ljwTjJGiaVLDaIEvQ==", + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.44.0.tgz", + "integrity": "sha512-DKQqRrfVMe96aSLZiCgIesLcMLfnWH8d4bTpLB1JbU+SAQJ7nVCAfS9U36mjFCVhvNDD7gwfCNrxqFMCHq6FUw==", "dependencies": { - "@opentelemetry/core": "1.15.2" + "@opentelemetry/core": "1.17.1" }, "engines": { "node": ">=14" @@ -4836,35 +3042,13 @@ "@opentelemetry/api": "^1.0.0" } }, - "core/node_modules/@opentelemetry/otlp-exporter-base/node_modules/@opentelemetry/core": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.15.2.tgz", - "integrity": "sha512-+gBv15ta96WqkHZaPpcDHiaz0utiiHZVfm2YOYSqFGrUaJpPkMoSuLBB58YFQGi6Rsb9EHos84X6X5+9JspmLw==", - "dependencies": { - "@opentelemetry/semantic-conventions": "1.15.2" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" - } - }, - "core/node_modules/@opentelemetry/otlp-exporter-base/node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.15.2.tgz", - "integrity": "sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw==", - "engines": { - "node": ">=14" - } - }, "core/node_modules/@opentelemetry/resources": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.17.0.tgz", - "integrity": "sha512-+u0ciVnj8lhuL/qGRBPeVYvk7fL+H/vOddfvmOeJaA1KC+5/3UED1c9KoZQlRsNT5Kw1FaK8LkY2NVLYfOVZQw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.17.1.tgz", + "integrity": "sha512-M2e5emqg5I7qRKqlzKx0ROkcPyF8PbcSaWEdsm72od9txP7Z/Pl8PDYOyu80xWvbHAWk5mDxOF6v3vNdifzclA==", "dependencies": { - "@opentelemetry/core": "1.17.0", - "@opentelemetry/semantic-conventions": "1.17.0" + "@opentelemetry/core": "1.17.1", + "@opentelemetry/semantic-conventions": "1.17.1" }, "engines": { "node": ">=14" @@ -4874,36 +3058,36 @@ } }, "core/node_modules/@opentelemetry/sdk-node": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.41.2.tgz", - "integrity": "sha512-t3vaB5ajoXLtVFoL8TSoSgaVATmOyUfkIfBE4nvykm0dM2vQjMS/SUUelzR06eiPTbMPsr2UkevWhy2/oXy2vg==", - "dependencies": { - "@opentelemetry/api-logs": "0.41.2", - "@opentelemetry/core": "1.15.2", - "@opentelemetry/exporter-jaeger": "1.15.2", - "@opentelemetry/exporter-trace-otlp-grpc": "0.41.2", - "@opentelemetry/exporter-trace-otlp-http": "0.41.2", - "@opentelemetry/exporter-trace-otlp-proto": "0.41.2", - "@opentelemetry/exporter-zipkin": "1.15.2", - "@opentelemetry/instrumentation": "0.41.2", - "@opentelemetry/resources": "1.15.2", - "@opentelemetry/sdk-logs": "0.41.2", - "@opentelemetry/sdk-metrics": "1.15.2", - "@opentelemetry/sdk-trace-base": "1.15.2", - "@opentelemetry/sdk-trace-node": "1.15.2", - "@opentelemetry/semantic-conventions": "1.15.2" + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.44.0.tgz", + "integrity": "sha512-MkMJcUcqjNV/A5/y6quedSO3CIDXY17jM8sxQa0Hwmx77+/QiXJkSe4Zv0ysf37mV5+8QEt4rsq7adKg+LtaEg==", + "dependencies": { + "@opentelemetry/api-logs": "0.44.0", + "@opentelemetry/core": "1.17.1", + "@opentelemetry/exporter-jaeger": "1.17.1", + "@opentelemetry/exporter-trace-otlp-grpc": "0.44.0", + "@opentelemetry/exporter-trace-otlp-http": "0.44.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.44.0", + "@opentelemetry/exporter-zipkin": "1.17.1", + "@opentelemetry/instrumentation": "0.44.0", + "@opentelemetry/resources": "1.17.1", + "@opentelemetry/sdk-logs": "0.44.0", + "@opentelemetry/sdk-metrics": "1.17.1", + "@opentelemetry/sdk-trace-base": "1.17.1", + "@opentelemetry/sdk-trace-node": "1.17.1", + "@opentelemetry/semantic-conventions": "1.17.1" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.5.0" + "@opentelemetry/api": ">=1.3.0 <1.7.0" } }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/api-logs": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.41.2.tgz", - "integrity": "sha512-JEV2RAqijAFdWeT6HddYymfnkiRu2ASxoTBr4WsnGJhOjWZkEy6vp+Sx9ozr1NaIODOa2HUyckExIqQjn6qywQ==", + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.44.0.tgz", + "integrity": "sha512-OctojdKGmXHKAJa4/Ml+Nf7MD9jtYXvZyP64xTh0pNTmtgaTdWW3FURri2DdB/+l7YxRy0tYYZS3/tYEM1pj3w==", "dependencies": { "@opentelemetry/api": "^1.0.0" }, @@ -4911,28 +3095,14 @@ "node": ">=14" } }, - "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/core": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.15.2.tgz", - "integrity": "sha512-+gBv15ta96WqkHZaPpcDHiaz0utiiHZVfm2YOYSqFGrUaJpPkMoSuLBB58YFQGi6Rsb9EHos84X6X5+9JspmLw==", - "dependencies": { - "@opentelemetry/semantic-conventions": "1.15.2" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" - } - }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/exporter-jaeger": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.15.2.tgz", - "integrity": "sha512-BwYd5836GYvuiQcF4l5X0ca09jGJr/F37MMGyz94VH0b1dp0uYBwRJw2CQh56RlVZEdpKv29JyDRVZ/4UrRgLQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.17.1.tgz", + "integrity": "sha512-NW4qm04q4bSmhU6es1AXBWt3itJ2gkrXbKLfwDleC+ZMp3bVV47stByDqhuJzic2f47Im+C733N9RMeBkyqKMQ==", "dependencies": { - "@opentelemetry/core": "1.15.2", - "@opentelemetry/sdk-trace-base": "1.15.2", - "@opentelemetry/semantic-conventions": "1.15.2", + "@opentelemetry/core": "1.17.1", + "@opentelemetry/sdk-trace-base": "1.17.1", + "@opentelemetry/semantic-conventions": "1.17.1", "jaeger-client": "^3.15.0" }, "engines": { @@ -4987,9 +3157,9 @@ } }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/exporter-jaeger/node_modules/jaeger-client/node_modules/thriftrw/node_modules/bufrw": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/bufrw/-/bufrw-1.3.0.tgz", - "integrity": "sha512-jzQnSbdJqhIltU9O5KUiTtljP9ccw2u5ix59McQy4pV2xGhVLhRZIndY8GIrgh5HjXa6+QJ9AQhOd2QWQizJFQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/bufrw/-/bufrw-1.4.0.tgz", + "integrity": "sha512-sWm8iPbqvL9+5SiYxXH73UOkyEbGQg7kyHQmReF89WJHQJw2eV4P/yZ0E+b71cczJ4pPobVhXxgQcmfSTgGHxQ==", "dependencies": { "ansi-color": "^0.2.1", "error": "^7.0.0", @@ -5085,16 +3255,16 @@ "integrity": "sha512-iYgNnGyeeJ4t6U11NpA/QiKy+PXn5Aa3Azg5qkwIFz1tBLllQrjjsk9yzD7IAK0naNU4JxdeDgqW9ov4u/hc4g==" }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/exporter-trace-otlp-grpc": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.41.2.tgz", - "integrity": "sha512-tRM/mq7PFj7mXCws5ICMVp/rmgU93JvZdoLE0uLj4tugNz231u2ZgeRYXulBjdeHM88ZQSsWTJMu2mvr/3JV1A==", + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.44.0.tgz", + "integrity": "sha512-S1kT/9tVlgZDRYyVfCLYyWZoQTplPD9WcyX+qUPbhJTETORxzJVW9HN8mHwQsXaN7ngqwRLy5GW/nXHL8aqA0w==", "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.15.2", - "@opentelemetry/otlp-grpc-exporter-base": "0.41.2", - "@opentelemetry/otlp-transformer": "0.41.2", - "@opentelemetry/resources": "1.15.2", - "@opentelemetry/sdk-trace-base": "1.15.2" + "@opentelemetry/core": "1.17.1", + "@opentelemetry/otlp-grpc-exporter-base": "0.44.0", + "@opentelemetry/otlp-transformer": "0.44.0", + "@opentelemetry/resources": "1.17.1", + "@opentelemetry/sdk-trace-base": "1.17.1" }, "engines": { "node": ">=14" @@ -5104,9 +3274,9 @@ } }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/exporter-trace-otlp-grpc/node_modules/@grpc/grpc-js": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.5.tgz", - "integrity": "sha512-iouYNlPxRAwZ2XboDT+OfRKHuaKHiqjB5VFYZ0NFrHkbEF+AV3muIUY9olQsp8uxU4VvRCMiRk9ftzFDGb61aw==", + "version": "1.9.9", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.9.tgz", + "integrity": "sha512-vQ1qwi/Kiyprt+uhb1+rHMpyk4CVRMTGNUGGPRGS7pLNfWkdCHrGEnT6T3/JyC2VZgoOX/X1KwdoU0WYQAeYcQ==", "dependencies": { "@grpc/proto-loader": "^0.7.8", "@types/node": ">=12.12.47" @@ -5220,13 +3390,13 @@ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/exporter-trace-otlp-grpc/node_modules/@opentelemetry/otlp-grpc-exporter-base": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.41.2.tgz", - "integrity": "sha512-OErK8dYjXG01XIMIpmOV2SzL9ctkZ0Nyhf2UumICOAKtgLvR5dG1JMlsNVp8Jn0RzpsKc6Urv7JpP69wzRXN+A==", + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.44.0.tgz", + "integrity": "sha512-RsYW2+ikNDDXM9rY4gCA3lJOu53o4CzCsUJ9DV6r78k/Y0ckWw2GM7R4I6yOmMe4jilxEaHorI3oTJFLD8KYug==", "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.15.2", - "@opentelemetry/otlp-exporter-base": "0.41.2", + "@opentelemetry/core": "1.17.1", + "@opentelemetry/otlp-exporter-base": "0.44.0", "protobufjs": "^7.2.3" }, "engines": { @@ -5319,35 +3489,72 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/exporter-trace-otlp-grpc/node_modules/@opentelemetry/otlp-transformer": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.41.2.tgz", - "integrity": "sha512-jJbPwB0tNu2v+Xi0c/v/R3YBLJKLonw1p+v3RVjT2VfzeUyzSp/tBeVdY7RZtL6dzZpA9XSmp8UEfWIFQo33yA==", + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.44.0.tgz", + "integrity": "sha512-1/KC+aHM1oGEsXyNy7QoxpvErxGdzt26bg9VHyNb4TDILkUFdwrnywnxPc6lXZ6h/8T8Mt718UWOKjNHC514kQ==", "dependencies": { - "@opentelemetry/api-logs": "0.41.2", - "@opentelemetry/core": "1.15.2", - "@opentelemetry/resources": "1.15.2", - "@opentelemetry/sdk-logs": "0.41.2", - "@opentelemetry/sdk-metrics": "1.15.2", - "@opentelemetry/sdk-trace-base": "1.15.2" + "@opentelemetry/api-logs": "0.44.0", + "@opentelemetry/core": "1.17.1", + "@opentelemetry/resources": "1.17.1", + "@opentelemetry/sdk-logs": "0.44.0", + "@opentelemetry/sdk-metrics": "1.17.1", + "@opentelemetry/sdk-trace-base": "1.17.1" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.5.0" + "@opentelemetry/api": ">=1.3.0 <1.7.0" + } + }, + "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/exporter-trace-otlp-http": { + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.44.0.tgz", + "integrity": "sha512-RkorGE6wf6PF5OjMUGBnbUDyaVgmN+vL7OgClJJUTxqbE7WqgbW8dkU04O+1mcB1znXZ1Aej1uDm0pS+eW/upA==", + "dependencies": { + "@opentelemetry/core": "1.17.1", + "@opentelemetry/otlp-exporter-base": "0.44.0", + "@opentelemetry/otlp-transformer": "0.44.0", + "@opentelemetry/resources": "1.17.1", + "@opentelemetry/sdk-trace-base": "1.17.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/otlp-transformer": { + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.44.0.tgz", + "integrity": "sha512-1/KC+aHM1oGEsXyNy7QoxpvErxGdzt26bg9VHyNb4TDILkUFdwrnywnxPc6lXZ6h/8T8Mt718UWOKjNHC514kQ==", + "dependencies": { + "@opentelemetry/api-logs": "0.44.0", + "@opentelemetry/core": "1.17.1", + "@opentelemetry/resources": "1.17.1", + "@opentelemetry/sdk-logs": "0.44.0", + "@opentelemetry/sdk-metrics": "1.17.1", + "@opentelemetry/sdk-trace-base": "1.17.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.7.0" } }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/exporter-trace-otlp-proto": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.41.2.tgz", - "integrity": "sha512-IGZga9IIckqYE3IpRE9FO9G5umabObIrChlXUHYpMJtDgx797dsb3qXCvLeuAwB+HoB8NsEZstlzmLnoa6/HmA==", + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.44.0.tgz", + "integrity": "sha512-yVW0FXxiLaQOyE3MGr6BtK7ml0DaJH4Qx3yvQYUd/hsJUSZBhYYw2TRaMsaW7XMpe1AvU81qt0l8uLYmcmcLJA==", "dependencies": { - "@opentelemetry/core": "1.15.2", - "@opentelemetry/otlp-exporter-base": "0.41.2", - "@opentelemetry/otlp-proto-exporter-base": "0.41.2", - "@opentelemetry/otlp-transformer": "0.41.2", - "@opentelemetry/resources": "1.15.2", - "@opentelemetry/sdk-trace-base": "1.15.2" + "@opentelemetry/core": "1.17.1", + "@opentelemetry/otlp-exporter-base": "0.44.0", + "@opentelemetry/otlp-proto-exporter-base": "0.44.0", + "@opentelemetry/otlp-transformer": "0.44.0", + "@opentelemetry/resources": "1.17.1", + "@opentelemetry/sdk-trace-base": "1.17.1" }, "engines": { "node": ">=14" @@ -5357,12 +3564,12 @@ } }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/exporter-trace-otlp-proto/node_modules/@opentelemetry/otlp-proto-exporter-base": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.41.2.tgz", - "integrity": "sha512-BxmEMiP6tHiFroe5/dTt9BsxCci7BTLtF7A6d4DKHLiLweWWZxQ9l7hON7qt/IhpKrQcAFD1OzZ1Gq2ZkNzhCw==", + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.44.0.tgz", + "integrity": "sha512-vgQvWEkXNk8X4BW93+j054TZBVs1ryguXQjeoLeHV/dzopdGuAypI0xC5OtSr+eRftuyPqPl2DVp4tjRq4z4dw==", "dependencies": { - "@opentelemetry/core": "1.15.2", - "@opentelemetry/otlp-exporter-base": "0.41.2", + "@opentelemetry/core": "1.17.1", + "@opentelemetry/otlp-exporter-base": "0.44.0", "protobufjs": "^7.2.3" }, "engines": { @@ -5455,33 +3662,33 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/exporter-trace-otlp-proto/node_modules/@opentelemetry/otlp-transformer": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.41.2.tgz", - "integrity": "sha512-jJbPwB0tNu2v+Xi0c/v/R3YBLJKLonw1p+v3RVjT2VfzeUyzSp/tBeVdY7RZtL6dzZpA9XSmp8UEfWIFQo33yA==", + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.44.0.tgz", + "integrity": "sha512-1/KC+aHM1oGEsXyNy7QoxpvErxGdzt26bg9VHyNb4TDILkUFdwrnywnxPc6lXZ6h/8T8Mt718UWOKjNHC514kQ==", "dependencies": { - "@opentelemetry/api-logs": "0.41.2", - "@opentelemetry/core": "1.15.2", - "@opentelemetry/resources": "1.15.2", - "@opentelemetry/sdk-logs": "0.41.2", - "@opentelemetry/sdk-metrics": "1.15.2", - "@opentelemetry/sdk-trace-base": "1.15.2" + "@opentelemetry/api-logs": "0.44.0", + "@opentelemetry/core": "1.17.1", + "@opentelemetry/resources": "1.17.1", + "@opentelemetry/sdk-logs": "0.44.0", + "@opentelemetry/sdk-metrics": "1.17.1", + "@opentelemetry/sdk-trace-base": "1.17.1" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.5.0" + "@opentelemetry/api": ">=1.3.0 <1.7.0" } }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/exporter-zipkin": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.15.2.tgz", - "integrity": "sha512-j9dPe8tyx4KqIqJAfZ/LCYfkF9+ggsT0V1+bVg9ZKTBNcLf5dTsTMdcxUxc/9s599kgcn6UERnti/tozbzwa6Q==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.17.1.tgz", + "integrity": "sha512-FaLZlIhdpxlZiKu/G8OvA+so4xoCL1hCo/JgNdeSxzI4GnJrmFFbZT6DXgUzXJO7F9Qw3KDE1cBFUHawLVz58g==", "dependencies": { - "@opentelemetry/core": "1.15.2", - "@opentelemetry/resources": "1.15.2", - "@opentelemetry/sdk-trace-base": "1.15.2", - "@opentelemetry/semantic-conventions": "1.15.2" + "@opentelemetry/core": "1.17.1", + "@opentelemetry/resources": "1.17.1", + "@opentelemetry/sdk-trace-base": "1.17.1", + "@opentelemetry/semantic-conventions": "1.17.1" }, "engines": { "node": ">=14" @@ -5491,14 +3698,14 @@ } }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/instrumentation": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.41.2.tgz", - "integrity": "sha512-rxU72E0pKNH6ae2w5+xgVYZLzc5mlxAbGzF4shxMVK8YC2QQsfN38B2GPbj0jvrKWWNUElfclQ+YTykkNg/grw==", + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.44.0.tgz", + "integrity": "sha512-B6OxJTRRCceAhhnPDBshyQO7K07/ltX3quOLu0icEvPK9QZ7r9P1y0RQX8O5DxB4vTv4URRkxkg+aFU/plNtQw==", "dependencies": { "@types/shimmer": "^1.0.2", "import-in-the-middle": "1.4.2", "require-in-the-middle": "^7.1.1", - "semver": "^7.5.1", + "semver": "^7.5.2", "shimmer": "^1.2.1" }, "engines": { @@ -5509,9 +3716,9 @@ } }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/instrumentation/node_modules/@types/shimmer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.0.3.tgz", - "integrity": "sha512-F/IjUGnV6pIN7R4ZV4npHJVoNtaLZWvb+2/9gctxjb99wkpI7Ozg8VPogwDiTRyjLwZXAYxjvdg1KS8LTHKdDA==" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.0.4.tgz", + "integrity": "sha512-hsughtxFsdJ9+Gxd/qH8zHE+KT6YEAxx9hJLoSXhxTBKHMQ2NMhN23fRJ75M9RRn2hDMNn13H3gS1EktA9VgDA==" }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/instrumentation/node_modules/import-in-the-middle": { "version": "1.4.2", @@ -5525,9 +3732,9 @@ } }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/instrumentation/node_modules/import-in-the-middle/node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "bin": { "acorn": "bin/acorn" }, @@ -5593,9 +3800,9 @@ "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/instrumentation/node_modules/require-in-the-middle/node_modules/resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -5609,22 +3816,33 @@ } }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/instrumentation/node_modules/require-in-the-middle/node_modules/resolve/node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/instrumentation/node_modules/require-in-the-middle/node_modules/resolve/node_modules/is-core-module/node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/instrumentation/node_modules/require-in-the-middle/node_modules/resolve/node_modules/is-core-module/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" + } + }, + "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/instrumentation/node_modules/require-in-the-middle/node_modules/resolve/node_modules/is-core-module/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/instrumentation/node_modules/require-in-the-middle/node_modules/resolve/node_modules/path-parse": { @@ -5648,51 +3866,36 @@ "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" }, - "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/resources": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.15.2.tgz", - "integrity": "sha512-xmMRLenT9CXmm5HMbzpZ1hWhaUowQf8UB4jMjFlAxx1QzQcsD3KFNAVX/CAWzFPtllTyTplrA4JrQ7sCH3qmYw==", - "dependencies": { - "@opentelemetry/core": "1.15.2", - "@opentelemetry/semantic-conventions": "1.15.2" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" - } - }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/sdk-logs": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.41.2.tgz", - "integrity": "sha512-smqKIw0tTW15waj7BAPHFomii5c3aHnSE4LQYTszGoK5P9nZs8tEAIpu15UBxi3aG31ZfsLmm4EUQkjckdlFrw==", + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.44.0.tgz", + "integrity": "sha512-UN3ofh9Jj54gIgrSXNRWAoaH6iPvrrjed5YAtqO9cW65U+5QPzk1Rv95vjAcY9VTrmMWvuqgEK1CYObG6Hu4OQ==", "dependencies": { - "@opentelemetry/core": "1.15.2", - "@opentelemetry/resources": "1.15.2" + "@opentelemetry/core": "1.17.1", + "@opentelemetry/resources": "1.17.1" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.4.0 <1.5.0", + "@opentelemetry/api": ">=1.4.0 <1.7.0", "@opentelemetry/api-logs": ">=0.39.1" } }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/sdk-metrics": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.15.2.tgz", - "integrity": "sha512-9aIlcX8GnhcsAHW/Wl8bzk4ZnWTpNlLtud+fxUfBtFATu6OZ6TrGrF4JkT9EVrnoxwtPIDtjHdEsSjOqisY/iA==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.17.1.tgz", + "integrity": "sha512-eHdpsMCKhKhwznxvEfls8Wv3y4ZBWkkXlD3m7vtHIiWBqsMHspWSfie1s07mM45i/bBCf6YBMgz17FUxIXwmZA==", "dependencies": { - "@opentelemetry/core": "1.15.2", - "@opentelemetry/resources": "1.15.2", + "@opentelemetry/core": "1.17.1", + "@opentelemetry/resources": "1.17.1", "lodash.merge": "^4.6.2" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.5.0" + "@opentelemetry/api": ">=1.3.0 <1.7.0" } }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/sdk-metrics/node_modules/lodash.merge": { @@ -5700,96 +3903,72 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, - "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.15.2.tgz", - "integrity": "sha512-BEaxGZbWtvnSPchV98qqqqa96AOcb41pjgvhfzDij10tkBhIu9m0Jd6tZ1tJB5ZHfHbTffqYVYE0AOGobec/EQ==", - "dependencies": { - "@opentelemetry/core": "1.15.2", - "@opentelemetry/resources": "1.15.2", - "@opentelemetry/semantic-conventions": "1.15.2" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" - } - }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/sdk-trace-node": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.15.2.tgz", - "integrity": "sha512-5deakfKLCbPpKJRCE2GPI8LBE2LezyvR17y3t37ZI3sbaeogtyxmBaFV+slmG9fN8OaIT+EUsm1QAT1+z59gbQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.17.1.tgz", + "integrity": "sha512-J56DaG4cusjw5crpI7x9rv4bxDF27DtKYGxXJF56KIvopbNKpdck5ZWXBttEyqgAVPDwHMAXWDL1KchHzF0a3A==", "dependencies": { - "@opentelemetry/context-async-hooks": "1.15.2", - "@opentelemetry/core": "1.15.2", - "@opentelemetry/propagator-b3": "1.15.2", - "@opentelemetry/propagator-jaeger": "1.15.2", - "@opentelemetry/sdk-trace-base": "1.15.2", - "semver": "^7.5.1" + "@opentelemetry/context-async-hooks": "1.17.1", + "@opentelemetry/core": "1.17.1", + "@opentelemetry/propagator-b3": "1.17.1", + "@opentelemetry/propagator-jaeger": "1.17.1", + "@opentelemetry/sdk-trace-base": "1.17.1", + "semver": "^7.5.2" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" + "@opentelemetry/api": ">=1.0.0 <1.7.0" } }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/sdk-trace-node/node_modules/@opentelemetry/context-async-hooks": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.15.2.tgz", - "integrity": "sha512-VAMHG67srGFQDG/N2ns5AyUT9vUcoKpZ/NpJ5fDQIPfJd7t3ju+aHwvDsMcrYBWuCh03U3Ky6o16+872CZchBg==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.17.1.tgz", + "integrity": "sha512-up5I+RiQEkGrVEHtbAtmRgS+ZOnFh3shaDNHqZPBlGy+O92auL6yMmjzYpSKmJOGWowvs3fhVHePa8Exb5iHUg==", "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" + "@opentelemetry/api": ">=1.0.0 <1.7.0" } }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/sdk-trace-node/node_modules/@opentelemetry/propagator-b3": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.15.2.tgz", - "integrity": "sha512-ZSrL3DpMEDsjD8dPt9Ze3ue53nEXJt512KyxXlLgLWnSNbe1mrWaXWkh7OLDoVJh9LqFw+tlvAhDVt/x3DaFGg==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.17.1.tgz", + "integrity": "sha512-XEbXYb81AM3ayJLlbJqITPIgKBQCuby45ZHiB9mchnmQOffh6ZJOmXONdtZAV7TWzmzwvAd28vGSUk57Aw/5ZA==", "dependencies": { - "@opentelemetry/core": "1.15.2" + "@opentelemetry/core": "1.17.1" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" + "@opentelemetry/api": ">=1.0.0 <1.7.0" } }, "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/sdk-trace-node/node_modules/@opentelemetry/propagator-jaeger": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.15.2.tgz", - "integrity": "sha512-6m1yu7PVDIRz6BwA36lacfBZJCfAEHKgu+kSyukNwVdVjsTNeyD9xNPQnkl0WN7Rvhk8/yWJ83tLPEyGhk1wCQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.17.1.tgz", + "integrity": "sha512-p+P4lf2pbqd3YMfZO15QCGsDwR2m1ke2q5+dq6YBLa/q0qiC2eq4cD/qhYBBed5/X4PtdamaVGHGsp+u3GXHDA==", "dependencies": { - "@opentelemetry/core": "1.15.2" + "@opentelemetry/core": "1.17.1" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" - } - }, - "core/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.15.2.tgz", - "integrity": "sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw==", - "engines": { - "node": ">=14" + "@opentelemetry/api": ">=1.0.0 <1.7.0" } }, "core/node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.17.0.tgz", - "integrity": "sha512-2T5HA1/1iE36Q9eg6D4zYlC4Y4GcycI1J6NsHPKZY9oWfAxWsoYnRlkPfUqyY5XVtocCo/xHpnJvGNHwzT70oQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.17.1.tgz", + "integrity": "sha512-pfSJJSjZj5jkCJUQZicSpzN8Iz9UKMryPWikZRGObPnJo6cUSoKkjZh6BM3j+D47G4olMBN+YZKYqkFM1L6zNA==", "dependencies": { - "@opentelemetry/core": "1.17.0", - "@opentelemetry/resources": "1.17.0", - "@opentelemetry/semantic-conventions": "1.17.0" + "@opentelemetry/core": "1.17.1", + "@opentelemetry/resources": "1.17.1", + "@opentelemetry/semantic-conventions": "1.17.1" }, "engines": { "node": ">=14" @@ -5799,9 +3978,9 @@ } }, "core/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.17.0.tgz", - "integrity": "sha512-+fguCd2d8d2qruk0H0DsCEy2CTK3t0Tugg7MhZ/UQMvmewbZLNnJ6heSYyzIZWG5IPfAXzoj4f4F/qpM7l4VBA==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.17.1.tgz", + "integrity": "sha512-xbR2U+2YjauIuo42qmE8XyJK6dYeRMLJuOlUP5SO4auET4VtOHOzgkRVOq+Ik18N+Xf3YPcqJs9dZMiDddz1eQ==", "engines": { "node": ">=14" } @@ -5815,45 +3994,45 @@ } }, "core/node_modules/@types/analytics-node": { - "version": "3.1.12", - "resolved": "https://registry.npmjs.org/@types/analytics-node/-/analytics-node-3.1.12.tgz", - "integrity": "sha512-RDU2Oa39/x/AWuY0tZYx1EweP7xWgGhc1VkRVZ6hL+oyHSttihaZGQw0JVAEoL0j7eOT57L+uEe1JE/5ZmJ7uw==", + "version": "3.1.13", + "resolved": "https://registry.npmjs.org/@types/analytics-node/-/analytics-node-3.1.13.tgz", + "integrity": "sha512-f89VLQnUKPaYleh72sNOi+sM2eaWEiEgIuna6SZ7NFo/KjZWi9WKHAkUmarHaicVCzF/RmJGypxUDxC4adbNOw==", "dev": true }, "core/node_modules/@types/archiver": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/@types/archiver/-/archiver-5.3.3.tgz", - "integrity": "sha512-0ABdVcXL6jOwNGY+hjWPqrxUvKelBEwNLcuv/SV2vZ4YCH8w9NttFCt+/QqI5zgMX+iX/XqVy89/r7EmLJmMpQ==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@types/archiver/-/archiver-5.3.4.tgz", + "integrity": "sha512-Lj7fLBIMwYFgViVVZHEdExZC3lVYsl+QL0VmdNdIzGZH544jHveYWij6qdnBgJQDnR7pMKliN9z2cPZFEbhyPw==", "dev": true, "dependencies": { "@types/readdir-glob": "*" } }, "core/node_modules/@types/archiver/node_modules/@types/readdir-glob": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/readdir-glob/-/readdir-glob-1.1.2.tgz", - "integrity": "sha512-vwAYrNN/8yhp/FJRU6HUSD0yk6xfoOS8HrZa8ZL7j+X8hJpaC1hTcAiXX2IxaAkkvrz9mLyoEhYZTE3cEYvA9Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-trCChHpWDGCJCUPJRwD62eapW4KOru6h4S7n9KUIESaxhyBM/2Jh20P3XrFRQQ6Df78E/rq2DbUCVZlI8CXPnA==", "dev": true, "dependencies": { "@types/node": "*" } }, "core/node_modules/@types/async": { - "version": "3.2.21", - "resolved": "https://registry.npmjs.org/@types/async/-/async-3.2.21.tgz", - "integrity": "sha512-msYM0OYxzkwpiDJZZDo7XsYuFIpiAOh+o3hygudSpSzeW+R0DAEKZvdQriHYT95m9CvscLDg5s0Mxlrlhoy2qw==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@types/async/-/async-3.2.22.tgz", + "integrity": "sha512-aYsrMkRWXwJfchKtwubTIgvWcgRU8zFT+lL48l9jSu7RJKa3A+E3qwmAJVYap4Do9QzTCLm6p63JmOuII3j7dg==", "dev": true }, "core/node_modules/@types/async-lock": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@types/async-lock/-/async-lock-1.4.0.tgz", - "integrity": "sha512-2+rYSaWrpdbQG3SA0LmMT6YxWLrI81AqpMlSkw3QtFc2HGDufkweQSn30Eiev7x9LL0oyFrBqk1PXOnB9IEgKg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@types/async-lock/-/async-lock-1.4.1.tgz", + "integrity": "sha512-tpYc9kp2I8eI6qcDWtD2023jIlJYz6030qR1S5WhRbTK/JJcYdJ8fb2dRKPRgqioxcPZfTPmzl/PemHIPCrA9g==", "dev": true }, "core/node_modules/@types/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", + "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==", "dev": true }, "core/node_modules/@types/circular-json": { @@ -5863,24 +4042,24 @@ "dev": true }, "core/node_modules/@types/cross-spawn": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.3.tgz", - "integrity": "sha512-BDAkU7WHHRHnvBf5z89lcvACsvkz/n7Tv+HyD/uW76O29HoH1Tk/W6iQrepaZVbisvlEek4ygwT8IW7ow9XLAA==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.4.tgz", + "integrity": "sha512-GGLpeThc2Bu8FBGmVn76ZU3lix17qZensEI4/MPty0aZpm2CHfgEMis31pf5X5EiudYKcPAsWciAsCALoPo5dw==", "dev": true, "dependencies": { "@types/node": "*" } }, "core/node_modules/@types/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@types/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-EGlKlgMhnLt/cM4DbUSafFdrkeJoC9Mvnj0PUCU7tFmTjMjNRT957kXCx0wYm3JuEq4o4ZsS5vG+NlkM2DMd2A==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@types/dedent/-/dedent-0.7.1.tgz", + "integrity": "sha512-NKo033xLkoVCgUobq+FS1S3J6kwWeOcyqEBc2r2oi9J/dKncY11J9VgS0Giv7T4rxVt/MajUVcFppT2TPJA2Cg==", "dev": true }, "core/node_modules/@types/fs-extra": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.2.tgz", - "integrity": "sha512-c0hrgAOVYr21EX8J0jBMXGLMgJqVf/v6yxi0dLaJboW9aQPh16Id+z6w2Tx1hm+piJOLv8xPfVKZCLfjPw/IMQ==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.3.tgz", + "integrity": "sha512-sF59BlXtUdzEAL1u0MSvuzWd7PdZvZEtnaVkzX5mjpdWTJ8brG0jUqve3jPCzSzvAKKMHTG8F8o/WMQLtleZdQ==", "dev": true, "dependencies": { "@types/jsonfile": "*", @@ -5888,9 +4067,9 @@ } }, "core/node_modules/@types/fs-extra/node_modules/@types/jsonfile": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.2.tgz", - "integrity": "sha512-8t92P+oeW4d/CRQfJaSqEwXujrhH4OEeHRjGU3v1Q8mUS8GPF3yiX26sw4svv6faL2HfBtGTe2xWIoVgN3dy9w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.3.tgz", + "integrity": "sha512-/yqTk2SZ1wIezK0hiRZD7RuSf4B3whFxFamB1kGStv+8zlWScTMcHanzfc0XKWs5vA1TkHeckBlOyM8jxU8nHA==", "dev": true, "dependencies": { "@types/node": "*" @@ -5911,9 +4090,9 @@ "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" }, "core/node_modules/@types/global-agent": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@types/global-agent/-/global-agent-2.1.1.tgz", - "integrity": "sha512-sVox8Phk1UKgP6LQPAdeRxfww6vHKt7Bf59dXzYLsQBUEMEn8S10a+ESp/yO0i4fJ3WS4+CIuz42hgJcuA+3mA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@types/global-agent/-/global-agent-2.1.2.tgz", + "integrity": "sha512-6UyOC/RcPM2ebJE1ljPxFszfX19ZdY9IJ1cQQ5uI53QS9943r432ecQ0Wmd/HCRSbQl4obBVN0dmv2U7eHESPQ==", "dev": true }, "core/node_modules/@types/got": { @@ -5996,9 +4175,9 @@ "dev": true }, "core/node_modules/@types/ink-divider": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/ink-divider/-/ink-divider-2.0.2.tgz", - "integrity": "sha512-gY4kKSh1dNrZ++GQXW2KfMVexQfUsvE/LdUy7le5FSSeSemwk+u+ztHd+SMzfEjEHcCqpmRIQqKSrFOXLYCLHA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/ink-divider/-/ink-divider-2.0.3.tgz", + "integrity": "sha512-vI3F1MwZRRsPeP6At6RmxP3cBkwp1I5HwFiA8qRC0LXgPbn/XW1058vez+nxP17SJ1trLvU0O3ByH1iULacUWw==", "dev": true, "dependencies": { "@types/react": "*" @@ -6015,9 +4194,9 @@ } }, "core/node_modules/@types/inquirer/node_modules/@types/through": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.31.tgz", - "integrity": "sha512-LpKpmb7FGevYgXnBXYs6HWnmiFyVG07Pt1cnbgM1IhEacITTiUaBXXvOR3Y50ksaJWGSfhbEvQFivQEFGCC55w==", + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.32.tgz", + "integrity": "sha512-7XsfXIsjdfJM2wFDRAtEWp3zb2aVPk5QeyZxGlVK57q4u26DczMHhJmlhr0Jqv0THwxam/L8REXkj8M2I/lcvw==", "dev": true, "dependencies": { "@types/node": "*" @@ -6042,36 +4221,36 @@ "dev": true }, "core/node_modules/@types/ip": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@types/ip/-/ip-1.1.0.tgz", - "integrity": "sha512-dwNe8gOoF70VdL6WJBwVHtQmAX4RMd62M+mAB9HQFjG1/qiCLM/meRy95Pd14FYBbEDwCq7jgJs89cHpLBu4HQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/ip/-/ip-1.1.2.tgz", + "integrity": "sha512-WjV3/mz9YSlfU8E88m4ZwvRQmpTjWy4vH8K+cggBUAjmp91wvT1he132Ql8V3CsZz3SYkze3CC3AxhjaD4ZYug==", "dev": true, "dependencies": { "@types/node": "*" } }, "core/node_modules/@types/is-git-url": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/is-git-url/-/is-git-url-1.0.0.tgz", - "integrity": "sha512-Hozx1nI6wJi3ZcRyIcJq7eg/tA9WHu0jEXBSYijogCAhGY3qer/yC3x5buTSpiWEA51wfd1NjYsGRhmMSMuTag==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/is-git-url/-/is-git-url-1.0.1.tgz", + "integrity": "sha512-t+h1zybH57M/yhUvk3VhtdkmVQ1L5VahXAPoS+lmXaXZCsve6hEvOTqS1LmPpCrMRXz7UbUoDm1rXJrhCKIj9g==", "dev": true }, "core/node_modules/@types/is-glob": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/is-glob/-/is-glob-4.0.2.tgz", - "integrity": "sha512-4j5G9Y5jljDSICQ1R2f/Rcyoj6DZmYGneny+p/cDkjep0rkqNg0W73Ty0bVjMUTZgLXHf8oiMjg1XC3CDwCz+g==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-tqNnLL4n5kvr6Kq2hGfs9xlqPilqBizbEgAXMfdSVsXle0Hrj5PhSeDg56fMCU+qWLRX4rR9kj4jj++rHPErjw==", "dev": true }, "core/node_modules/@types/is-url": { - "version": "1.2.30", - "resolved": "https://registry.npmjs.org/@types/is-url/-/is-url-1.2.30.tgz", - "integrity": "sha512-AnlNFwjzC8XLda5VjRl4ItSd8qp8pSNowvsut0WwQyBWHpOxjxRJm8iO6uETWqEyLdYdb9/1j+Qd9gQ4l5I4fw==", + "version": "1.2.31", + "resolved": "https://registry.npmjs.org/@types/is-url/-/is-url-1.2.31.tgz", + "integrity": "sha512-ZkuJ+NIr+/V6Xz+S14kYT3g0wYmUa9+bOXXL6Z3nDsy38GqHIu4QF1q2Z0f8y8Pfd8zivikE9fTFa5cfkOROSg==", "dev": true }, "core/node_modules/@types/js-yaml": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.6.tgz", - "integrity": "sha512-ACTuifTSIIbyksx2HTon3aFtCKWcID7/h3XEmRpDYdMCXxPbl+m9GteOJeaAkiAta/NJaSFuA7ahZ0NkwajDSw==" + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.8.tgz", + "integrity": "sha512-m6jnPk1VhlYRiLFm3f8X9Uep761f+CK8mHyS65LutH2OhmBF0BeMEjHgg05usH8PLZMWWc/BUR9RPmkvpWnyRA==" }, "core/node_modules/@types/json-merge-patch": { "version": "0.0.8", @@ -6080,24 +4259,24 @@ "dev": true }, "core/node_modules/@types/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-fSRMt/jgdsBMPHoJ0GxivTdmo2HhBhubqLssKIsu9NgtvCZJ0haHjo24tfU/0nrkYZKbyTLw5GoTxWg8ExzIsw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/json-stringify-safe/-/json-stringify-safe-5.0.2.tgz", + "integrity": "sha512-NJdNTdatSiYvxdPLwgQImChxTfPECXYkdB6wC71dO3GCz2z/s/ZkkHXHaUlSVvnbsRUQg8Al3cT8Wp08wMF3zA==", "dev": true }, "core/node_modules/@types/klaw": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/klaw/-/klaw-3.0.4.tgz", - "integrity": "sha512-0M5F/WMU9yu2MyRued1VTQvUSwZ3siqYsX6MU7JF7VXRF5RzL0FXWFUrmdrWuGDWmuN6W+SyLhhg1Wp/sXkjtg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/klaw/-/klaw-3.0.5.tgz", + "integrity": "sha512-sX8M64GwQbEhPA4GrOUYEl/0Cc9oz5Effoaj43B4o3bsVwskxEipparp8tI1E6lhs2s1R1u/0KeNvf/9OR1cAA==", "dev": true, "dependencies": { "@types/node": "*" } }, "core/node_modules/@types/koa": { - "version": "2.13.9", - "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.9.tgz", - "integrity": "sha512-tPX3cN1dGrMn+sjCDEiQqXH2AqlPoPd594S/8zxwUm/ZbPsQXKqHPUypr2gjCPhHUc+nDJLduhh5lXI/1olnGQ==", + "version": "2.13.10", + "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.10.tgz", + "integrity": "sha512-weKc5IBeORLDGwD1FMgPjaZIg0/mtP7KxXAXEzPRCN78k274D9U2acmccDNPL1MwyV40Jj+hQQ5N2eaV6O0z8g==", "dev": true, "dependencies": { "@types/accepts": "*", @@ -6111,36 +4290,36 @@ } }, "core/node_modules/@types/koa-bodyparser": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@types/koa-bodyparser/-/koa-bodyparser-4.3.10.tgz", - "integrity": "sha512-6ae05pjhmrmGhUR8GYD5qr5p9LTEMEGfGXCsK8VaSL+totwigm8+H/7MHW7K4854CMeuwRAubT8qcc/EagaeIA==", + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/koa-bodyparser/-/koa-bodyparser-4.3.11.tgz", + "integrity": "sha512-ClE+n+3w7BtepmyvAuXBbYDz13lmihha27FF2iIpqymsY6j2VS2f/I9wieyN/sZBMcM/POU7LPlMi2m2iNV+Vg==", "dev": true, "dependencies": { "@types/koa": "*" } }, "core/node_modules/@types/koa-mount": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/koa-mount/-/koa-mount-4.0.3.tgz", - "integrity": "sha512-WXhyitlW5B6zW31cKZO+RBl38afLmO9847M8PaKmcnO5tqGJy/+XcH5N/69Nsp+vKvFXhDOY9GM5uF34HrWgrw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/koa-mount/-/koa-mount-4.0.4.tgz", + "integrity": "sha512-n9P/yyZHcm+C9mcHoQAX9ovNyAeK4o2x/+JCdrSBWlpCDoI7KNTr9zzgQoSEPvuHcT7FEcsc07LKvH9eicsZOw==", "dev": true, "dependencies": { "@types/koa": "*" } }, "core/node_modules/@types/koa-router": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@types/koa-router/-/koa-router-7.4.5.tgz", - "integrity": "sha512-9DpkJcOpeK2bXUfyLDKzbDnohUp1TcNBQ7XsuadjYcHMsCOILRbzQdA/g5qJA+0zHi0cet64bOycXz2Snb0Rpw==", + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/@types/koa-router/-/koa-router-7.4.6.tgz", + "integrity": "sha512-elqZpjdH8bsi4HNSKwjY4nRVi65dd7kJoVEYXHMyI84R3wStzGnFSpYbilzqcUzPeZHiEhL0chfM593NeojqzQ==", "dev": true, "dependencies": { "@types/koa": "*" } }, "core/node_modules/@types/koa-static": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/koa-static/-/koa-static-4.0.2.tgz", - "integrity": "sha512-ns/zHg+K6XVPMuohjpOlpkR1WLa4VJ9czgUP9bxkCDn0JZBtUWbD/wKDZzPGDclkQK1bpAEScufCHOy8cbfL0w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/koa-static/-/koa-static-4.0.3.tgz", + "integrity": "sha512-4U9uZwXqYAudDLDVkw1prJM5avn9/lHLVEwoyyI/ITZluWkBdmirkj8EsOLG6kLr0XFZdViR0ZBtQ3oetSsr3g==", "dev": true, "dependencies": { "@types/koa": "*", @@ -6148,18 +4327,18 @@ } }, "core/node_modules/@types/koa-static/node_modules/@types/koa-send": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@types/koa-send/-/koa-send-4.1.4.tgz", - "integrity": "sha512-+ttyO5T1T1cLRUtk9etg/4E7ZIplJJUANkuzYptCPysWX5LRfGHsv9YOCiB7+gkAuedjEgZrl4K02RWJ2gaJ6Q==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/koa-send/-/koa-send-4.1.5.tgz", + "integrity": "sha512-O2qnxAKr7MoAxHHUitJejMWw45b9QtgTra0pnVDl/XoNdYTdZOgwj8wSVDon0qXg/lrcYHye4LFbAaSfSWwnrg==", "dev": true, "dependencies": { "@types/koa": "*" } }, "core/node_modules/@types/koa-websocket": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@types/koa-websocket/-/koa-websocket-5.0.8.tgz", - "integrity": "sha512-KHHsgUrdBn4utRFZqlsVPOC0HqxWrnt4rVvuxw0NLb15e8KmVC9xtRru1A4NsquLNJg3hXddWsEf4+x5+NrJXg==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@types/koa-websocket/-/koa-websocket-5.0.9.tgz", + "integrity": "sha512-+gfi+gQqt0j6G7a8/C9HpE2ZgxdckDTrd6WUsUEomyoiKHl8UfLGYROCs+DyRZQySpUI7KFYjEpC6hgFhnIQ7Q==", "dev": true, "dependencies": { "@types/koa": "*", @@ -6168,42 +4347,42 @@ } }, "core/node_modules/@types/koa-websocket/node_modules/@types/koa-compose": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.6.tgz", - "integrity": "sha512-PHiciWxH3NRyAaxUdEDE1NIZNfvhgtPlsdkjRPazHC6weqt90Jr0uLhIQs+SDwC8HQ/jnA7UQP6xOqGFB7ugWw==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.7.tgz", + "integrity": "sha512-smtvSL/oLICPuenxy73OmxKGh42VVfn2o2eutReH1yjij0LmxADBpGcAJbp4N+yJjPapPN7jAX9p7Ue0JMQ/Ag==", "dev": true, "dependencies": { "@types/koa": "*" } }, "core/node_modules/@types/koa-websocket/node_modules/@types/ws": { - "version": "8.5.5", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", - "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.8.tgz", + "integrity": "sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg==", "dev": true, "dependencies": { "@types/node": "*" } }, "core/node_modules/@types/koa/node_modules/@types/accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.6.tgz", + "integrity": "sha512-6+qlUg57yfE9OO63wnsJXLeq9cG3gSHBBIxNMOjNrbDRlDnm/NaR7RctfYcVCPq+j7d+MwOxqVEludH5+FKrlg==", "dev": true, "dependencies": { "@types/node": "*" } }, "core/node_modules/@types/koa/node_modules/@types/content-disposition": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.6.tgz", - "integrity": "sha512-GmShTb4qA9+HMPPaV2+Up8tJafgi38geFi7vL4qAM7k8BwjoelgHZqEUKJZLvughUw22h6vD/wvwN4IUCaWpDA==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.7.tgz", + "integrity": "sha512-V9/5u21RHFR1zfdm3rQ6pJUKV+zSSVQt+yq16i1YhdivVzWgPEoKedc3GdT8aFjsqQbakdxuy3FnEdePUQOamQ==", "dev": true }, "core/node_modules/@types/koa/node_modules/@types/cookies": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.8.tgz", - "integrity": "sha512-y6KhF1GtsLERUpqOV+qZJrjUGzc0GE6UTa0b5Z/LZ7Nm2mKSdCXmS6Kdnl7fctPNnMSouHjxqEWI12/YqQfk5w==", + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.9.tgz", + "integrity": "sha512-SrGYvhKohd/WSOII0WpflC73RgdJhQoqpwq9q+n/qugNGiDSGYXfHy3QvB4+X+J/gYe27j2fSRnK4B+1A3nvsw==", "dev": true, "dependencies": { "@types/connect": "*", @@ -6213,18 +4392,18 @@ } }, "core/node_modules/@types/koa/node_modules/@types/cookies/node_modules/@types/connect": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", - "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", + "version": "3.4.37", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.37.tgz", + "integrity": "sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q==", "dev": true, "dependencies": { "@types/node": "*" } }, "core/node_modules/@types/koa/node_modules/@types/cookies/node_modules/@types/express": { - "version": "4.17.18", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.18.tgz", - "integrity": "sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ==", + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.20.tgz", + "integrity": "sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw==", "dev": true, "dependencies": { "@types/body-parser": "*", @@ -6234,9 +4413,9 @@ } }, "core/node_modules/@types/koa/node_modules/@types/cookies/node_modules/@types/express/node_modules/@types/body-parser": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.3.tgz", - "integrity": "sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==", + "version": "1.19.4", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.4.tgz", + "integrity": "sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA==", "dev": true, "dependencies": { "@types/connect": "*", @@ -6244,9 +4423,9 @@ } }, "core/node_modules/@types/koa/node_modules/@types/cookies/node_modules/@types/express/node_modules/@types/express-serve-static-core": { - "version": "4.17.37", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz", - "integrity": "sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==", + "version": "4.17.39", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.39.tgz", + "integrity": "sha512-BiEUfAiGCOllomsRAZOiMFP7LAnrifHpt56pc4Z7l9K6ACyN06Ns1JLMBxwkfLOjJRlSf06NwWsT7yzfpaVpyQ==", "dev": true, "dependencies": { "@types/node": "*", @@ -6256,15 +4435,15 @@ } }, "core/node_modules/@types/koa/node_modules/@types/cookies/node_modules/@types/express/node_modules/@types/express-serve-static-core/node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.6.tgz", + "integrity": "sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA==", "dev": true }, "core/node_modules/@types/koa/node_modules/@types/cookies/node_modules/@types/express/node_modules/@types/express-serve-static-core/node_modules/@types/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", - "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.3.tgz", + "integrity": "sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug==", "dev": true, "dependencies": { "@types/mime": "^1", @@ -6272,15 +4451,15 @@ } }, "core/node_modules/@types/koa/node_modules/@types/cookies/node_modules/@types/express/node_modules/@types/express-serve-static-core/node_modules/@types/send/node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.4.tgz", + "integrity": "sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw==", "dev": true }, "core/node_modules/@types/koa/node_modules/@types/cookies/node_modules/@types/express/node_modules/@types/serve-static": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", - "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.4.tgz", + "integrity": "sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw==", "dev": true, "dependencies": { "@types/http-errors": "*", @@ -6289,70 +4468,75 @@ } }, "core/node_modules/@types/koa/node_modules/@types/cookies/node_modules/@types/express/node_modules/@types/serve-static/node_modules/@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.3.tgz", + "integrity": "sha512-i8MBln35l856k5iOhKk2XJ4SeAWg75mLIpZB4v6imOagKL6twsukBZGDMNhdOVk7yRFTMPpfILocMos59Q1otQ==", "dev": true }, "core/node_modules/@types/koa/node_modules/@types/http-assert": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", - "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.4.tgz", + "integrity": "sha512-/6M9aaVk+avzCsrv1lt39AlFw4faCNI6aGll91Rxj38ZE5JI8AxApyQIRy+i1McjiJiuQ0sfuoMLxqq374ZIbA==", "dev": true }, "core/node_modules/@types/koa/node_modules/@types/http-errors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz", - "integrity": "sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.3.tgz", + "integrity": "sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA==", "dev": true }, "core/node_modules/@types/koa/node_modules/@types/keygrip": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.3.tgz", - "integrity": "sha512-tfzBBb7OV2PbUfKbG6zRE5UbmtdLVCKT/XT364Z9ny6pXNbd9GnIB6aFYpq2A5lZ6mq9bhXgK6h5MFGNwhMmuQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.4.tgz", + "integrity": "sha512-/tjWYD8StMrINelsrHNmpXceo9s3/Y22AzePH1qCvXIgmz/aQp2YFFr6HqhNQVIOdcvaVyp5GS+yjHGuF7Rwsg==", "dev": true }, "core/node_modules/@types/koa/node_modules/@types/koa-compose": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.6.tgz", - "integrity": "sha512-PHiciWxH3NRyAaxUdEDE1NIZNfvhgtPlsdkjRPazHC6weqt90Jr0uLhIQs+SDwC8HQ/jnA7UQP6xOqGFB7ugWw==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.7.tgz", + "integrity": "sha512-smtvSL/oLICPuenxy73OmxKGh42VVfn2o2eutReH1yjij0LmxADBpGcAJbp4N+yJjPapPN7jAX9p7Ue0JMQ/Ag==", "dev": true, "dependencies": { "@types/koa": "*" } }, + "core/node_modules/@types/lodash": { + "version": "4.14.200", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.200.tgz", + "integrity": "sha512-YI/M/4HRImtNf3pJgbF+W6FrXovqj+T+/HpENLTooK9PnkacBsDpeP3IpHab40CClUfhNmdM2WTNP2sa2dni5Q==", + "dev": true + }, "core/node_modules/@types/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-oqXqVb0ci19GtH0vOA/U2TmHTcRY9kuZl4mqUxe0QmJAlIW13kzhuK5pi1i9+ngav8FjpSb9FVS/GE00GLX1VA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-ZeDgs/tFSdUqkAZmgdnu5enRwFXJ+nIF4TxK5ENw6x0bvfcgMD1H3GnTS+fIkBUcvijQNF7ZOa2tuOtOaEjt3w==", "dev": true, "dependencies": { "@types/braces": "*" } }, "core/node_modules/@types/micromatch/node_modules/@types/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-U5tlMYa0U/2eFTmJgKcPWQOEICP173sJDa6OjHbj5Tv+NVaYcrq2xmdWpNXOwWYGwJu+jER/pfTLdoQ31q8PzA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-8pfphQ0Gtn58PJ+pWB9LsZGz8Q6FTTvc4egkqGT9K1lp4fVF/HeX3d6w/YEkHt/9Luv1r2i+HekuwhAm8UX6/A==", "dev": true }, "core/node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.4.tgz", + "integrity": "sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==", "dev": true }, "core/node_modules/@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.3.tgz", + "integrity": "sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ==", "dev": true }, "core/node_modules/@types/node-fetch": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.6.tgz", - "integrity": "sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw==", - "dev": true, + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.8.tgz", + "integrity": "sha512-nnH5lV9QCMPsbEVdTb5Y+F3GQxLSw1xQgIydrb2gSfEavRPs50FnMr+KUaa+LoPSqibm2N+ZZxH7lavZlAT4GA==", "dependencies": { "@types/node": "*", "form-data": "^4.0.0" @@ -6362,7 +4546,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -6375,14 +4558,12 @@ "core/node_modules/@types/node-fetch/node_modules/form-data/node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "core/node_modules/@types/node-fetch/node_modules/form-data/node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -6394,7 +4575,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, "engines": { "node": ">=0.4.0" } @@ -6403,7 +4583,6 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -6415,36 +4594,35 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, "engines": { "node": ">= 0.6" } }, "core/node_modules/@types/node-forge": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.6.tgz", - "integrity": "sha512-rOLL54+BcPO1BV0ogdKCtfmohdL3WW3ODCbnh8gA8ZWPYfHM0aVFyXQljme5DoICH29/2JZOXqgkS9CEd/NmSQ==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.8.tgz", + "integrity": "sha512-vGXshY9vim9CJjrpcS5raqSjEfKlJcWy2HNdgUasR66fAnVEYarrf1ULV4nfvpC1nZq/moA9qyqBcu83x+Jlrg==", "dev": true, "dependencies": { "@types/node": "*" } }, "core/node_modules/@types/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-Nd8y/5t/7CRakPYiyPzr/IAfYusy1FkcZYFEAcoMZkwpJv2n4Wm+olW+e7xBdHEXhOnWdG9ddbar0gqZWS4x5Q==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/normalize-path/-/normalize-path-3.0.1.tgz", + "integrity": "sha512-zELDXIlrZySwjFjU6HMUfvt0GqQPKSwBOyWgae9Tcsc/hFCkvYavZDXruVHyVasN2pCxnluh2S4rA0iuer7Z2g==", "dev": true }, "core/node_modules/@types/parse-git-config": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-git-config/-/parse-git-config-3.0.2.tgz", - "integrity": "sha512-ACdd6Pu94ngAUEZSxd5Hf4uk8QxZRTe7dYX3n+PK2lQ+yAatf2z63SDdpIeqKWFyQY+hpPFncT+IueqIJpWQwg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/parse-git-config/-/parse-git-config-3.0.3.tgz", + "integrity": "sha512-AwGl2WDbJcu4HspygfagSDu3n3mQ++brDDusLLnescC9F88W75x50DV+XnVw9BPRrLVCAcVksr/cLhM8KdFS1g==", "dev": true }, "core/node_modules/@types/path-is-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/path-is-inside/-/path-is-inside-1.0.1.tgz", - "integrity": "sha512-2oyg5lddg/5PEZV8QwDO0ewgYcS9um8VZl+DaQw6DvgdHwxMEsnynat3B879MZPR+EQz0B0eT0V3r/KnElfJWw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-gdT4ZrzPzf5vrdmCGQM+yNdLpKMrtmzdh13PuPB/aVZRwNG3rOc7yWQRhCQSSz7wicievT+uPTEzUiw+TO7ZAg==", "dev": true }, "core/node_modules/@types/pluralize": { @@ -6454,36 +4632,36 @@ "dev": true }, "core/node_modules/@types/proper-lockfile": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@types/proper-lockfile/-/proper-lockfile-4.1.2.tgz", - "integrity": "sha512-kd4LMvcnpYkspDcp7rmXKedn8iJSCoa331zRRamUp5oanKt/CefbEGPQP7G89enz7sKD4bvsr8mHSsC8j5WOvA==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@types/proper-lockfile/-/proper-lockfile-4.1.3.tgz", + "integrity": "sha512-10msVdc5q6kkZpJFjyz6T245uB6vN9EcbJx6j2hBD6bls0Z8xEpOvLMOyEVpsT1r4uRhfM0+U1Gvs5eC+k7Zuw==", "dev": true, "dependencies": { "@types/retry": "*" } }, "core/node_modules/@types/proper-lockfile/node_modules/@types/retry": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.4.tgz", + "integrity": "sha512-l1YzFLj8Y6OhLdt7HKXlz56DoEmksB7qR8KVk+MpFsS4duwnoszLgDlLxJB0vgSqtg/rAS5gmYg5Bjw2sMJ8Ew==", "dev": true }, "core/node_modules/@types/ps-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@types/ps-tree/-/ps-tree-1.1.3.tgz", - "integrity": "sha512-J8IrehehphLtxpABSekURTw9jthrlLcM4llH1I2fZ0zKaxq8jI/O1+Q/tabAJgBY/ffoqDxPRNYBM1lFUXm0lw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/ps-tree/-/ps-tree-1.1.4.tgz", + "integrity": "sha512-CJyu2BqU/aZN/s8Ili3jiMctqXfTjCaWXirEcjRD8y1lUQZJ8eNohnal8+LXeWFs1VbdAOrCIdgATFsv+lnQ5Q==", "dev": true }, "core/node_modules/@types/qs": { - "version": "6.9.8", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", - "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", + "version": "6.9.9", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.9.tgz", + "integrity": "sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg==", "dev": true }, "core/node_modules/@types/react": { - "version": "18.2.22", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.22.tgz", - "integrity": "sha512-60fLTOLqzarLED2O3UQImc/lsNRgG0jE/a1mPW9KjMemY0LMITWEsbS4VvZ4p6rorEHd5YKxxmMKSDK505GHpA==", + "version": "18.2.34", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.34.tgz", + "integrity": "sha512-U6eW/alrRk37FU/MS2RYMjx0Va2JGIVXELTODaTIYgvWGCV4Y4TfTUzG8DdmpDNIT0Xpj/R7GfyHOJJrDttcvg==", "devOptional": true, "dependencies": { "@types/prop-types": "*", @@ -6492,15 +4670,15 @@ } }, "core/node_modules/@types/react/node_modules/@types/prop-types": { - "version": "15.7.7", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.7.tgz", - "integrity": "sha512-FbtmBWCcSa2J4zL781Zf1p5YUBXQomPEcep9QZCfRfQgTxz3pJWiDFLebohZ9fFntX5ibzOkSsrJ0TEew8cAog==", + "version": "15.7.9", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.9.tgz", + "integrity": "sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==", "devOptional": true }, "core/node_modules/@types/react/node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.5.tgz", + "integrity": "sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw==", "devOptional": true }, "core/node_modules/@types/react/node_modules/csstype": { @@ -6509,101 +4687,19 @@ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", "devOptional": true }, - "core/node_modules/@types/request": { - "version": "2.48.8", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz", - "integrity": "sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ==", - "dependencies": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } - }, - "core/node_modules/@types/request-promise": { - "version": "4.1.48", - "resolved": "https://registry.npmjs.org/@types/request-promise/-/request-promise-4.1.48.tgz", - "integrity": "sha512-sLsfxfwP5G3E3U64QXxKwA6ctsxZ7uKyl4I28pMj3JvV+ztWECRns73GL71KMOOJME5u1A5Vs5dkBqyiR1Zcnw==", - "dev": true, - "dependencies": { - "@types/bluebird": "*", - "@types/request": "*" - } - }, - "core/node_modules/@types/request/node_modules/@types/caseless": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.3.tgz", - "integrity": "sha512-ZD/NsIJYq/2RH+hY7lXmstfp/v9djGt9ah+xRQ3pcgR79qiKsG4pLl25AI7IcXxVO8dH9GiBE5rAknC0ePntlw==" - }, - "core/node_modules/@types/request/node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "core/node_modules/@types/request/node_modules/form-data/node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "core/node_modules/@types/request/node_modules/form-data/node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "core/node_modules/@types/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "core/node_modules/@types/request/node_modules/form-data/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "core/node_modules/@types/request/node_modules/form-data/node_modules/mime-types/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, "core/node_modules/@types/sinon": { - "version": "10.0.16", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.16.tgz", - "integrity": "sha512-j2Du5SYpXZjJVJtXBokASpPRj+e2z+VUhCPHmM6WMfe3dpHu6iVKJMU6AiBcMp/XTAYnEj6Wc1trJUWwZ0QaAQ==", + "version": "10.0.20", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.20.tgz", + "integrity": "sha512-2APKKruFNCAZgx3daAyACGzWuJ028VVCUDk6o2rw/Z4PXT0ogwdV4KUegW0MwVs0Zu59auPXbbuBJHF12Sx1Eg==", "dev": true, "dependencies": { "@types/sinonjs__fake-timers": "*" } }, "core/node_modules/@types/sinon/node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz", - "integrity": "sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==", + "version": "8.1.4", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.4.tgz", + "integrity": "sha512-GDV68H0mBSN449sa5HEj51E0wfpVQb8xNSMzxf/PrypMFcLTMwJMOM/cgXiv71Mq5drkOQmUGvL1okOZcu6RrQ==", "dev": true }, "core/node_modules/@types/slice-ansi": { @@ -6632,18 +4728,18 @@ } }, "core/node_modules/@types/supertest": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.12.tgz", - "integrity": "sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.15.tgz", + "integrity": "sha512-jUCZZ/TMcpGzoSaed9Gjr8HCf3HehExdibyw3OHHEL1als1KmyzcOZZH4MjbObI8TkWsEr7bc7gsW0WTDni+qQ==", "dev": true, "dependencies": { "@types/superagent": "*" } }, "core/node_modules/@types/supertest/node_modules/@types/superagent": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.18.tgz", - "integrity": "sha512-LOWgpacIV8GHhrsQU+QMZuomfqXiqzz3ILLkCtKx3Us6AmomFViuzKT9D693QTKgyut2oCytMG8/efOop+DB+w==", + "version": "4.1.20", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.20.tgz", + "integrity": "sha512-GfpwJgYSr3yO+nArFkmyqv3i0vZavyEG5xPd/o95RwpKYpsOKJYI5XLdxLpdRbZI3YiGKKdIOFIf/jlP7A0Jxg==", "dev": true, "dependencies": { "@types/cookiejar": "*", @@ -6651,16 +4747,15 @@ } }, "core/node_modules/@types/supertest/node_modules/@types/superagent/node_modules/@types/cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.3.tgz", + "integrity": "sha512-LZ8SD3LpNmLMDLkG2oCBjZg+ETnx6XdCjydUE0HwojDmnDfDUnhMKKbtth1TZh+hzcqb03azrYWoXLS8sMXdqg==", "dev": true }, "core/node_modules/@types/tar": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/@types/tar/-/tar-6.1.6.tgz", - "integrity": "sha512-HQ06kiiDXz9uqtmE9ksQUn1ovcPr1gGV9EgaCWo6FGYKD0onNBCetBzL0kfcS8Kbj1EFxJWY9jL2W4ZvvtGI8Q==", - "dev": true, + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@types/tar/-/tar-6.1.7.tgz", + "integrity": "sha512-57ovoJf/lFhugSbDqDgpulTfm78uwO0Pa3EwgO3Op2IAIDZaDE4Z/orZ2yl25QRr8NQa1xjms9ElcoHx4pUedQ==", "dependencies": { "@types/node": "*", "minipass": "^4.0.0" @@ -6670,44 +4765,44 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", - "dev": true, "engines": { "node": ">=8" } }, "core/node_modules/@types/touch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/touch/-/touch-3.1.3.tgz", - "integrity": "sha512-Mu3buOMmoFAJJgu5Z+9sRZSlVn9sGoPEadDAyGh9D/onL+qD6/RrbNZggsvNqVan30sjTorTXhJLOg/OMCgqYQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/touch/-/touch-3.1.4.tgz", + "integrity": "sha512-p0cu5ORVh4d4YPvm/tfrL+8wYGgFFcDPGY+XWG67wqNjQGObf3C6DZWvi9DINQBVjmg+2ALyptmBgGknFnGQKA==", "dev": true, "dependencies": { "@types/node": "*" } }, "core/node_modules/@types/tough-cookie": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz", - "integrity": "sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==" + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.4.tgz", + "integrity": "sha512-95Sfz4nvMAb0Nl9DTxN3j64adfwfbBPEYq14VN7zT5J5O2M9V6iZMIIQU1U+pJyl9agHYHNCqhCXgyEtIRRa5A==", + "dev": true }, "core/node_modules/@types/uniqid": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/@types/uniqid/-/uniqid-5.3.2.tgz", - "integrity": "sha512-/NYoaZpWsnAJDsGYeMNDeG3p3fuUb4AiC7MfKxi5VSu18tXd08w6Ch0fKW94T4FeLXXZwZPoFgHA1O0rDYKyMQ==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/uniqid/-/uniqid-5.3.3.tgz", + "integrity": "sha512-K0ZC3LPd8hy2CC26KfUkXEBmJt4hTQokroqcygADKgsgar8SyYuPOzGehmaRrhMrB/KDZKWzdQyoTqRX7eCuZg==", "dev": true }, - "core/node_modules/@types/unzipper": { - "version": "0.10.7", - "resolved": "https://registry.npmjs.org/@types/unzipper/-/unzipper-0.10.7.tgz", - "integrity": "sha512-1yZanW3LWgY4wA6x0MyIkyI5rGILLHjXWAvvuz+xF2JzqBLG26ySL+VrSgjz9EWIYLv+icqv5RPW6FN4BJmsHw==", + "core/node_modules/@types/unzip-stream": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@types/unzip-stream/-/unzip-stream-0.3.3.tgz", + "integrity": "sha512-XUypMD3FZulm8asfhKxWk7uHhMYtEkS4cYhPIrrWaq3xCoFiIuVY5LXCEllBIePRBAwzWKtHxHR/n4U3kSGB5w==", "dev": true, "dependencies": { "@types/node": "*" } }, "core/node_modules/@types/uuid": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.4.tgz", - "integrity": "sha512-zAuJWQflfx6dYJM62vna+Sn5aeSWhh3OB+wfUEACNcqUSc0AGc5JKl+ycL1vrH7frGTXhJchYjE1Hak8L819dA==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.6.tgz", + "integrity": "sha512-BT2Krtx4xaO6iwzwMFUYvWBWkV2pr37zD68Vmp1CDV196MzczBRxuEpD6Pr395HAgebC/co7hOphs53r8V7jew==", "dev": true }, "core/node_modules/@types/which": { @@ -6723,9 +4818,9 @@ "dev": true }, "core/node_modules/@types/write-file-atomic": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/write-file-atomic/-/write-file-atomic-4.0.0.tgz", - "integrity": "sha512-piEKt2KKBUtye+feTlfdPjtW7uPFsAaLNX3/f6AJD+Y1T1YPTFwnqtlO9Y+gy9qGshrvxKa/Kay9vqbyVIuhwQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-2/wIE+5dGO2sGG3R0DV9HOcvkdnl3ArklT87fTnVMv0CHdJhVCaQc8625wqv3Nl3cRs2xmghuZE+AYP4Iquy8Q==", "dev": true, "dependencies": { "@types/node": "*" @@ -6789,9 +4884,9 @@ } }, "core/node_modules/ajv/node_modules/uri-js/node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "engines": { "node": ">=6" } @@ -6909,18 +5004,18 @@ } }, "core/node_modules/analytics-node/node_modules/axios-retry": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.8.0.tgz", - "integrity": "sha512-CfIsQyWNc5/AE7x/UEReRUadiBmQeoBpSEC+4QyGLJMswTsP1tz0GW2YYPnE7w9+ESMef5zOgLDFpHynNyEZ1w==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.8.1.tgz", + "integrity": "sha512-4XseuArB4CEbfLRtMpUods2q8MLBvD4r8ifKgK4SP2FRgzQIPUDpzZ+cjQ/19eu3w2UpKgkJA+myEh2BYDSjqQ==", "dependencies": { "@babel/runtime": "^7.15.4", "is-retry-allowed": "^2.2.0" } }, "core/node_modules/analytics-node/node_modules/axios-retry/node_modules/@babel/runtime": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", - "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -7685,41 +5780,19 @@ "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.0.tgz", "integrity": "sha512-coglx5yIWuetakm3/1dsX9hxCNox22h7+V80RQOu2XUUMidtArxKoZoOtHUPuR84SycKTXzgGzAUR5hJxujyJQ==" }, - "core/node_modules/certpem": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/certpem/-/certpem-1.1.3.tgz", - "integrity": "sha512-YwhB4OLswD8Gkb5jP/FNhvVhBdJCjELmEHg2k+EZz0U5Q1uqXdq34sGojNcL1qf1fzKPmF9fimUZSfuQlT4r6g==", - "dependencies": { - "asn1js": "^1.2.12", - "pkijs": "^1.3.27" - }, - "bin": { - "certpem": "bin/certpem.js" - } - }, - "core/node_modules/certpem/node_modules/asn1js": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-1.2.12.tgz", - "integrity": "sha512-eCMbXmmQ/9HMLNJkWRjF8TdX2stMrmK4WiWMZFhhmiMOcmi9dO3XDCuWDAyYn7qb0Oq4PmA0TgnqmzOObmrjpw==" - }, - "core/node_modules/certpem/node_modules/pkijs": { - "version": "1.3.33", - "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-1.3.33.tgz", - "integrity": "sha512-YuPIgnIkQTHr411hnEpAjyeejszJn+X2HbLj0jC2qQTesXRPKKKTsvuZ+eEBasq3DQKrXFNqwsUW/rvnDXcKgA==" - }, "core/node_modules/chai": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", - "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.0.8" }, "engines": { "node": ">=4" @@ -7735,10 +5808,13 @@ } }, "core/node_modules/chai/node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -7765,12 +5841,12 @@ } }, "core/node_modules/chai/node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "core/node_modules/chai/node_modules/pathval": { @@ -7934,9 +6010,9 @@ } }, "core/node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "funding": [ { "type": "github", @@ -8618,38 +6694,75 @@ } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/braces/node_modules/snapdragon-node/node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/braces/node_modules/snapdragon-node/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", "dependencies": { - "kind-of": "^6.0.0" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" + } + }, + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/braces/node_modules/snapdragon-node/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/braces/node_modules/snapdragon-node/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/braces/node_modules/snapdragon-node/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", "dependencies": { - "kind-of": "^6.0.0" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + } + }, + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/braces/node_modules/snapdragon-node/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/braces/node_modules/snapdragon-node/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/braces/node_modules/snapdragon-node/node_modules/snapdragon-util": { @@ -8745,38 +6858,75 @@ } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", "dependencies": { - "kind-of": "^6.0.0" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" + } + }, + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", "dependencies": { - "kind-of": "^6.0.0" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + } + }, + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/define-property/node_modules/isobject": { @@ -8867,38 +7017,75 @@ } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", "dependencies": { - "kind-of": "^6.0.0" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" + } + }, + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", "dependencies": { - "kind-of": "^6.0.0" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + } + }, + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/expand-brackets": { @@ -8943,78 +7130,75 @@ } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/expand-brackets/node_modules/define-property/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/expand-brackets/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", "dependencies": { - "kind-of": "^3.0.2" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/expand-brackets/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/expand-brackets/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dependencies": { - "is-buffer": "^1.1.5" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/expand-brackets/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor/node_modules/kind-of/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/expand-brackets/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/expand-brackets/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", "dependencies": { - "kind-of": "^3.0.2" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/expand-brackets/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/expand-brackets/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dependencies": { - "is-buffer": "^1.1.5" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/expand-brackets/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor/node_modules/kind-of/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/expand-brackets/node_modules/define-property/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/expand-brackets/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/extglob/node_modules/expand-brackets/node_modules/posix-character-classes": { @@ -9526,78 +7710,75 @@ } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/class-utils/node_modules/define-property/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/class-utils/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", "dependencies": { - "kind-of": "^3.0.2" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/class-utils/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/class-utils/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dependencies": { - "is-buffer": "^1.1.5" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/class-utils/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor/node_modules/kind-of/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/class-utils/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/class-utils/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", "dependencies": { - "kind-of": "^3.0.2" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/class-utils/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/class-utils/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dependencies": { - "is-buffer": "^1.1.5" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/class-utils/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor/node_modules/kind-of/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/class-utils/node_modules/define-property/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/class-utils/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/class-utils/node_modules/static-extend": { @@ -9666,38 +7847,75 @@ } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", "dependencies": { - "kind-of": "^6.0.0" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" + } + }, + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", "dependencies": { - "kind-of": "^6.0.0" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + } + }, + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/base/node_modules/isobject": { @@ -9783,78 +8001,75 @@ } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/define-property/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", "dependencies": { - "kind-of": "^3.0.2" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dependencies": { - "is-buffer": "^1.1.5" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor/node_modules/kind-of/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/define-property/node_modules/is-descriptor/node_modules/is-accessor-descriptor/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", "dependencies": { - "kind-of": "^3.0.2" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dependencies": { - "is-buffer": "^1.1.5" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor/node_modules/kind-of/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/define-property/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" + "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/define-property/node_modules/is-descriptor/node_modules/is-data-descriptor/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "core/node_modules/cpy/node_modules/globby/node_modules/fast-glob/node_modules/micromatch/node_modules/snapdragon/node_modules/extend-shallow": { @@ -10285,9 +8500,9 @@ } }, "core/node_modules/date-fns/node_modules/@babel/runtime": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", - "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -10672,9 +8887,9 @@ } }, "core/node_modules/fs-extra/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { "node": ">= 10.0.0" } @@ -10709,18 +8924,18 @@ "integrity": "sha512-3UBAyM3u4ZBVYDsxOQfJDxEa6XTbpBDrOjp4mf7ExFRt5BKs/QywQQiJsh2B+hxcZLSapWqCRvElUe8DnKcFHA==" }, "core/node_modules/glob": { - "version": "10.3.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.6.tgz", - "integrity": "sha512-mEfImdc/fiYHEcF6pHFfD2b/KrdFB1qH9mRe5vI5HROF8G51SWxQJ2V56Ezl6ZL9y86gsxQ1Lgo2S746KGUPSQ==", + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", + "jackspeak": "^2.3.5", "minimatch": "^9.0.1", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", "path-scurry": "^1.10.1" }, "bin": { - "glob": "dist/cjs/src/bin.js" + "glob": "dist/esm/bin.mjs" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -10756,9 +8971,9 @@ } }, "core/node_modules/glob/node_modules/jackspeak": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.3.tgz", - "integrity": "sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -11061,9 +9276,9 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "core/node_modules/glob/node_modules/minipass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", - "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "engines": { "node": ">=16 || 14 >=14.17" } @@ -11191,9 +9406,9 @@ } }, "core/node_modules/global-agent/node_modules/roarr/node_modules/globalthis/node_modules/define-properties/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dependencies": { "get-intrinsic": "^1.2.1", "gopd": "^1.0.1", @@ -11204,33 +9419,25 @@ } }, "core/node_modules/global-agent/node_modules/roarr/node_modules/globalthis/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "core/node_modules/global-agent/node_modules/roarr/node_modules/globalthis/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "core/node_modules/global-agent/node_modules/roarr/node_modules/globalthis/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "core/node_modules/global-agent/node_modules/roarr/node_modules/globalthis/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/has-proto": { @@ -11255,6 +9462,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "core/node_modules/global-agent/node_modules/roarr/node_modules/globalthis/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "core/node_modules/global-agent/node_modules/roarr/node_modules/globalthis/node_modules/define-properties/node_modules/define-data-property/node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -11267,44 +9485,36 @@ } }, "core/node_modules/global-agent/node_modules/roarr/node_modules/globalthis/node_modules/define-properties/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "core/node_modules/global-agent/node_modules/roarr/node_modules/globalthis/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "core/node_modules/global-agent/node_modules/roarr/node_modules/globalthis/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "core/node_modules/global-agent/node_modules/roarr/node_modules/globalthis/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "core/node_modules/global-agent/node_modules/roarr/node_modules/globalthis/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/has-proto": { @@ -11329,6 +9539,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "core/node_modules/global-agent/node_modules/roarr/node_modules/globalthis/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "core/node_modules/global-agent/node_modules/roarr/node_modules/globalthis/node_modules/define-properties/node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -11373,9 +9594,9 @@ } }, "core/node_modules/google-auth-library": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.0.0.tgz", - "integrity": "sha512-IQGjgQoVUAfOk6khqTVMLvWx26R+yPw9uLyb1MNyMQpdKiKt0Fd9sp4NWoINjyGHR8S3iw12hMTYK7O8J07c6Q==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.2.0.tgz", + "integrity": "sha512-1oV3p0JhNEhVbj26eF3FAJcv9MXXQt4S0wcvKZaDbl4oHq5V3UJoSbsGZGQNcjoCdhW4kDSwOs11wLlHog3fgQ==", "dev": true, "dependencies": { "base64-js": "^1.3.0", @@ -11383,8 +9604,7 @@ "gaxios": "^6.0.0", "gcp-metadata": "^6.0.0", "gtoken": "^7.0.0", - "jws": "^4.0.0", - "lru-cache": "^6.0.0" + "jws": "^4.0.0" }, "engines": { "node": ">=14" @@ -11520,6 +9740,48 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "core/node_modules/google-auth-library/node_modules/gaxios/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "core/node_modules/google-auth-library/node_modules/gaxios/node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "core/node_modules/google-auth-library/node_modules/gaxios/node_modules/node-fetch/node_modules/whatwg-url/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "core/node_modules/google-auth-library/node_modules/gaxios/node_modules/node-fetch/node_modules/whatwg-url/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, "core/node_modules/google-auth-library/node_modules/gcp-metadata": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.0.0.tgz", @@ -11611,68 +9873,50 @@ } ] }, - "core/node_modules/google-auth-library/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "core/node_modules/google-auth-library/node_modules/lru-cache/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "core/node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz", + "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==", + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" }, "engines": { - "node": ">=10.19.0" + "node": ">=16" }, "funding": { "url": "https://github.com/sindresorhus/got?sponsor=1" } }, "core/node_modules/got/node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sindresorhus/is?sponsor=1" } }, "core/node_modules/got/node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "dependencies": { - "defer-to-connect": "^2.0.0" + "defer-to-connect": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=14.16" } }, "core/node_modules/got/node_modules/@szmarczak/http-timer/node_modules/defer-to-connect": { @@ -11683,125 +9927,35 @@ "node": ">=10" } }, - "core/node_modules/got/node_modules/@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } - }, - "core/node_modules/got/node_modules/@types/cacheable-request/node_modules/@types/http-cache-semantics": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz", - "integrity": "sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==" - }, - "core/node_modules/got/node_modules/@types/cacheable-request/node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dependencies": { - "@types/node": "*" - } - }, - "core/node_modules/got/node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dependencies": { - "@types/node": "*" - } - }, "core/node_modules/got/node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", "engines": { - "node": ">=10.6.0" + "node": ">=14.16" } }, "core/node_modules/got/node_modules/cacheable-request": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "core/node_modules/got/node_modules/cacheable-request/node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "core/node_modules/got/node_modules/cacheable-request/node_modules/clone-response/node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "engines": { - "node": ">=4" - } - }, - "core/node_modules/got/node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", "dependencies": { - "pump": "^3.0.0" + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "core/node_modules/got/node_modules/cacheable-request/node_modules/get-stream/node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "core/node_modules/got/node_modules/cacheable-request/node_modules/get-stream/node_modules/pump/node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "core/node_modules/got/node_modules/cacheable-request/node_modules/get-stream/node_modules/pump/node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" + "node": ">=14.16" } }, - "core/node_modules/got/node_modules/cacheable-request/node_modules/get-stream/node_modules/pump/node_modules/once/node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "core/node_modules/got/node_modules/cacheable-request/node_modules/@types/http-cache-semantics": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", + "integrity": "sha512-V46MYLFp08Wf2mmaBhvgjStM3tPa+2GAdy/iqoX+noX1//zje2x4XmrIU0cAwyClATsTmahbtoQ2EwP7I5WSiA==" }, "core/node_modules/got/node_modules/cacheable-request/node_modules/http-cache-semantics": { "version": "4.1.1", @@ -11809,9 +9963,9 @@ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" }, "core/node_modules/got/node_modules/cacheable-request/node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dependencies": { "json-buffer": "3.0.1" } @@ -11821,12 +9975,23 @@ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, + "core/node_modules/got/node_modules/cacheable-request/node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "core/node_modules/got/node_modules/cacheable-request/node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -11857,13 +10022,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "core/node_modules/got/node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "engines": { + "node": ">= 14.17" + } + }, + "core/node_modules/got/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "core/node_modules/got/node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", "dependencies": { "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" + "resolve-alpn": "^1.2.0" }, "engines": { "node": ">=10.19.0" @@ -11886,27 +10070,33 @@ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" }, "core/node_modules/got/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "core/node_modules/got/node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "engines": { - "node": ">=8" + "node": ">=12.20" } }, "core/node_modules/got/node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", "dependencies": { - "lowercase-keys": "^2.0.0" + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -12112,196 +10302,198 @@ } }, "core/node_modules/ink": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ink/-/ink-3.2.0.tgz", - "integrity": "sha512-firNp1q3xxTzoItj/eOOSZQnYSlyrWks5llCTVX37nJ59K3eXbQ8PtzCguqo8YI19EELo5QxaKnJd4VxzhU8tg==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/ink/-/ink-4.4.1.tgz", + "integrity": "sha512-rXckvqPBB0Krifk5rn/5LvQGmyXwCUpBfmTwbkQNBY9JY8RSl3b8OftBNEYxg4+SWUhEKcPifgope28uL9inlA==", "dependencies": { - "ansi-escapes": "^4.2.1", - "auto-bind": "4.0.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.0", - "cli-cursor": "^3.1.0", - "cli-truncate": "^2.1.0", - "code-excerpt": "^3.0.0", - "indent-string": "^4.0.0", - "is-ci": "^2.0.0", - "lodash": "^4.17.20", - "patch-console": "^1.0.0", - "react-devtools-core": "^4.19.1", - "react-reconciler": "^0.26.2", - "scheduler": "^0.20.2", - "signal-exit": "^3.0.2", - "slice-ansi": "^3.0.0", - "stack-utils": "^2.0.2", - "string-width": "^4.2.2", + "@alcalzone/ansi-tokenize": "^0.1.3", + "ansi-escapes": "^6.0.0", + "auto-bind": "^5.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "cli-cursor": "^4.0.0", + "cli-truncate": "^3.1.0", + "code-excerpt": "^4.0.0", + "indent-string": "^5.0.0", + "is-ci": "^3.0.1", + "is-lower-case": "^2.0.2", + "is-upper-case": "^2.0.2", + "lodash": "^4.17.21", + "patch-console": "^2.0.0", + "react-reconciler": "^0.29.0", + "scheduler": "^0.23.0", + "signal-exit": "^3.0.7", + "slice-ansi": "^6.0.0", + "stack-utils": "^2.0.6", + "string-width": "^5.1.2", "type-fest": "^0.12.0", - "widest-line": "^3.1.0", - "wrap-ansi": "^6.2.0", - "ws": "^7.5.5", - "yoga-layout-prebuilt": "^1.9.6" + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0", + "ws": "^8.12.0", + "yoga-wasm-web": "~0.3.3" }, "engines": { - "node": ">=10" + "node": ">=14.16" }, "peerDependencies": { - "@types/react": ">=16.8.0", - "react": ">=16.8.0" + "@types/react": ">=18.0.0", + "react": ">=18.0.0", + "react-devtools-core": "^4.19.1" }, "peerDependenciesMeta": { "@types/react": { "optional": true + }, + "react-devtools-core": { + "optional": true } } }, - "core/node_modules/ink-divider": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ink-divider/-/ink-divider-3.0.0.tgz", - "integrity": "sha512-Mqb9WArtEZCtXw622aHhJqPK157QNc+8ssl9/RvAZlS6nZRCKyW4mYOYCudQh6dSuFGt9eG5yaqT1mJaGmwu+w==", + "core/node_modules/ink-spinner": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ink-spinner/-/ink-spinner-5.0.0.tgz", + "integrity": "sha512-EYEasbEjkqLGyPOUc8hBJZNuC5GvXGMLu0w5gdTNskPc7Izc5vO3tdQEYnzvshucyGCBXc86ig0ujXPMWaQCdA==", "dependencies": { - "prop-types": "^15.7.2", - "string-width": "^4.0.0" + "cli-spinners": "^2.7.0" }, "engines": { - "node": ">=6" + "node": ">=14.16" }, "peerDependencies": { - "ink": ">=3.0.0", - "react": ">=16.8.0" + "ink": ">=4.0.0", + "react": ">=18.0.0" } }, - "core/node_modules/ink-divider/node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "core/node_modules/ink-spinner/node_modules/cli-spinners": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", + "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "core/node_modules/ink-divider/node_modules/prop-types/node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "core/node_modules/ink/node_modules/@alcalzone/ansi-tokenize": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@alcalzone/ansi-tokenize/-/ansi-tokenize-0.1.3.tgz", + "integrity": "sha512-3yWxPTq3UQ/FY9p1ErPxIyfT64elWaMvM9lIHnaqpyft63tkxodF5aUElYHrdisWve5cETkh1+KBw1yJuW0aRw==", "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^4.0.0" }, - "bin": { - "loose-envify": "cli.js" - } - }, - "core/node_modules/ink-divider/node_modules/prop-types/node_modules/loose-envify/node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "core/node_modules/ink-divider/node_modules/prop-types/node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "engines": { - "node": ">=0.10.0" + "node": ">=14.13.1" } }, - "core/node_modules/ink-divider/node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "core/node_modules/ink-spinner": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/ink-spinner/-/ink-spinner-4.0.3.tgz", - "integrity": "sha512-uJ4nbH00MM9fjTJ5xdw0zzvtXMkeGb0WV6dzSWvFv2/+ks6FIhpkt+Ge/eLdh0Ah6Vjw5pLMyNfoHQpRDRVFbQ==", - "dependencies": { - "cli-spinners": "^2.3.0" - }, + "core/node_modules/ink/node_modules/@alcalzone/ansi-tokenize/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "engines": { - "node": ">=10" + "node": ">=12" }, - "peerDependencies": { - "ink": ">=3.0.5", - "react": ">=16.8.2" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "core/node_modules/ink-spinner/node_modules/cli-spinners": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", - "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", + "core/node_modules/ink/node_modules/@alcalzone/ansi-tokenize/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "engines": { - "node": ">=6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "core/node_modules/ink/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", + "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", "dependencies": { - "type-fest": "^0.21.3" + "type-fest": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "core/node_modules/ink/node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "core/node_modules/ink/node_modules/auto-bind": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz", - "integrity": "sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-5.0.1.tgz", + "integrity": "sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg==", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "core/node_modules/ink/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "core/node_modules/ink/node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "core/node_modules/ink/node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", "dependencies": { - "restore-cursor": "^3.1.0" + "restore-cursor": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "core/node_modules/ink/node_modules/cli-cursor/node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "core/node_modules/ink/node_modules/cli-cursor/node_modules/restore-cursor/node_modules/onetime": { @@ -12326,80 +10518,151 @@ "node": ">=6" } }, + "core/node_modules/ink/node_modules/cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "core/node_modules/ink/node_modules/cli-truncate/node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "core/node_modules/ink/node_modules/cli-truncate/node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "core/node_modules/ink/node_modules/cli-truncate/node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "core/node_modules/ink/node_modules/code-excerpt": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-3.0.0.tgz", - "integrity": "sha512-VHNTVhd7KsLGOqfX3SyeO8RyYPMp1GJOg194VITk04WMYCv4plV68YWe6TJZxd9MhobjtpMRnVky01gqZsalaw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-4.0.0.tgz", + "integrity": "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==", "dependencies": { - "convert-to-spaces": "^1.0.1" + "convert-to-spaces": "^2.0.1" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, "core/node_modules/ink/node_modules/code-excerpt/node_modules/convert-to-spaces": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", - "integrity": "sha512-cj09EBuObp9gZNQCzc7hByQyrs6jVGE+o9kSJmeUoj+GiPiJvi5LYqEH/Hmme4+MTLHM+Ejtq+FChpjjEnsPdQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz", + "integrity": "sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==", "engines": { - "node": ">= 4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "core/node_modules/ink/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "core/node_modules/ink/node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", "dependencies": { - "ci-info": "^2.0.0" + "ci-info": "^3.2.0" }, "bin": { "is-ci": "bin.js" } }, - "core/node_modules/ink/node_modules/is-ci/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - }, - "core/node_modules/ink/node_modules/patch-console": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/patch-console/-/patch-console-1.0.0.tgz", - "integrity": "sha512-nxl9nrnLQmh64iTzMfyylSlRozL7kAXIaxw1fVcLYdyhNkJCRUzirRZTikXGJsg+hc4fqpneTK6iU2H1Q8THSA==", - "engines": { - "node": ">=10" + "core/node_modules/ink/node_modules/is-lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-2.0.2.tgz", + "integrity": "sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==", + "dependencies": { + "tslib": "^2.0.3" } }, - "core/node_modules/ink/node_modules/react-devtools-core": { - "version": "4.28.4", - "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.28.4.tgz", - "integrity": "sha512-IUZKLv3CimeM07G3vX4H4loxVpByrzq3HvfTX7v9migalwvLs9ZY5D3S3pKR33U+GguYfBBdMMZyToFhsSE/iQ==", + "core/node_modules/ink/node_modules/is-lower-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "core/node_modules/ink/node_modules/is-upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-2.0.2.tgz", + "integrity": "sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==", "dependencies": { - "shell-quote": "^1.6.1", - "ws": "^7" + "tslib": "^2.0.3" } }, - "core/node_modules/ink/node_modules/react-devtools-core/node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "core/node_modules/ink/node_modules/is-upper-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "core/node_modules/ink/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "core/node_modules/ink/node_modules/patch-console": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/patch-console/-/patch-console-2.0.0.tgz", + "integrity": "sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, "core/node_modules/ink/node_modules/react-reconciler": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.26.2.tgz", - "integrity": "sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==", + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.29.0.tgz", + "integrity": "sha512-wa0fGj7Zht1EYMRhKWwoo1H9GApxYLBuhoAuXN0TlltESAjDssB+Apf0T/DngVqaMyPypDmabL37vw/2aRM98Q==", "dependencies": { "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" + "scheduler": "^0.23.0" }, "engines": { "node": ">=0.10.0" }, "peerDependencies": { - "react": "^17.0.2" + "react": "^18.2.0" } }, "core/node_modules/ink/node_modules/react-reconciler/node_modules/loose-envify": { @@ -12418,21 +10681,12 @@ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, - "core/node_modules/ink/node_modules/react-reconciler/node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, "core/node_modules/ink/node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "core/node_modules/ink/node_modules/scheduler/node_modules/loose-envify": { @@ -12451,76 +10705,46 @@ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, - "core/node_modules/ink/node_modules/scheduler/node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, "core/node_modules/ink/node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "core/node_modules/ink/node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-6.0.0.tgz", + "integrity": "sha512-6bn4hRfkTvDfUoEQYkERg0BVF1D0vrX9HEkMl08uDiNWvVvjylLHvZFZWkDo6wjT8tUctbYl1nCOuE66ZTaUtA==", "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, "core/node_modules/ink/node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "core/node_modules/ink/node_modules/slice-ansi/node_modules/ansi-styles/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "core/node_modules/ink/node_modules/slice-ansi/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "core/node_modules/ink/node_modules/slice-ansi/node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "engines": { - "node": ">=8" - } - }, "core/node_modules/ink/node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "core/node_modules/ink/node_modules/stack-utils": { @@ -12542,6 +10766,57 @@ "node": ">=8" } }, + "core/node_modules/ink/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "core/node_modules/ink/node_modules/string-width/node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "core/node_modules/ink/node_modules/string-width/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "core/node_modules/ink/node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "core/node_modules/ink/node_modules/string-width/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, "core/node_modules/ink/node_modules/type-fest": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz", @@ -12554,94 +10829,75 @@ } }, "core/node_modules/ink/node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", "dependencies": { - "string-width": "^4.0.0" + "string-width": "^5.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "core/node_modules/ink/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "core/node_modules/ink/node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "core/node_modules/ink/node_modules/wrap-ansi/node_modules/ansi-styles/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "core/node_modules/ink/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dependencies": { - "color-name": "~1.1.4" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=7.0.0" - } - }, - "core/node_modules/ink/node_modules/wrap-ansi/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "core/node_modules/ink/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "node": ">=12" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "core/node_modules/ink/node_modules/yoga-layout-prebuilt": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yoga-layout-prebuilt/-/yoga-layout-prebuilt-1.10.0.tgz", - "integrity": "sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g==", - "dependencies": { - "@types/yoga-layout": "1.9.2" - }, + "core/node_modules/ink/node_modules/wrap-ansi/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "core/node_modules/ink/node_modules/yoga-layout-prebuilt/node_modules/@types/yoga-layout": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@types/yoga-layout/-/yoga-layout-1.9.2.tgz", - "integrity": "sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==" + "core/node_modules/ink/node_modules/yoga-wasm-web": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/yoga-wasm-web/-/yoga-wasm-web-0.3.3.tgz", + "integrity": "sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==" }, "core/node_modules/inquirer": { "version": "7.3.3", @@ -12824,6 +11080,11 @@ "node": ">=0.8.0" } }, + "core/node_modules/inquirer/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, "core/node_modules/inquirer/node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", @@ -13073,9 +11334,9 @@ } }, "core/node_modules/koa-bodyparser/node_modules/co-body/node_modules/inflation": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", - "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.1.0.tgz", + "integrity": "sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==", "engines": { "node": ">= 0.8.0" } @@ -13261,6 +11522,7 @@ "version": "10.1.1", "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-10.1.1.tgz", "integrity": "sha512-z/OzxVjf5NyuNO3t9nJpx7e1oR3FSBAauiwXtMQu4ppcnuNZzTaQ4p21P8A6r2Es8uJJM339oc4oVW+qX7SqnQ==", + "deprecated": "**IMPORTANT 10x+ PERFORMANCE UPGRADE**: Please upgrade to v12.0.1+ as we have fixed an issue with debuglog causing 10x slower router benchmark performance, see https://github.com/koajs/router/pull/173", "dependencies": { "debug": "^4.1.1", "http-errors": "^1.7.3", @@ -14747,6 +13009,12 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "core/node_modules/nock/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "core/node_modules/nock/node_modules/propagate": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", @@ -14756,58 +13024,89 @@ "node": ">= 8" } }, - "core/node_modules/node-abi": { - "version": "3.47.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.47.0.tgz", - "integrity": "sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==", + "core/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "dependencies": { - "semver": "^7.3.5" + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, - "core/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, + "core/node_modules/node-fetch/node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "engines": { + "node": ">= 12" + } + }, + "core/node_modules/node-fetch/node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], "dependencies": { - "whatwg-url": "^5.0.0" + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": "^12.20 || >= 14.13" } }, - "core/node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "core/node_modules/node-fetch/node_modules/fetch-blob/node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" } }, - "core/node_modules/node-fetch/node_modules/whatwg-url/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true + "core/node_modules/node-fetch/node_modules/fetch-blob/node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "engines": { + "node": ">= 8" + } }, - "core/node_modules/node-fetch/node_modules/whatwg-url/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true + "core/node_modules/node-fetch/node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } }, "core/node_modules/node-forge": { "version": "1.3.1", @@ -16117,22 +14416,22 @@ } }, "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.20.tgz", - "integrity": "sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", + "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.22.15", + "@babel/generator": "^7.23.0", "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.22.20", - "@babel/helpers": "^7.22.15", - "@babel/parser": "^7.22.16", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.0", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.22.20", - "@babel/types": "^7.22.19", - "convert-source-map": "^1.7.0", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", @@ -16189,9 +14488,9 @@ "dev": true }, "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@ampproject/remapping/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -16327,12 +14626,12 @@ } }, "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/generator": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz", - "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -16371,9 +14670,9 @@ "dev": true }, "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/generator/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -16424,9 +14723,9 @@ } }, "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/helper-compilation-targets/node_modules/@babel/compat-data": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", - "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", + "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -16442,9 +14741,9 @@ } }, "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/helper-compilation-targets/node_modules/browserslist": { - "version": "4.21.11", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.11.tgz", - "integrity": "sha512-xn1UXOKUz7DjdGlg9RrUr0GGiWzI97UQJnugHtH0OLDfJB7jMgoIkYvRIEO1l9EeEERVqeqLYOcFBW9ldjypbQ==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", "dev": true, "funding": [ { @@ -16461,8 +14760,8 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001538", - "electron-to-chromium": "^1.4.526", + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", "node-releases": "^2.0.13", "update-browserslist-db": "^1.0.13" }, @@ -16474,9 +14773,9 @@ } }, "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/helper-compilation-targets/node_modules/browserslist/node_modules/caniuse-lite": { - "version": "1.0.30001538", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001538.tgz", - "integrity": "sha512-HWJnhnID+0YMtGlzcp3T9drmBJUVDchPJ08tpUGFLs9CYlwWPH2uLgpHn8fND5pCgXVtnGS3H4QR9XLMHVNkHw==", + "version": "1.0.30001559", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001559.tgz", + "integrity": "sha512-cPiMKZgqgkg5LY3/ntGeLFUpi6tzddBNS58A4tnTgQw1zON7u2sZMU7SzOeVH4tj20++9ggL+V6FDOFMTaFFYA==", "dev": true, "funding": [ { @@ -16494,9 +14793,9 @@ ] }, "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/helper-compilation-targets/node_modules/browserslist/node_modules/electron-to-chromium": { - "version": "1.4.528", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz", - "integrity": "sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA==", + "version": "1.4.575", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.575.tgz", + "integrity": "sha512-kY2BGyvgAHiX899oF6xLXSIf99bAvvdPhDoJwG77nxCSyWYuRH6e9a9a3gpXBvCs6lj4dQZJkfnW2hdKWHEISg==", "dev": true }, "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/helper-compilation-targets/node_modules/browserslist/node_modules/node-releases": { @@ -16566,9 +14865,9 @@ "dev": true }, "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/helper-module-transforms": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.20.tgz", - "integrity": "sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -16639,23 +14938,23 @@ } }, "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/helpers": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz", - "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", + "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", "dev": true, "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/parser": { - "version": "7.22.16", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz", - "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -16699,87 +14998,6 @@ "node": ">=6.9.0" } }, - "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/traverse/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/traverse/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/traverse/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/traverse/node_modules/@babel/generator/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/traverse/node_modules/@babel/generator/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/traverse/node_modules/@babel/generator/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/traverse/node_modules/@babel/generator/node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/traverse/node_modules/@babel/helper-environment-visitor": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", @@ -16826,59 +15044,6 @@ "node": ">=6.9.0" } }, - "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/traverse/node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/traverse/node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/traverse/node_modules/@babel/types/node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/traverse/node_modules/@babel/types/node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/traverse/node_modules/@babel/types/node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/traverse/node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -16889,13 +15054,13 @@ } }, "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/@babel/types": { - "version": "7.22.19", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.19.tgz", - "integrity": "sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.19", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -16929,6 +15094,12 @@ "node": ">=4" } }, + "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "core/node_modules/nyc/node_modules/istanbul-lib-instrument/node_modules/@babel/core/node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -17400,115 +15571,459 @@ "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "core/node_modules/nyc/node_modules/yargs/node_modules/cliui/node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "core/node_modules/nyc/node_modules/yargs/node_modules/cliui/node_modules/wrap-ansi/node_modules/ansi-styles/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "core/node_modules/nyc/node_modules/yargs/node_modules/cliui/node_modules/wrap-ansi/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "core/node_modules/nyc/node_modules/yargs/node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "core/node_modules/nyc/node_modules/yargs/node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "core/node_modules/nyc/node_modules/yargs/node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "core/node_modules/nyc/node_modules/yargs/node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "core/node_modules/nyc/node_modules/yargs/node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true + }, + "core/node_modules/nyc/node_modules/yargs/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "core/node_modules/nyc/node_modules/yargs/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "core/node_modules/nyc/node_modules/yargs/node_modules/yargs-parser/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "core/node_modules/open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dependencies": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "core/node_modules/open/node_modules/default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dependencies": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "core/node_modules/open/node_modules/default-browser/node_modules/bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dependencies": { + "run-applescript": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "core/node_modules/open/node_modules/default-browser/node_modules/bundle-name/node_modules/run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "core/node_modules/open/node_modules/default-browser/node_modules/bundle-name/node_modules/run-applescript/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "core/node_modules/open/node_modules/default-browser/node_modules/bundle-name/node_modules/run-applescript/node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "core/node_modules/open/node_modules/default-browser/node_modules/bundle-name/node_modules/run-applescript/node_modules/execa/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, + "core/node_modules/open/node_modules/default-browser/node_modules/bundle-name/node_modules/run-applescript/node_modules/execa/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "core/node_modules/open/node_modules/default-browser/node_modules/bundle-name/node_modules/run-applescript/node_modules/execa/node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "core/node_modules/open/node_modules/default-browser/node_modules/bundle-name/node_modules/run-applescript/node_modules/execa/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "core/node_modules/open/node_modules/default-browser/node_modules/bundle-name/node_modules/run-applescript/node_modules/execa/node_modules/npm-run-path/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "core/node_modules/open/node_modules/default-browser/node_modules/bundle-name/node_modules/run-applescript/node_modules/execa/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "core/node_modules/open/node_modules/default-browser/node_modules/bundle-name/node_modules/run-applescript/node_modules/execa/node_modules/onetime/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "core/node_modules/open/node_modules/default-browser/node_modules/bundle-name/node_modules/run-applescript/node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "core/node_modules/open/node_modules/default-browser/node_modules/bundle-name/node_modules/run-applescript/node_modules/execa/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "core/node_modules/open/node_modules/default-browser/node_modules/default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dependencies": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "core/node_modules/open/node_modules/default-browser/node_modules/default-browser-id/node_modules/bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dependencies": { + "big-integer": "^1.6.44" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "core/node_modules/open/node_modules/default-browser/node_modules/default-browser-id/node_modules/bplist-parser/node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "engines": { + "node": ">=0.6" + } + }, + "core/node_modules/open/node_modules/default-browser/node_modules/default-browser-id/node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "engines": { + "node": ">=8" + } + }, + "core/node_modules/open/node_modules/default-browser/node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "core/node_modules/open/node_modules/default-browser/node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "core/node_modules/open/node_modules/default-browser/node_modules/execa/node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "engines": { + "node": ">=14.18.0" } }, - "core/node_modules/nyc/node_modules/yargs/node_modules/cliui/node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "core/node_modules/open/node_modules/default-browser/node_modules/execa/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "core/node_modules/nyc/node_modules/yargs/node_modules/cliui/node_modules/wrap-ansi/node_modules/ansi-styles/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "core/node_modules/open/node_modules/default-browser/node_modules/execa/node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "core/node_modules/open/node_modules/default-browser/node_modules/execa/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", "dependencies": { - "color-name": "~1.1.4" + "path-key": "^4.0.0" }, "engines": { - "node": ">=7.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "core/node_modules/nyc/node_modules/yargs/node_modules/cliui/node_modules/wrap-ansi/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "core/node_modules/nyc/node_modules/yargs/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, + "core/node_modules/open/node_modules/default-browser/node_modules/execa/node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "core/node_modules/nyc/node_modules/yargs/node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, + "core/node_modules/open/node_modules/default-browser/node_modules/execa/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dependencies": { + "mimic-fn": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "core/node_modules/nyc/node_modules/yargs/node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "core/node_modules/nyc/node_modules/yargs/node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "core/node_modules/nyc/node_modules/yargs/node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true + "core/node_modules/open/node_modules/default-browser/node_modules/execa/node_modules/onetime/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "core/node_modules/nyc/node_modules/yargs/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "core/node_modules/open/node_modules/default-browser/node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, - "core/node_modules/nyc/node_modules/yargs/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, + "core/node_modules/open/node_modules/default-browser/node_modules/execa/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "core/node_modules/nyc/node_modules/yargs/node_modules/yargs-parser/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, + "core/node_modules/open/node_modules/default-browser/node_modules/titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "core/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, + "core/node_modules/open/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "engines": { "node": ">=12" }, @@ -17516,23 +16031,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "core/node_modules/open/node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "core/node_modules/open/node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "core/node_modules/open/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "core/node_modules/open/node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "bin": { "is-docker": "cli.js" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -17549,6 +16073,20 @@ "node": ">=8" } }, + "core/node_modules/open/node_modules/is-wsl/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "core/node_modules/p-event": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", @@ -17675,42 +16213,29 @@ } }, "core/node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.4.1.tgz", + "integrity": "sha512-vRpMXmIkYF2/1hLBKisKeVYJZ8S2tZ0zEAmIJgdVKP2nq0nh4qCdf8bgw+ZgKrkh71AOCaqzwbJJk1WtdcF3VA==", "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" + "eventemitter3": "^5.0.1", + "p-timeout": "^5.0.2" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "core/node_modules/p-queue/node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, "core/node_modules/p-queue/node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "core/node_modules/p-queue/node_modules/p-timeout/node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", + "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "core/node_modules/p-retry": { @@ -17815,6 +16340,45 @@ "node": ">=4" } }, + "core/node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "core/node_modules/prop-types/node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "core/node_modules/prop-types/node_modules/loose-envify/node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "core/node_modules/prop-types/node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "core/node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, "core/node_modules/proper-lockfile": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", @@ -17851,6 +16415,327 @@ "query-string": "^6.3.0" } }, + "core/node_modules/proxy-agent": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz", + "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "core/node_modules/proxy-agent/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "core/node_modules/proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "core/node_modules/proxy-agent/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "core/node_modules/proxy-agent/node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "core/node_modules/proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "core/node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "core/node_modules/proxy-agent/node_modules/pac-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", + "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "pac-resolver": "^7.0.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "core/node_modules/proxy-agent/node_modules/pac-proxy-agent/node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" + }, + "core/node_modules/proxy-agent/node_modules/pac-proxy-agent/node_modules/get-uri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.2.tgz", + "integrity": "sha512-5KLucCJobh8vBY1K07EFV4+cPZH3mrV9YeAruUseCQKHB58SGjjT2l9/eA9LD082IiuMjSlFJEcdJ27TXvbZNw==", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.0", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">= 14" + } + }, + "core/node_modules/proxy-agent/node_modules/pac-proxy-agent/node_modules/get-uri/node_modules/basic-ftp": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz", + "integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==", + "engines": { + "node": ">=10.0.0" + } + }, + "core/node_modules/proxy-agent/node_modules/pac-proxy-agent/node_modules/get-uri/node_modules/data-uri-to-buffer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.1.tgz", + "integrity": "sha512-MZd3VlchQkp8rdend6vrx7MmVDJzSNTBvghvKjirLkD+WTChA3KUf0jkE68Q4UyctNqI11zZO9/x2Yx+ub5Cvg==", + "engines": { + "node": ">= 14" + } + }, + "core/node_modules/proxy-agent/node_modules/pac-proxy-agent/node_modules/get-uri/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "core/node_modules/proxy-agent/node_modules/pac-proxy-agent/node_modules/get-uri/node_modules/fs-extra/node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "core/node_modules/proxy-agent/node_modules/pac-proxy-agent/node_modules/get-uri/node_modules/fs-extra/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "core/node_modules/proxy-agent/node_modules/pac-proxy-agent/node_modules/get-uri/node_modules/fs-extra/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "core/node_modules/proxy-agent/node_modules/pac-proxy-agent/node_modules/pac-resolver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz", + "integrity": "sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==", + "dependencies": { + "degenerator": "^5.0.0", + "ip": "^1.1.8", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "core/node_modules/proxy-agent/node_modules/pac-proxy-agent/node_modules/pac-resolver/node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "core/node_modules/proxy-agent/node_modules/pac-proxy-agent/node_modules/pac-resolver/node_modules/degenerator/node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "core/node_modules/proxy-agent/node_modules/pac-proxy-agent/node_modules/pac-resolver/node_modules/degenerator/node_modules/ast-types/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "core/node_modules/proxy-agent/node_modules/pac-proxy-agent/node_modules/pac-resolver/node_modules/degenerator/node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "core/node_modules/proxy-agent/node_modules/pac-proxy-agent/node_modules/pac-resolver/node_modules/degenerator/node_modules/escodegen/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "core/node_modules/proxy-agent/node_modules/pac-proxy-agent/node_modules/pac-resolver/node_modules/degenerator/node_modules/escodegen/node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "core/node_modules/proxy-agent/node_modules/pac-proxy-agent/node_modules/pac-resolver/node_modules/degenerator/node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "core/node_modules/proxy-agent/node_modules/pac-proxy-agent/node_modules/pac-resolver/node_modules/degenerator/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "core/node_modules/proxy-agent/node_modules/pac-proxy-agent/node_modules/pac-resolver/node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "engines": { + "node": ">= 0.4.0" + } + }, + "core/node_modules/proxy-agent/node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "core/node_modules/proxy-agent/node_modules/socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "core/node_modules/proxy-agent/node_modules/socks-proxy-agent/node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "core/node_modules/proxy-agent/node_modules/socks-proxy-agent/node_modules/socks/node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, + "core/node_modules/proxy-agent/node_modules/socks-proxy-agent/node_modules/socks/node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, "core/node_modules/ps-tree": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", @@ -17954,50 +16839,95 @@ } }, "core/node_modules/qs/node_modules/side-channel/node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "core/node_modules/qs/node_modules/side-channel/node_modules/call-bind/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "core/node_modules/qs/node_modules/side-channel/node_modules/call-bind/node_modules/set-function-length": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } }, - "core/node_modules/qs/node_modules/side-channel/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "core/node_modules/qs/node_modules/side-channel/node_modules/call-bind/node_modules/set-function-length/node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "core/node_modules/qs/node_modules/side-channel/node_modules/call-bind/node_modules/set-function-length/node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "core/node_modules/qs/node_modules/side-channel/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "core/node_modules/qs/node_modules/side-channel/node_modules/call-bind/node_modules/set-function-length/node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "core/node_modules/qs/node_modules/side-channel/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "core/node_modules/qs/node_modules/side-channel/node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "core/node_modules/qs/node_modules/side-channel/node_modules/get-intrinsic/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "core/node_modules/qs/node_modules/side-channel/node_modules/get-intrinsic/node_modules/has-proto": { @@ -18022,10 +16952,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "core/node_modules/qs/node_modules/side-channel/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "core/node_modules/qs/node_modules/side-channel/node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -18117,506 +17058,6 @@ "node": ">=10" } }, - "core/node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "core/node_modules/request-promise": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz", - "integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==", - "deprecated": "request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", - "dependencies": { - "bluebird": "^3.5.0", - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "core/node_modules/request-promise/node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "core/node_modules/request-promise/node_modules/request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dependencies": { - "lodash": "^4.17.19" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "core/node_modules/request-promise/node_modules/stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", - "engines": { - "node": ">=0.10.0" - } - }, - "core/node_modules/request-promise/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "core/node_modules/request-promise/node_modules/tough-cookie/node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, - "core/node_modules/request-promise/node_modules/tough-cookie/node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "engines": { - "node": ">=6" - } - }, - "core/node_modules/request/node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "engines": { - "node": "*" - } - }, - "core/node_modules/request/node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" - }, - "core/node_modules/request/node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - }, - "core/node_modules/request/node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "core/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "core/node_modules/request/node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "core/node_modules/request/node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "engines": { - "node": "*" - } - }, - "core/node_modules/request/node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "core/node_modules/request/node_modules/form-data/node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "core/node_modules/request/node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "core/node_modules/request/node_modules/har-validator/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "core/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "core/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "core/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "core/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "core/node_modules/request/node_modules/har-validator/node_modules/ajv/node_modules/uri-js/node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "engines": { - "node": ">=6" - } - }, - "core/node_modules/request/node_modules/har-validator/node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "engines": { - "node": ">=4" - } - }, - "core/node_modules/request/node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "core/node_modules/request/node_modules/http-signature/node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "engines": { - "node": ">=0.8" - } - }, - "core/node_modules/request/node_modules/http-signature/node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "core/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "engines": [ - "node >=0.6.0" - ] - }, - "core/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "core/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "core/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - }, - "core/node_modules/request/node_modules/http-signature/node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "core/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "core/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "core/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "core/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "core/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "core/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" - }, - "core/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "core/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" - }, - "core/node_modules/request/node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "core/node_modules/request/node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - }, - "core/node_modules/request/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "core/node_modules/request/node_modules/mime-types/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "core/node_modules/request/node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "engines": { - "node": "*" - } - }, - "core/node_modules/request/node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" - }, - "core/node_modules/request/node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "engines": { - "node": ">=0.6" - } - }, - "core/node_modules/request/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "core/node_modules/request/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "core/node_modules/request/node_modules/tough-cookie/node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, - "core/node_modules/request/node_modules/tough-cookie/node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "engines": { - "node": ">=6" - } - }, - "core/node_modules/request/node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "core/node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, "core/node_modules/respawn": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/respawn/-/respawn-2.6.0.tgz", @@ -18844,6 +17285,7 @@ "version": "15.2.0", "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.2.0.tgz", "integrity": "sha512-nPS85arNqwBXaIsFCkolHjGIkFo+Oxu9vbgmBJizLAhqe6P2o3Qmj3KCUoRkfhHtvgDhZdWD3risLHAUJ8npjw==", + "deprecated": "16.1.1", "dev": true, "dependencies": { "@sinonjs/commons": "^3.0.0", @@ -18930,9 +17372,9 @@ } }, "core/node_modules/sinon/node_modules/nise": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz", - "integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.5.tgz", + "integrity": "sha512-VJuPIfUFaXNRzETTQEEItTOP8Y171ijr+JLq42wHes3DiryR8vT+1TXQW/Rx8JNUhyYYWyIvjXTU6dOhJcs9Nw==", "dev": true, "dependencies": { "@sinonjs/commons": "^2.0.0", @@ -19836,13 +18278,13 @@ } }, "core/node_modules/testdouble": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/testdouble/-/testdouble-3.19.0.tgz", - "integrity": "sha512-iavgMMYdgnAyB7EGv2prhgtqnvhSI+K/EVPySqW4MwFjEiLJkiLBnWqlCP09ikB1Q2LargMb8W6otImp8cnLdw==", + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/testdouble/-/testdouble-3.20.0.tgz", + "integrity": "sha512-P/wfyKF1P1AE8/VM6PXCtSQJyOgPObOg191TlVZnoSQw/hhFXvxIFM5yGJ7Bf9Hs0FX8677YCv3esVgPGSeTLg==", "dev": true, "dependencies": { "lodash": "^4.17.21", - "quibble": "^0.8.0", + "quibble": "^0.9.0", "stringify-object-es5": "^2.5.0", "theredoc": "^1.0.0" }, @@ -19856,10 +18298,16 @@ "integrity": "sha512-XzXg6jgSaRd6PJuKY57gZfZ4inAkkevD7nAfET78n+nPPQbbodXpv00tlABbDHgJl+EchaiZh5z/Q517x18Dog==", "dev": true }, + "core/node_modules/testdouble/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "core/node_modules/testdouble/node_modules/quibble": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/quibble/-/quibble-0.8.0.tgz", - "integrity": "sha512-hFN7qy9BP6H7gU5LtOCMKu1PeVGKO1jV+avf62zbKJI/tmvkNUYqA5NTxR89WUgsxzS0EACsuT11PNOFxPUBvg==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/quibble/-/quibble-0.9.0.tgz", + "integrity": "sha512-gpBmqaEPl0nNZuDq16sLO7g/aYcrldSIls8igHm5EYP02+Kzmn/DCNpcSGywnhTk6aNJXkUv6vrRDvrJyRJ2Xw==", "dev": true, "dependencies": { "lodash": "^4.17.21", @@ -19870,9 +18318,9 @@ } }, "core/node_modules/testdouble/node_modules/quibble/node_modules/resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { "is-core-module": "^2.13.0", @@ -19887,34 +18335,37 @@ } }, "core/node_modules/testdouble/node_modules/quibble/node_modules/resolve/node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "core/node_modules/testdouble/node_modules/quibble/node_modules/resolve/node_modules/is-core-module/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "core/node_modules/testdouble/node_modules/quibble/node_modules/resolve/node_modules/is-core-module/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, - "core/node_modules/testdouble/node_modules/quibble/node_modules/resolve/node_modules/is-core-module/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "core/node_modules/testdouble/node_modules/quibble/node_modules/resolve/node_modules/is-core-module/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "core/node_modules/testdouble/node_modules/quibble/node_modules/resolve/node_modules/path-parse": { "version": "1.0.7", @@ -20167,9 +18618,9 @@ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" }, "core/node_modules/tough-cookie/node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "engines": { "node": ">=6" } @@ -20258,32 +18709,16 @@ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" }, - "core/node_modules/unzipper": { - "version": "0.10.14", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", - "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "core/node_modules/unzip-stream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unzip-stream/-/unzip-stream-0.3.1.tgz", + "integrity": "sha512-RzaGXLNt+CW+T41h1zl6pGz3EaeVhYlK+rdAap+7DxW5kqsqePO8kRtWPaCiVqdhZc86EctSPVYNix30YOMzmw==", "dependencies": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - } - }, - "core/node_modules/unzipper/node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "engines": { - "node": ">=0.6" + "binary": "^0.3.0", + "mkdirp": "^0.5.1" } }, - "core/node_modules/unzipper/node_modules/binary": { + "core/node_modules/unzip-stream/node_modules/binary": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", @@ -20295,7 +18730,7 @@ "node": "*" } }, - "core/node_modules/unzipper/node_modules/binary/node_modules/buffers": { + "core/node_modules/unzip-stream/node_modules/binary/node_modules/buffers": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", @@ -20303,7 +18738,7 @@ "node": ">=0.2.0" } }, - "core/node_modules/unzipper/node_modules/binary/node_modules/chainsaw": { + "core/node_modules/unzip-stream/node_modules/binary/node_modules/chainsaw": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", @@ -20314,7 +18749,7 @@ "node": "*" } }, - "core/node_modules/unzipper/node_modules/binary/node_modules/chainsaw/node_modules/traverse": { + "core/node_modules/unzip-stream/node_modules/binary/node_modules/chainsaw/node_modules/traverse": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", @@ -20322,47 +18757,7 @@ "node": "*" } }, - "core/node_modules/unzipper/node_modules/bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" - }, - "core/node_modules/unzipper/node_modules/buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", - "engines": { - "node": ">=0.10" - } - }, - "core/node_modules/unzipper/node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "core/node_modules/unzipper/node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "core/node_modules/unzipper/node_modules/fstream/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "core/node_modules/unzipper/node_modules/fstream/node_modules/mkdirp": { + "core/node_modules/unzip-stream/node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", @@ -20373,173 +18768,6 @@ "mkdirp": "bin/cmd.js" } }, - "core/node_modules/unzipper/node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "core/node_modules/unzipper/node_modules/fstream/node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "core/node_modules/unzipper/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "core/node_modules/unzipper/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "core/node_modules/unzipper/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "core/node_modules/unzipper/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "core/node_modules/unzipper/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "core/node_modules/unzipper/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "core/node_modules/unzipper/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "core/node_modules/unzipper/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "core/node_modules/unzipper/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "core/node_modules/unzipper/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "core/node_modules/unzipper/node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "core/node_modules/unzipper/node_modules/listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" - }, - "core/node_modules/unzipper/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "core/node_modules/unzipper/node_modules/readable-stream/node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "core/node_modules/unzipper/node_modules/readable-stream/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "core/node_modules/unzipper/node_modules/readable-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "core/node_modules/unzipper/node_modules/readable-stream/node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "core/node_modules/unzipper/node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "core/node_modules/unzipper/node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "core/node_modules/unzipper/node_modules/readable-stream/node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "core/node_modules/unzipper/node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, "core/node_modules/username": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/username/-/username-5.1.0.tgz", @@ -20818,11 +19046,11 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "core/node_modules/winston": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.10.0.tgz", - "integrity": "sha512-nT6SIDaE9B7ZRO0u3UvdrimG0HkB7dSTAgInQnNR2SOPJ4bvq5q79+pXLftKmP52lJGW15+H5MCK0nM9D3KB/g==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.11.0.tgz", + "integrity": "sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==", "dependencies": { - "@colors/colors": "1.5.0", + "@colors/colors": "^1.6.0", "@dabh/diagnostics": "^2.0.2", "async": "^3.2.3", "is-stream": "^2.0.0", @@ -20839,9 +19067,9 @@ } }, "core/node_modules/winston/node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", "engines": { "node": ">=0.1.90" } @@ -20941,22 +19169,25 @@ } }, "core/node_modules/winston/node_modules/logform": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz", - "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz", + "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==", "dependencies": { - "@colors/colors": "1.5.0", + "@colors/colors": "1.6.0", "@types/triple-beam": "^1.3.2", "fecha": "^4.2.0", "ms": "^2.1.1", "safe-stable-stringify": "^2.3.1", "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" } }, "core/node_modules/winston/node_modules/logform/node_modules/@types/triple-beam": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.3.tgz", - "integrity": "sha512-6tOUG+nVHn0cJbVp25JFayS5UE6+xlbcNF9Lo9mU7U0zk3zeUShZied4YEQZjy1JBF043FSkdXw8YkUJuVtB5g==" + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.4.tgz", + "integrity": "sha512-HlJjF3wxV4R2VQkFpKe0YqJLilYNgtRtsqqZtby7RkVsSs+i+vbyzjtUwpFEdUCKcrGzCiEJE7F/0mKjh0sunA==" }, "core/node_modules/winston/node_modules/logform/node_modules/fecha": { "version": "4.2.3", @@ -21056,16 +19287,16 @@ } }, "core/node_modules/winston/node_modules/winston-transport": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", - "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.6.0.tgz", + "integrity": "sha512-wbBA9PbPAHxKiygo7ub7BYRiKxms0tpfU2ljtWzb3SjRjv5yl6Ozuy/TkXf00HTAt+Uylo3gSkNwzc4ME0wiIg==", "dependencies": { "logform": "^2.3.2", "readable-stream": "^3.6.0", "triple-beam": "^1.3.0" }, "engines": { - "node": ">= 6.4.0" + "node": ">= 12.0.0" } }, "core/node_modules/write-file-atomic": { @@ -21120,9 +19351,9 @@ } }, "core/node_modules/yaml": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", - "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", "engines": { "node": ">= 14" } @@ -21325,9 +19556,9 @@ } }, "core/node_modules/yaml-lint/node_modules/nconf": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.12.0.tgz", - "integrity": "sha512-T3fZPw3c7Dfrz8JBQEbEcZJ2s8f7cUMpKuyBtsGQe0b71pcXx6gNh4oti2xh5dxB+gO9ufNfISBlGvvWtfyMcA==", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.12.1.tgz", + "integrity": "sha512-p2cfF+B3XXacQdswUYWZ0w6Vld0832A/tuqjLBu3H1sfUcby4N2oVbGhyuCkZv+t3iY3aiFEj7gZGqax9Q2c1w==", "dependencies": { "async": "^3.0.0", "ini": "^2.0.0", @@ -21419,9 +19650,9 @@ } }, "core/node_modules/zod": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.3.tgz", - "integrity": "sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==", + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -21444,7 +19675,7 @@ }, "devDependencies": { "@types/chai": "^4.3.6", - "@types/lodash": "^4.14.191", + "@types/lodash-es": "^4.17.9", "@types/minimist": "^1.2.2", "@types/mocha": "^10.0.1", "@types/node": "^18", @@ -21453,7 +19684,7 @@ "dedent": "^0.7.0", "execa": "^4.1.0", "fs-extra": "^11.1.0", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "minimist": "^1.2.8", "mocha": "^10.2.0", "prettier": "3.0.0", @@ -21468,36 +19699,36 @@ } }, "e2e/node_modules/@types/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", + "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==", "dev": true }, "e2e/node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.4.tgz", + "integrity": "sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==", "dev": true }, "e2e/node_modules/@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.3.tgz", + "integrity": "sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ==", "dev": true }, "e2e/node_modules/chai": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", - "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.0.8" }, "engines": { "node": ">=4" @@ -21513,10 +19744,13 @@ } }, "e2e/node_modules/chai/node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -21543,12 +19777,12 @@ } }, "e2e/node_modules/chai/node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "e2e/node_modules/chai/node_modules/pathval": { @@ -21608,9 +19842,9 @@ } }, "e2e/node_modules/fs-extra/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { "node": ">= 10.0.0" @@ -22705,16 +20939,16 @@ } }, "node_modules/@commitlint/cli": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-17.7.1.tgz", - "integrity": "sha512-BCm/AT06SNCQtvFv921iNhudOHuY16LswT0R3OeolVGLk8oP+Rk9TfQfgjH7QPMjhvp76bNqGFEcpKojxUNW1g==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-17.8.1.tgz", + "integrity": "sha512-ay+WbzQesE0Rv4EQKfNbSMiJJ12KdKTDzIt0tcK4k11FdsWmtwP0Kp1NWMOUswfIWo6Eb7p7Ln721Nx9FLNBjg==", "dev": true, "dependencies": { - "@commitlint/format": "^17.4.4", - "@commitlint/lint": "^17.7.0", - "@commitlint/load": "^17.7.1", - "@commitlint/read": "^17.5.1", - "@commitlint/types": "^17.4.4", + "@commitlint/format": "^17.8.1", + "@commitlint/lint": "^17.8.1", + "@commitlint/load": "^17.8.1", + "@commitlint/read": "^17.8.1", + "@commitlint/types": "^17.8.1", "execa": "^5.0.0", "lodash.isfunction": "^3.0.9", "resolve-from": "5.0.0", @@ -22729,12 +20963,12 @@ } }, "node_modules/@commitlint/cli/node_modules/@commitlint/format": { - "version": "17.4.4", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-17.4.4.tgz", - "integrity": "sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-17.8.1.tgz", + "integrity": "sha512-f3oMTyZ84M9ht7fb93wbCKmWxO5/kKSbwuYvS867duVomoOsgrgljkGGIztmT/srZnaiGbaK8+Wf8Ik2tSr5eg==", "dev": true, "dependencies": { - "@commitlint/types": "^17.4.4", + "@commitlint/types": "^17.8.1", "chalk": "^4.1.0" }, "engines": { @@ -22742,27 +20976,27 @@ } }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint": { - "version": "17.7.0", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-17.7.0.tgz", - "integrity": "sha512-TCQihm7/uszA5z1Ux1vw+Nf3yHTgicus/+9HiUQk+kRSQawByxZNESeQoX9ujfVd3r4Sa+3fn0JQAguG4xvvbA==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-17.8.1.tgz", + "integrity": "sha512-aQUlwIR1/VMv2D4GXSk7PfL5hIaFSfy6hSHV94O8Y27T5q+DlDEgd/cZ4KmVI+MWKzFfCTiTuWqjfRSfdRllCA==", "dev": true, "dependencies": { - "@commitlint/is-ignored": "^17.7.0", - "@commitlint/parse": "^17.7.0", - "@commitlint/rules": "^17.7.0", - "@commitlint/types": "^17.4.4" + "@commitlint/is-ignored": "^17.8.1", + "@commitlint/parse": "^17.8.1", + "@commitlint/rules": "^17.8.1", + "@commitlint/types": "^17.8.1" }, "engines": { "node": ">=v14" } }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/is-ignored": { - "version": "17.7.0", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-17.7.0.tgz", - "integrity": "sha512-043rA7m45tyEfW7Zv2vZHF++176MLHH9h70fnPoYlB1slKBeKl8BwNIlnPg4xBdRBVNPaCqvXxWswx2GR4c9Hw==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-17.8.1.tgz", + "integrity": "sha512-UshMi4Ltb4ZlNn4F7WtSEugFDZmctzFpmbqvpyxD3la510J+PLcnyhf9chs7EryaRFJMdAKwsEKfNK0jL/QM4g==", "dev": true, "dependencies": { - "@commitlint/types": "^17.4.4", + "@commitlint/types": "^17.8.1", "semver": "7.5.4" }, "engines": { @@ -22770,12 +21004,12 @@ } }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse": { - "version": "17.7.0", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-17.7.0.tgz", - "integrity": "sha512-dIvFNUMCUHqq5Abv80mIEjLVfw8QNuA4DS7OWip4pcK/3h5wggmjVnlwGCDvDChkw2TjK1K6O+tAEV78oxjxag==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-17.8.1.tgz", + "integrity": "sha512-/wLUickTo0rNpQgWwLPavTm7WbwkZoBy3X8PpkUmlSmQJyWQTj0m6bDjiykMaDt41qcUbfeFfaCvXfiR4EGnfw==", "dev": true, "dependencies": { - "@commitlint/types": "^17.4.4", + "@commitlint/types": "^17.8.1", "conventional-changelog-angular": "^6.0.0", "conventional-commits-parser": "^4.0.0" }, @@ -22928,9 +21162,9 @@ } }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.4.tgz", + "integrity": "sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==", "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/camelcase-keys": { @@ -23110,34 +21344,37 @@ "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/normalize-package-data/node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/normalize-package-data/node_modules/is-core-module/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/normalize-package-data/node_modules/is-core-module/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/normalize-package-data/node_modules/is-core-module/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/normalize-package-data/node_modules/is-core-module/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/normalize-package-data/node_modules/validate-npm-package-license": { "version": "3.0.4", @@ -23160,9 +21397,9 @@ } }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/normalize-package-data/node_modules/validate-npm-package-license/node_modules/spdx-correct/node_modules/spdx-license-ids": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz", - "integrity": "sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/normalize-package-data/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { @@ -23182,9 +21419,9 @@ "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/normalize-package-data/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-license-ids": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz", - "integrity": "sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/read-pkg-up": { @@ -23290,9 +21527,9 @@ } }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/@types/normalize-package-data": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.2.tgz", - "integrity": "sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.3.tgz", + "integrity": "sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg==", "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data": { @@ -23314,9 +21551,9 @@ "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data/node_modules/resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { "is-core-module": "^2.13.0", @@ -23331,34 +21568,37 @@ } }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data/node_modules/resolve/node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data/node_modules/resolve/node_modules/is-core-module/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data/node_modules/resolve/node_modules/is-core-module/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data/node_modules/resolve/node_modules/is-core-module/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data/node_modules/resolve/node_modules/is-core-module/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data/node_modules/resolve/node_modules/path-parse": { "version": "1.0.7", @@ -23408,9 +21648,9 @@ } }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data/node_modules/validate-npm-package-license/node_modules/spdx-correct/node_modules/spdx-license-ids": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz", - "integrity": "sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { @@ -23430,9 +21670,9 @@ "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-license-ids": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz", - "integrity": "sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/parse/node_modules/conventional-commits-parser/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/parse-json": { @@ -23749,15 +21989,15 @@ "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/rules": { - "version": "17.7.0", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-17.7.0.tgz", - "integrity": "sha512-J3qTh0+ilUE5folSaoK91ByOb8XeQjiGcdIdiB/8UT1/Rd1itKo0ju/eQVGyFzgTMYt8HrDJnGTmNWwcMR1rmA==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-17.8.1.tgz", + "integrity": "sha512-2b7OdVbN7MTAt9U0vKOYKCDsOvESVXxQmrvuVUZ0rGFMCrCPJWWP1GJ7f0lAypbDAhaGb8zqtdOr47192LBrIA==", "dev": true, "dependencies": { - "@commitlint/ensure": "^17.6.7", - "@commitlint/message": "^17.4.2", - "@commitlint/to-lines": "^17.4.0", - "@commitlint/types": "^17.4.4", + "@commitlint/ensure": "^17.8.1", + "@commitlint/message": "^17.8.1", + "@commitlint/to-lines": "^17.8.1", + "@commitlint/types": "^17.8.1", "execa": "^5.0.0" }, "engines": { @@ -23765,12 +22005,12 @@ } }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/rules/node_modules/@commitlint/ensure": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-17.6.7.tgz", - "integrity": "sha512-mfDJOd1/O/eIb/h4qwXzUxkmskXDL9vNPnZ4AKYKiZALz4vHzwMxBSYtyL2mUIDeU9DRSpEUins8SeKtFkYHSw==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-17.8.1.tgz", + "integrity": "sha512-xjafwKxid8s1K23NFpL8JNo6JnY/ysetKo8kegVM7c8vs+kWLP8VrQq+NbhgVlmCojhEDbzQKp4eRXSjVOGsow==", "dev": true, "dependencies": { - "@commitlint/types": "^17.4.4", + "@commitlint/types": "^17.8.1", "lodash.camelcase": "^4.3.0", "lodash.kebabcase": "^4.1.1", "lodash.snakecase": "^4.1.1", @@ -23812,34 +22052,34 @@ "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/rules/node_modules/@commitlint/message": { - "version": "17.4.2", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-17.4.2.tgz", - "integrity": "sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-17.8.1.tgz", + "integrity": "sha512-6bYL1GUQsD6bLhTH3QQty8pVFoETfFQlMn2Nzmz3AOLqRVfNNtXBaSY0dhZ0dM6A2MEq4+2d7L/2LP8TjqGRkA==", "dev": true, "engines": { "node": ">=v14" } }, "node_modules/@commitlint/cli/node_modules/@commitlint/lint/node_modules/@commitlint/rules/node_modules/@commitlint/to-lines": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-17.4.0.tgz", - "integrity": "sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-17.8.1.tgz", + "integrity": "sha512-LE0jb8CuR/mj6xJyrIk8VLz03OEzXFgLdivBytoooKO5xLt5yalc8Ma5guTWobw998sbR3ogDd+2jed03CFmJA==", "dev": true, "engines": { "node": ">=v14" } }, "node_modules/@commitlint/cli/node_modules/@commitlint/load": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-17.7.1.tgz", - "integrity": "sha512-S/QSOjE1ztdogYj61p6n3UbkUvweR17FQ0zDbNtoTLc+Hz7vvfS7ehoTMQ27hPSjVBpp7SzEcOQu081RLjKHJQ==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-17.8.1.tgz", + "integrity": "sha512-iF4CL7KDFstP1kpVUkT8K2Wl17h2yx9VaR1ztTc8vzByWWcbO/WaKwxsnCOqow9tVAlzPfo1ywk9m2oJ9ucMqA==", "dev": true, "dependencies": { - "@commitlint/config-validator": "^17.6.7", - "@commitlint/execute-rule": "^17.4.0", - "@commitlint/resolve-extends": "^17.6.7", - "@commitlint/types": "^17.4.4", - "@types/node": "20.4.7", + "@commitlint/config-validator": "^17.8.1", + "@commitlint/execute-rule": "^17.8.1", + "@commitlint/resolve-extends": "^17.8.1", + "@commitlint/types": "^17.8.1", + "@types/node": "20.5.1", "chalk": "^4.1.0", "cosmiconfig": "^8.0.0", "cosmiconfig-typescript-loader": "^4.0.0", @@ -23848,19 +22088,19 @@ "lodash.uniq": "^4.5.0", "resolve-from": "^5.0.0", "ts-node": "^10.8.1", - "typescript": "^4.6.4 || ^5.0.0" + "typescript": "^4.6.4 || ^5.2.2" }, "engines": { "node": ">=v14" } }, "node_modules/@commitlint/cli/node_modules/@commitlint/load/node_modules/@commitlint/config-validator": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.6.7.tgz", - "integrity": "sha512-vJSncmnzwMvpr3lIcm0I8YVVDJTzyjy7NZAeXbTXy+MPUdAr9pKyyg7Tx/ebOQ9kqzE6O9WT6jg2164br5UdsQ==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.8.1.tgz", + "integrity": "sha512-UUgUC+sNiiMwkyiuIFR7JG2cfd9t/7MV8VB4TZ+q02ZFkHoduUS4tJGsCBWvBOGD9Btev6IecPMvlWUfJorkEA==", "dev": true, "dependencies": { - "@commitlint/types": "^17.4.4", + "@commitlint/types": "^17.8.1", "ajv": "^8.11.0" }, "engines": { @@ -23914,31 +22154,31 @@ } }, "node_modules/@commitlint/cli/node_modules/@commitlint/load/node_modules/@commitlint/config-validator/node_modules/ajv/node_modules/uri-js/node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/@commitlint/cli/node_modules/@commitlint/load/node_modules/@commitlint/execute-rule": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-17.4.0.tgz", - "integrity": "sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-17.8.1.tgz", + "integrity": "sha512-JHVupQeSdNI6xzA9SqMF+p/JjrHTcrJdI02PwesQIDCIGUrv04hicJgCcws5nzaoZbROapPs0s6zeVHoxpMwFQ==", "dev": true, "engines": { "node": ">=v14" } }, "node_modules/@commitlint/cli/node_modules/@commitlint/load/node_modules/@commitlint/resolve-extends": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.6.7.tgz", - "integrity": "sha512-PfeoAwLHtbOaC9bGn/FADN156CqkFz6ZKiVDMjuC2N5N0740Ke56rKU7Wxdwya8R8xzLK9vZzHgNbuGhaOVKIg==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.8.1.tgz", + "integrity": "sha512-W/ryRoQ0TSVXqJrx5SGkaYuAaE/BUontL1j1HsKckvM6e5ZaG0M9126zcwL6peKSuIetJi7E87PRQF8O86EW0Q==", "dev": true, "dependencies": { - "@commitlint/config-validator": "^17.6.7", - "@commitlint/types": "^17.4.4", + "@commitlint/config-validator": "^17.8.1", + "@commitlint/types": "^17.8.1", "import-fresh": "^3.0.0", "lodash.mergewith": "^4.6.2", "resolve-from": "^5.0.0", @@ -24001,9 +22241,9 @@ "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/load/node_modules/@types/node": { - "version": "20.4.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.7.tgz", - "integrity": "sha512-bUBrPjEry2QUTsnuEjzjbS7voGWCc30W0qzgMf90GPeDGFRakvrz47ju+oqDAKCXLUCe39u57/ORMl/O/04/9g==", + "version": "20.5.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.1.tgz", + "integrity": "sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==", "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/load/node_modules/cosmiconfig": { @@ -24297,13 +22537,13 @@ "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/read": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-17.5.1.tgz", - "integrity": "sha512-7IhfvEvB//p9aYW09YVclHbdf1u7g7QhxeYW9ZHSO8Huzp8Rz7m05aCO1mFG7G8M+7yfFnXB5xOmG18brqQIBg==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-17.8.1.tgz", + "integrity": "sha512-Fd55Oaz9irzBESPCdMd8vWWgxsW3OWR99wOntBDHgf9h7Y6OOHjWEdS9Xzen1GFndqgyoaFplQS5y7KZe0kO2w==", "dev": true, "dependencies": { - "@commitlint/top-level": "^17.4.0", - "@commitlint/types": "^17.4.4", + "@commitlint/top-level": "^17.8.1", + "@commitlint/types": "^17.8.1", "fs-extra": "^11.0.0", "git-raw-commits": "^2.0.11", "minimist": "^1.2.6" @@ -24313,9 +22553,9 @@ } }, "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/@commitlint/top-level": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-17.4.0.tgz", - "integrity": "sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-17.8.1.tgz", + "integrity": "sha512-l6+Z6rrNf5p333SHfEte6r+WkOxGlWK4bLuZKbtf/2TXRN+qhrvn1XE63VhD8Oe9oIHQ7F7W1nG2k/TJFhx2yA==", "dev": true, "dependencies": { "find-up": "^5.0.0" @@ -24439,9 +22679,9 @@ } }, "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/fs-extra/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { "node": ">= 10.0.0" @@ -24475,6 +22715,12 @@ "node": ">=8" } }, + "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", @@ -24501,9 +22747,9 @@ } }, "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.4.tgz", + "integrity": "sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==", "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/camelcase-keys": { @@ -24683,34 +22929,37 @@ "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/normalize-package-data/node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/normalize-package-data/node_modules/is-core-module/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/normalize-package-data/node_modules/is-core-module/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/normalize-package-data/node_modules/is-core-module/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/normalize-package-data/node_modules/is-core-module/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/normalize-package-data/node_modules/validate-npm-package-license": { "version": "3.0.4", @@ -24733,9 +22982,9 @@ } }, "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/normalize-package-data/node_modules/validate-npm-package-license/node_modules/spdx-correct/node_modules/spdx-license-ids": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz", - "integrity": "sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/normalize-package-data/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { @@ -24755,9 +23004,9 @@ "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/normalize-package-data/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-license-ids": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz", - "integrity": "sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/read-pkg-up": { @@ -24863,9 +23112,9 @@ } }, "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/@types/normalize-package-data": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.2.tgz", - "integrity": "sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.3.tgz", + "integrity": "sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg==", "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data": { @@ -24887,9 +23136,9 @@ "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data/node_modules/resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { "is-core-module": "^2.13.0", @@ -24904,34 +23153,37 @@ } }, "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data/node_modules/resolve/node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data/node_modules/resolve/node_modules/is-core-module/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data/node_modules/resolve/node_modules/is-core-module/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data/node_modules/resolve/node_modules/is-core-module/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data/node_modules/resolve/node_modules/is-core-module/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data/node_modules/resolve/node_modules/path-parse": { "version": "1.0.7", @@ -24981,9 +23233,9 @@ } }, "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data/node_modules/validate-npm-package-license/node_modules/spdx-correct/node_modules/spdx-license-ids": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz", - "integrity": "sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { @@ -25003,9 +23255,9 @@ "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/normalize-package-data/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-license-ids": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz", - "integrity": "sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/read/node_modules/git-raw-commits/node_modules/meow/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/parse-json": { @@ -25386,9 +23638,9 @@ "dev": true }, "node_modules/@commitlint/cli/node_modules/@commitlint/types": { - "version": "17.4.4", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-17.4.4.tgz", - "integrity": "sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-17.8.1.tgz", + "integrity": "sha512-PXDQXkAmiMEG162Bqdh9ChML/GJZo6vU+7F03ALKDK8zYc6SuAr47LjG7hGYRqUOz+WK0dU7bQ0xzuqFMdxzeQ==", "dev": true, "dependencies": { "chalk": "^4.1.0" @@ -25464,94 +23716,668 @@ "node": ">=8" } }, - "node_modules/@commitlint/cli/node_modules/execa/node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/@commitlint/cli/node_modules/execa/node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@commitlint/cli/node_modules/execa/node_modules/cross-spawn/node_modules/which/node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/@commitlint/cli/node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/cli/node_modules/execa/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@commitlint/cli/node_modules/execa/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/cli/node_modules/execa/node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/@commitlint/cli/node_modules/execa/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/cli/node_modules/execa/node_modules/npm-run-path/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/cli/node_modules/execa/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/cli/node_modules/execa/node_modules/onetime/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@commitlint/cli/node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/@commitlint/cli/node_modules/execa/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@commitlint/cli/node_modules/lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "dev": true + }, + "node_modules/@commitlint/cli/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/cli/node_modules/resolve-global": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", + "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", + "dev": true, + "dependencies": { + "global-dirs": "^0.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/cli/node_modules/resolve-global/node_modules/global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", + "dev": true, + "dependencies": { + "ini": "^1.3.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@commitlint/cli/node_modules/resolve-global/node_modules/global-dirs/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/@commitlint/config-conventional": { + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-17.8.1.tgz", + "integrity": "sha512-NxCOHx1kgneig3VLauWJcDWS40DVjg7nKOpBEEK9E5fjJpQqLCilcnKkIIjdBH98kEO1q3NpE5NSrZ2kl/QGJg==", + "dev": true, + "dependencies": { + "conventional-changelog-conventionalcommits": "^6.1.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/config-conventional/node_modules/conventional-changelog-conventionalcommits": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-6.1.0.tgz", + "integrity": "sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@commitlint/config-conventional/node_modules/conventional-changelog-conventionalcommits/node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/@commitlint/config-conventional/node_modules/conventional-changelog-conventionalcommits/node_modules/compare-func/node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true + }, + "node_modules/@commitlint/config-conventional/node_modules/conventional-changelog-conventionalcommits/node_modules/compare-func/node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/config-conventional/node_modules/conventional-changelog-conventionalcommits/node_modules/compare-func/node_modules/dot-prop/node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@garden-io/cli": { + "resolved": "cli", + "link": true + }, + "node_modules/@garden-io/core": { + "resolved": "core", + "link": true + }, + "node_modules/@garden-io/e2e": { + "resolved": "e2e", + "link": true + }, + "node_modules/@garden-io/garden-conftest": { + "resolved": "plugins/conftest", + "link": true + }, + "node_modules/@garden-io/garden-conftest-container": { + "resolved": "plugins/conftest-container", + "link": true + }, + "node_modules/@garden-io/garden-conftest-kubernetes": { + "resolved": "plugins/conftest-kubernetes", + "link": true + }, + "node_modules/@garden-io/garden-jib": { + "resolved": "plugins/jib", + "link": true + }, + "node_modules/@garden-io/garden-pulumi": { + "resolved": "plugins/pulumi", + "link": true + }, + "node_modules/@garden-io/garden-terraform": { + "resolved": "plugins/terraform", + "link": true + }, + "node_modules/@garden-io/sdk": { + "resolved": "sdk", + "link": true + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "25.0.7", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz", + "integrity": "sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/@rollup/pluginutils": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz", + "integrity": "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.4.tgz", + "integrity": "sha512-2JwWnHK9H+wUZNorf2Zr6ves96WHoWDJIftkcxPKsS7Djta6Zu519LarhRNljPXkpsZR2ZMwNCPeW7omW07BJw==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob/node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob/node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob/node_modules/inflight/node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob/node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob/node_modules/once/node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/is-reference/node_modules/@types/estree": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.4.tgz", + "integrity": "sha512-2JwWnHK9H+wUZNorf2Zr6ves96WHoWDJIftkcxPKsS7Djta6Zu519LarhRNljPXkpsZR2ZMwNCPeW7omW07BJw==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/magic-string/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@rollup/plugin-esm-shim": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-esm-shim/-/plugin-esm-shim-0.1.4.tgz", + "integrity": "sha512-jLARdjZvFRIgDguGNyGTu5DYwSu+PsZy/SV2/busn/czsn2AzX5vAo7xI/iQ9UpEogyZQTCM+s38LtmdzJKnWw==", + "dev": true, + "dependencies": { + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-esm-shim/node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@rollup/plugin-esm-shim/node_modules/magic-string/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@rollup/plugin-json": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.0.1.tgz", + "integrity": "sha512-RgVfl5hWMkxN1h/uZj8FVESvPuBJ/uf6ly6GTj0GONnkfoBN5KC0MSz+PN2OLDgYXMhtG0mWpTrkiOjoxAIevw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-json/node_modules/@rollup/pluginutils": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz", + "integrity": "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==", "dev": true, "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">= 8" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@commitlint/cli/node_modules/execa/node_modules/cross-spawn/node_modules/which/node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "node_modules/@rollup/plugin-json/node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.4.tgz", + "integrity": "sha512-2JwWnHK9H+wUZNorf2Zr6ves96WHoWDJIftkcxPKsS7Djta6Zu519LarhRNljPXkpsZR2ZMwNCPeW7omW07BJw==", "dev": true }, - "node_modules/@commitlint/cli/node_modules/execa/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/@rollup/plugin-json/node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/@rollup/plugin-json/node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "engines": { - "node": ">=10" + "node": ">=8.6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@commitlint/cli/node_modules/execa/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", + "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.1", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, "engines": { - "node": ">=10.17.0" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@commitlint/cli/node_modules/execa/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/@rollup/plugin-node-resolve/node_modules/@rollup/pluginutils": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz", + "integrity": "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==", "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, "engines": { - "node": ">=8" + "node": ">=14.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@commitlint/cli/node_modules/execa/node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "node_modules/@rollup/plugin-node-resolve/node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.4.tgz", + "integrity": "sha512-2JwWnHK9H+wUZNorf2Zr6ves96WHoWDJIftkcxPKsS7Djta6Zu519LarhRNljPXkpsZR2ZMwNCPeW7omW07BJw==", "dev": true }, - "node_modules/@commitlint/cli/node_modules/execa/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/@rollup/plugin-node-resolve/node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@commitlint/cli/node_modules/execa/node_modules/npm-run-path/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/@rollup/plugin-node-resolve/node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/@commitlint/cli/node_modules/execa/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/@rollup/plugin-node-resolve/node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", "dev": true, "dependencies": { - "mimic-fn": "^2.1.0" + "builtin-modules": "^3.3.0" }, "engines": { "node": ">=6" @@ -25560,181 +24386,280 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/cli/node_modules/execa/node_modules/onetime/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/@rollup/plugin-node-resolve/node_modules/is-builtin-module/node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/cli/node_modules/execa/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "node_modules/@rollup/plugin-node-resolve/node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", "dev": true }, - "node_modules/@commitlint/cli/node_modules/execa/node_modules/strip-final-newline": { + "node_modules/@rollup/plugin-node-resolve/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/resolve/node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/resolve/node_modules/is-core-module/node_modules/hasown": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" } }, - "node_modules/@commitlint/cli/node_modules/lodash.isfunction": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", - "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "node_modules/@rollup/plugin-node-resolve/node_modules/resolve/node_modules/is-core-module/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/resolve/node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/@commitlint/cli/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/@rollup/plugin-node-resolve/node_modules/resolve/node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@commitlint/cli/node_modules/resolve-global": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", - "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", + "node_modules/@rollup/plugin-replace": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.5.tgz", + "integrity": "sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==", "dev": true, "dependencies": { - "global-dirs": "^0.1.1" + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.30.3" }, "engines": { - "node": ">=8" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@commitlint/cli/node_modules/resolve-global/node_modules/global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", + "node_modules/@rollup/plugin-replace/node_modules/@rollup/pluginutils": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz", + "integrity": "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==", "dev": true, "dependencies": { - "ini": "^1.3.4" + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=4" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@commitlint/cli/node_modules/resolve-global/node_modules/global-dirs/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "node_modules/@rollup/plugin-replace/node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.4.tgz", + "integrity": "sha512-2JwWnHK9H+wUZNorf2Zr6ves96WHoWDJIftkcxPKsS7Djta6Zu519LarhRNljPXkpsZR2ZMwNCPeW7omW07BJw==", "dev": true }, - "node_modules/@commitlint/config-conventional": { - "version": "17.7.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-17.7.0.tgz", - "integrity": "sha512-iicqh2o6et+9kWaqsQiEYZzfLbtoWv9uZl8kbI8EGfnc0HeGafQBF7AJ0ylN9D/2kj6txltsdyQs8+2fTMwWEw==", + "node_modules/@rollup/plugin-replace/node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/@rollup/plugin-replace/node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rollup/plugin-replace/node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", "dev": true, "dependencies": { - "conventional-changelog-conventionalcommits": "^6.1.0" + "@jridgewell/sourcemap-codec": "^1.4.15" }, "engines": { - "node": ">=v14" + "node": ">=12" } }, - "node_modules/@commitlint/config-conventional/node_modules/conventional-changelog-conventionalcommits": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-6.1.0.tgz", - "integrity": "sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw==", + "node_modules/@rollup/plugin-replace/node_modules/magic-string/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@rollup/plugin-url": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-url/-/plugin-url-8.0.2.tgz", + "integrity": "sha512-5yW2LP5NBEgkvIRSSEdJkmxe5cUNZKG3eenKtfJvSkxVm/xTTu7w+ayBtNwhozl1ZnTUCU0xFaRQR+cBl2H7TQ==", "dev": true, "dependencies": { - "compare-func": "^2.0.0" + "@rollup/pluginutils": "^5.0.1", + "make-dir": "^3.1.0", + "mime": "^3.0.0" }, "engines": { - "node": ">=14" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@commitlint/config-conventional/node_modules/conventional-changelog-conventionalcommits/node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "node_modules/@rollup/plugin-url/node_modules/@rollup/pluginutils": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz", + "integrity": "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==", "dev": true, "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@commitlint/config-conventional/node_modules/conventional-changelog-conventionalcommits/node_modules/compare-func/node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "node_modules/@rollup/plugin-url/node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.4.tgz", + "integrity": "sha512-2JwWnHK9H+wUZNorf2Zr6ves96WHoWDJIftkcxPKsS7Djta6Zu519LarhRNljPXkpsZR2ZMwNCPeW7omW07BJw==", "dev": true }, - "node_modules/@commitlint/config-conventional/node_modules/conventional-changelog-conventionalcommits/node_modules/compare-func/node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "node_modules/@rollup/plugin-url/node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/@rollup/plugin-url/node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - }, "engines": { - "node": ">=8" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@commitlint/config-conventional/node_modules/conventional-changelog-conventionalcommits/node_modules/compare-func/node_modules/dot-prop/node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "node_modules/@rollup/plugin-url/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@garden-io/cli": { - "resolved": "cli", - "link": true - }, - "node_modules/@garden-io/core": { - "resolved": "core", - "link": true - }, - "node_modules/@garden-io/e2e": { - "resolved": "e2e", - "link": true - }, - "node_modules/@garden-io/garden-conftest": { - "resolved": "plugins/conftest", - "link": true - }, - "node_modules/@garden-io/garden-conftest-container": { - "resolved": "plugins/conftest-container", - "link": true - }, - "node_modules/@garden-io/garden-conftest-kubernetes": { - "resolved": "plugins/conftest-kubernetes", - "link": true - }, - "node_modules/@garden-io/garden-jib": { - "resolved": "plugins/jib", - "link": true - }, - "node_modules/@garden-io/garden-pulumi": { - "resolved": "plugins/pulumi", - "link": true - }, - "node_modules/@garden-io/garden-terraform": { - "resolved": "plugins/terraform", - "link": true - }, - "node_modules/@garden-io/sdk": { - "resolved": "sdk", - "link": true + "node_modules/@rollup/plugin-url/node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/@types/bluebird": { - "version": "3.5.39", - "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.39.tgz", - "integrity": "sha512-0h2lKudcFwHih8NHAgt/uyAIUQDO0AdfJYlWBXD8r+gFDulUi2CMZoQSh2Q5ol1FMaHV9k7/4HtcbA8ABtexmA==", - "dev": true + "node_modules/@rollup/plugin-url/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } }, "node_modules/@types/fs-extra": { "version": "9.0.13", @@ -25746,20 +24671,37 @@ } }, "node_modules/@types/hapi__joi": { - "version": "17.1.11", - "resolved": "https://registry.npmjs.org/@types/hapi__joi/-/hapi__joi-17.1.11.tgz", - "integrity": "sha512-4dwljh5JJPdDOkddyT/nGBDxJ7tZvLzcUaeT3XS0QO+LaluN38t4hUnNx65o7f0lIeDC9BJ4+IDJwQaDOS0zGQ==" + "version": "17.1.12", + "resolved": "https://registry.npmjs.org/@types/hapi__joi/-/hapi__joi-17.1.12.tgz", + "integrity": "sha512-a7ao2UWX6q9DMbQgP7RlQGkE6fUBbh0Qv9Cs8DAQiGyOeFtGiJ4GtgKzsscUb1Syw4zSV3zC9GDfNOMOKxW5jg==" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.10.tgz", + "integrity": "sha512-YJP+w/2khSBwbUSFdGsSqmDvmnN3cCKoPOL7Zjle6s30ZtemkkqhjVfFqGwPN7ASil5VyjE2GtyU/yqYY6mC0A==", + "dev": true, + "dependencies": { + "@types/lodash": "*" + } }, - "node_modules/@types/lodash": { - "version": "4.14.199", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz", - "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==", + "node_modules/@types/lodash-es/node_modules/@types/lodash": { + "version": "4.14.200", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.200.tgz", + "integrity": "sha512-YI/M/4HRImtNf3pJgbF+W6FrXovqj+T+/HpENLTooK9PnkacBsDpeP3IpHab40CClUfhNmdM2WTNP2sa2dni5Q==", "dev": true }, "node_modules/@types/node": { - "version": "18.17.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.19.tgz", - "integrity": "sha512-+pMhShR3Or5GR0/sp4Da7FnhVmTalWm81M6MkEldbwjETSaPalw138Z4KdpQaistvqQxLB7Cy4xwYdxpbSOs9Q==" + "version": "18.18.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.8.tgz", + "integrity": "sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, "node_modules/@types/prettier": { "version": "2.7.3", @@ -25768,30 +24710,30 @@ "dev": true }, "node_modules/@types/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", "dev": true }, "node_modules/@types/treeify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/treeify/-/treeify-1.0.1.tgz", - "integrity": "sha512-LKtbHwOf5FjWXri/6l6kxMPLVJV69VoyTL2IS+icQcr6k9ffVgXMCvnVXRFWpv5bQED/Gdl8KU+CfuwTAg5HkA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/treeify/-/treeify-1.0.2.tgz", + "integrity": "sha512-eY3f8UdMuLFTyPrdy8VsPGnVvAVYlYggJbIgPcmEYVscRWwET/p1zFfids3dYAZhmSolJWPtfwFTD27IWfNAbw==", "dev": true }, "node_modules/@types/yargs": { - "version": "17.0.28", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.28.tgz", - "integrity": "sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==", + "version": "17.0.29", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.29.tgz", + "integrity": "sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA==", "dev": true, "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs/node_modules/@types/yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==", + "version": "21.0.2", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.2.tgz", + "integrity": "sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { @@ -25829,9 +24771,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@eslint-community/regexpp": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", - "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -26330,9 +25272,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils/node_modules/@types/json-schema": { - "version": "7.0.13", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", - "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", + "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { @@ -27393,9 +26335,9 @@ } }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/@yarnpkg/libzip/node_modules/@types/emscripten": { - "version": "1.39.8", - "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.8.tgz", - "integrity": "sha512-Rk0HKcMXFUuqT32k1kXHZWgxiMvsyYsmlnjp0rLKa0MMoqXLE3T9dogDBTRfuc3SAsXu97KD3k4SKR1lHqd57w==", + "version": "1.39.9", + "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.9.tgz", + "integrity": "sha512-ILdWj4XYtNOqxJaW22NEQx2gJsLfV5ncxYhhGX1a1H1lXl2Ta0gUz7QOnOoF1xQbJwWDjImi8gXN9mKdIf6n9g==", "dev": true }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/@yarnpkg/pnp": { @@ -27996,9 +26938,9 @@ } }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/got/node_modules/@types/cacheable-request/node_modules/@types/http-cache-semantics": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz", - "integrity": "sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", + "integrity": "sha512-V46MYLFp08Wf2mmaBhvgjStM3tPa+2GAdy/iqoX+noX1//zje2x4XmrIU0cAwyClATsTmahbtoQ2EwP7I5WSiA==", "dev": true }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/got/node_modules/@types/cacheable-request/node_modules/@types/keyv": { @@ -28011,9 +26953,9 @@ } }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/got/node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/4YQT5Kp6HxUDb4yhRkm0bJ7TbjvTddqX7PZ5hz6qV3pxSo72f/6YPRo+Mu2DU307tm9IioO69l7uAwn5XNcFA==", "dev": true, "dependencies": { "@types/node": "*" @@ -28123,9 +27065,9 @@ "dev": true }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/got/node_modules/cacheable-request/node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "dependencies": { "json-buffer": "3.0.1" @@ -28263,35 +27205,38 @@ } }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/node.extend": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-2.0.2.tgz", - "integrity": "sha512-pDT4Dchl94/+kkgdwyS2PauDFjZG0Hk0IcHIB+LkW27HLDtdoeMxHTxZh39DYbPP8UflWXWj9JcdDozF+YDOpQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-2.0.3.tgz", + "integrity": "sha512-xwADg/okH48PvBmRZyoX8i8GJaKuJ1CqlqotlZOhUio8egD1P5trJupHKBzcPjSF9ifK2gPcEICRBnkfPqQXZw==", "dev": true, "dependencies": { - "has": "^1.0.3", - "is": "^3.2.1" + "hasown": "^2.0.0", + "is": "^3.3.0" }, "engines": { "node": ">=0.4.0" } }, - "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/node.extend/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/node.extend/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, - "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/node.extend/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/node.extend/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign": { "version": "4.1.4", @@ -28312,58 +27257,115 @@ } }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/call-bind/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/call-bind/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/call-bind/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/call-bind/node_modules/get-intrinsic/node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/call-bind/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, - "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/call-bind/node_modules/get-intrinsic/node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/call-bind/node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/call-bind/node_modules/set-function-length/node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, "engines": { "node": ">= 0.4" + } + }, + "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/call-bind/node_modules/set-function-length/node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/call-bind/node_modules/set-function-length/node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -28387,9 +27389,9 @@ } }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/define-properties/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -28401,36 +27403,27 @@ } }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/has-proto": { @@ -28445,6 +27438,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/define-properties/node_modules/define-data-property/node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -28458,48 +27463,39 @@ } }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/define-properties/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/has-proto": { @@ -28514,6 +27510,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/core/node_modules/json-file-plus/node_modules/object.assign/node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -28988,9 +27996,9 @@ } }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/fslib/node_modules/@yarnpkg/libzip/node_modules/@types/emscripten": { - "version": "1.39.8", - "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.8.tgz", - "integrity": "sha512-Rk0HKcMXFUuqT32k1kXHZWgxiMvsyYsmlnjp0rLKa0MMoqXLE3T9dogDBTRfuc3SAsXu97KD3k4SKR1lHqd57w==", + "version": "1.39.9", + "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.9.tgz", + "integrity": "sha512-ILdWj4XYtNOqxJaW22NEQx2gJsLfV5ncxYhhGX1a1H1lXl2Ta0gUz7QOnOoF1xQbJwWDjImi8gXN9mKdIf6n9g==", "dev": true }, "node_modules/@yarnpkg/pnpify/node_modules/@yarnpkg/parsers": { @@ -29172,6 +28180,12 @@ "node": ">=0.10" } }, + "node_modules/@yarnpkg/pnpify/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "node_modules/@yarnpkg/pnpify/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -29243,42 +28257,42 @@ } }, "node_modules/csv": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/csv/-/csv-6.3.3.tgz", - "integrity": "sha512-TuOM1iZgdDiB6IuwJA8oqeu7g61d9CU9EQJGzCJ1AE03amPSh/UK5BMjAVx+qZUBb/1XEo133WHzWSwifa6Yqw==", + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/csv/-/csv-6.3.5.tgz", + "integrity": "sha512-Y+KTCAUljtq2JaGP42ZL1bymqlU5BkfnFpZhxRczGFDZox2VXhlRHnG5DRshyUrwQzmCdEiLjSqNldCfm1OVCA==", "dev": true, "dependencies": { - "csv-generate": "^4.2.8", - "csv-parse": "^5.5.0", - "csv-stringify": "^6.4.2", - "stream-transform": "^3.2.8" + "csv-generate": "^4.3.0", + "csv-parse": "^5.5.2", + "csv-stringify": "^6.4.4", + "stream-transform": "^3.2.10" }, "engines": { "node": ">= 0.1.90" } }, "node_modules/csv-stringify": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.4.2.tgz", - "integrity": "sha512-DXIdnnCUQYjDKTu6TgCSzRDiAuLxDjhl4ErFP9FGMF3wzBGOVMg9bZTLaUcYtuvhXgNbeXPKeaRfpgyqE4xySw==", + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.4.4.tgz", + "integrity": "sha512-NDshLupGa7gp4UG4sSNIqwYJqgSwvds0SvENntxoVoVvTzXcrHvd5gG2MWpbRpSNvk59dlmIe1IwNvSxN4IVmg==", "dev": true }, "node_modules/csv/node_modules/csv-generate": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-4.2.8.tgz", - "integrity": "sha512-qQ5CUs4I58kfo90EDBKjdp0SpJ3xWnN1Xk1lZ1ITvfvMtNRf+jrEP8tNPeEPiI9xJJ6Bd/km/1hMjyYlTpY42g==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-4.3.0.tgz", + "integrity": "sha512-7KdVId/2RgwPIKfWHaHtjBq7I9mgdi8ICzsUyIhP8is6UwpwVGGSC/aPnrZ8/SkgBcCP20lXrdPuP64Irs1VBg==", "dev": true }, "node_modules/csv/node_modules/csv-parse": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.5.0.tgz", - "integrity": "sha512-RxruSK3M4XgzcD7Trm2wEN+SJ26ChIb903+IWxNOcB5q4jT2Cs+hFr6QP39J05EohshRFEvyzEBoZ/466S2sbw==", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.5.2.tgz", + "integrity": "sha512-YRVtvdtUNXZCMyK5zd5Wty1W6dNTpGKdqQd4EQ8tl/c6KW1aMBB1Kg1ppky5FONKmEqGJ/8WjLlTNLPne4ioVA==", "dev": true }, "node_modules/csv/node_modules/stream-transform": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-3.2.8.tgz", - "integrity": "sha512-NUx0mBuI63KbNEEh9Yj0OzKB7iMOSTpkuODM2G7By+TTVihEIJ0cYp5X+pq/TdJRlsznt6CYR8HqxexyC6/bTw==", + "version": "3.2.10", + "resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-3.2.10.tgz", + "integrity": "sha512-Yu+x7zcWbWdyB0Td8dFzHt2JEyD6694CNq2lqh1rbuEBVxPtjb/GZ7xDnZcdYiU5E/RtufM54ClSEOzZDeWguA==", "dev": true }, "node_modules/deline": { @@ -29296,18 +28310,19 @@ } }, "node_modules/eslint": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz", - "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz", + "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.50.0", - "@humanwhocodes/config-array": "^0.11.11", + "@eslint/js": "8.52.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -29496,19 +28511,19 @@ "dev": true }, "node_modules/eslint-plugin-jsdoc/node_modules/spdx-expression-parse/node_modules/spdx-license-ids": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz", - "integrity": "sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, "node_modules/eslint-plugin-mocha": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.1.0.tgz", - "integrity": "sha512-xLqqWUF17llsogVOC+8C6/jvQ+4IoOREbN7ZCHuOHuD6cT5cDD4h7f2LgsZuzMAiwswWE21tO7ExaknHVDrSkw==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.2.0.tgz", + "integrity": "sha512-ZhdxzSZnd1P9LqDPF0DBcFLpRIGdh1zkF2JHnQklKQOvrQtT73kdP5K9V2mzvbLR+cCAO9OI48NXK/Ax9/ciCQ==", "dev": true, "dependencies": { "eslint-utils": "^3.0.0", - "rambda": "^7.1.0" + "rambda": "^7.4.0" }, "engines": { "node": ">=14.0.0" @@ -29563,9 +28578,9 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", - "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz", + "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0", @@ -30449,23 +29464,80 @@ } }, "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/call-bind/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/call-bind/node_modules/set-function-length": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/call-bind/node_modules/set-function-length/node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/call-bind/node_modules/set-function-length/node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/call-bind/node_modules/set-function-length/node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/define-properties": { "version": "1.2.1", @@ -30485,9 +29557,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/define-properties/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -30511,12 +29583,12 @@ } }, "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/define-properties/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -30532,26 +29604,26 @@ } }, "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", + "hasown": "^2.0.0", "internal-slot": "^1.0.5", "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", @@ -30561,7 +29633,7 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.5.1", @@ -30575,7 +29647,7 @@ "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -30631,14 +29703,14 @@ } }, "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/es-abstract/node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -30791,25 +29863,13 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/es-abstract/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/es-abstract/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -30839,20 +29899,35 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/es-abstract/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/es-abstract/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/es-abstract/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/es-abstract/node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -30982,9 +30057,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/es-abstract/node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -31049,9 +30124,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/es-abstract/node_modules/regexp.prototype.flags/node_modules/set-function-name/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -31375,13 +30450,13 @@ } }, "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/es-abstract/node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" @@ -31418,36 +30493,27 @@ } }, "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/get-intrinsic/node_modules/has-proto": { @@ -31474,6 +30540,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eslint-plugin-react/node_modules/array-includes/node_modules/is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -31535,49 +30613,41 @@ } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/call-bind/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/call-bind/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/call-bind/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/call-bind/node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/call-bind/node_modules/get-intrinsic/node_modules/has-proto": { @@ -31604,6 +30674,71 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/call-bind/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/call-bind/node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/call-bind/node_modules/set-function-length/node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/call-bind/node_modules/set-function-length/node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/call-bind/node_modules/set-function-length/node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/define-properties": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", @@ -31622,9 +30757,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/define-properties/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -31636,36 +30771,27 @@ } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/has-proto": { @@ -31692,6 +30818,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/define-properties/node_modules/define-data-property/node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -31705,48 +30843,39 @@ } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/define-properties/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/has-proto": { @@ -31773,6 +30902,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/define-properties/node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -31783,26 +30924,26 @@ } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", + "hasown": "^2.0.0", "internal-slot": "^1.0.5", "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", @@ -31812,7 +30953,7 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.5.1", @@ -31826,7 +30967,7 @@ "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -31882,14 +31023,14 @@ } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/es-abstract/node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -32000,25 +31141,28 @@ } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/es-abstract/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/es-abstract/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/es-abstract/node_modules/get-symbol-description": { "version": "1.0.0", @@ -32063,25 +31207,13 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/es-abstract/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/es-abstract/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -32111,20 +31243,35 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/es-abstract/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/es-abstract/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/es-abstract/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/es-abstract/node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -32284,9 +31431,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/es-abstract/node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -32351,9 +31498,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/es-abstract/node_modules/regexp.prototype.flags/node_modules/set-function-name/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -32677,13 +31824,13 @@ } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/es-abstract/node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" @@ -32720,31 +31867,34 @@ } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, - "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/es-shim-unscopables/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/es-shim-unscopables/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, - "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/es-shim-unscopables/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/eslint-plugin-react/node_modules/array.prototype.flatmap/node_modules/es-shim-unscopables/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted": { "version": "1.1.2", @@ -32760,23 +31910,80 @@ } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/call-bind/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/call-bind/node_modules/set-function-length": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/call-bind/node_modules/set-function-length/node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/call-bind/node_modules/set-function-length/node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/call-bind/node_modules/set-function-length/node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/define-properties": { "version": "1.2.1", @@ -32796,9 +32003,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/define-properties/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -32822,12 +32029,12 @@ } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/define-properties/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -32843,26 +32050,26 @@ } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", + "hasown": "^2.0.0", "internal-slot": "^1.0.5", "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", @@ -32872,7 +32079,7 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.5.1", @@ -32886,7 +32093,7 @@ "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -32942,14 +32149,14 @@ } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/es-abstract/node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -33102,25 +32309,13 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/es-abstract/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/es-abstract/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -33150,20 +32345,35 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/es-abstract/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/es-abstract/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/es-abstract/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/es-abstract/node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -33323,9 +32533,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/es-abstract/node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -33390,9 +32600,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/es-abstract/node_modules/regexp.prototype.flags/node_modules/set-function-name/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -33716,13 +32926,13 @@ } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/es-abstract/node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" @@ -33759,63 +32969,57 @@ } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, - "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/es-shim-unscopables/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/es-shim-unscopables/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, - "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/es-shim-unscopables/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/es-shim-unscopables/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/get-intrinsic/node_modules/has-proto": { @@ -33842,6 +33046,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/array.prototype.tosorted/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eslint-plugin-react/node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -33895,13 +33111,55 @@ } }, "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/call-bind/node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/call-bind/node_modules/set-function-length/node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/call-bind/node_modules/set-function-length/node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -33925,9 +33183,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/define-properties/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -33960,26 +33218,26 @@ } }, "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", + "hasown": "^2.0.0", "internal-slot": "^1.0.5", "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", @@ -33989,7 +33247,7 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.5.1", @@ -34003,7 +33261,7 @@ "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -34175,16 +33433,16 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/es-abstract/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/es-abstract/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/es-abstract/node_modules/is-array-buffer": { @@ -34326,9 +33584,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/es-abstract/node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -34393,9 +33651,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/es-abstract/node_modules/regexp.prototype.flags/node_modules/set-function-name/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -34695,13 +33953,13 @@ } }, "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/es-abstract/node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" @@ -34738,31 +33996,19 @@ } }, "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" } }, - "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/es-set-tostringtag/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/es-set-tostringtag/node_modules/has-tostringtag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", @@ -34778,37 +34024,52 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/es-set-tostringtag/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/globalthis": { @@ -34827,12 +34088,12 @@ } }, "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -34863,29 +34124,29 @@ } }, "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { "node": ">= 0.4" } }, - "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/internal-slot/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/internal-slot/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/internal-slot/node_modules/side-channel": { @@ -34903,9 +34164,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/internal-slot/node_modules/side-channel/node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -35257,13 +34518,13 @@ } }, "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/iterator.prototype/node_modules/reflect.getprototypeof/node_modules/which-builtin-type/node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" @@ -35335,9 +34596,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/es-iterator-helpers/node_modules/iterator.prototype/node_modules/set-function-name/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -35436,49 +34697,41 @@ } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/call-bind/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/call-bind/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/call-bind/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/call-bind/node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/call-bind/node_modules/get-intrinsic/node_modules/has-proto": { @@ -35505,6 +34758,71 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/call-bind/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/call-bind/node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/call-bind/node_modules/set-function-length/node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/call-bind/node_modules/set-function-length/node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/call-bind/node_modules/set-function-length/node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/define-properties": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", @@ -35523,9 +34841,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/define-properties/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -35537,36 +34855,27 @@ } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/has-proto": { @@ -35593,6 +34902,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/define-properties/node_modules/define-data-property/node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -35606,48 +34927,39 @@ } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/define-properties/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/has-proto": { @@ -35674,6 +34986,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/define-properties/node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -35684,26 +35008,26 @@ } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", + "hasown": "^2.0.0", "internal-slot": "^1.0.5", "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", @@ -35713,7 +35037,7 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.5.1", @@ -35727,7 +35051,7 @@ "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -35783,14 +35107,14 @@ } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/es-abstract/node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -35901,25 +35225,28 @@ } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/es-abstract/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/es-abstract/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/es-abstract/node_modules/get-symbol-description": { "version": "1.0.0", @@ -35964,25 +35291,13 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/es-abstract/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/es-abstract/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -36012,20 +35327,35 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/es-abstract/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/es-abstract/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/es-abstract/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/es-abstract/node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -36185,9 +35515,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/es-abstract/node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -36234,9 +35564,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/es-abstract/node_modules/regexp.prototype.flags/node_modules/set-function-name/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -36560,13 +35890,13 @@ } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/es-abstract/node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" @@ -36603,31 +35933,34 @@ } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, - "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/es-shim-unscopables/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/es-shim-unscopables/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, - "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/es-shim-unscopables/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/array.prototype.flat/node_modules/es-shim-unscopables/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign": { "version": "4.1.4", @@ -36648,58 +35981,115 @@ } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/call-bind/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/call-bind/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/call-bind/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/call-bind/node_modules/get-intrinsic/node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/call-bind/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, - "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/call-bind/node_modules/get-intrinsic/node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/call-bind/node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, "engines": { "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/call-bind/node_modules/set-function-length/node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/call-bind/node_modules/set-function-length/node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/call-bind/node_modules/set-function-length/node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -36723,9 +36113,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/define-properties/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -36737,36 +36127,27 @@ } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/has-proto": { @@ -36781,6 +36162,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/define-properties/node_modules/define-data-property/node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -36794,48 +36187,39 @@ } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/define-properties/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/has-proto": { @@ -36850,6 +36234,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eslint-plugin-react/node_modules/jsx-ast-utils/node_modules/object.assign/node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -36886,49 +36282,41 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/call-bind/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/call-bind/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/call-bind/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/call-bind/node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/call-bind/node_modules/get-intrinsic/node_modules/has-proto": { @@ -36955,6 +36343,71 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/call-bind/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/call-bind/node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/call-bind/node_modules/set-function-length/node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/call-bind/node_modules/set-function-length/node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/call-bind/node_modules/set-function-length/node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/define-properties": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", @@ -36973,9 +36426,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/define-properties/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -36987,36 +36440,27 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/has-proto": { @@ -37043,6 +36487,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/define-properties/node_modules/define-data-property/node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -37056,48 +36512,39 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/define-properties/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/has-proto": { @@ -37124,6 +36571,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/define-properties/node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -37134,26 +36593,26 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", + "hasown": "^2.0.0", "internal-slot": "^1.0.5", "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", @@ -37163,7 +36622,7 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.5.1", @@ -37177,7 +36636,7 @@ "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -37233,14 +36692,14 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/es-abstract/node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -37351,25 +36810,28 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/es-abstract/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/es-abstract/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/es-abstract/node_modules/get-symbol-description": { "version": "1.0.0", @@ -37414,25 +36876,13 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/es-abstract/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/es-abstract/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -37462,20 +36912,35 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/es-abstract/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/es-abstract/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/es-abstract/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/es-abstract/node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -37635,9 +37100,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/es-abstract/node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -37702,9 +37167,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/es-abstract/node_modules/regexp.prototype.flags/node_modules/set-function-name/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -38028,13 +37493,13 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.entries/node_modules/es-abstract/node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" @@ -38088,49 +37553,41 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/call-bind/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/call-bind/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/call-bind/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/call-bind/node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/call-bind/node_modules/get-intrinsic/node_modules/has-proto": { @@ -38157,6 +37614,71 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/call-bind/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/call-bind/node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/call-bind/node_modules/set-function-length/node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/call-bind/node_modules/set-function-length/node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/call-bind/node_modules/set-function-length/node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/define-properties": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", @@ -38175,9 +37697,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/define-properties/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -38189,36 +37711,27 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/has-proto": { @@ -38245,6 +37758,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/define-properties/node_modules/define-data-property/node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -38258,48 +37783,39 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/define-properties/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/has-proto": { @@ -38326,6 +37842,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/define-properties/node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -38336,26 +37864,26 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", + "hasown": "^2.0.0", "internal-slot": "^1.0.5", "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", @@ -38365,7 +37893,7 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.5.1", @@ -38379,7 +37907,7 @@ "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -38435,14 +37963,14 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/es-abstract/node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -38553,25 +38081,28 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/es-abstract/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/es-abstract/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/es-abstract/node_modules/get-symbol-description": { "version": "1.0.0", @@ -38616,25 +38147,13 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/es-abstract/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/es-abstract/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -38664,20 +38183,35 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/es-abstract/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/es-abstract/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/es-abstract/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/es-abstract/node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -38837,9 +38371,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/es-abstract/node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -38904,9 +38438,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/es-abstract/node_modules/regexp.prototype.flags/node_modules/set-function-name/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -39230,13 +38764,13 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.fromentries/node_modules/es-abstract/node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" @@ -39303,9 +38837,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/define-properties/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -39317,36 +38851,27 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/has-proto": { @@ -39373,6 +38898,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/define-properties/node_modules/define-data-property/node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -39386,48 +38923,39 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/define-properties/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/has-proto": { @@ -39454,6 +38982,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/define-properties/node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -39464,26 +39004,26 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", + "hasown": "^2.0.0", "internal-slot": "^1.0.5", "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", @@ -39493,7 +39033,7 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.5.1", @@ -39507,7 +39047,7 @@ "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -39563,33 +39103,66 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/es-abstract/node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/es-abstract/node_modules/call-bind/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/es-abstract/node_modules/call-bind/node_modules/set-function-length": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/es-abstract/node_modules/call-bind/node_modules/set-function-length/node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/es-abstract/node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -39700,25 +39273,28 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/es-abstract/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/es-abstract/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/es-abstract/node_modules/get-symbol-description": { "version": "1.0.0", @@ -39763,25 +39339,13 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/es-abstract/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/es-abstract/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -39811,20 +39375,35 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/es-abstract/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/es-abstract/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/es-abstract/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/es-abstract/node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -39984,9 +39563,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/es-abstract/node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -40051,9 +39630,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/es-abstract/node_modules/regexp.prototype.flags/node_modules/set-function-name/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -40377,13 +39956,13 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.hasown/node_modules/es-abstract/node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" @@ -40437,49 +40016,41 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/call-bind/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/call-bind/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/call-bind/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/call-bind/node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/call-bind/node_modules/get-intrinsic/node_modules/has-proto": { @@ -40506,6 +40077,71 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/call-bind/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/call-bind/node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/call-bind/node_modules/set-function-length/node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/call-bind/node_modules/set-function-length/node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/call-bind/node_modules/set-function-length/node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/define-properties": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", @@ -40524,9 +40160,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/define-properties/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -40538,36 +40174,27 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/has-proto": { @@ -40594,6 +40221,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/define-properties/node_modules/define-data-property/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/define-properties/node_modules/define-data-property/node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -40607,48 +40246,39 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/define-properties/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/has-proto": { @@ -40675,6 +40305,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/define-properties/node_modules/has-property-descriptors/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/define-properties/node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -40685,26 +40327,26 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", + "hasown": "^2.0.0", "internal-slot": "^1.0.5", "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", @@ -40714,7 +40356,7 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.5.1", @@ -40728,7 +40370,7 @@ "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -40784,14 +40426,14 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/es-abstract/node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -40902,25 +40544,28 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/es-abstract/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/es-abstract/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/es-abstract/node_modules/get-symbol-description": { "version": "1.0.0", @@ -40965,25 +40610,13 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/es-abstract/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/es-abstract/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -41013,20 +40646,35 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/es-abstract/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/es-abstract/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/es-abstract/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/es-abstract/node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -41186,9 +40834,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/es-abstract/node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -41253,9 +40901,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/es-abstract/node_modules/regexp.prototype.flags/node_modules/set-function-name/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -41579,13 +41227,13 @@ } }, "node_modules/eslint-plugin-react/node_modules/object.values/node_modules/es-abstract/node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" @@ -41666,12 +41314,12 @@ "dev": true }, "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -41683,34 +41331,37 @@ } }, "node_modules/eslint-plugin-react/node_modules/resolve/node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/resolve/node_modules/is-core-module/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/eslint-plugin-react/node_modules/resolve/node_modules/is-core-module/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, - "node_modules/eslint-plugin-react/node_modules/resolve/node_modules/is-core-module/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/eslint-plugin-react/node_modules/resolve/node_modules/is-core-module/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/resolve/node_modules/path-parse": { "version": "1.0.7", @@ -41760,23 +41411,80 @@ } }, "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/call-bind/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/call-bind/node_modules/set-function-length": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/call-bind/node_modules/set-function-length/node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/call-bind/node_modules/set-function-length/node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/call-bind/node_modules/set-function-length/node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/define-properties": { "version": "1.2.1", @@ -41796,9 +41504,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/define-properties/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -41822,12 +41530,12 @@ } }, "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/define-properties/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -41843,26 +41551,26 @@ } }, "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", + "hasown": "^2.0.0", "internal-slot": "^1.0.5", "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", @@ -41872,7 +41580,7 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.5.1", @@ -41886,7 +41594,7 @@ "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -41942,14 +41650,14 @@ } }, "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/es-abstract/node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -42102,25 +41810,13 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/es-abstract/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/es-abstract/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -42138,11 +41834,26 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/es-abstract/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/es-abstract/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/es-abstract/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/es-abstract/node_modules/is-array-buffer": { "version": "3.0.2", @@ -42283,9 +41994,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/es-abstract/node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -42622,13 +42333,13 @@ } }, "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/es-abstract/node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" @@ -42665,36 +42376,27 @@ } }, "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/get-intrinsic/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/get-intrinsic/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/get-intrinsic/node_modules/has-proto": { @@ -42709,6 +42411,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/get-intrinsic/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -42722,36 +42436,39 @@ } }, "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { "node": ">= 0.4" } }, - "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/internal-slot/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/internal-slot/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, - "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/internal-slot/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/internal-slot/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/regexp.prototype.flags": { "version": "1.5.1", @@ -42785,9 +42502,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/set-function-name/node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -42820,12 +42537,12 @@ } }, "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/set-function-name/node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -42846,9 +42563,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/string.prototype.matchall/node_modules/side-channel/node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -42900,9 +42617,9 @@ } }, "node_modules/eslint/node_modules/@eslint-community/regexpp": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", - "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -42990,21 +42707,21 @@ } }, "node_modules/eslint/node_modules/@eslint/js": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz", - "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz", + "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/eslint/node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", "minimatch": "^3.0.5" }, @@ -43013,9 +42730,9 @@ } }, "node_modules/eslint/node_modules/@humanwhocodes/config-array/node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, "node_modules/eslint/node_modules/@humanwhocodes/module-importer": { @@ -43128,6 +42845,12 @@ "node": ">=0.10.0" } }, + "node_modules/eslint/node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/eslint/node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -43166,9 +42889,9 @@ } }, "node_modules/eslint/node_modules/ajv/node_modules/uri-js/node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "engines": { "node": ">=6" @@ -43353,9 +43076,9 @@ } }, "node_modules/eslint/node_modules/espree/node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -43422,12 +43145,12 @@ } }, "node_modules/eslint/node_modules/file-entry-cache/node_modules/flat-cache": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", - "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", + "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", "dev": true, "dependencies": { - "flatted": "^3.2.7", + "flatted": "^3.2.9", "keyv": "^4.5.3", "rimraf": "^3.0.2" }, @@ -43442,9 +43165,9 @@ "dev": true }, "node_modules/eslint/node_modules/file-entry-cache/node_modules/flat-cache/node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "dependencies": { "json-buffer": "3.0.1" @@ -43638,9 +43361,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.22.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", - "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -44060,6 +43783,7 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -44074,6 +43798,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, "engines": { "node": ">= 4.0.0" } @@ -44081,12 +43806,14 @@ "node_modules/fs-extra/node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true }, "node_modules/fs-extra/node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, "dependencies": { "universalify": "^2.0.0" }, @@ -44095,9 +43822,10 @@ } }, "node_modules/fs-extra/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, "engines": { "node": ">= 10.0.0" } @@ -44211,9 +43939,9 @@ } }, "node_modules/husky/node_modules/cosmiconfig/node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.1.tgz", + "integrity": "sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng==", "dev": true }, "node_modules/husky/node_modules/cosmiconfig/node_modules/import-fresh": { @@ -44801,6 +44529,12 @@ "node": ">=0.8.0" } }, + "node_modules/inquirer/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "node_modules/inquirer/node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", @@ -45145,10 +44879,10 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/lodash": { + "node_modules/lodash-es": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, "node_modules/markdown-link-check": { "version": "3.11.2", @@ -45248,9 +44982,9 @@ } }, "node_modules/markdown-link-check/node_modules/link-check/node_modules/isemail/node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "engines": { "node": ">=6" @@ -45262,6 +44996,12 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "node_modules/markdown-link-check/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "node_modules/markdown-link-check/node_modules/markdown-link-extractor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/markdown-link-extractor/-/markdown-link-extractor-3.1.0.tgz", @@ -45611,9 +45351,9 @@ "dev": true }, "node_modules/markdown-link-check/node_modules/needle/node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", "dev": true }, "node_modules/markdown-link-check/node_modules/progress": { @@ -45702,6 +45442,12 @@ "lodash": "^4.17.14" } }, + "node_modules/npm-license-crawler/node_modules/async/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "node_modules/npm-license-crawler/node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -46303,6 +46049,276 @@ "node": ">=0.10.0" } }, + "node_modules/rollup": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.2.0.tgz", + "integrity": "sha512-deaMa9Z+jPVeBD2dKXv+h7EbdKte9++V2potc/ADqvVgEr6DEJ3ia9u0joarjC2lX/ubaCRYz3QVx0TzuVqAJA==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.2.0", + "@rollup/rollup-android-arm64": "4.2.0", + "@rollup/rollup-darwin-arm64": "4.2.0", + "@rollup/rollup-darwin-x64": "4.2.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.2.0", + "@rollup/rollup-linux-arm64-gnu": "4.2.0", + "@rollup/rollup-linux-arm64-musl": "4.2.0", + "@rollup/rollup-linux-x64-gnu": "4.2.0", + "@rollup/rollup-linux-x64-musl": "4.2.0", + "@rollup/rollup-win32-arm64-msvc": "4.2.0", + "@rollup/rollup-win32-ia32-msvc": "4.2.0", + "@rollup/rollup-win32-x64-msvc": "4.2.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-natives": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/rollup-plugin-natives/-/rollup-plugin-natives-0.7.8.tgz", + "integrity": "sha512-lsbwS9hL9fWzfyqQNBXRyasT37RNJxn2Dwn7VdDfLzV22DObu0cMv99JSBc5Y7sn3zSn4rvrBdivPgJzy1cl0A==", + "dev": true, + "dependencies": { + "fs-extra": "^11.1.1", + "magic-string": "^0.30.2" + }, + "peerDependencies": { + "rollup": ">=0.56.0" + } + }, + "node_modules/rollup-plugin-natives/node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/rollup-plugin-natives/node_modules/fs-extra/node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/rollup-plugin-natives/node_modules/fs-extra/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/rollup-plugin-natives/node_modules/fs-extra/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/rollup-plugin-natives/node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/rollup-plugin-natives/node_modules/magic-string/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/rollup/node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.2.0.tgz", + "integrity": "sha512-8PlggAxGxavr+pkCNeV1TM2wTb2o+cUWDg9M1cm9nR27Dsn287uZtSLYXoQqQcmq+sYfF7lHfd3sWJJinH9GmA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-android-arm64": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.2.0.tgz", + "integrity": "sha512-+71T85hbMFrJI+zKQULNmSYBeIhru55PYoF/u75MyeN2FcxE4HSPw20319b+FcZ4lWx2Nx/Ql9tN+hoaD3GH/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.2.0.tgz", + "integrity": "sha512-IIIQLuG43QIElT1JZqUP/zqIdiJl4t9U/boa0GZnQTw9m1X0k3mlBuysbgYXeloLT1RozdL7bgw4lpSaI8GOXw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-darwin-x64": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.2.0.tgz", + "integrity": "sha512-BXcXvnLaea1Xz900omrGJhxHFJfH9jZ0CpJuVsbjjhpniJ6qiLXz3xA8Lekaa4MuhFcJd4f0r+Ky1G4VFbYhWw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.2.0.tgz", + "integrity": "sha512-f4K3MKw9Y4AKi4ANGnmPIglr+S+8tO858YrGVuqAHXxJdVghBmz9CPU9kDpOnGvT4g4vg5uNyIFpOOFvffXyMA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.2.0.tgz", + "integrity": "sha512-bNsTYQBgp4H7w6cT7FZhesxpcUPahsSIy4NgdZjH1ZwEoZHxi4XKglj+CsSEkhsKi+x6toVvMylhjRKhEMYfnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.2.0.tgz", + "integrity": "sha512-Jp1NxBJpGLuxRU2ihrQk4IZ+ia5nffobG6sOFUPW5PMYkF0kQtxEbeDuCa69Xif211vUOcxlOnf5IOEIpTEySA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.2.0.tgz", + "integrity": "sha512-3p3iRtQmv2aXw+vtKNyZMLOQ+LSRsqArXjKAh2Oj9cqwfIRe7OXvdkOzWfZOIp1F/x5KJzVAxGxnniF4cMbnsQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.2.0.tgz", + "integrity": "sha512-atih7IF/reUZe4LBLC5Izd44hth2tfDIG8LaPp4/cQXdHh9jabcZEvIeRPrpDq0i/Uu487Qu5gl5KwyAnWajnw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.2.0.tgz", + "integrity": "sha512-vYxF3tKJeUE4ceYzpNe2p84RXk/fGK30I8frpRfv/MyPStej/mRlojztkN7Jtd1014HHVeq/tYaMBz/3IxkxZw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.2.0.tgz", + "integrity": "sha512-1LZJ6zpl93SaPQvas618bMFarVwufWTaczH4ESAbFcwiC4OtznA6Ym+hFPyIGaJaGEB8uMWWac0uXGPXOg5FGA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.2.0.tgz", + "integrity": "sha512-dgQfFdHCNg08nM5zBmqxqc9vrm0DVzhWotpavbPa0j4//MAOKZEB75yGAfzQE9fUJ+4pvM1239Y4IhL8f6sSog==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/rollup/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -46460,9 +46476,9 @@ } }, "node_modules/shx/node_modules/shelljs/node_modules/rechoir/node_modules/resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { "is-core-module": "^2.13.0", @@ -46477,34 +46493,37 @@ } }, "node_modules/shx/node_modules/shelljs/node_modules/rechoir/node_modules/resolve/node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/shx/node_modules/shelljs/node_modules/rechoir/node_modules/resolve/node_modules/is-core-module/node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/shx/node_modules/shelljs/node_modules/rechoir/node_modules/resolve/node_modules/is-core-module/node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, - "node_modules/shx/node_modules/shelljs/node_modules/rechoir/node_modules/resolve/node_modules/is-core-module/node_modules/has/node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/shx/node_modules/shelljs/node_modules/rechoir/node_modules/resolve/node_modules/is-core-module/node_modules/hasown/node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/shx/node_modules/shelljs/node_modules/rechoir/node_modules/resolve/node_modules/path-parse": { "version": "1.0.7", @@ -46665,9 +46684,9 @@ "dev": true }, "node_modules/ts-node/node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -46677,9 +46696,9 @@ } }, "node_modules/ts-node/node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", + "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", "dev": true, "engines": { "node": ">=0.4.0" @@ -47034,30 +47053,30 @@ } }, "plugins/conftest-container/node_modules/@types/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", + "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==", "dev": true }, "plugins/conftest-container/node_modules/@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.3.tgz", + "integrity": "sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ==", "dev": true }, "plugins/conftest-container/node_modules/chai": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", - "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.0.8" }, "engines": { "node": ">=4" @@ -47073,10 +47092,13 @@ } }, "plugins/conftest-container/node_modules/chai/node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -47103,12 +47125,12 @@ } }, "plugins/conftest-container/node_modules/chai/node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "plugins/conftest-container/node_modules/chai/node_modules/pathval": { @@ -48009,30 +48031,30 @@ } }, "plugins/conftest-kubernetes/node_modules/@types/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", + "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==", "dev": true }, "plugins/conftest-kubernetes/node_modules/@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.3.tgz", + "integrity": "sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ==", "dev": true }, "plugins/conftest-kubernetes/node_modules/chai": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", - "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.0.8" }, "engines": { "node": ">=4" @@ -48048,10 +48070,13 @@ } }, "plugins/conftest-kubernetes/node_modules/chai/node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -48078,12 +48103,12 @@ } }, "plugins/conftest-kubernetes/node_modules/chai/node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "plugins/conftest-kubernetes/node_modules/chai/node_modules/pathval": { @@ -48938,30 +48963,30 @@ } }, "plugins/conftest/node_modules/@types/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", + "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==", "dev": true }, "plugins/conftest/node_modules/@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.3.tgz", + "integrity": "sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ==", "dev": true }, "plugins/conftest/node_modules/chai": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", - "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.0.8" }, "engines": { "node": ">=4" @@ -48977,10 +49002,13 @@ } }, "plugins/conftest/node_modules/chai/node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -49007,12 +49035,12 @@ } }, "plugins/conftest/node_modules/chai/node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "plugins/conftest/node_modules/chai/node_modules/pathval": { @@ -49877,14 +49905,14 @@ "execa": "^5.1.1", "fast-copy": "^3.0.1", "fs-extra": "^11.1.0", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "split2": "^4.1.0" }, "devDependencies": { "@types/async-lock": "^1.4.0", "@types/chai": "^4.3.4", "@types/fs-extra": "^11.0.1", - "@types/lodash": "^4.14.191", + "@types/lodash-es": "^4.17.9", "@types/mocha": "^10.0.1", "@types/node": "^18", "chai": "^4.3.7", @@ -49894,21 +49922,21 @@ } }, "plugins/jib/node_modules/@types/async-lock": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@types/async-lock/-/async-lock-1.4.0.tgz", - "integrity": "sha512-2+rYSaWrpdbQG3SA0LmMT6YxWLrI81AqpMlSkw3QtFc2HGDufkweQSn30Eiev7x9LL0oyFrBqk1PXOnB9IEgKg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@types/async-lock/-/async-lock-1.4.1.tgz", + "integrity": "sha512-tpYc9kp2I8eI6qcDWtD2023jIlJYz6030qR1S5WhRbTK/JJcYdJ8fb2dRKPRgqioxcPZfTPmzl/PemHIPCrA9g==", "dev": true }, "plugins/jib/node_modules/@types/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", + "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==", "dev": true }, "plugins/jib/node_modules/@types/fs-extra": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.2.tgz", - "integrity": "sha512-c0hrgAOVYr21EX8J0jBMXGLMgJqVf/v6yxi0dLaJboW9aQPh16Id+z6w2Tx1hm+piJOLv8xPfVKZCLfjPw/IMQ==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.3.tgz", + "integrity": "sha512-sF59BlXtUdzEAL1u0MSvuzWd7PdZvZEtnaVkzX5mjpdWTJ8brG0jUqve3jPCzSzvAKKMHTG8F8o/WMQLtleZdQ==", "dev": true, "dependencies": { "@types/jsonfile": "*", @@ -49916,18 +49944,18 @@ } }, "plugins/jib/node_modules/@types/fs-extra/node_modules/@types/jsonfile": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.2.tgz", - "integrity": "sha512-8t92P+oeW4d/CRQfJaSqEwXujrhH4OEeHRjGU3v1Q8mUS8GPF3yiX26sw4svv6faL2HfBtGTe2xWIoVgN3dy9w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.3.tgz", + "integrity": "sha512-/yqTk2SZ1wIezK0hiRZD7RuSf4B3whFxFamB1kGStv+8zlWScTMcHanzfc0XKWs5vA1TkHeckBlOyM8jxU8nHA==", "dev": true, "dependencies": { "@types/node": "*" } }, "plugins/jib/node_modules/@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.3.tgz", + "integrity": "sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ==", "dev": true }, "plugins/jib/node_modules/async-lock": { @@ -49936,18 +49964,18 @@ "integrity": "sha512-coglx5yIWuetakm3/1dsX9hxCNox22h7+V80RQOu2XUUMidtArxKoZoOtHUPuR84SycKTXzgGzAUR5hJxujyJQ==" }, "plugins/jib/node_modules/chai": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", - "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.0.8" }, "engines": { "node": ">=4" @@ -49963,10 +49991,13 @@ } }, "plugins/jib/node_modules/chai/node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -49993,12 +50024,12 @@ } }, "plugins/jib/node_modules/chai/node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "plugins/jib/node_modules/chai/node_modules/pathval": { @@ -50224,9 +50255,9 @@ } }, "plugins/jib/node_modules/fs-extra/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { "node": ">= 10.0.0" } @@ -51093,6 +51124,7 @@ "fs-extra": "^11.1.0", "js-yaml": "^4.1.0", "json-merge-patch": "^1.0.2", + "lodash-es": "^4.17.21", "slash": "^3.0.0", "which": "^3.0.0" }, @@ -51108,9 +51140,9 @@ } }, "plugins/pulumi/node_modules/@types/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", + "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==", "dev": true }, "plugins/pulumi/node_modules/@types/json-merge-patch": { @@ -51120,24 +51152,24 @@ "dev": true }, "plugins/pulumi/node_modules/@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.3.tgz", + "integrity": "sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ==", "dev": true }, "plugins/pulumi/node_modules/chai": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", - "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.0.8" }, "engines": { "node": ">=4" @@ -51153,10 +51185,13 @@ } }, "plugins/pulumi/node_modules/chai/node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -51183,12 +51218,12 @@ } }, "plugins/pulumi/node_modules/chai/node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "plugins/pulumi/node_modules/chai/node_modules/pathval": { @@ -51239,9 +51274,9 @@ } }, "plugins/pulumi/node_modules/fs-extra/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { "node": ">= 10.0.0" } @@ -52119,6 +52154,7 @@ "chalk": "^4.1.0", "execa": "^4.0.3", "fs-extra": "^11.1.0", + "lodash-es": "^4.17.21", "slash": "^3.0.0", "which": "^3.0.0" }, @@ -52136,24 +52172,24 @@ } }, "plugins/terraform/node_modules/@types/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", + "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==", "dev": true }, "plugins/terraform/node_modules/chai": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", - "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.0.8" }, "engines": { "node": ">=4" @@ -52169,10 +52205,13 @@ } }, "plugins/terraform/node_modules/chai/node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -52199,12 +52238,12 @@ } }, "plugins/terraform/node_modules/chai/node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "plugins/terraform/node_modules/chai/node_modules/pathval": { @@ -52255,9 +52294,9 @@ } }, "plugins/terraform/node_modules/fs-extra/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { "node": ">= 10.0.0" } diff --git a/package.json b/package.json index 9ae23ed5c2..42497e4269 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "name": "garden", "description": "A full-featured development framework for containers and serverless", + "type": "module", "repository": { "type": "git", "url": "git+https://github.com/garden-io/garden.git" @@ -17,9 +18,14 @@ "devDependencies": { "@commitlint/cli": "^17.6.7", "@commitlint/config-conventional": "^17.6.7", - "@types/bluebird": "^3.5.32", + "@rollup/plugin-commonjs": "^25.0.5", + "@rollup/plugin-esm-shim": "^0.1.3", + "@rollup/plugin-json": "^6.0.1", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-replace": "^5.0.3", + "@rollup/plugin-url": "^8.0.2", "@types/fs-extra": "^9.0.1", - "@types/lodash": "^4.14.153", + "@types/lodash-es": "^4.17.9", "@types/node": "^18", "@types/prettier": "2.7.3", "@types/semver": "^7.5.0", @@ -47,7 +53,7 @@ "handlebars": "^4.7.6", "husky": "^4.2.5", "inquirer": "^8.2.6", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "markdown-link-check": "^3.11.2", "minimatch": "^3.0.4", "minimist": "^1.2.6", @@ -55,6 +61,8 @@ "npm-license-crawler": "^0.2.1", "prettier": "3.0.0", "replace-in-file": "^6.0.0", + "rollup": "^4.0.2", + "rollup-plugin-natives": "^0.7.8", "semver": "^7.5.4", "shx": "^0.3.2", "split2": "^4.1.0", @@ -79,6 +87,7 @@ "clean-node-modules": "find . -name \"node_modules\" -type d -prune -exec rm -rf '{}' '+'", "dev": "./scripts/run-script.ts dev --parallel", "dist": "node cli/build/src/build-pkg.js", + "rollup": "node --max-old-space-size=4096 node_modules/rollup/dist/bin/rollup --config", "e2e": "./bin/garden test e2e-tests", "e2e-project": "cd e2e; npm run e2e-project --", "fix-format": "./scripts/run-script.ts fix-format --no-bail --parallel", diff --git a/plugins/conftest-container/package.json b/plugins/conftest-container/package.json index 1d2014fe25..ab66e0ed7a 100644 --- a/plugins/conftest-container/package.json +++ b/plugins/conftest-container/package.json @@ -2,6 +2,7 @@ "name": "@garden-io/garden-conftest-container", "version": "0.13.18", "description": "Auto-generator for the conftest plugin and Garden container modules", + "type": "module", "main": "build/src/index.js", "dependencies": { "@garden-io/core": "*", diff --git a/plugins/conftest-container/src/index.ts b/plugins/conftest-container/src/index.ts index f52dd8f23f..085ab37c90 100644 --- a/plugins/conftest-container/src/index.ts +++ b/plugins/conftest-container/src/index.ts @@ -7,8 +7,8 @@ */ import { createGardenPlugin } from "@garden-io/sdk" -import { ConftestProvider } from "@garden-io/garden-conftest/build/src" -import { dedent } from "@garden-io/sdk/build/src/util/string" +import type { ConftestProvider } from "@garden-io/garden-conftest/build/src/index.js" +import { dedent } from "@garden-io/sdk/build/src/util/string.js" /** * Auto-generates a conftest module for each container module in your project diff --git a/plugins/conftest-container/test/conftest-container.ts b/plugins/conftest-container/test/conftest-container.ts index 0248785b9d..e5e7ed80dd 100644 --- a/plugins/conftest-container/test/conftest-container.ts +++ b/plugins/conftest-container/test/conftest-container.ts @@ -7,20 +7,24 @@ */ import { expect } from "chai" -import { join } from "path" +import { dirname, join } from "node:path" import { createGardenPlugin } from "@garden-io/sdk" -import { makeTestGarden } from "@garden-io/sdk/build/src/testing" -import { gardenPlugin } from "../src" -import { gardenPlugin as conftestPlugin } from "@garden-io/garden-conftest/build/src" +import { makeTestGarden } from "@garden-io/sdk/build/src/testing.js" +import { gardenPlugin } from "../src/index.js" +import { gardenPlugin as conftestPlugin } from "@garden-io/garden-conftest/build/src/index.js" -import { ProjectConfig, defaultNamespace } from "@garden-io/core/build/src/config/project" -import { defaultDotIgnoreFile } from "@garden-io/core/build/src/util/fs" -import { defaultDockerfileName } from "@garden-io/core/build/src/plugins/container/config" -import { DEFAULT_BUILD_TIMEOUT_SEC, GardenApiVersion } from "@garden-io/core/build/src/constants" +import type { ProjectConfig } from "@garden-io/core/build/src/config/project.js" +import { defaultNamespace } from "@garden-io/core/build/src/config/project.js" +import { defaultDotIgnoreFile } from "@garden-io/core/build/src/util/fs.js" +import { defaultDockerfileName } from "@garden-io/core/build/src/plugins/container/config.js" +import { DEFAULT_BUILD_TIMEOUT_SEC, GardenApiVersion } from "@garden-io/core/build/src/constants.js" +import { fileURLToPath } from "node:url" + +const moduleDirName = dirname(fileURLToPath(import.meta.url)) describe.skip("conftest-container provider", () => { - const projectRoot = join(__dirname, "test-project") + const projectRoot = join(moduleDirName, "test-project") const projectConfig: ProjectConfig = { apiVersion: GardenApiVersion.v1, diff --git a/plugins/conftest-container/tsconfig.json b/plugins/conftest-container/tsconfig.json index cb5e35d5b6..4ebf652ba0 100644 --- a/plugins/conftest-container/tsconfig.json +++ b/plugins/conftest-container/tsconfig.json @@ -6,7 +6,9 @@ ], "compilerOptions": { "composite": true, - "outDir": "build" + "outDir": "build", + "module": "nodenext", + "moduleResolution": "nodenext" }, "references": [ { diff --git a/plugins/conftest-kubernetes/package.json b/plugins/conftest-kubernetes/package.json index 15673c0a62..cf401fcad1 100644 --- a/plugins/conftest-kubernetes/package.json +++ b/plugins/conftest-kubernetes/package.json @@ -2,6 +2,7 @@ "name": "@garden-io/garden-conftest-kubernetes", "version": "0.13.18", "description": "Auto-generator for the conftest plugin and Garden kubernetes/helm modules", + "type": "module", "main": "build/src/index.js", "private": true, "dependencies": { diff --git a/plugins/conftest-kubernetes/src/index.ts b/plugins/conftest-kubernetes/src/index.ts index 7ec59dbd4f..d4eb89d529 100644 --- a/plugins/conftest-kubernetes/src/index.ts +++ b/plugins/conftest-kubernetes/src/index.ts @@ -9,11 +9,11 @@ import slash from "slash" import { relative, resolve } from "path" import { createGardenPlugin } from "@garden-io/sdk" -import { ConftestProvider } from "@garden-io/garden-conftest/build/src" +import type { ConftestProvider } from "@garden-io/garden-conftest/build/src/index.js" // TODO: remove direct references to @garden-io/core -import { dedent } from "@garden-io/core/build/src/util/string" -import { getGitHubUrl } from "@garden-io/core/build/src/docs/common" +import { dedent } from "@garden-io/core/build/src/util/string.js" +import { getGitHubUrl } from "@garden-io/core/build/src/docs/common.js" const gitHubUrl = getGitHubUrl("examples/conftest") diff --git a/plugins/conftest-kubernetes/test/conftest-kubernetes.ts b/plugins/conftest-kubernetes/test/conftest-kubernetes.ts index 4d79aeac23..3c9a87a69b 100644 --- a/plugins/conftest-kubernetes/test/conftest-kubernetes.ts +++ b/plugins/conftest-kubernetes/test/conftest-kubernetes.ts @@ -8,17 +8,20 @@ import { expect } from "chai" import stripAnsi from "strip-ansi" -import { join } from "path" +import { dirname, join } from "node:path" -import { gardenPlugin } from "../src" -import { gardenPlugin as conftestPlugin } from "@garden-io/garden-conftest/build/src" -import { dedent } from "@garden-io/sdk/build/src/util/string" -import { makeTestGarden } from "@garden-io/sdk/build/src/testing" +import { gardenPlugin } from "../src/index.js" +import { gardenPlugin as conftestPlugin } from "@garden-io/garden-conftest/build/src/index.js" +import { dedent } from "@garden-io/sdk/build/src/util/string.js" +import { makeTestGarden } from "@garden-io/sdk/build/src/testing.js" -import { TestTask } from "@garden-io/core/build/src/tasks/test" +import { TestTask } from "@garden-io/core/build/src/tasks/test.js" +import { fileURLToPath } from "node:url" + +const moduleDirName = dirname(fileURLToPath(import.meta.url)) describe.skip("conftest-kubernetes provider", () => { - const projectRoot = join(__dirname, "test-project") + const projectRoot = join(moduleDirName, "test-project") it("should add a conftest module for each helm module, and add runtime dependencies as necessary", async () => { const garden = await makeTestGarden(projectRoot, { diff --git a/plugins/conftest-kubernetes/tsconfig.json b/plugins/conftest-kubernetes/tsconfig.json index 89d2fb2c6b..dd371afd82 100644 --- a/plugins/conftest-kubernetes/tsconfig.json +++ b/plugins/conftest-kubernetes/tsconfig.json @@ -6,7 +6,9 @@ ], "compilerOptions": { "composite": true, - "outDir": "build" + "outDir": "build", + "module": "nodenext", + "moduleResolution": "nodenext" }, "references": [ { diff --git a/plugins/conftest/package.json b/plugins/conftest/package.json index 2780c4824d..30b9a0f644 100644 --- a/plugins/conftest/package.json +++ b/plugins/conftest/package.json @@ -2,6 +2,7 @@ "name": "@garden-io/garden-conftest", "version": "0.13.18", "description": "conftest plugin for Garden", + "type": "module", "main": "build/src/index.js", "private": true, "dependencies": { diff --git a/plugins/conftest/src/index.ts b/plugins/conftest/src/index.ts index 7548b852c3..a6fc863131 100644 --- a/plugins/conftest/src/index.ts +++ b/plugins/conftest/src/index.ts @@ -9,27 +9,28 @@ import { resolve, relative } from "path" import chalk from "chalk" import slash from "slash" -import { ExecaReturnValue } from "execa" +import type { ExecaReturnValue } from "execa" import { createGardenPlugin } from "@garden-io/sdk" -import { PluginContext, Log } from "@garden-io/sdk/build/src/types" -import { dedent, naturalList } from "@garden-io/sdk/build/src/util/string" -import { matchGlobs, listDirectory } from "@garden-io/sdk/build/src/util/fs" +import type { PluginContext, Log } from "@garden-io/sdk/build/src/types.js" +import { dedent, naturalList } from "@garden-io/sdk/build/src/util/string.js" +import { matchGlobs, listDirectory } from "@garden-io/sdk/build/src/util/fs.js" // TODO: gradually get rid of these core dependencies, move some to SDK etc. -import { providerConfigBaseSchema, GenericProviderConfig, Provider } from "@garden-io/core/build/src/config/provider" -import { joi, joiIdentifier, joiSparseArray } from "@garden-io/core/build/src/config/common" -import { baseBuildSpecSchema } from "@garden-io/core/build/src/config/module" -import { PluginError, ConfigurationError, GardenError } from "@garden-io/core/build/src/exceptions" -import { getGitHubUrl } from "@garden-io/core/build/src/docs/common" -import { renderTemplates } from "@garden-io/core/build/src/plugins/kubernetes/helm/common" -import { getK8sProvider } from "@garden-io/core/build/src/plugins/kubernetes/util" -import { TestAction, TestActionConfig } from "@garden-io/core/build/src/actions/test" -import { TestActionHandlers } from "@garden-io/core/build/src/plugin/action-types" -import { uniq } from "lodash" -import { HelmDeployAction } from "@garden-io/core/build/src/plugins/kubernetes/helm/config" -import { actionRefMatches } from "@garden-io/core/build/src/actions/base" -import { Resolved } from "@garden-io/core/build/src/actions/types" -import { DEFAULT_TEST_TIMEOUT_SEC } from "@garden-io/core/build/src/constants" +import type { GenericProviderConfig, Provider } from "@garden-io/core/build/src/config/provider.js" +import { providerConfigBaseSchema } from "@garden-io/core/build/src/config/provider.js" +import { joi, joiIdentifier, joiSparseArray } from "@garden-io/core/build/src/config/common.js" +import { baseBuildSpecSchema } from "@garden-io/core/build/src/config/module.js" +import { PluginError, ConfigurationError, GardenError } from "@garden-io/core/build/src/exceptions.js" +import { getGitHubUrl } from "@garden-io/core/build/src/docs/common.js" +import { renderTemplates } from "@garden-io/core/build/src/plugins/kubernetes/helm/common.js" +import { getK8sProvider } from "@garden-io/core/build/src/plugins/kubernetes/util.js" +import type { TestAction, TestActionConfig } from "@garden-io/core/build/src/actions/test.js" +import type { TestActionHandlers } from "@garden-io/core/build/src/plugin/action-types.js" +import { uniq } from "lodash-es" +import type { HelmDeployAction } from "@garden-io/core/build/src/plugins/kubernetes/helm/config.js" +import { actionRefMatches } from "@garden-io/core/build/src/actions/base.js" +import type { Resolved } from "@garden-io/core/build/src/actions/types.js" +import { DEFAULT_TEST_TIMEOUT_SEC } from "@garden-io/core/build/src/constants.js" export interface ConftestProviderConfig extends GenericProviderConfig { policyPath: string diff --git a/plugins/conftest/test/conftest.ts b/plugins/conftest/test/conftest.ts index 0ccfe44d52..792275239d 100644 --- a/plugins/conftest/test/conftest.ts +++ b/plugins/conftest/test/conftest.ts @@ -8,20 +8,23 @@ import { expect } from "chai" import stripAnsi from "strip-ansi" -import { join } from "path" +import { dirname, join } from "node:path" -import { dedent } from "@garden-io/sdk/build/src/util/string" -import { defaultNamespace } from "@garden-io/sdk/build/src/constants" -import { gardenPlugin } from "../src/index" -import { ProjectConfig } from "@garden-io/sdk/build/src/types" -import { makeTestGarden } from "@garden-io/sdk/build/src/testing" +import { dedent } from "@garden-io/sdk/build/src/util/string.js" +import { defaultNamespace } from "@garden-io/sdk/build/src/constants.js" +import { gardenPlugin } from "../src/index.js" +import type { ProjectConfig } from "@garden-io/sdk/build/src/types.js" +import { makeTestGarden } from "@garden-io/sdk/build/src/testing.js" -import { TestTask } from "@garden-io/core/build/src/tasks/test" -import { defaultDotIgnoreFile } from "@garden-io/core/build/src/util/fs" -import { GardenApiVersion } from "@garden-io/core/build/src/constants" +import { TestTask } from "@garden-io/core/build/src/tasks/test.js" +import { defaultDotIgnoreFile } from "@garden-io/core/build/src/util/fs.js" +import { GardenApiVersion } from "@garden-io/core/build/src/constants.js" +import { fileURLToPath } from "node:url" + +const moduleDirName = dirname(fileURLToPath(import.meta.url)) describe("conftest provider", () => { - const projectRoot = join(__dirname, "test-project") + const projectRoot = join(moduleDirName, "test-project") const projectConfig: ProjectConfig = { apiVersion: GardenApiVersion.v1, diff --git a/plugins/conftest/tsconfig.json b/plugins/conftest/tsconfig.json index 57a74727e5..4d772fb6e7 100644 --- a/plugins/conftest/tsconfig.json +++ b/plugins/conftest/tsconfig.json @@ -6,7 +6,9 @@ ], "compilerOptions": { "composite": true, - "outDir": "build" + "outDir": "build", + "module": "nodenext", + "moduleResolution": "nodenext" }, "references": [ { diff --git a/plugins/jib/package.json b/plugins/jib/package.json index fe79c58843..f0a19ef01e 100644 --- a/plugins/jib/package.json +++ b/plugins/jib/package.json @@ -2,6 +2,7 @@ "name": "@garden-io/garden-jib", "version": "0.13.18", "description": "Jib container plugin for Garden", + "type": "module", "main": "build/src/index.js", "dependencies": { "@garden-io/core": "*", @@ -10,14 +11,14 @@ "execa": "^5.1.1", "fast-copy": "^3.0.1", "fs-extra": "^11.1.0", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "split2": "^4.1.0" }, "devDependencies": { "@types/async-lock": "^1.4.0", "@types/chai": "^4.3.4", "@types/fs-extra": "^11.0.1", - "@types/lodash": "^4.14.191", + "@types/lodash-es": "^4.17.9", "@types/mocha": "^10.0.1", "@types/node": "^18", "chai": "^4.3.7", diff --git a/plugins/jib/src/build-tool-base.ts b/plugins/jib/src/build-tool-base.ts index 7934d0b4f2..8f90bb3fcf 100644 --- a/plugins/jib/src/build-tool-base.ts +++ b/plugins/jib/src/build-tool-base.ts @@ -6,10 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Log, PluginContext } from "@garden-io/sdk/build/src/types" -import { Writable } from "node:stream" +import type { Log, PluginContext } from "@garden-io/sdk/build/src/types.js" +import type { Writable } from "node:stream" import execa from "execa" -import { RuntimeError } from "@garden-io/core/build/src/exceptions" +import { RuntimeError } from "@garden-io/core/build/src/exceptions.js" export interface CheckVersionParams { binaryPath: string @@ -47,7 +47,7 @@ export interface VerifyBinaryParams extends CheckVersionParams { } export async function verifyBinaryPath(params: VerifyBinaryParams) { - const { binaryPath, toolName, outputVerificationString } = params + const { toolName, outputVerificationString } = params const versionOutput = await getBuildToolVersion(params) const isMaven = versionOutput.toLowerCase().includes(outputVerificationString) if (!isMaven) { diff --git a/plugins/jib/src/gradle.ts b/plugins/jib/src/gradle.ts index ee8780af58..c95f997848 100644 --- a/plugins/jib/src/gradle.ts +++ b/plugins/jib/src/gradle.ts @@ -6,12 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { find } from "lodash" -import { PluginContext, PluginToolSpec } from "@garden-io/sdk/build/src/types" -import { PluginError } from "@garden-io/core/build/src/exceptions" +import { find } from "lodash-es" +import type { PluginContext, PluginToolSpec } from "@garden-io/sdk/build/src/types.js" +import { PluginError } from "@garden-io/core/build/src/exceptions.js" import { resolve } from "path" -import { pathExists } from "fs-extra" -import { runBuildTool, BuildToolParams, verifyBinaryPath, VerifyBinaryParams } from "./build-tool-base" +import fsExtra from "fs-extra" +const { pathExists } = fsExtra +import type { BuildToolParams, VerifyBinaryParams } from "./build-tool-base.js" +import { runBuildTool, verifyBinaryPath } from "./build-tool-base.js" export const gradleVersion = "7.5.1" diff --git a/plugins/jib/src/index.ts b/plugins/jib/src/index.ts index 0d01d34331..91f8cfd856 100644 --- a/plugins/jib/src/index.ts +++ b/plugins/jib/src/index.ts @@ -6,32 +6,37 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import split2 = require("split2") +import split2 from "split2" import { createGardenPlugin } from "@garden-io/sdk" -import { dedent } from "@garden-io/sdk/build/src/util/string" +import { dedent } from "@garden-io/sdk/build/src/util/string.js" -import { openJdkSpecs } from "./openjdk" -import { mavenSpec, mvn, mvnVersion } from "./maven" -import { mavendSpec, mvnd, mvndVersion } from "./mavend" -import { gradle, gradleSpec, gradleVersion } from "./gradle" +import { openJdkSpecs } from "./openjdk.js" +import { mavenSpec, mvn, mvnVersion } from "./maven.js" +import { mavendSpec, mvnd, mvndVersion } from "./mavend.js" +import { gradle, gradleSpec, gradleVersion } from "./gradle.js" // TODO: gradually get rid of these core dependencies, move some to SDK etc. -import { GenericProviderConfig, Provider, providerConfigBaseSchema } from "@garden-io/core/build/src/config/provider" -import { getGitHubUrl } from "@garden-io/core/build/src/docs/common" +import type { GenericProviderConfig, Provider } from "@garden-io/core/build/src/config/provider.js" +import { providerConfigBaseSchema } from "@garden-io/core/build/src/config/provider.js" +import { getGitHubUrl } from "@garden-io/core/build/src/docs/common.js" import { containerBuildSpecSchema, containerModuleSpecSchema, -} from "@garden-io/core/build/src/plugins/container/moduleConfig" -import { joi } from "@garden-io/core/build/src/config/common" -import { baseBuildSpecSchema } from "@garden-io/core/build/src/config/module" -import { ConfigureModuleParams } from "@garden-io/core/build/src/plugin/handlers/Module/configure" -import { containerHelpers } from "@garden-io/core/build/src/plugins/container/helpers" +} from "@garden-io/core/build/src/plugins/container/moduleConfig.js" +import { joi } from "@garden-io/core/build/src/config/common.js" +import { baseBuildSpecSchema } from "@garden-io/core/build/src/config/module.js" +import type { ConfigureModuleParams } from "@garden-io/core/build/src/plugin/handlers/Module/configure.js" +import { containerHelpers } from "@garden-io/core/build/src/plugins/container/helpers.js" import cloneDeep from "fast-copy" -import { pick } from "lodash" -import { LogLevel } from "@garden-io/core/build/src/logger/logger" -import { detectProjectType, getBuildFlags, JibBuildActionSpec, JibBuildConfig, JibContainerModule } from "./util" -import { ConvertModuleParams, ConvertModuleResult } from "@garden-io/core/build/src/plugin/handlers/Module/convert" -import { PluginEventLogContext } from "@garden-io/core/build/src/plugin-context" +import { pick } from "lodash-es" +import { LogLevel } from "@garden-io/core/build/src/logger/logger.js" +import type { JibBuildActionSpec, JibBuildConfig, JibContainerModule } from "./util.js" +import { detectProjectType, getBuildFlags } from "./util.js" +import type { + ConvertModuleParams, + ConvertModuleResult, +} from "@garden-io/core/build/src/plugin/handlers/Module/convert.js" +import type { PluginEventLogContext } from "@garden-io/core/build/src/plugin-context.js" export type JibProviderConfig = GenericProviderConfig diff --git a/plugins/jib/src/maven.ts b/plugins/jib/src/maven.ts index f7625d0369..96090fcdc9 100644 --- a/plugins/jib/src/maven.ts +++ b/plugins/jib/src/maven.ts @@ -7,10 +7,11 @@ */ import AsyncLock from "async-lock" -import { PluginContext, PluginToolSpec } from "@garden-io/sdk/build/src/types" -import { find } from "lodash" -import { PluginError } from "@garden-io/core/build/src/exceptions" -import { BuildToolParams, runBuildTool, verifyBinaryPath, VerifyBinaryParams } from "./build-tool-base" +import type { PluginContext, PluginToolSpec } from "@garden-io/sdk/build/src/types.js" +import { find } from "lodash-es" +import { PluginError } from "@garden-io/core/build/src/exceptions.js" +import type { BuildToolParams, VerifyBinaryParams } from "./build-tool-base.js" +import { runBuildTool, verifyBinaryPath } from "./build-tool-base.js" const buildLock = new AsyncLock() diff --git a/plugins/jib/src/mavend.ts b/plugins/jib/src/mavend.ts index 0a01e8ce69..f2878dcb34 100644 --- a/plugins/jib/src/mavend.ts +++ b/plugins/jib/src/mavend.ts @@ -7,10 +7,11 @@ */ import AsyncLock from "async-lock" -import { PluginContext, PluginToolSpec } from "@garden-io/sdk/build/src/types" -import { find } from "lodash" -import { PluginError } from "@garden-io/core/build/src/exceptions" -import { BuildToolParams, runBuildTool, verifyBinaryPath, VerifyBinaryParams } from "./build-tool-base" +import type { PluginContext, PluginToolSpec } from "@garden-io/sdk/build/src/types.js" +import { find } from "lodash-es" +import { PluginError } from "@garden-io/core/build/src/exceptions.js" +import type { BuildToolParams, VerifyBinaryParams } from "./build-tool-base.js" +import { runBuildTool, verifyBinaryPath } from "./build-tool-base.js" const buildLock = new AsyncLock() diff --git a/plugins/jib/src/openjdk.ts b/plugins/jib/src/openjdk.ts index 4aa649f520..1d84d11a42 100644 --- a/plugins/jib/src/openjdk.ts +++ b/plugins/jib/src/openjdk.ts @@ -6,8 +6,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ToolBuildSpec } from "@garden-io/core/src/plugin/tools" -import { PluginToolSpec } from "@garden-io/sdk/build/src/types" +import type { ToolBuildSpec } from "@garden-io/core/src/plugin/tools.js" +import type { PluginToolSpec } from "@garden-io/sdk/build/src/types.js" import { posix } from "path" interface JdkBinary { diff --git a/plugins/jib/src/util.ts b/plugins/jib/src/util.ts index 641864dec1..940014b2b8 100644 --- a/plugins/jib/src/util.ts +++ b/plugins/jib/src/util.ts @@ -7,18 +7,20 @@ */ import { resolve } from "path" -import { GardenModule } from "@garden-io/sdk/build/src/types" -import { ConfigurationError } from "@garden-io/core/build/src/exceptions" -import { getDockerBuildArgs } from "@garden-io/core/build/src/plugins/container/build" -import { +import type { GardenModule } from "@garden-io/sdk/build/src/types.js" +import { ConfigurationError } from "@garden-io/core/build/src/exceptions.js" +import { getDockerBuildArgs } from "@garden-io/core/build/src/plugins/container/build.js" +import type { ContainerBuildActionSpec, ContainerModuleBuildSpec, ContainerModuleSpec, -} from "@garden-io/core/build/src/plugins/container/moduleConfig" -import { BuildAction, BuildActionConfig, ResolvedBuildAction } from "@garden-io/core/build/src/actions/build" -import { ContainerBuildOutputs } from "@garden-io/core/build/src/plugins/container/config" -import { Resolved } from "@garden-io/core/build/src/actions/types" -import { pathExists } from "fs-extra" +} from "@garden-io/core/build/src/plugins/container/moduleConfig.js" +import type { BuildAction, BuildActionConfig, ResolvedBuildAction } from "@garden-io/core/build/src/actions/build.js" +import type { ContainerBuildOutputs } from "@garden-io/core/build/src/plugins/container/config.js" +import type { Resolved } from "@garden-io/core/build/src/actions/types.js" + +import fsExtra from "fs-extra" +const { pathExists } = fsExtra interface JibBuildSpec { dockerBuild?: boolean diff --git a/plugins/jib/test/index.ts b/plugins/jib/test/index.ts index bc170d1044..3f59a5d4e1 100644 --- a/plugins/jib/test/index.ts +++ b/plugins/jib/test/index.ts @@ -6,22 +6,26 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { join, resolve } from "path" +import { dirname, join, resolve } from "node:path" -import { GardenModule } from "@garden-io/sdk/build/src/types" +import type { GardenModule } from "@garden-io/sdk/build/src/types.js" import { expect } from "chai" -import { makeTestGarden, TestGarden } from "@garden-io/sdk/build/src/testing" -import { gardenPlugin } from "../src" -import { JibBuildAction } from "../src/util" -import { Resolved } from "@garden-io/core/build/src/actions/types" -import { ResolvedConfigGraph } from "@garden-io/core/build/src/graph/config-graph" -import { createActionLog } from "@garden-io/core/build/src/logger/log-entry" +import type { TestGarden } from "@garden-io/sdk/build/src/testing.js" +import { makeTestGarden } from "@garden-io/sdk/build/src/testing.js" +import { gardenPlugin } from "../src/index.js" +import type { JibBuildAction } from "../src/util.js" +import type { Resolved } from "@garden-io/core/build/src/actions/types.js" +import type { ResolvedConfigGraph } from "@garden-io/core/build/src/graph/config-graph.js" +import { createActionLog } from "@garden-io/core/build/src/logger/log-entry.js" +import { fileURLToPath } from "node:url" + +const moduleDirName = dirname(fileURLToPath(import.meta.url)) describe("jib-container", function () { // eslint-disable-next-line no-invalid-this this.timeout(180 * 1000) // initial jib build can take a long time - const projectRoot = resolve(__dirname, "../../test/", "test-project") + const projectRoot = resolve(moduleDirName, "../../test/", "test-project") let garden: TestGarden let graph: ResolvedConfigGraph diff --git a/plugins/jib/test/util.ts b/plugins/jib/test/util.ts index f73f770443..d61b2f085a 100644 --- a/plugins/jib/test/util.ts +++ b/plugins/jib/test/util.ts @@ -6,21 +6,27 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { expectError, makeTestGarden, TestGarden } from "@garden-io/sdk/build/src/testing" +import type { TestGarden } from "@garden-io/sdk/build/src/testing.js" +import { expectError, makeTestGarden } from "@garden-io/sdk/build/src/testing.js" import { expect } from "chai" -import { detectProjectType, getBuildFlags, JibBuildAction } from "../src/util" -import { join, resolve } from "path" -import { ResolvedConfigGraph } from "@garden-io/core/build/src/graph/config-graph" -import { Resolved } from "@garden-io/core/build/src/actions/types" -import { gardenPlugin } from "../src/index" -import { rm } from "fs/promises" -import { createFile } from "fs-extra" +import type { JibBuildAction } from "../src/util.js" +import { detectProjectType, getBuildFlags } from "../src/util.js" +import { dirname, join, resolve } from "node:path" +import type { ResolvedConfigGraph } from "@garden-io/core/build/src/graph/config-graph.js" +import type { Resolved } from "@garden-io/core/build/src/actions/types.js" +import { gardenPlugin } from "../src/index.js" +import { fileURLToPath } from "node:url" +import { rm } from "node:fs/promises" +import fsExtra from "fs-extra" +const { createFile } = fsExtra + +const moduleDirName = dirname(fileURLToPath(import.meta.url)) describe("util", function () { // eslint-disable-next-line no-invalid-this this.timeout(180 * 1000) // initial jib build can take a long time - const projectRoot = resolve(__dirname, "../../test/", "test-project") + const projectRoot = resolve(moduleDirName, "../../test/", "test-project") let garden: TestGarden let graph: ResolvedConfigGraph @@ -90,7 +96,6 @@ describe("util", function () { it("correctly sets the target for maven", () => { action["_staticOutputs"].deploymentImageId = imageId - const versionString = action.getFullVersion().versionString const { args } = getBuildFlags(action, "maven") expect(args).to.include("jib:build") diff --git a/plugins/jib/tsconfig.json b/plugins/jib/tsconfig.json index 57a74727e5..4d772fb6e7 100644 --- a/plugins/jib/tsconfig.json +++ b/plugins/jib/tsconfig.json @@ -6,7 +6,9 @@ ], "compilerOptions": { "composite": true, - "outDir": "build" + "outDir": "build", + "module": "nodenext", + "moduleResolution": "nodenext" }, "references": [ { diff --git a/plugins/pulumi/package.json b/plugins/pulumi/package.json index 065eefc9a0..3ce78cd969 100644 --- a/plugins/pulumi/package.json +++ b/plugins/pulumi/package.json @@ -2,6 +2,7 @@ "name": "@garden-io/garden-pulumi", "version": "0.13.18", "description": "Pulumi plugin for Garden", + "type": "module", "main": "build/src/index.js", "dependencies": { "@garden-io/core": "*", @@ -10,6 +11,7 @@ "chalk": "^4.1.0", "execa": "^4.0.3", "fs-extra": "^11.1.0", + "lodash-es": "^4.17.21", "slash": "^3.0.0", "which": "^3.0.0", "json-merge-patch": "^1.0.2" @@ -34,4 +36,4 @@ "author": "Garden Technologies, Inc. ", "license": "MPL-2.0", "homepage": "https://github.com/garden-io/garden" -} \ No newline at end of file +} diff --git a/plugins/pulumi/src/action.ts b/plugins/pulumi/src/action.ts index 206f51f4f1..8f0374770b 100644 --- a/plugins/pulumi/src/action.ts +++ b/plugins/pulumi/src/action.ts @@ -6,15 +6,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { - createSchema, - DeepPrimitiveMap, - joi, - joiSparseArray, - joiVariables, -} from "@garden-io/core/build/src/config/common" -import { DeployAction, DeployActionConfig } from "@garden-io/core/build/src/actions/deploy" -import { dedent } from "@garden-io/sdk/build/src/util/string" +import type { DeepPrimitiveMap } from "@garden-io/core/build/src/config/common.js" +import { createSchema, joi, joiSparseArray, joiVariables } from "@garden-io/core/build/src/config/common.js" +import type { DeployAction, DeployActionConfig } from "@garden-io/core/build/src/actions/deploy.js" +import { dedent } from "@garden-io/sdk/build/src/util/string.js" export interface PulumiDeploySpec { allowDestroy: boolean diff --git a/plugins/pulumi/src/cli.ts b/plugins/pulumi/src/cli.ts index 9e70f55d6c..ea56899f17 100644 --- a/plugins/pulumi/src/cli.ts +++ b/plugins/pulumi/src/cli.ts @@ -8,11 +8,11 @@ import which from "which" -import { CliWrapper } from "@garden-io/sdk/build/src/util/ext-tools" -import { ConfigurationError, RuntimeError } from "@garden-io/sdk/build/src/exceptions" -import { Log, PluginContext, PluginToolSpec } from "@garden-io/sdk/build/src/types" -import { PulumiProvider } from "./provider" -import { naturalList } from "@garden-io/sdk/build/src/util/string" +import { CliWrapper } from "@garden-io/sdk/build/src/util/ext-tools.js" +import { ConfigurationError, RuntimeError } from "@garden-io/sdk/build/src/exceptions.js" +import type { Log, PluginContext, PluginToolSpec } from "@garden-io/sdk/build/src/types.js" +import type { PulumiProvider } from "./provider.js" +import { naturalList } from "@garden-io/sdk/build/src/util/string.js" export const defaultPulumiEnv = { // This suppresses the "warning: A new version of Pulumi is available" output when running pulumi commands. diff --git a/plugins/pulumi/src/commands.ts b/plugins/pulumi/src/commands.ts index ec2e1b1649..ddc6d61f87 100644 --- a/plugins/pulumi/src/commands.ts +++ b/plugins/pulumi/src/commands.ts @@ -7,41 +7,43 @@ */ import chalk from "chalk" -import { +import type { ConfigGraph, Garden, GraphResults, - PluginActionTask, PluginCommand, PluginCommandParams, PluginContext, -} from "@garden-io/sdk/build/src/types" +} from "@garden-io/sdk/build/src/types.js" +import { PluginActionTask } from "@garden-io/sdk/build/src/types.js" -import { PulumiDeploy } from "./action" -import { PulumiProvider } from "./provider" -import { Profile } from "@garden-io/core/build/src/util/profiling" +import type { PulumiDeploy } from "./action.js" +import type { PulumiProvider } from "./provider.js" +import { Profile } from "@garden-io/core/build/src/util/profiling.js" +import type { PulumiParams } from "./helpers.js" import { cancelUpdate, getModifiedPlansDirPath, getPlanFileName, getPreviewDirPath, previewStack, - PulumiParams, refreshResources, reimportStack, selectStack, -} from "./helpers" -import { dedent, deline } from "@garden-io/sdk/build/src/util/string" -import { BooleanParameter, parsePluginCommandArgs } from "@garden-io/sdk/build/src/util/cli" -import { copy, emptyDir } from "fs-extra" +} from "./helpers.js" +import { dedent, deline } from "@garden-io/sdk/build/src/util/string.js" +import { BooleanParameter, parsePluginCommandArgs } from "@garden-io/sdk/build/src/util/cli.js" +import fsExtra from "fs-extra" +const { copy, emptyDir } = fsExtra import { join } from "path" -import { isDeployAction } from "@garden-io/core/build/src/actions/deploy" -import { TemplatableConfigContext } from "@garden-io/core/build/src/config/template-contexts/project" -import { ActionTaskProcessParams, ValidResultType } from "@garden-io/core/build/src/tasks/base" -import { deletePulumiDeploy } from "./handlers" -import { ActionLog, createActionLog, Log } from "@garden-io/core/build/src/logger/log-entry" -import { ActionSpecContext } from "@garden-io/core/build/src/config/template-contexts/actions" -import { ProviderMap } from "@garden-io/core/build/src/config/provider" +import { isDeployAction } from "@garden-io/core/build/src/actions/deploy.js" +import { TemplatableConfigContext } from "@garden-io/core/build/src/config/template-contexts/project.js" +import type { ActionTaskProcessParams, ValidResultType } from "@garden-io/core/build/src/tasks/base.js" +import { deletePulumiDeploy } from "./handlers.js" +import type { ActionLog, Log } from "@garden-io/core/build/src/logger/log-entry.js" +import { createActionLog } from "@garden-io/core/build/src/logger/log-entry.js" +import { ActionSpecContext } from "@garden-io/core/build/src/config/template-contexts/actions.js" +import type { ProviderMap } from "@garden-io/core/build/src/config/provider.js" type PulumiBaseParams = Omit diff --git a/plugins/pulumi/src/handlers.ts b/plugins/pulumi/src/handlers.ts index d76a8cece8..3a177ca93d 100644 --- a/plugins/pulumi/src/handlers.ts +++ b/plugins/pulumi/src/handlers.ts @@ -6,8 +6,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { pulumi } from "./cli" -import { ProviderHandlers } from "@garden-io/sdk/build/src/types" +import { pulumi } from "./cli.js" +import type { ProviderHandlers } from "@garden-io/sdk/build/src/types.js" import { applyConfig, clearStackVersionTag, @@ -19,13 +19,13 @@ import { getStackStatusFromTag, selectStack, setStackVersionTag, -} from "./helpers" -import { PulumiDeploy } from "./action" -import { PulumiProvider } from "./provider" +} from "./helpers.js" +import type { PulumiDeploy } from "./action.js" +import type { PulumiProvider } from "./provider.js" import chalk from "chalk" -import { DeployActionHandlers } from "@garden-io/core/build/src/plugin/action-types" -import { DeployState } from "@garden-io/core/build/src/types/service" -import { deployStateToActionState } from "@garden-io/core/build/src/plugin/handlers/Deploy/get-status" +import type { DeployActionHandlers } from "@garden-io/core/build/src/plugin/action-types.js" +import type { DeployState } from "@garden-io/core/build/src/types/service.js" +import { deployStateToActionState } from "@garden-io/core/build/src/plugin/handlers/Deploy/get-status.js" export const cleanupEnvironment: ProviderHandlers["cleanupEnvironment"] = async (_params) => { // To properly implement this handler, we'd need access to the config graph (or at least the list of pulumi services diff --git a/plugins/pulumi/src/helpers.ts b/plugins/pulumi/src/helpers.ts index 4ff4478545..fcb1675541 100644 --- a/plugins/pulumi/src/helpers.ts +++ b/plugins/pulumi/src/helpers.ts @@ -6,32 +6,33 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { countBy, flatten, isEmpty, uniq } from "lodash" +import { countBy, flatten, isEmpty, uniq } from "lodash-es" import { load } from "js-yaml" import stripAnsi from "strip-ansi" import chalk from "chalk" import { merge } from "json-merge-patch" import { basename, dirname, extname, join, resolve } from "path" -import { ensureDir, pathExists, readFile } from "fs-extra" +import fsExtra from "fs-extra" +const { ensureDir, pathExists, readFile } = fsExtra import { ChildProcessError, ConfigurationError, FilesystemError, GardenError, PluginError, -} from "@garden-io/sdk/build/src/exceptions" -import { dumpYaml } from "@garden-io/core/build/src/util/serialization" -import { DeepPrimitiveMap } from "@garden-io/core/build/src/config/common" -import { loadAndValidateYaml } from "@garden-io/core/build/src/config/base" +} from "@garden-io/sdk/build/src/exceptions.js" +import { dumpYaml } from "@garden-io/core/build/src/util/serialization.js" +import type { DeepPrimitiveMap } from "@garden-io/core/build/src/config/common.js" +import { loadAndValidateYaml } from "@garden-io/core/build/src/config/base.js" import { getPluginOutputsPath } from "@garden-io/sdk" -import { Log, PluginContext } from "@garden-io/sdk/build/src/types" -import { defaultPulumiEnv, pulumi } from "./cli" -import { PulumiDeploy } from "./action" -import { PulumiProvider } from "./provider" -import { dedent, deline, naturalList } from "@garden-io/sdk/build/src/util/string" -import { Resolved } from "@garden-io/core/build/src/actions/types" -import { ActionLog } from "@garden-io/core/build/src/logger/log-entry" -import { PulumiCommandResult } from "./commands" +import type { Log, PluginContext } from "@garden-io/sdk/build/src/types.js" +import { defaultPulumiEnv, pulumi } from "./cli.js" +import type { PulumiDeploy } from "./action.js" +import type { PulumiProvider } from "./provider.js" +import { dedent, deline, naturalList } from "@garden-io/sdk/build/src/util/string.js" +import type { Resolved } from "@garden-io/core/build/src/actions/types.js" +import type { ActionLog } from "@garden-io/core/build/src/logger/log-entry.js" +import type { PulumiCommandResult } from "./commands.js" export interface PulumiParams { ctx: PluginContext diff --git a/plugins/pulumi/src/index.ts b/plugins/pulumi/src/index.ts index bb560714a5..a89a80b7b6 100644 --- a/plugins/pulumi/src/index.ts +++ b/plugins/pulumi/src/index.ts @@ -7,19 +7,22 @@ */ import { createGardenPlugin } from "@garden-io/sdk" -import { dedent } from "@garden-io/sdk/build/src/util/string" -import { deletePulumiDeploy, deployPulumi, getPulumiDeployStatus } from "./handlers" -import { getPulumiCommands } from "./commands" -import { pulumiCliSPecs } from "./cli" -import { PulumiDeployConfig, pulumiDeployOutputsSchema, pulumiDeploySchema } from "./action" -import { pulumiProviderConfigSchema } from "./provider" -import { ExecBuildConfig } from "@garden-io/core/build/src/plugins/exec/build" +import { dedent } from "@garden-io/sdk/build/src/util/string.js" +import { deletePulumiDeploy, deployPulumi, getPulumiDeployStatus } from "./handlers.js" +import { getPulumiCommands } from "./commands.js" +import { pulumiCliSPecs } from "./cli.js" +import type { PulumiDeployConfig } from "./action.js" +import { pulumiDeployOutputsSchema, pulumiDeploySchema } from "./action.js" +import { pulumiProviderConfigSchema } from "./provider.js" +import type { ExecBuildConfig } from "@garden-io/core/build/src/plugins/exec/build.js" import { join } from "path" -import { pathExists } from "fs-extra" -import { ConfigurationError } from "@garden-io/sdk/build/src/exceptions" -import { omit } from "lodash" -import { ConvertModuleParams } from "@garden-io/core/build/src/plugin/handlers/Module/convert" -import { configurePulumiModule, PulumiModule, pulumiModuleSchema } from "./module" +import fsExtra from "fs-extra" +const { pathExists } = fsExtra +import { ConfigurationError } from "@garden-io/sdk/build/src/exceptions.js" +import { omit } from "lodash-es" +import type { ConvertModuleParams } from "@garden-io/core/build/src/plugin/handlers/Module/convert.js" +import type { PulumiModule } from "./module.js" +import { configurePulumiModule, pulumiModuleSchema } from "./module.js" // Need to make these variables to avoid escaping issues const moduleOutputsTemplateString = "${runtime.services..outputs.}" diff --git a/plugins/pulumi/src/module.ts b/plugins/pulumi/src/module.ts index 6367fcc015..4b3476dd44 100644 --- a/plugins/pulumi/src/module.ts +++ b/plugins/pulumi/src/module.ts @@ -6,15 +6,17 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { joi } from "@garden-io/core/build/src/config/common" -import { GardenModule, ModuleActionHandlers, PluginContext } from "@garden-io/sdk/build/src/types" -import { baseBuildSpecSchema } from "@garden-io/core/build/src/config/module" -import { dependenciesSchema } from "@garden-io/core/build/src/config/service" -import { pulumiDeploySchemaKeys, PulumiDeploySpec } from "./action" -import { PulumiProvider, PulumiProviderConfig } from "./provider" +import { joi } from "@garden-io/core/build/src/config/common.js" +import type { GardenModule, ModuleActionHandlers, PluginContext } from "@garden-io/sdk/build/src/types.js" +import { baseBuildSpecSchema } from "@garden-io/core/build/src/config/module.js" +import { dependenciesSchema } from "@garden-io/core/build/src/config/service.js" +import type { PulumiDeploySpec } from "./action.js" +import { pulumiDeploySchemaKeys } from "./action.js" +import type { PulumiProvider, PulumiProviderConfig } from "./provider.js" import { join } from "path" -import { pathExists } from "fs-extra" -import { ConfigurationError } from "@garden-io/core/build/src/exceptions" +import fsExtra from "fs-extra" +const { pathExists } = fsExtra +import { ConfigurationError } from "@garden-io/core/build/src/exceptions.js" export interface PulumiModuleSpec extends PulumiDeploySpec { dependencies: string[] diff --git a/plugins/pulumi/src/provider.ts b/plugins/pulumi/src/provider.ts index e5402cdad9..148b26f0a4 100644 --- a/plugins/pulumi/src/provider.ts +++ b/plugins/pulumi/src/provider.ts @@ -6,10 +6,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { joi } from "@garden-io/core/build/src/config/common" -import { GenericProviderConfig, Provider, providerConfigBaseSchema } from "@garden-io/core/build/src/config/provider" -import { dedent } from "@garden-io/sdk/build/src/util/string" -import { defaultPulumiVersion, supportedVersions } from "./cli" +import { joi } from "@garden-io/core/build/src/config/common.js" +import type { GenericProviderConfig, Provider } from "@garden-io/core/build/src/config/provider.js" +import { providerConfigBaseSchema } from "@garden-io/core/build/src/config/provider.js" +import { dedent } from "@garden-io/sdk/build/src/util/string.js" +import { defaultPulumiVersion, supportedVersions } from "./cli.js" export type PulumiProviderConfig = GenericProviderConfig & { version: string | null diff --git a/plugins/pulumi/test/handlers.ts b/plugins/pulumi/test/handlers.ts index be6e8e7caf..5e3bfce193 100644 --- a/plugins/pulumi/test/handlers.ts +++ b/plugins/pulumi/test/handlers.ts @@ -6,24 +6,29 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import type { Log, PluginContext } from "@garden-io/sdk/build/src/types" -import { makeTestGarden, TestGarden } from "@garden-io/sdk/build/src/testing" +import type { Log, PluginContext } from "@garden-io/sdk/build/src/types.js" +import type { TestGarden } from "@garden-io/sdk/build/src/testing.js" +import { makeTestGarden } from "@garden-io/sdk/build/src/testing.js" import execa from "execa" -import { pathExists } from "fs-extra" -import { join, resolve } from "path" -import { deployPulumi, getPulumiDeployStatus } from "../src/handlers" -import { PulumiProvider } from "../src/provider" -import { gardenPlugin as pulumiPlugin } from "../src/index" +import fsExtra from "fs-extra" +const { pathExists } = fsExtra +import { dirname, join, resolve } from "node:path" +import { deployPulumi, getPulumiDeployStatus } from "../src/handlers.js" +import type { PulumiProvider } from "../src/provider.js" +import { gardenPlugin as pulumiPlugin } from "../src/index.js" import { expect } from "chai" -import { getStackVersionTag } from "../src/helpers" -import { getPulumiCommands } from "../src/commands" -import { ResolvedConfigGraph } from "@garden-io/core/build/src/graph/config-graph" +import { getStackVersionTag } from "../src/helpers.js" +import { getPulumiCommands } from "../src/commands.js" +import type { ResolvedConfigGraph } from "@garden-io/core/build/src/graph/config-graph.js" +import { fileURLToPath } from "node:url" + +const moduleDirName = dirname(fileURLToPath(import.meta.url)) // Careful here! // We have some packages in the test directory but when this here runs we're a subfolder of '/build' // so to actually find the files we need to traverse back to the source folder. // TODO: Find a better way to do this. -const projectRoot = resolve(__dirname, "../../test/", "test-project-k8s") +const projectRoot = resolve(moduleDirName, "../../test/", "test-project-k8s") const nsModuleRoot = join(projectRoot, "k8s-namespace") const deploymentModuleRoot = join(projectRoot, "k8s-deployment") diff --git a/plugins/pulumi/tsconfig.json b/plugins/pulumi/tsconfig.json index 459cf0ab29..3e6b28fb57 100644 --- a/plugins/pulumi/tsconfig.json +++ b/plugins/pulumi/tsconfig.json @@ -6,7 +6,9 @@ ], "compilerOptions": { "composite": true, - "outDir": "build" + "outDir": "build", + "module": "nodenext", + "moduleResolution": "nodenext" }, "references": [ { diff --git a/plugins/terraform/package.json b/plugins/terraform/package.json index 3cfa9405e6..889e04f47c 100644 --- a/plugins/terraform/package.json +++ b/plugins/terraform/package.json @@ -2,6 +2,7 @@ "name": "@garden-io/garden-terraform", "version": "0.13.18", "description": "Terraform plugin for Garden", + "type": "module", "main": "build/src/index.js", "dependencies": { "@garden-io/core": "*", @@ -9,6 +10,7 @@ "chalk": "^4.1.0", "execa": "^4.0.3", "fs-extra": "^11.1.0", + "lodash-es": "^4.17.21", "slash": "^3.0.0", "which": "^3.0.0" }, @@ -34,4 +36,4 @@ "author": "Garden Technologies, Inc. ", "license": "MPL-2.0", "homepage": "https://github.com/garden-io/garden" -} \ No newline at end of file +} diff --git a/plugins/terraform/src/action.ts b/plugins/terraform/src/action.ts index 4e057ff298..988a0f40f9 100644 --- a/plugins/terraform/src/action.ts +++ b/plugins/terraform/src/action.ts @@ -6,11 +6,12 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { createSchema, joi, joiVariables } from "@garden-io/core/build/src/config/common" -import { dedent } from "@garden-io/core/build/src/util/string" -import { supportedVersions } from "./cli" -import { TerraformBaseSpec, variablesSchema } from "./helpers" -import { DeployAction, DeployActionConfig } from "@garden-io/core/build/src/actions/deploy" +import { createSchema, joi, joiVariables } from "@garden-io/core/build/src/config/common.js" +import { dedent } from "@garden-io/core/build/src/util/string.js" +import { supportedVersions } from "./cli.js" +import type { TerraformBaseSpec } from "./helpers.js" +import { variablesSchema } from "./helpers.js" +import type { DeployAction, DeployActionConfig } from "@garden-io/core/build/src/actions/deploy.js" export interface TerraformDeploySpec extends TerraformBaseSpec { root: string diff --git a/plugins/terraform/src/cli.ts b/plugins/terraform/src/cli.ts index 77ecac00f0..e5c0f91ec9 100644 --- a/plugins/terraform/src/cli.ts +++ b/plugins/terraform/src/cli.ts @@ -6,12 +6,13 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { TerraformProvider } from "./provider" +import type { TerraformProvider } from "./provider.js" import which from "which" -import { ConfigurationError, RuntimeError } from "@garden-io/sdk/build/src/exceptions" -import { CliWrapper, PluginToolSpec } from "@garden-io/sdk/build/src/util/ext-tools" -import { Log, PluginContext } from "@garden-io/sdk/build/src/types" -import { naturalList } from "@garden-io/sdk/build/src/util/string" +import { ConfigurationError, RuntimeError } from "@garden-io/sdk/build/src/exceptions.js" +import type { PluginToolSpec } from "@garden-io/sdk/build/src/util/ext-tools.js" +import { CliWrapper } from "@garden-io/sdk/build/src/util/ext-tools.js" +import type { Log, PluginContext } from "@garden-io/sdk/build/src/types.js" +import { naturalList } from "@garden-io/sdk/build/src/util/string.js" export function terraform(ctx: PluginContext, provider: TerraformProvider) { const version = provider.config.version diff --git a/plugins/terraform/src/commands.ts b/plugins/terraform/src/commands.ts index 027cf987a2..e89e27bb5a 100644 --- a/plugins/terraform/src/commands.ts +++ b/plugins/terraform/src/commands.ts @@ -7,15 +7,16 @@ */ import chalk from "chalk" -import { terraform } from "./cli" -import { TerraformProvider } from "./provider" -import { ConfigurationError, ParameterError } from "@garden-io/sdk/build/src/exceptions" -import { prepareVariables, setWorkspace, tfValidate } from "./helpers" -import { ConfigGraph, PluginCommand, PluginCommandParams } from "@garden-io/sdk/build/src/types" +import { terraform } from "./cli.js" +import type { TerraformProvider } from "./provider.js" +import { ConfigurationError, ParameterError } from "@garden-io/sdk/build/src/exceptions.js" +import { prepareVariables, setWorkspace, tfValidate } from "./helpers.js" +import type { ConfigGraph, PluginCommand, PluginCommandParams } from "@garden-io/sdk/build/src/types.js" import { join } from "path" -import { remove } from "fs-extra" -import { getProviderStatusCachePath } from "@garden-io/core/build/src/tasks/resolve-provider" -import { TerraformDeploy } from "./action" +import fsExtra from "fs-extra" +const { remove } = fsExtra +import { getProviderStatusCachePath } from "@garden-io/core/build/src/tasks/resolve-provider.js" +import type { TerraformDeploy } from "./action.js" const commandsToWrap = ["apply", "plan", "destroy"] const initCommand = chalk.bold("terraform init") diff --git a/plugins/terraform/src/handlers.ts b/plugins/terraform/src/handlers.ts index f5d6cd9b93..0e0295ea8b 100644 --- a/plugins/terraform/src/handlers.ts +++ b/plugins/terraform/src/handlers.ts @@ -7,15 +7,15 @@ */ import { join } from "path" -import { deline } from "@garden-io/core/build/src/util/string" -import { terraform } from "./cli" -import { applyStack, getStackStatus, getTfOutputs, prepareVariables, setWorkspace } from "./helpers" -import { TerraformProvider } from "./provider" -import { DeployActionHandler } from "@garden-io/core/build/src/plugin/action-types" -import { DeployState } from "@garden-io/core/build/src/types/service" -import { deployStateToActionState } from "@garden-io/core/build/src/plugin/handlers/Deploy/get-status" -import { TerraformDeploy, TerraformDeploySpec } from "./action" -import chalk = require("chalk") +import { deline } from "@garden-io/core/build/src/util/string.js" +import { terraform } from "./cli.js" +import { applyStack, getStackStatus, getTfOutputs, prepareVariables, setWorkspace } from "./helpers.js" +import type { TerraformProvider } from "./provider.js" +import type { DeployActionHandler } from "@garden-io/core/build/src/plugin/action-types.js" +import type { DeployState } from "@garden-io/core/build/src/types/service.js" +import { deployStateToActionState } from "@garden-io/core/build/src/plugin/handlers/Deploy/get-status.js" +import type { TerraformDeploy, TerraformDeploySpec } from "./action.js" +import chalk from "chalk" export const getTerraformStatus: DeployActionHandler<"getStatus", TerraformDeploy> = async ({ ctx, log, action }) => { const provider = ctx.provider as TerraformProvider diff --git a/plugins/terraform/src/helpers.ts b/plugins/terraform/src/helpers.ts index dcec21cd96..9ee8fc4a9c 100644 --- a/plugins/terraform/src/helpers.ts +++ b/plugins/terraform/src/helpers.ts @@ -7,17 +7,19 @@ */ import { resolve } from "path" -import { mapValues, startCase } from "lodash" - -import { ConfigurationError, PluginError, RuntimeError } from "@garden-io/sdk/build/src/exceptions" -import { Log, PluginContext } from "@garden-io/sdk/build/src/types" -import { dedent } from "@garden-io/sdk/build/src/util/string" -import { terraform } from "./cli" -import { TerraformProvider } from "./provider" -import { writeFile } from "fs-extra" +import { mapValues, startCase } from "lodash-es" + +import { ConfigurationError, PluginError, RuntimeError } from "@garden-io/sdk/build/src/exceptions.js" +import type { Log, PluginContext } from "@garden-io/sdk/build/src/types.js" +import { dedent } from "@garden-io/sdk/build/src/util/string.js" +import { terraform } from "./cli.js" +import type { TerraformProvider } from "./provider.js" +import fsExtra from "fs-extra" +const { writeFile } = fsExtra import chalk from "chalk" -import { joi, joiStringMap, PrimitiveMap } from "@garden-io/core/build/src/config/common" -import split2 = require("split2") +import type { PrimitiveMap } from "@garden-io/core/build/src/config/common.js" +import { joi, joiStringMap } from "@garden-io/core/build/src/config/common.js" +import split2 from "split2" export const variablesSchema = () => joiStringMap(joi.any()) @@ -194,16 +196,8 @@ export async function applyStack(params: TerraformParamsWithVariables) { const statusLine = log.createLog({}).info("→ Applying Terraform stack...") const logStream = split2() - let stdout = "" let stderr = "" - if (proc.stdout) { - proc.stdout.pipe(logStream) - proc.stdout.on("data", (data) => { - stdout += data - }) - } - if (proc.stderr) { proc.stderr.pipe(logStream) proc.stderr.on("data", (data) => { diff --git a/plugins/terraform/src/index.ts b/plugins/terraform/src/index.ts index 5111403151..97634c2500 100644 --- a/plugins/terraform/src/index.ts +++ b/plugins/terraform/src/index.ts @@ -7,23 +7,27 @@ */ import { join } from "path" -import { omit } from "lodash" -import { pathExists } from "fs-extra" +import { omit } from "lodash-es" +import fsExtra from "fs-extra" +const { pathExists } = fsExtra import { createGardenPlugin } from "@garden-io/sdk" -import { cleanupEnvironment, getEnvironmentStatus, prepareEnvironment } from "./init" -import { dedent } from "@garden-io/sdk/build/src/util/string" -import { defaultTerraformVersion, terraformCliSpecs } from "./cli" -import { ConfigurationError } from "@garden-io/sdk/build/src/exceptions" -import { configureTerraformModule, TerraformModule, terraformModuleSchema } from "./module" -import { docsBaseUrl } from "@garden-io/sdk/build/src/constants" -import { getTerraformCommands } from "./commands" -import { TerraformDeployConfig, terraformDeployOutputsSchema, terraformDeploySchema } from "./action" -import { deleteTerraformModule, deployTerraform, getTerraformStatus } from "./handlers" -import { DOCS_BASE_URL } from "@garden-io/core/build/src/constants" -import { ExecBuildConfig } from "@garden-io/core/build/src/plugins/exec/build" -import { ConvertModuleParams } from "@garden-io/core/build/src/plugin/handlers/Module/convert" -import { TerraformProvider, TerraformProviderConfig, terraformProviderConfigSchema } from "./provider" -import { PluginContext } from "@garden-io/core/build/src/plugin-context" +import { cleanupEnvironment, getEnvironmentStatus, prepareEnvironment } from "./init.js" +import { dedent } from "@garden-io/sdk/build/src/util/string.js" +import { defaultTerraformVersion, terraformCliSpecs } from "./cli.js" +import { ConfigurationError } from "@garden-io/sdk/build/src/exceptions.js" +import type { TerraformModule } from "./module.js" +import { configureTerraformModule, terraformModuleSchema } from "./module.js" +import { docsBaseUrl } from "@garden-io/sdk/build/src/constants.js" +import { getTerraformCommands } from "./commands.js" +import type { TerraformDeployConfig } from "./action.js" +import { terraformDeployOutputsSchema, terraformDeploySchema } from "./action.js" +import { deleteTerraformModule, deployTerraform, getTerraformStatus } from "./handlers.js" +import { DOCS_BASE_URL } from "@garden-io/core/build/src/constants.js" +import type { ExecBuildConfig } from "@garden-io/core/build/src/plugins/exec/build.js" +import type { ConvertModuleParams } from "@garden-io/core/build/src/plugin/handlers/Module/convert.js" +import type { TerraformProvider, TerraformProviderConfig } from "./provider.js" +import { terraformProviderConfigSchema } from "./provider.js" +import type { PluginContext } from "@garden-io/core/build/src/plugin-context.js" // Need to make these variables to avoid escaping issues const deployOutputsTemplateString = "${deploys..outputs.}" diff --git a/plugins/terraform/src/init.ts b/plugins/terraform/src/init.ts index c1371b4250..1290161a33 100644 --- a/plugins/terraform/src/init.ts +++ b/plugins/terraform/src/init.ts @@ -6,12 +6,12 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { TerraformProvider } from "./provider" -import { applyStack, getRoot, getStackStatus, getTfOutputs, prepareVariables, setWorkspace } from "./helpers" +import type { TerraformProvider } from "./provider.js" +import { applyStack, getRoot, getStackStatus, getTfOutputs, prepareVariables, setWorkspace } from "./helpers.js" import chalk from "chalk" -import { deline } from "@garden-io/sdk/build/src/util/string" -import { ProviderHandlers } from "@garden-io/sdk/build/src/types" -import { terraform } from "./cli" +import { deline } from "@garden-io/sdk/build/src/util/string.js" +import type { ProviderHandlers } from "@garden-io/sdk/build/src/types.js" +import { terraform } from "./cli.js" export const getEnvironmentStatus: ProviderHandlers["getEnvironmentStatus"] = async ({ ctx, log }) => { const provider = ctx.provider as TerraformProvider diff --git a/plugins/terraform/src/module.ts b/plugins/terraform/src/module.ts index 2d8b220aae..34bfd52847 100644 --- a/plugins/terraform/src/module.ts +++ b/plugins/terraform/src/module.ts @@ -7,15 +7,16 @@ */ import { join } from "path" -import { pathExists } from "fs-extra" -import { joi } from "@garden-io/core/build/src/config/common" -import { GardenModule, ModuleActionHandlers, PluginContext } from "@garden-io/sdk/build/src/types" -import { ConfigurationError } from "@garden-io/sdk/build/src/exceptions" -import { dependenciesSchema } from "@garden-io/core/build/src/config/service" -import { TerraformBaseSpec } from "./helpers" -import { TerraformProvider, TerraformProviderConfig } from "./provider" -import { baseBuildSpecSchema } from "@garden-io/core/build/src/config/module" -import { terraformDeploySchemaKeys } from "./action" +import fsExtra from "fs-extra" +const { pathExists } = fsExtra +import { joi } from "@garden-io/core/build/src/config/common.js" +import type { GardenModule, ModuleActionHandlers, PluginContext } from "@garden-io/sdk/build/src/types.js" +import { ConfigurationError } from "@garden-io/sdk/build/src/exceptions.js" +import { dependenciesSchema } from "@garden-io/core/build/src/config/service.js" +import type { TerraformBaseSpec } from "./helpers.js" +import type { TerraformProvider, TerraformProviderConfig } from "./provider.js" +import { baseBuildSpecSchema } from "@garden-io/core/build/src/config/module.js" +import { terraformDeploySchemaKeys } from "./action.js" export interface TerraformModuleSpec extends TerraformBaseSpec { root: string diff --git a/plugins/terraform/src/provider.ts b/plugins/terraform/src/provider.ts index 460daf1514..c00baa6107 100644 --- a/plugins/terraform/src/provider.ts +++ b/plugins/terraform/src/provider.ts @@ -6,13 +6,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { dedent } from "@garden-io/sdk/build/src/util/string" -import { defaultTerraformVersion, supportedVersions } from "./cli" -import { TerraformBaseSpec, variablesSchema } from "./helpers" -import { docsBaseUrl } from "@garden-io/sdk/build/src/constants" +import { dedent } from "@garden-io/sdk/build/src/util/string.js" +import { defaultTerraformVersion, supportedVersions } from "./cli.js" +import type { TerraformBaseSpec } from "./helpers.js" +import { variablesSchema } from "./helpers.js" +import { docsBaseUrl } from "@garden-io/sdk/build/src/constants.js" -import { GenericProviderConfig, Provider, providerConfigBaseSchema } from "@garden-io/core/build/src/config/provider" -import { joi } from "@garden-io/core/build/src/config/common" +import type { GenericProviderConfig, Provider } from "@garden-io/core/build/src/config/provider.js" +import { providerConfigBaseSchema } from "@garden-io/core/build/src/config/provider.js" +import { joi } from "@garden-io/core/build/src/config/common.js" export type TerraformProviderConfig = GenericProviderConfig & TerraformBaseSpec & { diff --git a/plugins/terraform/test/common.ts b/plugins/terraform/test/common.ts index 10b7a4bf81..c19549448e 100644 --- a/plugins/terraform/test/common.ts +++ b/plugins/terraform/test/common.ts @@ -6,19 +6,24 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { join, resolve } from "path" -import { pathExists, remove } from "fs-extra" -import { gardenPlugin } from "../src/index" -import { TerraformProvider } from "../src/provider" -import { makeTestGarden, TestGarden } from "@garden-io/sdk/build/src/testing" -import { Log, PluginContext } from "@garden-io/sdk/build/src/types" -import { getWorkspaces, setWorkspace } from "../src/helpers" +import { dirname, join, resolve } from "node:path" +import fsExtra from "fs-extra" +const { pathExists, remove } = fsExtra +import { gardenPlugin } from "../src/index.js" +import type { TerraformProvider } from "../src/provider.js" +import type { TestGarden } from "@garden-io/sdk/build/src/testing.js" +import { makeTestGarden } from "@garden-io/sdk/build/src/testing.js" +import type { Log, PluginContext } from "@garden-io/sdk/build/src/types.js" +import { getWorkspaces, setWorkspace } from "../src/helpers.js" import { expect } from "chai" -import { defaultTerraformVersion, terraform } from "../src/cli" +import { defaultTerraformVersion, terraform } from "../src/cli.js" +import { fileURLToPath } from "node:url" + +const moduleDirName = dirname(fileURLToPath(import.meta.url)) for (const terraformVersion of ["0.13.3", defaultTerraformVersion]) { describe(`Terraform common with version ${terraformVersion}`, () => { - const testRoot = resolve(__dirname, "../../test/", "test-project") + const testRoot = resolve(moduleDirName, "../../test/", "test-project") let root: string let terraformDirPath: string diff --git a/plugins/terraform/test/terraform.ts b/plugins/terraform/test/terraform.ts index 40b558f6ca..22938209c0 100644 --- a/plugins/terraform/test/terraform.ts +++ b/plugins/terraform/test/terraform.ts @@ -6,26 +6,32 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { join, resolve } from "path" +import { dirname, join, resolve } from "node:path" import { expect } from "chai" -import { pathExists, readFile, remove } from "fs-extra" - -import { getRootLogMessages, makeTestGarden, TestGarden } from "@garden-io/sdk/build/src/testing" -import { findByName } from "@garden-io/core/build/src/util/util" -import { getTerraformCommands } from "../src/commands" -import { ConfigGraph, LogLevel } from "@garden-io/sdk/build/src/types" -import { gardenPlugin } from "../src/index" -import { TerraformProvider } from "../src/provider" -import { DeployTask } from "@garden-io/core/build/src/tasks/deploy" -import { getWorkspaces, setWorkspace } from "../src/helpers" -import { resolveAction } from "@garden-io/core/build/src/graph/actions" -import { RunTask } from "@garden-io/core/build/src/tasks/run" -import { defaultTerraformVersion } from "../src/cli" +import fsExtra from "fs-extra" +const { pathExists, readFile, remove } = fsExtra + +import type { TestGarden } from "@garden-io/sdk/build/src/testing.js" +import { getRootLogMessages, makeTestGarden } from "@garden-io/sdk/build/src/testing.js" +import { findByName } from "@garden-io/core/build/src/util/util.js" +import { getTerraformCommands } from "../src/commands.js" +import type { ConfigGraph } from "@garden-io/sdk/build/src/types.js" +import { LogLevel } from "@garden-io/sdk/build/src/types.js" +import { gardenPlugin } from "../src/index.js" +import type { TerraformProvider } from "../src/provider.js" +import { DeployTask } from "@garden-io/core/build/src/tasks/deploy.js" +import { getWorkspaces, setWorkspace } from "../src/helpers.js" +import { resolveAction } from "@garden-io/core/build/src/graph/actions.js" +import { RunTask } from "@garden-io/core/build/src/tasks/run.js" +import { defaultTerraformVersion } from "../src/cli.js" +import { fileURLToPath } from "node:url" + +const moduleDirName = dirname(fileURLToPath(import.meta.url)) for (const terraformVersion of ["0.13.3", defaultTerraformVersion]) { describe(`Terraform provider with terraform ${terraformVersion}`, () => { - const testRoot = resolve(__dirname, "../../test/", "test-project") + const testRoot = resolve(moduleDirName, "../../test/", "test-project") let garden: TestGarden let tfRoot: string let stateDirPath: string @@ -290,7 +296,7 @@ for (const terraformVersion of ["0.13.3", defaultTerraformVersion]) { }) describe("Terraform action type", () => { - const testRoot = resolve(__dirname, "../../test/", "test-project-action") + const testRoot = resolve(moduleDirName, "../../test/", "test-project-action") const tfRoot = join(testRoot, "tf") const stateDirPath = join(tfRoot, "terraform.tfstate") const testFilePath = join(tfRoot, "test.log") @@ -728,7 +734,7 @@ for (const terraformVersion of ["0.13.3", defaultTerraformVersion]) { }) describe("Terraform module type", () => { - const testRoot = resolve(__dirname, "../../test/", "test-project-module") + const testRoot = resolve(moduleDirName, "../../test/", "test-project-module") const tfRoot = join(testRoot, "tf") const stateDirPath = join(tfRoot, "terraform.tfstate") const testFilePath = join(tfRoot, "test.log") diff --git a/plugins/terraform/test/validation.ts b/plugins/terraform/test/validation.ts index 6365f3c2e8..f270864bd8 100644 --- a/plugins/terraform/test/validation.ts +++ b/plugins/terraform/test/validation.ts @@ -6,17 +6,20 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { makeTestGarden } from "@garden-io/sdk/build/src/testing" -import { resolve } from "path" -import { gardenPlugin } from "../src/index" -import { defaultTerraformVersion } from "../src/cli" -import { ValidateCommand } from "@garden-io/core/build/src/commands/validate" -import { withDefaultGlobalOpts } from "@garden-io/core/build/test/helpers" +import { makeTestGarden } from "@garden-io/sdk/build/src/testing.js" +import { dirname, resolve } from "node:path" +import { gardenPlugin } from "../src/index.js" +import { defaultTerraformVersion } from "../src/cli.js" +import { ValidateCommand } from "@garden-io/core/build/src/commands/validate.js" +import { withDefaultGlobalOpts } from "@garden-io/core/build/test/helpers.js" +import { fileURLToPath } from "node:url" + +const moduleDirName = dirname(fileURLToPath(import.meta.url)) describe("terraform validation", () => { for (const project of ["test-project", "test-project-action", "test-project-module"]) { it(`should pass validation for ${project}`, async () => { - const testRoot = resolve(__dirname, "../../test/", project) + const testRoot = resolve(moduleDirName, "../../test/", project) const garden = await makeTestGarden(testRoot, { plugins: [gardenPlugin()], variableOverrides: { "tf-version": defaultTerraformVersion }, diff --git a/plugins/terraform/tsconfig.json b/plugins/terraform/tsconfig.json index 459cf0ab29..3e6b28fb57 100644 --- a/plugins/terraform/tsconfig.json +++ b/plugins/terraform/tsconfig.json @@ -6,7 +6,9 @@ ], "compilerOptions": { "composite": true, - "outDir": "build" + "outDir": "build", + "module": "nodenext", + "moduleResolution": "nodenext" }, "references": [ { diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000000..0ab3a81386 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,130 @@ +/* + * Copyright (C) 2018-2023 Garden Technologies, Inc. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +import { nodeResolve } from "@rollup/plugin-node-resolve" +import commonjs from "@rollup/plugin-commonjs" +import json from "@rollup/plugin-json" +import replace from "@rollup/plugin-replace"; +import url from "@rollup/plugin-url"; + +export default { + logLevel: "debug", + input: "garden-sea/tmp/source/cli/bin/garden.js", + external: [ + /.*\.node$/g, + ], + output: { + dir: "garden-sea/tmp/rollup/", + format: "esm", + name: "MyModule", + // Make sure we can still dynamically import certain heavy dependencies + // and they don't get immediately hoisted or inlined + inlineDynamicImports: false, + hoistTransitiveImports: false, + entryFileNames: "[name].mjs", + chunkFileNames: "[name]-[hash].mjs", + }, + plugins: [ + // Rewrite require calls to use the global require to import native modules. + { + name: "rewrite-native-require", + generateBundle: (_options, bundle) => { + for (const file of Object.values(bundle)) { + if (file.type === "chunk") { + file.code = file.code.replace(/require\(.+\/([a-z]+\.node)['"]\)/g, "require(process.env.GARDEN_SEA_EXTRACTED_ROOT + '/native/$1')") + } + } + } + }, + + // we import the package.json file for version number detection + json(), + + // NOTE: You may need the following hacks if we ever decide to update ink to the latest version + // HACK: make yoga.wasm import compatible with rollup in tmp/pkg/core/node_modules/ink/node_modules/yoga-wasm-web/dist/node.js + replace({ + include: [/yoga-wasm-web.*node\.js$/], + values: { + // I'm really sorry for anyone who has to update this whenever a new version of yoga-wasm-web is released. + // Let's hope that rollup supports module.createRequire(import.meta.url).resolve(...) soon. Tracking issue: https://github.com/rollup/rollup/issues/4274 + 'let Yoga=await a(await E(_(import.meta.url).resolve("./yoga.wasm")))': `let Yoga=await a(Buffer.from(require('./yoga.wasm').default.split(';base64,').pop(), 'base64'))`, + }, + delimiters: ["", ""], + }), + // NOTE: this works together with the hack above to make wasm load work for yoga-wasm-web in rollup + url({ + include: [/\.wasm$/], + emitFiles: false, + limit: 1024 * 1024 * 1024 * 100, // 100MB + }), + + // // See also https://github.com/diegomura/react-pdf/issues/662#issuecomment-529967136 + // replace({ + // include: [/yoga-layout-prebuilt/], + // values: { + // "_a = _typeModule(_typeModule),": "var _a = _typeModule(_typeModule);", + // }, + // delimiters: ["", ""], + // }), + + // See also https://github.com/open-telemetry/opentelemetry-js/issues/3954 + replace({ + include: [/opentelemetry.*instrumentation\.js/], + values: { + "import * as ImportInTheMiddle from 'import-in-the-middle'": "import ImportInTheMiddle from 'import-in-the-middle'" + }, + delimiters: ["", ""], + }), + + replace({ + include: [/.*\.js/], + values: { + "__dirname": "`./`", + "__filename": "`garden.mjs`", + }, + preventAssignment: true, + }), + + nodeResolve({ + exportConditions: ["node"], + preferBuiltins: true, + }), + commonjs({ + // For OpenTelemetry + transformMixedEsModules: true, + // for .node native modules and eventually, in the future, possibly external plugins + ignoreDynamicRequires: true, + ignore: (id) => { + // https://github.com/open-telemetry/opentelemetry-js/issues/3759 + if (id === "@opentelemetry/exporter-jaeger") { + return true + } + + if (id.endsWith(".node")) { + return true + } + + return false + }, + }), + // This is needed to import native modules. + // See also https://stackoverflow.com/a/66527729 + { + name: "add global require", + generateBundle: (_options, bundle) => { + for (const file of Object.values(bundle)) { + if (file.type === "chunk") { + file.code = file.code.replace(/^#!(.*)/m, `#!$1 +import { createRequire } from 'module'; +const require = createRequire(import.meta.url); +`) + } + } + } + }, + ] +}; diff --git a/scripts/changelog.ts b/scripts/changelog.ts index 74f93b2220..907c49d10f 100755 --- a/scripts/changelog.ts +++ b/scripts/changelog.ts @@ -8,9 +8,12 @@ */ import execa from "execa" -import { resolve } from "path" +import { fileURLToPath } from "node:url" +import { dirname, resolve } from "node:path" -const gardenRoot = resolve(__dirname, "..") +const moduleDirName = dirname(fileURLToPath(import.meta.url)) + +const gardenRoot = resolve(moduleDirName, "..") export async function getChangelog(curReleaseTag: string) { try { diff --git a/scripts/check-package-licenses.ts b/scripts/check-package-licenses.ts index 53c69e0328..68eb312302 100755 --- a/scripts/check-package-licenses.ts +++ b/scripts/check-package-licenses.ts @@ -8,15 +8,19 @@ /* eslint-disable no-console */ // eslint-disable-next-line header/header import { dumpLicenses } from "npm-license-crawler" -import { join, resolve } from "path" +import { dirname, join, resolve } from "node:path" import stripAnsi from "strip-ansi" import chalk from "chalk" -import { promisify } from "util" -import { asTree } from "treeify" +import { promisify } from "node:util" +import treeify from "treeify" import { stringify } from "csv-stringify/sync" -import { writeFile } from "fs-extra" +import fsExtra from "fs-extra" +const { writeFile } = fsExtra +import { fileURLToPath } from "node:url" -const gardenRoot = resolve(__dirname, "..") +const moduleDirName = dirname(fileURLToPath(import.meta.url)) + +const gardenRoot = resolve(moduleDirName, "..") const disallowedLicenses = [/^AGPL/, /^copyleft/, "CC-BY-NC", "CC-BY-SA", /^FAL/, /^GPL/] @@ -86,12 +90,13 @@ async function checkPackageLicenses(root: string) { if (disallowedCount > 0) { let msg = chalk.red.bold(`\nFound ${disallowedCount} packages with disallowed licenses:\n`) - msg += asTree(disallowedPackages, true, true) + msg += treeify.asTree(disallowedPackages, true, true) throw new Error(msg) } } -if (require.main === module) { +const modulePath = fileURLToPath(import.meta.url) +if (process.argv[1] === modulePath) { checkPackageLicenses(gardenRoot).catch((error) => { console.error(error.message) process.exit(1) diff --git a/scripts/convert-jsonl-log.ts b/scripts/convert-jsonl-log.ts index 63ca9193f7..115ce1c848 100755 --- a/scripts/convert-jsonl-log.ts +++ b/scripts/convert-jsonl-log.ts @@ -1,10 +1,18 @@ #!/usr/bin/env ts-node +/* + * Copyright (C) 2018-2023 Garden Technologies, Inc. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ /** * Helper script for parsing the JSONL log files generated by the Garden CLI in .garden/logs */ import * as jsonl from "node-jsonl" +import * as url from "node:url" import { resolve } from "path" async function convert(path: string) { @@ -26,7 +34,8 @@ async function convert(path: string) { const args = process.argv.slice(2) const filename = args[0] -if (require.main === module) { +const modulePath = url.fileURLToPath(import.meta.url) +if (process.argv[1] === modulePath) { convert(filename).catch((err) => { console.error(err) process.exit(1) diff --git a/scripts/draft-release-notes.ts b/scripts/draft-release-notes.ts index 0069447e24..ac2a0f525b 100755 --- a/scripts/draft-release-notes.ts +++ b/scripts/draft-release-notes.ts @@ -9,14 +9,18 @@ /* eslint-disable no-console */ -import { writeFile } from "fs-extra" -import { execSync } from "child_process" -import { resolve } from "path" -import { dedent } from "@garden-io/sdk/build/src/util/string" -import { getChangelog } from "./changelog" -import parseArgs = require("minimist") - -const gardenRoot = resolve(__dirname, "..") +import fsExtra from "fs-extra" +const { writeFile } = fsExtra +import { execSync } from "node:child_process" +import { dirname, resolve } from "node:path" +import { dedent } from "@garden-io/sdk/build/src/util/string.js" +import { getChangelog } from "./changelog.js" +import parseArgs from "minimist" +import { fileURLToPath } from "node:url" + +const moduleDirName = dirname(fileURLToPath(import.meta.url)) + +const gardenRoot = resolve(moduleDirName, "..") function getContributors(prevReleaseTag: string, curReleaseTag: string) { try { diff --git a/scripts/release.ts b/scripts/release.ts index b047128b7f..189dedf91f 100755 --- a/scripts/release.ts +++ b/scripts/release.ts @@ -13,18 +13,21 @@ import execa from "execa" import semver from "semver" import inquirer from "inquirer" import chalk from "chalk" -import { relative, resolve } from "path" -import { createWriteStream, readFile, writeFile } from "fs-extra" -import { getPackages } from "./script-utils" -import parseArgs = require("minimist") -import deline = require("deline") +import { dirname, relative, resolve } from "node:path" +import fsExtra from "fs-extra" +const { createWriteStream, readFile, writeFile } = fsExtra +import { getPackages } from "./script-utils.js" +import parseArgs from "minimist" +import deline from "deline" +import replace from "replace-in-file" +import { fileURLToPath } from "node:url" -const replace = require("replace-in-file") +const moduleDirName = dirname(fileURLToPath(import.meta.url)) type ReleaseType = "minor" | "patch" | "preminor" | "prepatch" | "prerelease" const RELEASE_TYPES = ["minor", "patch", "preminor", "prepatch", "prerelease"] -const gardenRoot = resolve(__dirname, "..") +const gardenRoot = resolve(moduleDirName, "..") /** * Performs the following steps to prepare for a release: @@ -57,7 +60,7 @@ async function release() { throw new Error(`Invalid release type ${releaseType}, available types are: ${RELEASE_TYPES.join(", ")}`) } - const prevVersion = require("../package.json").version + const prevVersion = JSON.parse(await readFile("../package.json", "utf-8")).version as string const version = semver.inc(prevVersion, releaseType)! // Update package.json versions @@ -76,7 +79,7 @@ async function release() { console.log(`Bumping version from ${prevVersion} to ${version}...`) - const rootPackageJsonPath = resolve(__dirname, "..", "package.json") + const rootPackageJsonPath = resolve(moduleDirName, "..", "package.json") await updatePackageJsonVersion(rootPackageJsonPath, version) console.log(`Setting package versions to ${packageVersion}...`) @@ -224,7 +227,7 @@ async function release() { } async function updatePackageJsonVersion(packageJsonPath: string, newVersion: string) { - const packageJson = require(packageJsonPath) + const packageJson = JSON.parse(await readFile(packageJsonPath, "utf-8")) packageJson.version = newVersion await writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2)) } diff --git a/scripts/run-script.ts b/scripts/run-script.ts index 9666dfa5a9..8c61451aa6 100755 --- a/scripts/run-script.ts +++ b/scripts/run-script.ts @@ -9,16 +9,19 @@ /* eslint-disable no-console */ import execa from "execa" -import { max, padEnd, padStart } from "lodash" +import { max, padEnd, padStart } from "lodash-es" import { DepGraph } from "dependency-graph" -import split2 = require("split2") +import split2 from "split2" import chalk from "chalk" import wrapAnsi from "wrap-ansi" import stripAnsi from "strip-ansi" -import { join, resolve } from "path" -import { createWriteStream, WriteStream } from "fs" -import { getPackages } from "./script-utils" +import { dirname, join, resolve } from "node:path" +import { createWriteStream, WriteStream } from "node:fs" +import { getPackages } from "./script-utils.js" import yargs from "yargs/yargs" +import { fileURLToPath } from "node:url" + +const moduleDirName = dirname(fileURLToPath(import.meta.url)) const colors = [chalk.blueBright, chalk.green, chalk.yellow, chalk.magenta, chalk.cyan] @@ -39,7 +42,7 @@ async function runInPackages(args: string[]) { const script = parsed._[0] as string const rest = parsed._.slice(1) as string[] const { scope, ignore, bail, parallel } = parsed - const repoRoot = resolve(__dirname, "..") + const repoRoot = resolve(moduleDirName, "..") if (!script) { throw new Error("Must specify script name") diff --git a/scripts/script-utils.ts b/scripts/script-utils.ts index ca2a613de6..04e015b083 100644 --- a/scripts/script-utils.ts +++ b/scripts/script-utils.ts @@ -1,8 +1,18 @@ -// This file contains functions that are being used in multiple different scripts. +/* + * Copyright (C) 2018-2023 Garden Technologies, Inc. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ import execa from "execa" import minimatch from "minimatch" -import { resolve } from "path" +import { dirname, resolve } from "node:path" +import { fileURLToPath } from "node:url" +import { readFile } from "node:fs/promises" + +const moduleDirName = dirname(fileURLToPath(import.meta.url)) export type NPMWorkspaceQueryResult = { name: string @@ -29,19 +39,21 @@ export async function getPackages({ scope, ignore }: { scope?: string; ignore?: packages = packages.filter(({ name }) => !minimatch(name, ignore)) } - return packages.map(({ name, location, dependencies }) => { - const resolvedLocation = resolve(__dirname, "..", location) - // A dependency is considered a workspace dependency if it is also a workspace - const workspaceDependencies = Object.keys(dependencies).filter((dependencyName) => { - return packages.some((p) => p.name === dependencyName) + return Promise.all( + packages.map(async ({ name, location, dependencies }) => { + const resolvedLocation = resolve(moduleDirName, "..", location) + // A dependency is considered a workspace dependency if it is also a workspace + const workspaceDependencies = Object.keys(dependencies).filter((dependencyName) => { + return packages.some((p) => p.name === dependencyName) + }) + + return { + name, + location: resolvedLocation, + packageJson: JSON.parse(await readFile(resolve(resolvedLocation, "package.json"), "utf-8")), + shortName: name.split("/")[1], + workspaceDependencies, + } }) - - return { - name, - location: resolvedLocation, - packageJson: require(resolve(resolvedLocation, "package.json")), - shortName: name.split("/")[1], - workspaceDependencies, - } - }) + ) } diff --git a/sdk/package.json b/sdk/package.json index 936e120e19..bba4cb0ecc 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -2,6 +2,7 @@ "name": "@garden-io/sdk", "version": "0.13.18", "description": "TypeScript plugin SDK for Garden", + "type": "module", "repository": { "type": "git", "url": "git+https://github.com/garden-io/garden.git" diff --git a/sdk/src/constants.ts b/sdk/src/constants.ts index 9b48db4224..e509ae2551 100644 --- a/sdk/src/constants.ts +++ b/sdk/src/constants.ts @@ -7,5 +7,5 @@ */ // TODO: re-organize (and maybe rename) these upstream -export { DOCS_BASE_URL as docsBaseUrl } from "@garden-io/core/build/src/constants" -export { defaultNamespace } from "@garden-io/core/build/src/config/project" +export { DOCS_BASE_URL as docsBaseUrl } from "@garden-io/core/build/src/constants.js" +export { defaultNamespace } from "@garden-io/core/build/src/config/project.js" diff --git a/sdk/src/exceptions.ts b/sdk/src/exceptions.ts index d70c7d7fc8..594874a4ea 100644 --- a/sdk/src/exceptions.ts +++ b/sdk/src/exceptions.ts @@ -6,4 +6,4 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -export * from "@garden-io/core/build/src/exceptions" +export * from "@garden-io/core/build/src/exceptions.js" diff --git a/sdk/src/index.ts b/sdk/src/index.ts index ca185a34e9..82ef3ebc3f 100644 --- a/sdk/src/index.ts +++ b/sdk/src/index.ts @@ -6,5 +6,5 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -export { createGardenPlugin, getPluginOutputsPath } from "@garden-io/core/build/src/plugin/plugin" -export { gardenEnv } from "@garden-io/core/build/src/constants" +export { createGardenPlugin, getPluginOutputsPath } from "@garden-io/core/build/src/plugin/plugin.js" +export { gardenEnv } from "@garden-io/core/build/src/constants.js" diff --git a/sdk/src/testing.ts b/sdk/src/testing.ts index 29c052a793..7feaa44bda 100644 --- a/sdk/src/testing.ts +++ b/sdk/src/testing.ts @@ -6,13 +6,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { TestGarden, TestGardenOpts } from "@garden-io/core/build/src/util/testing" -import { uuidv4 } from "@garden-io/core/build/src/util/random" -import { LogLevel, RootLogger } from "@garden-io/core/build/src/logger/logger" +import type { TestGardenOpts } from "@garden-io/core/build/src/util/testing.js" +import { TestGarden } from "@garden-io/core/build/src/util/testing.js" +import { uuidv4 } from "@garden-io/core/build/src/util/random.js" +import { LogLevel, RootLogger } from "@garden-io/core/build/src/logger/logger.js" -export { TestGarden, getLogMessages, getRootLogMessages } from "@garden-io/core/build/src/util/testing" -export { expectError } from "@garden-io/core/build/src/util/testing" -export { makeTempDir } from "@garden-io/core/build/src/util/fs" +export { TestGarden, getLogMessages, getRootLogMessages } from "@garden-io/core/build/src/util/testing.js" +export { expectError } from "@garden-io/core/build/src/util/testing.js" +export { makeTempDir } from "@garden-io/core/build/src/util/fs.js" export const makeTestGarden = async (projectRoot: string, opts: TestGardenOpts = {}): Promise => { // Make sure Logger is initialized diff --git a/sdk/src/types.ts b/sdk/src/types.ts index dff59bf1c2..616be9c1ec 100644 --- a/sdk/src/types.ts +++ b/sdk/src/types.ts @@ -6,19 +6,19 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -export { Garden } from "@garden-io/core/build/src/garden" -export { ModuleConfig } from "@garden-io/core/build/src/config/module" -export { GardenModule } from "@garden-io/core/build/src/types/module" -export { GardenService } from "@garden-io/core/build/src/types/service" -export { GraphResults } from "@garden-io/core/build/src/graph/results" -export { PluginTask, PluginActionTask } from "@garden-io/core/build/src/tasks/plugin" -export { BuildTask } from "@garden-io/core/build/src/tasks/build" -export { LogLevel } from "@garden-io/core/build/src/logger/logger" -export { Log, ActionLog } from "@garden-io/core/build/src/logger/log-entry" -export { PluginContext } from "@garden-io/core/build/src/plugin-context" -export { ProjectConfig } from "@garden-io/core/build/src/config/project" -export { PluginToolSpec } from "@garden-io/core/build/src/plugin/tools" -export { GardenPluginSpec as GardenPlugin } from "@garden-io/core/build/src/plugin/plugin" -export { ConfigGraph } from "@garden-io/core/build/src/graph/config-graph" -export { PluginCommand, PluginCommandParams } from "@garden-io/core/build/src/plugin/command" -export { ModuleActionHandlers, ProviderHandlers } from "@garden-io/core/build/src/plugin/plugin" +export { Garden } from "@garden-io/core/build/src/garden.js" +export { ModuleConfig } from "@garden-io/core/build/src/config/module.js" +export { GardenModule } from "@garden-io/core/build/src/types/module.js" +export { GardenService } from "@garden-io/core/build/src/types/service.js" +export { GraphResults } from "@garden-io/core/build/src/graph/results.js" +export { PluginTask, PluginActionTask } from "@garden-io/core/build/src/tasks/plugin.js" +export { BuildTask } from "@garden-io/core/build/src/tasks/build.js" +export { LogLevel } from "@garden-io/core/build/src/logger/logger.js" +export { Log, ActionLog } from "@garden-io/core/build/src/logger/log-entry.js" +export { PluginContext } from "@garden-io/core/build/src/plugin-context.js" +export { ProjectConfig } from "@garden-io/core/build/src/config/project.js" +export { PluginToolSpec } from "@garden-io/core/build/src/plugin/tools.js" +export { GardenPluginSpec as GardenPlugin } from "@garden-io/core/build/src/plugin/plugin.js" +export { ConfigGraph } from "@garden-io/core/build/src/graph/config-graph.js" +export { PluginCommand, PluginCommandParams } from "@garden-io/core/build/src/plugin/command.js" +export { ModuleActionHandlers, ProviderHandlers } from "@garden-io/core/build/src/plugin/plugin.js" diff --git a/sdk/src/util/cli.ts b/sdk/src/util/cli.ts index a048066302..e7a38cc4a0 100644 --- a/sdk/src/util/cli.ts +++ b/sdk/src/util/cli.ts @@ -6,8 +6,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { ParameterObject } from "@garden-io/core/build/src/cli/params" -import { prepareMinimistOpts } from "@garden-io/core/build/src/cli/helpers" +import type { ParameterObject } from "@garden-io/core/build/src/cli/params.js" +import { prepareMinimistOpts } from "@garden-io/core/build/src/cli/helpers.js" import minimist from "minimist" export { @@ -20,7 +20,7 @@ export { StringOption, StringsParameter, TagsOption, -} from "@garden-io/core/build/src/cli/params" +} from "@garden-io/core/build/src/cli/params.js" /** * Parses the given CLI arguments using minimist, according to the CLI options spec provided. Useful for plugin commands diff --git a/sdk/src/util/ext-tools.ts b/sdk/src/util/ext-tools.ts index 79db82ea01..62367e0bd7 100644 --- a/sdk/src/util/ext-tools.ts +++ b/sdk/src/util/ext-tools.ts @@ -6,5 +6,5 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -export { CliWrapper } from "@garden-io/core/build/src/util/ext-tools" -export { PluginToolSpec } from "@garden-io/core/build/src/plugin/tools" +export { CliWrapper } from "@garden-io/core/build/src/util/ext-tools.js" +export { PluginToolSpec } from "@garden-io/core/build/src/plugin/tools.js" diff --git a/sdk/src/util/fs.ts b/sdk/src/util/fs.ts index 17cdeef2e3..106d3039e4 100644 --- a/sdk/src/util/fs.ts +++ b/sdk/src/util/fs.ts @@ -6,4 +6,4 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -export { matchGlobs, listDirectory } from "@garden-io/core/build/src/util/fs" +export { matchGlobs, listDirectory } from "@garden-io/core/build/src/util/fs.js" diff --git a/sdk/src/util/string.ts b/sdk/src/util/string.ts index b678efc7d9..3838733a8a 100644 --- a/sdk/src/util/string.ts +++ b/sdk/src/util/string.ts @@ -6,4 +6,4 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -export { base64, dedent, deline, naturalList } from "@garden-io/core/build/src/util/string" +export { base64, dedent, deline, naturalList } from "@garden-io/core/build/src/util/string.js" diff --git a/sdk/tsconfig.json b/sdk/tsconfig.json index fbe91eefbe..fc0c39d201 100644 --- a/sdk/tsconfig.json +++ b/sdk/tsconfig.json @@ -6,7 +6,9 @@ ], "compilerOptions": { "composite": true, - "outDir": "build" + "outDir": "build", + "module": "nodenext", + "moduleResolution": "nodenext" }, "references": [ { "path": "../core" } diff --git a/support/alpine-builder.Dockerfile b/support/alpine-builder.Dockerfile deleted file mode 100644 index c5607face7..0000000000 --- a/support/alpine-builder.Dockerfile +++ /dev/null @@ -1,46 +0,0 @@ -# Note: This is used by build-pkg.ts, and is not usable as a Garden container -FROM node:18.15.0-alpine@sha256:47d97b93629d9461d64197773966cc49081cf4463b1b07de5a38b6bd5acfbe9d as builder - -RUN apk add --no-cache \ - ca-certificates \ - git \ - gzip \ - libstdc++ \ - openssh \ - openssl \ - python3 \ - make \ - gcc \ - g++ \ - musl-dev \ - tar - -WORKDIR /garden-tmp/pkg - -# Pre-fetch the node binary for pkg -RUN npm install pkg@5.8.1 && \ - node_modules/.bin/pkg-fetch node18 alpine x64 - -# Add all the packages -ADD package.json /garden-tmp/package.json -ADD package-lock.json /garden-tmp/package-lock.json -ADD cli /garden-tmp/cli -ADD core /garden-tmp/core -ADD plugins /garden-tmp/plugins -ADD sdk /garden-tmp/sdk - -# Install the CLI deps -WORKDIR /garden-tmp - -RUN npm install --omit=dev && \ - # Fix for error in this particular package - rm -rf node_modules/es-get-iterator/test - -ADD static /garden/static - -WORKDIR /garden-tmp/cli - -# Create the binary -RUN mkdir -p /garden \ - && node_modules/.bin/pkg --compress Brotli --target node18-alpine-x64 . --output /garden/garden \ - && /garden/garden version diff --git a/support/alpine.Dockerfile b/support/alpine.Dockerfile index e0eb8b0d0c..f1931682a4 100644 --- a/support/alpine.Dockerfile +++ b/support/alpine.Dockerfile @@ -55,9 +55,10 @@ FROM garden-base-$VARIANT as garden-base # Note: This Dockerfile is run with dist/linux-amd64 as the context root ADD --chown=$USER:root . /garden ENV PATH /garden:$PATH -RUN cd /garden/static && git init +# Make sure we run garden once so that it extracts all the binaries already WORKDIR $HOME +RUN GARDEN_DISABLE_ANALYTICS=true GARDEN_SEA_DEBUG=1 garden --help > /dev/null RUN GARDEN_DISABLE_ANALYTICS=true GARDEN_DISABLE_VERSION_CHECK=true garden util fetch-tools --all --garden-image-build WORKDIR /project diff --git a/support/debian.Dockerfile b/support/debian.Dockerfile index f1fe166645..80a9f32cd4 100644 --- a/support/debian.Dockerfile +++ b/support/debian.Dockerfile @@ -56,9 +56,10 @@ FROM garden-base-$VARIANT as garden-base # Note: This Dockerfile is run with dist/linux-amd64 as the context root ADD --chown=$USER:root . /garden ENV PATH /garden:$PATH -RUN cd /garden/static && git init +# Make sure we run garden once so that it extracts all the binaries already WORKDIR $HOME +RUN GARDEN_DISABLE_ANALYTICS=true GARDEN_SEA_DEBUG=1 garden --help > /dev/null RUN GARDEN_DISABLE_ANALYTICS=true GARDEN_DISABLE_VERSION_CHECK=true garden util fetch-tools --all --garden-image-build WORKDIR /project @@ -83,7 +84,7 @@ ENV GCLOUD_VERSION=444.0.0 ENV GCLOUD_SHA256="cc76b9b40508253f812af5e52d4630e90230312969eece04ccfb5328c557acac" RUN curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-${GCLOUD_VERSION}-linux-x86_64.tar.gz -RUN echo "${GCLOUD_SHA256} google-cloud-cli-${GCLOUD_VERSION}-linux-x86_64.tar.gz" | sha256sum -c +RUN echo "${GCLOUD_SHA256} google-cloud-cli-${GCLOUD_VERSION}-linux-x86_64.tar.gz" | sha256sum -c RUN tar -xf google-cloud-cli-${GCLOUD_VERSION}-linux-x86_64.tar.gz RUN ./google-cloud-sdk/install.sh --quiet RUN ./google-cloud-sdk/bin/gcloud components install kubectl gke-gcloud-auth-plugin --quiet @@ -176,4 +177,4 @@ ENV PATH /google-cloud-sdk/bin:$PATH COPY --chown=$USER:root --from=garden-azure-base /usr/bin/az /usr/bin/az COPY --chown=$USER:root --from=garden-azure-base /opt/az /opt/az COPY --chown=$USER:root --from=garden-azure-base /usr/local/bin/kubectl /usr/local/bin/kubectl -COPY --chown=$USER:root --from=garden-azure-base /usr/local/bin/kubelogin /usr/local/bin/kubelogin \ No newline at end of file +COPY --chown=$USER:root --from=garden-azure-base /usr/local/bin/kubelogin /usr/local/bin/kubelogin diff --git a/support/homebrew-formula.rb.j2 b/support/homebrew-formula.rb.j2 index 3665846b05..38a7a6ca37 100644 --- a/support/homebrew-formula.rb.j2 +++ b/support/homebrew-formula.rb.j2 @@ -14,7 +14,7 @@ class GardenCli < Formula end def install - libexec.install "garden", "fsevents.node", "static" + libexec.install "garden" bin.install_symlink libexec/"garden" end diff --git a/tsconfig.base.json b/tsconfig.base.json index 9f224aef08..29545f69ec 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1,4 +1,8 @@ { + "ts-node": { + // Tell ts-node CLI to install the --loader automatically, explained below + "esm": true + }, "compilerOptions": { "allowJs": false, "allowUnreachableCode": false, @@ -7,7 +11,6 @@ "allowUnusedLabels": false, "declaration": true, "declarationMap": true, - "emitDecoratorMetadata": true, "esModuleInterop": true, "experimentalDecorators": true, "skipLibCheck": true, @@ -19,9 +22,9 @@ "esnext", "esnext.asynciterable", "es2017", - "dom" ], - "module": "commonjs", + "module": "nodenext", + "moduleResolution": "nodenext", "noFallthroughCasesInSwitch": true, "noImplicitAny": false, "noImplicitReturns": true, @@ -30,8 +33,8 @@ "strictFunctionTypes": true, "strictNullChecks": true, "inlineSourceMap": true, - "target": "es2019", - "strict": true + "target": "ES2022", + "strict": true, }, "exclude": [ "core/build", diff --git a/tsconfig.json b/tsconfig.json index ffcbb9477e..fb96d43588 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,3 +1,7 @@ { - "extends": "./tsconfig.base.json" + "extends": "./tsconfig.base.json", + "compilerOptions": { + "module": "nodenext", + "moduleResolution": "nodenext" + } }