diff --git a/packages/core/src/common/front-end-routing/routes/cluster/workloads/replicationcontrollers/navigate-to-replication-controllers.injectable.ts b/packages/core/src/common/front-end-routing/routes/cluster/workloads/replicationcontrollers/navigate-to-replication-controllers.injectable.ts new file mode 100644 index 0000000000..240ad0f37e --- /dev/null +++ b/packages/core/src/common/front-end-routing/routes/cluster/workloads/replicationcontrollers/navigate-to-replication-controllers.injectable.ts @@ -0,0 +1,20 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import replicationControllersRouteInjectable from "./replicationcontrollers-route.injectable"; +import { navigateToRouteInjectionToken } from "../../../../navigate-to-route-injection-token"; + +const navigateToReplicationControllersInjectable = getInjectable({ + id: "navigate-to-replicationcontrollers", + + instantiate: (di) => { + const navigateToRoute = di.inject(navigateToRouteInjectionToken); + const route = di.inject(replicationControllersRouteInjectable); + + return () => navigateToRoute(route); + }, +}); + +export default navigateToReplicationControllersInjectable; diff --git a/packages/core/src/common/front-end-routing/routes/cluster/workloads/replicationcontrollers/replicationcontrollers-route.injectable.ts b/packages/core/src/common/front-end-routing/routes/cluster/workloads/replicationcontrollers/replicationcontrollers-route.injectable.ts new file mode 100644 index 0000000000..77d87abc96 --- /dev/null +++ b/packages/core/src/common/front-end-routing/routes/cluster/workloads/replicationcontrollers/replicationcontrollers-route.injectable.ts @@ -0,0 +1,24 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import { shouldShowResourceInjectionToken } from "../../../../../cluster-store/allowed-resources-injection-token"; +import { frontEndRouteInjectionToken } from "../../../../front-end-route-injection-token"; + +const replicationControllersRouteInjectable = getInjectable({ + id: "replicationcontrollers-route", + + instantiate: (di) => ({ + path: "/replicationcontrollers", + clusterFrame: true, + isEnabled: di.inject(shouldShowResourceInjectionToken, { + apiName: "replicationcontrollers", + group: "", // core + }), + }), + + injectionToken: frontEndRouteInjectionToken, +}); + +export default replicationControllersRouteInjectable; diff --git a/packages/core/src/common/k8s-api/endpoints/index.ts b/packages/core/src/common/k8s-api/endpoints/index.ts index 0314c6b282..8fb6cbdabd 100644 --- a/packages/core/src/common/k8s-api/endpoints/index.ts +++ b/packages/core/src/common/k8s-api/endpoints/index.ts @@ -33,6 +33,7 @@ export * from "./pod-metrics.api"; export * from "./pod-security-policy.api"; export * from "./priority-class.api"; export * from "./replica-set.api"; +export * from "./replication-controller.api"; export * from "./resource-quota.api"; export * from "./role.api"; export * from "./role-binding.api"; diff --git a/packages/core/src/common/k8s-api/endpoints/replication-controller.api.injectable.ts b/packages/core/src/common/k8s-api/endpoints/replication-controller.api.injectable.ts new file mode 100644 index 0000000000..6d65f446b5 --- /dev/null +++ b/packages/core/src/common/k8s-api/endpoints/replication-controller.api.injectable.ts @@ -0,0 +1,23 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token"; +import loggerInjectable from "../../logger.injectable"; +import maybeKubeApiInjectable from "../maybe-kube-api.injectable"; +import { ReplicationControllerApi } from "./replication-controller.api"; + +const replicationControllerApiInjectable = getInjectable({ + id: "replication-controller-api", + instantiate: (di) => { + return new ReplicationControllerApi({ + logger: di.inject(loggerInjectable), + maybeKubeApi: di.inject(maybeKubeApiInjectable), + }); + }, + + injectionToken: kubeApiInjectionToken, +}); + +export default replicationControllerApiInjectable; diff --git a/packages/core/src/common/k8s-api/endpoints/replication-controller.api.ts b/packages/core/src/common/k8s-api/endpoints/replication-controller.api.ts new file mode 100644 index 0000000000..c4a4250ebc --- /dev/null +++ b/packages/core/src/common/k8s-api/endpoints/replication-controller.api.ts @@ -0,0 +1,34 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api"; +import { KubeApi } from "../kube-api"; +import type { KubeObjectStatus, NamespaceScopedMetadata } from "../kube-object"; +import { KubeObject } from "../kube-object"; + +export class ReplicationControllerApi extends KubeApi { + constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) { + super(deps, { + ...opts ?? {}, + objectConstructor: ReplicationController, + }); + } +} + +export interface ReplicationControllerSpec { +} + +export interface ReplicationControllerStatus extends KubeObjectStatus { +} + +export class ReplicationController extends KubeObject< + NamespaceScopedMetadata, + ReplicationControllerStatus, + ReplicationControllerSpec +> { + static kind = "ReplicationController"; + static namespaced = true; + static apiBase = "/api/v1/replicationcontrollers"; +} diff --git a/packages/core/src/common/rbac.ts b/packages/core/src/common/rbac.ts index e2ccad3806..03b4fd1de9 100644 --- a/packages/core/src/common/rbac.ts +++ b/packages/core/src/common/rbac.ts @@ -6,7 +6,7 @@ export type KubeResource = "namespaces" | "nodes" | "events" | "resourcequotas" | "services" | "limitranges" | "leases" | "secrets" | "configmaps" | "ingresses" | "ingressclasses" | "networkpolicies" | "persistentvolumeclaims" | "persistentvolumes" | "storageclasses" | - "pods" | "daemonsets" | "deployments" | "statefulsets" | "replicasets" | "jobs" | "cronjobs" | + "pods" | "daemonsets" | "deployments" | "statefulsets" | "replicasets" | "replicationcontrollers" | "jobs" | "cronjobs" | "endpoints" | "customresourcedefinitions" | "horizontalpodautoscalers" | "verticalpodautoscalers" | "podsecuritypolicies" | "poddisruptionbudgets" | "priorityclasses" | "runtimeclasses" | "roles" | "clusterroles" | "rolebindings" | "clusterrolebindings" | "serviceaccounts"; @@ -171,6 +171,11 @@ export const apiResourceRecord: Record = { group: "apps", namespaced: true, }, + replicationcontrollers: { + kind: "ReplicationController", + group: "", // core + namespaced: true, + }, roles: { kind: "Role", group: "rbac.authorization.k8s.io", diff --git a/packages/core/src/renderer/components/+workloads-replicationcontrollers/index.ts b/packages/core/src/renderer/components/+workloads-replicationcontrollers/index.ts new file mode 100644 index 0000000000..5f9390ae2f --- /dev/null +++ b/packages/core/src/renderer/components/+workloads-replicationcontrollers/index.ts @@ -0,0 +1,7 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +export * from "./replicationcontrollers"; +export * from "./replicationcontroller-details"; diff --git a/packages/core/src/renderer/components/+workloads-replicationcontrollers/replication-controllers-route-component.injectable.ts b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replication-controllers-route-component.injectable.ts new file mode 100644 index 0000000000..a1a0e86105 --- /dev/null +++ b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replication-controllers-route-component.injectable.ts @@ -0,0 +1,24 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import { ReplicationControllers } from "./replicationcontrollers"; +import { + routeSpecificComponentInjectionToken +} from "../../routes/route-specific-component-injection-token"; +import replicationControllersRouteInjectable + from "../../../common/front-end-routing/routes/cluster/workloads/replicationcontrollers/replicationcontrollers-route.injectable"; + +const replicationControllersRouteComponentInjectable = getInjectable({ + id: "replicationcontroller-route-component", + + instantiate: (di) => ({ + route: di.inject(replicationControllersRouteInjectable), + Component: ReplicationControllers, + }), + + injectionToken: routeSpecificComponentInjectionToken, +}); + +export default replicationControllersRouteComponentInjectable; diff --git a/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-details.module.scss b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-details.module.scss new file mode 100644 index 0000000000..5de391e4f4 --- /dev/null +++ b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-details.module.scss @@ -0,0 +1,7 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +.ReplicationControllerDetails { +} diff --git a/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-details.tsx b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-details.tsx new file mode 100644 index 0000000000..2da9bd6a19 --- /dev/null +++ b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontroller-details.tsx @@ -0,0 +1,45 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import styles from "./replicationcontroller-details.module.scss"; +import React from "react"; +import { observer } from "mobx-react"; +import { withInjectables } from "@ogre-tools/injectable-react"; +import { DrawerItem } from "../drawer"; +import { Badge } from "../badge"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; +import type { ReplicationControllerStore } from "./replicationctrl-store"; +import replicationControllerStoreInjectable from "./replicationctrl-store.injectable"; +import type { ReplicationController } from "../../../common/k8s-api/endpoints"; + +export interface ReplicationControllerDetailsProps extends KubeObjectDetailsProps { +} + +interface Dependencies { + store: ReplicationControllerStore; +} + +@observer +class NonInjectedReplicationControllerDetails extends React.Component { + render() { + const { object: ctrl, store } = this.props; + + return ( +
+ +

Controller: {ctrl.getName()}

+

Items in store:

+
+
+ ); + } +} + +export const ReplicationControllerDetails = withInjectables(NonInjectedReplicationControllerDetails, { + getProps: (di, props) => ({ + ...props, + store: di.inject(replicationControllerStoreInjectable), + }), +}); diff --git a/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontrollers.module.scss b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontrollers.module.scss new file mode 100644 index 0000000000..db65602d19 --- /dev/null +++ b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontrollers.module.scss @@ -0,0 +1,8 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +.ReplicationControllers { + +} diff --git a/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontrollers.tsx b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontrollers.tsx new file mode 100644 index 0000000000..96340816d3 --- /dev/null +++ b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationcontrollers.tsx @@ -0,0 +1,80 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import styles from "./replicationcontrollers.module.scss"; +import React from "react"; +import { observer } from "mobx-react"; +import { KubeObjectStatusIcon } from "../kube-object-status-icon"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; +import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout"; +import type { ReplicationControllerStore } from "./replicationctrl-store"; +import type { EventStore } from "../+events/store"; +import { withInjectables } from "@ogre-tools/injectable-react"; +import eventStoreInjectable from "../+events/store.injectable"; +import replicationControllerStoreInjectable from "./replicationctrl-store.injectable"; +import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge"; + +enum columnId { + name = "name", + namespace = "namespace", +} + +interface Dependencies { + store: ReplicationControllerStore; + eventStore: EventStore; +} + +const NonInjectedReplicationControllers = observer((props: Dependencies) => { + const { + eventStore, + store, + } = props; + + return ( + + replicaSet.getName(), + [columnId.namespace]: replicaSet => replicaSet.getNs(), + }} + searchFilters={[ + replicaSet => replicaSet.getSearchFields(), + ]} + renderHeaderTitle="Replica Sets" + renderTableHeader={[ + { title: "Name", className: "name", sortBy: columnId.name, id: columnId.name }, + { className: "warning", showWithColumn: columnId.name }, + { + title: "Namespace", + className: "namespace", + sortBy: columnId.namespace, + id: columnId.namespace, + }, + ]} + renderTableContents={replicaSet => [ + replicaSet.getName(), + , + , + ]} + /> + + ); +}); + +export const ReplicationControllers = withInjectables(NonInjectedReplicationControllers, { + getProps: (di, props) => ({ + ...props, + eventStore: di.inject(eventStoreInjectable), + store: di.inject(replicationControllerStoreInjectable), + }), +}); diff --git a/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationctrl-sidebar-items.injectable.tsx b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationctrl-sidebar-items.injectable.tsx new file mode 100644 index 0000000000..018f970837 --- /dev/null +++ b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationctrl-sidebar-items.injectable.tsx @@ -0,0 +1,39 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import { computed } from "mobx"; +import { workloadsSidebarItemId } from "../+workloads/workloads-sidebar-items.injectable"; +import { sidebarItemsInjectionToken } from "../layout/sidebar-items.injectable"; +import routeIsActiveInjectable from "../../routes/route-is-active.injectable"; +import replicationControllersRouteInjectable + from "../../../common/front-end-routing/routes/cluster/workloads/replicationcontrollers/replicationcontrollers-route.injectable"; +import navigateToReplicationControllersInjectable + from "../../../common/front-end-routing/routes/cluster/workloads/replicationcontrollers/navigate-to-replication-controllers.injectable"; + +const replicationctrlSidebarItemsInjectable = getInjectable({ + id: "replicationctrl-sidebar-items", + + instantiate: (di) => { + const route = di.inject(replicationControllersRouteInjectable); + const navigateToReplicasets = di.inject(navigateToReplicationControllersInjectable); + const routeIsActive = di.inject(routeIsActiveInjectable, route); + + return computed(() => [ + { + id: "replication-controllers", + parentId: workloadsSidebarItemId, + title: "ReplicationControllers", + onClick: navigateToReplicasets, + isActive: routeIsActive, + isVisible: route.isEnabled, + orderNumber: 61, + }, + ]); + }, + + injectionToken: sidebarItemsInjectionToken, +}); + +export default replicationctrlSidebarItemsInjectable; diff --git a/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationctrl-store.injectable.ts b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationctrl-store.injectable.ts new file mode 100644 index 0000000000..d56ff8769a --- /dev/null +++ b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationctrl-store.injectable.ts @@ -0,0 +1,26 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import { kubeObjectStoreInjectionToken } from "../../../common/k8s-api/api-manager/kube-object-store-token"; +import { ReplicationControllerStore } from "./replicationctrl-store"; +import clusterFrameContextForNamespacedResourcesInjectable from "../../cluster-frame-context/for-namespaced-resources.injectable"; +import loggerInjectable from "../../../common/logger.injectable"; +import replicationControllerApiInjectable + from "../../../common/k8s-api/endpoints/replication-controller.api.injectable"; + +const replicationControllerStoreInjectable = getInjectable({ + id: "replication-controller-store", + instantiate: (di) => { + const api = di.inject(replicationControllerApiInjectable); + + return new ReplicationControllerStore({ + context: di.inject(clusterFrameContextForNamespacedResourcesInjectable), + logger: di.inject(loggerInjectable), + }, api); + }, + injectionToken: kubeObjectStoreInjectionToken, +}); + +export default replicationControllerStoreInjectable; diff --git a/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationctrl-store.ts b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationctrl-store.ts new file mode 100644 index 0000000000..9b19eeaa1e --- /dev/null +++ b/packages/core/src/renderer/components/+workloads-replicationcontrollers/replicationctrl-store.ts @@ -0,0 +1,23 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import type { + ReplicationController, + ReplicationControllerApi +} from "../../../common/k8s-api/endpoints"; +import type { + KubeObjectStoreDependencies, + KubeObjectStoreOptions +} from "../../../common/k8s-api/kube-object.store"; +import { KubeObjectStore } from "../../../common/k8s-api/kube-object.store"; + +export interface ReplicationControllerStoreDependencies extends KubeObjectStoreDependencies { +} + +export class ReplicationControllerStore extends KubeObjectStore { + constructor(protected readonly dependencies: ReplicationControllerStoreDependencies, api: ReplicationControllerApi, opts?: KubeObjectStoreOptions) { + super(dependencies, api, opts); + } +} diff --git a/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/implementations/replication-controller-detail-item.injectable.ts b/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/implementations/replication-controller-detail-item.injectable.ts new file mode 100644 index 0000000000..ae48bc30fd --- /dev/null +++ b/packages/core/src/renderer/components/kube-object-details/kube-object-detail-items/implementations/replication-controller-detail-item.injectable.ts @@ -0,0 +1,35 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token"; +import { computed } from "mobx"; +import { + kubeObjectMatchesToKindAndApiVersion +} from "../kube-object-matches-to-kind-and-api-version"; +import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; +import { ReplicationControllerDetails } from "../../../+workloads-replicationcontrollers"; + +const replicationControllerDetailItemInjectable = getInjectable({ + id: "replication-controller-detail-item", + + instantiate(di) { + const kubeObject = di.inject(currentKubeObjectInDetailsInjectable); + + return { + Component: ReplicationControllerDetails, + enabled: computed(() => isReplicationController(kubeObject.value.get()?.object)), + orderNumber: 10, + }; + }, + + injectionToken: kubeObjectDetailItemInjectionToken, +}); + +export const isReplicationController = kubeObjectMatchesToKindAndApiVersion( + "ReplicationController", + ["v1"], +); + +export default replicationControllerDetailItemInjectable; diff --git a/packages/core/src/renderer/utils/rbac.ts b/packages/core/src/renderer/utils/rbac.ts index 00135a6492..18748bcfac 100644 --- a/packages/core/src/renderer/utils/rbac.ts +++ b/packages/core/src/renderer/utils/rbac.ts @@ -27,6 +27,7 @@ export const ResourceNames: Record = { "deployments": "Deployments", "statefulsets": "Stateful Sets", "replicasets": "Replica Sets", + "replicationcontrollers": "Replication Controllers", "jobs": "Jobs", "cronjobs": "Cron Jobs", "endpoints": "Endpoints", diff --git a/yarn.lock b/yarn.lock index 418188487f..f738124195 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1234,11 +1234,6 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -array-back@^3.0.1, array-back@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== - array-differ@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" @@ -1662,16 +1657,6 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -command-line-args@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" - integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== - dependencies: - array-back "^3.1.0" - find-replace "^3.0.0" - lodash.camelcase "^4.3.0" - typical "^4.0.0" - commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" @@ -2211,13 +2196,6 @@ find-in-files@^0.5.0: find "^0.1.5" q "^1.0.1" -find-replace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" - integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== - dependencies: - array-back "^3.0.1" - find-up@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -3133,11 +3111,6 @@ lodash._reinterpolate@^3.0.0: resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA== -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - lodash.ismatch@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" @@ -4438,7 +4411,7 @@ semver@^6.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: +semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: version "7.3.8" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== @@ -4935,11 +4908,6 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg== -typical@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" - integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== - uglify-js@^3.1.4: version "3.17.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c"