+ No incidents right now
+
+ }
+ title={
+ !compact ? (
+
+ ) : (
+
+ INCIDENTS
+
+ )
+ }
+ page={tableState.page}
+ totalCount={incidentsCount}
+ onChangePage={onChangePage}
+ onChangeRowsPerPage={onChangeRowsPerPage}
+ // localization={{ header: { actions: undefined } }}
+ columns={columns}
+ data={incidents}
+ isLoading={isLoading}
+ />
+ );
+};
diff --git a/plugins/ilert/src/components/IncidentsPage/StatusChip.tsx b/plugins/ilert/src/components/IncidentsPage/StatusChip.tsx
new file mode 100644
index 0000000000..9713b16a55
--- /dev/null
+++ b/plugins/ilert/src/components/IncidentsPage/StatusChip.tsx
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import { Chip, withStyles } from '@material-ui/core';
+import { Incident, PENDING, ACCEPTED, RESOLVED } from '../../types';
+import { incidentStatusLabels } from '../Incident/IncidentStatus';
+
+const ResolvedChip = withStyles({
+ root: {
+ backgroundColor: '#4caf50',
+ color: 'white',
+ margin: 0,
+ },
+})(Chip);
+
+const AcceptedChip = withStyles({
+ root: {
+ backgroundColor: '#ffb74d',
+ color: 'white',
+ margin: 0,
+ },
+})(Chip);
+const PendingChip = withStyles({
+ root: {
+ backgroundColor: '#d32f2f',
+ color: 'white',
+ margin: 0,
+ },
+})(Chip);
+
+export const StatusChip = ({ incident }: { incident: Incident }) => {
+ const label = `${incidentStatusLabels[incident.status]}`;
+
+ switch (incident.status) {
+ case RESOLVED:
+ return ;
+ case ACCEPTED:
+ return ;
+ case PENDING:
+ return ;
+ default:
+ return ;
+ }
+};
diff --git a/plugins/ilert/src/components/IncidentsPage/TableTitle.tsx b/plugins/ilert/src/components/IncidentsPage/TableTitle.tsx
new file mode 100644
index 0000000000..f35981dec2
--- /dev/null
+++ b/plugins/ilert/src/components/IncidentsPage/TableTitle.tsx
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import { PENDING, ACCEPTED, RESOLVED, IncidentStatus } from '../../types';
+import { incidentStatusLabels } from '../Incident/IncidentStatus';
+import FormControl from '@material-ui/core/FormControl';
+import ListItemText from '@material-ui/core/ListItemText';
+import Select from '@material-ui/core/Select';
+import Typography from '@material-ui/core/Typography';
+import MenuItem from '@material-ui/core/MenuItem';
+import Checkbox from '@material-ui/core/Checkbox';
+import { makeStyles } from '@material-ui/core/styles';
+
+const ITEM_HEIGHT = 48;
+const ITEM_PADDING_TOP = 8;
+const MenuProps = {
+ PaperProps: {
+ style: {
+ maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,
+ width: 250,
+ },
+ },
+};
+
+const useStyles = makeStyles({
+ root: {
+ display: 'flex',
+ },
+ label: {
+ marginTop: 8,
+ marginRight: 4,
+ },
+ formControl: {
+ minWidth: 120,
+ maxWidth: 300,
+ },
+ grow: {
+ flexGrow: 1,
+ },
+});
+
+export const TableTitle = ({
+ incidentStates,
+ onIncidentStatesChange,
+}: {
+ incidentStates: IncidentStatus[];
+ onIncidentStatesChange: (states: IncidentStatus[]) => void;
+}) => {
+ const classes = useStyles();
+ const handleIncidentStatusSelectChange = (event: any) => {
+ onIncidentStatesChange(event.target.value);
+ };
+
+ return (
+
+
+ Status:
+
+
+
+
+
+ );
+};
diff --git a/plugins/ilert/src/components/IncidentsPage/index.ts b/plugins/ilert/src/components/IncidentsPage/index.ts
new file mode 100644
index 0000000000..7159247c68
--- /dev/null
+++ b/plugins/ilert/src/components/IncidentsPage/index.ts
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export * from './IncidentsPage';
+export * from './IncidentsTable';
diff --git a/plugins/ilert/src/components/OnCallSchedulesPage/OnCallSchedulesGrid.tsx b/plugins/ilert/src/components/OnCallSchedulesPage/OnCallSchedulesGrid.tsx
new file mode 100644
index 0000000000..31da9c1097
--- /dev/null
+++ b/plugins/ilert/src/components/OnCallSchedulesPage/OnCallSchedulesGrid.tsx
@@ -0,0 +1,171 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import { useApi, ItemCardGrid, Progress, Link } from '@backstage/core';
+import { makeStyles } from '@material-ui/core/styles';
+import Card from '@material-ui/core/Card';
+import CardContent from '@material-ui/core/CardContent';
+import CardHeader from '@material-ui/core/CardHeader';
+import Typography from '@material-ui/core/Typography';
+import { Schedule } from '../../types';
+import { ilertApiRef } from '../../api';
+import { OnCallShiftItem } from './OnCallShiftItem';
+
+const useStyles = makeStyles(() => ({
+ card: {
+ margin: 16,
+ width: 'calc(100% - 32px)',
+ },
+
+ cardHeader: {
+ maxWidth: '100%',
+ },
+
+ cardContent: {
+ marginLeft: 80,
+ borderLeft: '1px #808289 solid',
+ position: 'relative',
+ },
+
+ indicatorNext: {
+ position: 'absolute',
+ top: 'calc(40% - 10px)',
+ left: -6,
+ width: 12,
+ height: 12,
+ background: '#92949c !important',
+ borderRadius: '50%',
+ },
+
+ indicatorCurrent: {
+ position: 'absolute',
+ top: 'calc(40% - 10px)',
+ left: -6,
+ width: 12,
+ height: 12,
+ background: '#ffb74d !important',
+ color: '#ffb74d !important',
+ borderRadius: '50%',
+ '&::after': {
+ position: 'absolute',
+ top: 0,
+ left: 0,
+ width: '100%',
+ height: '100%',
+ borderRadius: '50%',
+ animation: '$ripple 1.2s infinite ease-in-out',
+ border: '1px solid currentColor',
+ content: '""',
+ },
+ },
+ '@keyframes ripple': {
+ '0%': {
+ transform: 'scale(.8)',
+ opacity: 1,
+ },
+ '100%': {
+ transform: 'scale(2.4)',
+ opacity: 0,
+ },
+ },
+
+ beforeText: {
+ position: 'absolute',
+ top: 'calc(31% - 10px)',
+ left: -78,
+ width: 65,
+ height: 20,
+ textAlign: 'center',
+ color: '#808289',
+ },
+
+ marginBottom: {
+ marginBottom: 16,
+ },
+
+ link: {
+ fontSize: '1.5rem',
+ fontWeight: 700,
+ overflow: 'hidden',
+ whiteSpace: 'nowrap',
+ textOverflow: 'ellipsis',
+ display: 'block',
+ },
+}));
+
+export const OnCallSchedulesGrid = ({
+ onCallSchedules,
+ isLoading,
+ refetchOnCallSchedules,
+}: {
+ onCallSchedules: Schedule[];
+ isLoading: boolean;
+ refetchOnCallSchedules: () => void;
+}) => {
+ const ilertApi = useApi(ilertApiRef);
+ const classes = useStyles();
+
+ if (isLoading) {
+ return ;
+ }
+ return (
+
+ {!onCallSchedules?.length
+ ? null
+ : onCallSchedules.map((schedule, index) => (
+
+
+ {schedule.name}
+
+ }
+ />
+
+
+
+
+
+ On call now
+
+
+
+
+
+
+
+ Next on call
+
+
+
+ ))}
+
+ );
+};
diff --git a/plugins/ilert/src/components/OnCallSchedulesPage/OnCallSchedulesPage.tsx b/plugins/ilert/src/components/OnCallSchedulesPage/OnCallSchedulesPage.tsx
new file mode 100644
index 0000000000..bb0cd0218e
--- /dev/null
+++ b/plugins/ilert/src/components/OnCallSchedulesPage/OnCallSchedulesPage.tsx
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import {
+ Content,
+ ContentHeader,
+ SupportButton,
+ ResponseErrorPanel,
+} from '@backstage/core';
+import { AuthenticationError } from '@backstage/errors';
+import { OnCallSchedulesGrid } from './OnCallSchedulesGrid';
+import { MissingAuthorizationHeaderError } from '../Errors';
+import { useOnCallSchedules } from '../../hooks/useOnCallSchedules';
+
+export const OnCallSchedulesPage = () => {
+ const [
+ { onCallSchedules, isLoading, error },
+ { refetchOnCallSchedules },
+ ] = useOnCallSchedules();
+
+ if (error) {
+ if (error instanceof AuthenticationError) {
+ return (
+
+
+
+ );
+ }
+
+ return (
+
+
+
+ );
+ }
+
+ return (
+
+
+
+ This helps you to bring iLert into your developer portal.
+
+
+
+
+ );
+};
diff --git a/plugins/ilert/src/components/OnCallSchedulesPage/OnCallShiftItem.tsx b/plugins/ilert/src/components/OnCallSchedulesPage/OnCallShiftItem.tsx
new file mode 100644
index 0000000000..46f6963445
--- /dev/null
+++ b/plugins/ilert/src/components/OnCallSchedulesPage/OnCallShiftItem.tsx
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import Button from '@material-ui/core/Button';
+import Grid from '@material-ui/core/Grid';
+import Typography from '@material-ui/core/Typography';
+import RepeatIcon from '@material-ui/icons/Repeat';
+import { Shift } from '../../types';
+import { DateTime as dt } from 'luxon';
+import { makeStyles } from '@material-ui/core/styles';
+import { ShiftOverrideModal } from '../Shift/ShiftOverrideModal';
+
+const useStyles = makeStyles({
+ button: {
+ marginTop: 4,
+ padding: 0,
+ lineHeight: 1.8,
+ '& span': {
+ lineHeight: 1.8,
+ fontSize: '0.65rem',
+ },
+ '& svg': {
+ fontSize: '0.85rem !important',
+ },
+ },
+});
+
+export const OnCallShiftItem = ({
+ scheduleId,
+ shift,
+ refetchOnCallSchedules,
+}: {
+ scheduleId: number;
+ shift: Shift;
+ refetchOnCallSchedules: () => void;
+}) => {
+ const classes = useStyles();
+ const [isModalOpened, setIsModalOpened] = React.useState(false);
+
+ const handleOverride = () => {
+ setIsModalOpened(true);
+ };
+
+ if (!shift || !shift.start) {
+ return (
+
+
+
+ Nobody
+
+
+
+ );
+ }
+
+ return (
+
+ {shift && shift.user ? (
+
+
+ {`${shift.user.firstName} ${shift.user.lastName} (${shift.user.username})`}
+
+
+ ) : null}
+
+
+ {`${dt.fromISO(shift.start).toFormat('D MMM, HH:mm')} - ${dt
+ .fromISO(shift.end)
+ .toFormat('D MMM, HH:mm')}`}
+
+
+
+ }
+ onClick={handleOverride}
+ >
+ Override shift
+
+
+
+
+ );
+};
diff --git a/plugins/ilert/src/components/OnCallSchedulesPage/index.ts b/plugins/ilert/src/components/OnCallSchedulesPage/index.ts
new file mode 100644
index 0000000000..a52accc2bb
--- /dev/null
+++ b/plugins/ilert/src/components/OnCallSchedulesPage/index.ts
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export * from './OnCallSchedulesPage';
+export * from './OnCallSchedulesGrid';
diff --git a/plugins/ilert/src/components/Shift/ShiftOverrideModal.tsx b/plugins/ilert/src/components/Shift/ShiftOverrideModal.tsx
new file mode 100644
index 0000000000..47e13f9b7e
--- /dev/null
+++ b/plugins/ilert/src/components/Shift/ShiftOverrideModal.tsx
@@ -0,0 +1,196 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import { alertApiRef, useApi } from '@backstage/core';
+import { makeStyles } from '@material-ui/core/styles';
+import Button from '@material-ui/core/Button';
+import TextField from '@material-ui/core/TextField';
+import Dialog from '@material-ui/core/Dialog';
+import DialogActions from '@material-ui/core/DialogActions';
+import DialogContent from '@material-ui/core/DialogContent';
+import DialogTitle from '@material-ui/core/DialogTitle';
+import Autocomplete from '@material-ui/lab/Autocomplete';
+import { Typography } from '@material-ui/core';
+import { ilertApiRef } from '../../api';
+import { useShiftOverride } from '../../hooks/useShiftOverride';
+import { Shift } from '../../types';
+import { DateTimePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';
+import LuxonUtils from '@date-io/luxon';
+
+const useStyles = makeStyles(() => ({
+ container: {
+ display: 'flex',
+ flexWrap: 'wrap',
+ },
+ formControl: {
+ minWidth: 120,
+ width: '100%',
+ },
+ option: {
+ fontSize: 15,
+ '& > span': {
+ marginRight: 10,
+ fontSize: 18,
+ },
+ },
+ optionWrapper: {
+ display: 'flex',
+ width: '100%',
+ },
+ sourceImage: {
+ height: 22,
+ paddingRight: 4,
+ },
+ grow: {
+ flexGrow: 1,
+ },
+}));
+
+export const ShiftOverrideModal = ({
+ scheduleId,
+ shift,
+ refetchOnCallSchedules,
+ isModalOpened,
+ setIsModalOpened,
+}: {
+ scheduleId: number;
+ shift: Shift;
+ refetchOnCallSchedules: () => void;
+ isModalOpened: boolean;
+ setIsModalOpened: (isModalOpened: boolean) => void;
+}) => {
+ const [
+ { isLoading, users, user, start, end },
+ { setUser, setStart, setEnd, setIsLoading },
+ ] = useShiftOverride(shift, isModalOpened);
+ const ilertApi = useApi(ilertApiRef);
+ const alertApi = useApi(alertApiRef);
+ const classes = useStyles();
+
+ const handleClose = () => {
+ setIsModalOpened(false);
+ };
+
+ const handleOverride = () => {
+ if (!shift || !shift.user) {
+ return;
+ }
+ setIsLoading(true);
+ setTimeout(async () => {
+ try {
+ const success = await ilertApi.overrideShift(
+ scheduleId,
+ user.id,
+ start,
+ end,
+ );
+ if (success) {
+ alertApi.post({ message: 'Shift overridden.' });
+ refetchOnCallSchedules();
+ }
+ } catch (err) {
+ alertApi.post({ message: err, severity: 'error' });
+ }
+ setIsModalOpened(false);
+ }, 250);
+ };
+
+ if (!shift) {
+ return null;
+ }
+
+ return (
+
+ );
+};
diff --git a/plugins/ilert/src/components/UptimeMonitor/UptimeMonitorActionsMenu.tsx b/plugins/ilert/src/components/UptimeMonitor/UptimeMonitorActionsMenu.tsx
new file mode 100644
index 0000000000..36671bff90
--- /dev/null
+++ b/plugins/ilert/src/components/UptimeMonitor/UptimeMonitorActionsMenu.tsx
@@ -0,0 +1,135 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import { alertApiRef, useApi, Link } from '@backstage/core';
+import { IconButton, Menu, MenuItem, Typography } from '@material-ui/core';
+import MoreVertIcon from '@material-ui/icons/MoreVert';
+
+import { ilertApiRef } from '../../api';
+import { UptimeMonitor } from '../../types';
+
+export const UptimeMonitorActionsMenu = ({
+ uptimeMonitor,
+ onUptimeMonitorChanged,
+}: {
+ uptimeMonitor: UptimeMonitor;
+ onUptimeMonitorChanged?: (uptimeMonitor: UptimeMonitor) => void;
+}) => {
+ const ilertApi = useApi(ilertApiRef);
+ const alertApi = useApi(alertApiRef);
+ const [anchorEl, setAnchorEl] = React.useState(null);
+ const callback = onUptimeMonitorChanged || ((_: UptimeMonitor): void => {});
+
+ const handleClick = (event: React.MouseEvent) => {
+ setAnchorEl(event.currentTarget);
+ };
+
+ const handleCloseMenu = () => {
+ setAnchorEl(null);
+ };
+
+ const handlePause = async (): Promise => {
+ try {
+ const newUptimeMonitor = await ilertApi.pauseUptimeMonitor(uptimeMonitor);
+ handleCloseMenu();
+ alertApi.post({ message: 'Uptime monitor paused.' });
+
+ callback(newUptimeMonitor);
+ } catch (err) {
+ alertApi.post({ message: err, severity: 'error' });
+ }
+ };
+
+ const handleResume = async (): Promise => {
+ try {
+ const newUptimeMonitor = await ilertApi.resumeUptimeMonitor(
+ uptimeMonitor,
+ );
+ handleCloseMenu();
+ alertApi.post({ message: 'Uptime monitor resumed.' });
+
+ callback(newUptimeMonitor);
+ } catch (err) {
+ alertApi.post({ message: err, severity: 'error' });
+ }
+ };
+
+ const handleOpenReport = async (): Promise => {
+ try {
+ const um = await ilertApi.fetchUptimeMonitor(uptimeMonitor.id);
+ handleCloseMenu();
+ window.open(um.shareUrl, '_blank');
+ } catch (err) {
+ alertApi.post({ message: err, severity: 'error' });
+ }
+ };
+
+ return (
+ <>
+
+
+
+
+ >
+ );
+};
diff --git a/plugins/ilert/src/components/UptimeMonitor/UptimeMonitorLink.tsx b/plugins/ilert/src/components/UptimeMonitor/UptimeMonitorLink.tsx
new file mode 100644
index 0000000000..507e0208e2
--- /dev/null
+++ b/plugins/ilert/src/components/UptimeMonitor/UptimeMonitorLink.tsx
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import { useApi, Link } from '@backstage/core';
+import { makeStyles } from '@material-ui/core/styles';
+import { UptimeMonitor } from '../../types';
+import { ilertApiRef } from '../../api';
+
+const useStyles = makeStyles({
+ link: {
+ lineHeight: '22px',
+ },
+});
+
+export const UptimeMonitorLink = ({
+ uptimeMonitor,
+}: {
+ uptimeMonitor: UptimeMonitor | null;
+}) => {
+ const ilertApi = useApi(ilertApiRef);
+ const classes = useStyles();
+
+ if (!uptimeMonitor) {
+ return null;
+ }
+
+ return (
+
+ #{uptimeMonitor.id}
+
+ );
+};
diff --git a/plugins/ilert/src/components/UptimeMonitor/index.ts b/plugins/ilert/src/components/UptimeMonitor/index.ts
new file mode 100644
index 0000000000..f30d1ef15a
--- /dev/null
+++ b/plugins/ilert/src/components/UptimeMonitor/index.ts
@@ -0,0 +1,16 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export * from './UptimeMonitorActionsMenu';
diff --git a/plugins/ilert/src/components/UptimeMonitorsPage/StatusChip.tsx b/plugins/ilert/src/components/UptimeMonitorsPage/StatusChip.tsx
new file mode 100644
index 0000000000..dd17b1758b
--- /dev/null
+++ b/plugins/ilert/src/components/UptimeMonitorsPage/StatusChip.tsx
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import Chip from '@material-ui/core/Chip';
+import { withStyles } from '@material-ui/core/styles';
+import { UptimeMonitor } from '../../types';
+
+const UpChip = withStyles({
+ root: {
+ backgroundColor: '#4caf50',
+ color: 'white',
+ margin: 0,
+ },
+})(Chip);
+
+const DownChip = withStyles({
+ root: {
+ backgroundColor: '#d32f2f',
+ color: 'white',
+ margin: 0,
+ },
+})(Chip);
+
+const UnknownChip = withStyles({
+ root: {
+ backgroundColor: '#92949c',
+ color: 'white',
+ margin: 0,
+ },
+})(Chip);
+
+export const uptimeMonitorStatusLabels = {
+ ['up']: 'Up',
+ ['down']: 'Down',
+ ['unknown']: 'Unknown',
+} as Record;
+
+export const StatusChip = ({
+ uptimeMonitor,
+}: {
+ uptimeMonitor: UptimeMonitor;
+}) => {
+ let label = `${uptimeMonitorStatusLabels[uptimeMonitor.status]}`;
+
+ if (uptimeMonitor.paused) {
+ label = 'Paused';
+ return ;
+ }
+
+ switch (uptimeMonitor.status) {
+ case 'up':
+ return ;
+ case 'down':
+ return ;
+ case 'unknown':
+ return ;
+ default:
+ return ;
+ }
+};
diff --git a/plugins/ilert/src/components/UptimeMonitorsPage/UptimeMonitorCheckType.tsx b/plugins/ilert/src/components/UptimeMonitorsPage/UptimeMonitorCheckType.tsx
new file mode 100644
index 0000000000..3fdecd65e9
--- /dev/null
+++ b/plugins/ilert/src/components/UptimeMonitorsPage/UptimeMonitorCheckType.tsx
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import { UptimeMonitor } from '../../types';
+import Typography from '@material-ui/core/Typography';
+
+export const UptimeMonitorCheckType = ({
+ uptimeMonitor,
+}: {
+ uptimeMonitor: UptimeMonitor;
+}) => {
+ switch (uptimeMonitor.region) {
+ case 'EU':
+ return (
+ {`${uptimeMonitor.checkType.toUpperCase()} 🇩🇪`}
+ );
+ default:
+ return (
+ {`${uptimeMonitor.checkType.toUpperCase()} 🇺🇸`}
+ );
+ }
+};
diff --git a/plugins/ilert/src/components/UptimeMonitorsPage/UptimeMonitorsPage.tsx b/plugins/ilert/src/components/UptimeMonitorsPage/UptimeMonitorsPage.tsx
new file mode 100644
index 0000000000..9769fa408d
--- /dev/null
+++ b/plugins/ilert/src/components/UptimeMonitorsPage/UptimeMonitorsPage.tsx
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import {
+ Content,
+ ContentHeader,
+ SupportButton,
+ ResponseErrorPanel,
+} from '@backstage/core';
+import { AuthenticationError } from '@backstage/errors';
+import { UptimeMonitorsTable } from './UptimeMonitorsTable';
+import { MissingAuthorizationHeaderError } from '../Errors';
+import { useUptimeMonitors } from '../../hooks/useUptimeMonitors';
+
+export const UptimeMonitorsPage = () => {
+ const [
+ { tableState, uptimeMonitors, isLoading, error },
+ { onChangePage, onChangeRowsPerPage, onUptimeMonitorChanged },
+ ] = useUptimeMonitors();
+
+ if (error) {
+ if (error instanceof AuthenticationError) {
+ return (
+
+
+
+ );
+ }
+
+ return (
+
+
+
+ );
+ }
+
+ return (
+
+
+
+ This helps you to bring iLert into your developer portal.
+
+
+
+
+ );
+};
diff --git a/plugins/ilert/src/components/UptimeMonitorsPage/UptimeMonitorsTable.tsx b/plugins/ilert/src/components/UptimeMonitorsPage/UptimeMonitorsTable.tsx
new file mode 100644
index 0000000000..2173f8e1b7
--- /dev/null
+++ b/plugins/ilert/src/components/UptimeMonitorsPage/UptimeMonitorsTable.tsx
@@ -0,0 +1,176 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import { makeStyles } from '@material-ui/core/styles';
+import { Table, TableColumn } from '@backstage/core';
+import { TableState } from '../../api';
+import { UptimeMonitor } from '../../types';
+import { StatusChip } from './StatusChip';
+import Typography from '@material-ui/core/Typography';
+import { DateTime as dt, Interval } from 'luxon';
+import humanizeDuration from 'humanize-duration';
+import { EscalationPolicyLink } from '../EscalationPolicy/EscalationPolicyLink';
+import { UptimeMonitorCheckType } from './UptimeMonitorCheckType';
+import { UptimeMonitorActionsMenu } from '../UptimeMonitor/UptimeMonitorActionsMenu';
+import { UptimeMonitorLink } from '../UptimeMonitor/UptimeMonitorLink';
+
+const useStyles = makeStyles(theme => ({
+ empty: {
+ padding: theme.spacing(2),
+ display: 'flex',
+ justifyContent: 'center',
+ },
+}));
+
+export const UptimeMonitorsTable = ({
+ uptimeMonitors,
+ tableState,
+ isLoading,
+ onChangePage,
+ onChangeRowsPerPage,
+ onUptimeMonitorChanged,
+}: {
+ uptimeMonitors: UptimeMonitor[];
+ tableState: TableState;
+ isLoading: boolean;
+ onChangePage: (page: number) => void;
+ onChangeRowsPerPage: (pageSize: number) => void;
+ onUptimeMonitorChanged: (uptimeMonitor: UptimeMonitor) => void;
+}) => {
+ const classes = useStyles();
+
+ const smColumnStyle = {
+ width: '5%',
+ maxWidth: '5%',
+ };
+ const mdColumnStyle = {
+ width: '10%',
+ maxWidth: '10%',
+ };
+ const lgColumnStyle = {
+ width: '15%',
+ maxWidth: '15%',
+ };
+
+ const columns: TableColumn[] = [
+ {
+ title: 'ID',
+ field: 'id',
+ highlight: true,
+ cellStyle: mdColumnStyle,
+ headerStyle: mdColumnStyle,
+ render: rowData => (
+
+ ),
+ },
+ {
+ title: 'Name',
+ field: 'name',
+ render: rowData => (
+ {(rowData as UptimeMonitor).name}
+ ),
+ },
+ {
+ title: 'Check Type',
+ field: 'checkType',
+ cellStyle: lgColumnStyle,
+ headerStyle: lgColumnStyle,
+ render: rowData => (
+
+ ),
+ },
+ {
+ title: 'Last state change',
+ field: 'lastStatusChange',
+ type: 'datetime',
+ cellStyle: mdColumnStyle,
+ headerStyle: mdColumnStyle,
+ render: rowData => (
+
+ {humanizeDuration(
+ Interval.fromDateTimes(
+ dt.fromISO((rowData as UptimeMonitor).lastStatusChange),
+ dt.now(),
+ )
+ .toDuration()
+ .valueOf(),
+ { units: ['h', 'm', 's'], largest: 2, round: true },
+ )}
+
+ ),
+ },
+ {
+ title: 'Escalation policy',
+ field: 'assignedTo',
+ cellStyle: lgColumnStyle,
+ headerStyle: lgColumnStyle,
+ render: rowData => (
+
+ ),
+ },
+ {
+ title: 'Status',
+ field: 'status',
+ cellStyle: smColumnStyle,
+ headerStyle: smColumnStyle,
+ render: rowData => (
+
+ ),
+ },
+ {
+ title: '',
+ field: '',
+ cellStyle: smColumnStyle,
+ headerStyle: smColumnStyle,
+ render: rowData => (
+
+ ),
+ },
+ ];
+
+ return (
+
+ No uptime monitor
+
+ }
+ page={tableState.page}
+ onChangePage={onChangePage}
+ onChangeRowsPerPage={onChangeRowsPerPage}
+ localization={{ header: { actions: undefined } }}
+ isLoading={isLoading}
+ columns={columns}
+ data={uptimeMonitors}
+ />
+ );
+};
diff --git a/plugins/ilert/src/components/UptimeMonitorsPage/index.ts b/plugins/ilert/src/components/UptimeMonitorsPage/index.ts
new file mode 100644
index 0000000000..d1a8809a4e
--- /dev/null
+++ b/plugins/ilert/src/components/UptimeMonitorsPage/index.ts
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export * from './UptimeMonitorsPage';
+export * from './UptimeMonitorsTable';
diff --git a/plugins/ilert/src/components/index.ts b/plugins/ilert/src/components/index.ts
new file mode 100644
index 0000000000..81f7e02e23
--- /dev/null
+++ b/plugins/ilert/src/components/index.ts
@@ -0,0 +1,18 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export * from './ILertPage';
+export * from './ILertCard';
diff --git a/plugins/ilert/src/constants.ts b/plugins/ilert/src/constants.ts
new file mode 100644
index 0000000000..bba644785f
--- /dev/null
+++ b/plugins/ilert/src/constants.ts
@@ -0,0 +1,16 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export const ILERT_INTEGRATION_KEY_ANNOTATION = 'ilert.com/integration-key';
diff --git a/plugins/ilert/src/hooks/index.ts b/plugins/ilert/src/hooks/index.ts
new file mode 100644
index 0000000000..6e7e207112
--- /dev/null
+++ b/plugins/ilert/src/hooks/index.ts
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { useEntity } from '@backstage/plugin-catalog-react';
+
+import { ILERT_INTEGRATION_KEY_ANNOTATION } from '../constants';
+
+export function useILertEntity() {
+ const { entity } = useEntity();
+ const integrationKey =
+ entity.metadata.annotations?.[ILERT_INTEGRATION_KEY_ANNOTATION] || '';
+ const name = entity.metadata.name;
+ const identifier = `${entity.kind}:${
+ entity.metadata.namespace || 'default'
+ }/${entity.metadata.name}`;
+
+ return { integrationKey, name, identifier };
+}
diff --git a/plugins/ilert/src/hooks/useAlertSource.ts b/plugins/ilert/src/hooks/useAlertSource.ts
new file mode 100644
index 0000000000..15cc213b48
--- /dev/null
+++ b/plugins/ilert/src/hooks/useAlertSource.ts
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import { ilertApiRef } from '../api';
+import { useApi, errorApiRef } from '@backstage/core';
+import { AuthenticationError } from '@backstage/errors';
+import { useAsyncRetry } from 'react-use';
+import { AlertSource, UptimeMonitor } from '../types';
+
+export const useAlertSource = (integrationKey: string) => {
+ const ilertApi = useApi(ilertApiRef);
+ const errorApi = useApi(errorApiRef);
+
+ const [alertSource, setAlertSource] = React.useState(
+ null,
+ );
+ const [isAlertSourceLoading, setIsAlertSourceLoading] = React.useState(false);
+ const [
+ uptimeMonitor,
+ setUptimeMonitor,
+ ] = React.useState(null);
+ const [isUptimeMonitorLoading, setIsUptimeMonitorLoading] = React.useState(
+ false,
+ );
+
+ const fetchAlertSourceCall = async () => {
+ try {
+ if (!integrationKey) {
+ return;
+ }
+ setIsAlertSourceLoading(true);
+ const data = await ilertApi.fetchAlertSource(integrationKey);
+ setAlertSource(data || null);
+ setIsAlertSourceLoading(false);
+ } catch (e) {
+ setIsAlertSourceLoading(false);
+ if (!(e instanceof AuthenticationError)) {
+ errorApi.post(e);
+ }
+ throw e;
+ }
+ };
+
+ const {
+ error: alertSourceError,
+ retry: alertSourceRetry,
+ } = useAsyncRetry(fetchAlertSourceCall, [integrationKey]);
+
+ const fetchUptimeMonitorCall = async () => {
+ try {
+ if (!alertSource || alertSource.integrationType !== 'MONITOR') {
+ return;
+ }
+ setIsUptimeMonitorLoading(true);
+ const data = await ilertApi.fetchUptimeMonitor(alertSource.id);
+ setUptimeMonitor(data || null);
+ setIsUptimeMonitorLoading(false);
+ } catch (e) {
+ setIsUptimeMonitorLoading(false);
+ if (!(e instanceof AuthenticationError)) {
+ errorApi.post(e);
+ }
+ throw e;
+ }
+ };
+
+ const {
+ error: uptimeMonitorError,
+ retry: uptimeMonitorRetry,
+ } = useAsyncRetry(fetchUptimeMonitorCall, [alertSource]);
+
+ const retry = () => {
+ alertSourceRetry();
+ uptimeMonitorRetry();
+ };
+
+ return [
+ {
+ alertSource,
+ uptimeMonitor,
+ error: alertSourceError || uptimeMonitorError,
+ isLoading: isAlertSourceLoading || isUptimeMonitorLoading,
+ },
+ {
+ retry,
+ setIsLoading: setIsAlertSourceLoading,
+ refetchAlertSource: fetchAlertSourceCall,
+ setAlertSource,
+ },
+ ] as const;
+};
diff --git a/plugins/ilert/src/hooks/useAlertSourceOnCalls.ts b/plugins/ilert/src/hooks/useAlertSourceOnCalls.ts
new file mode 100644
index 0000000000..0fbb190a02
--- /dev/null
+++ b/plugins/ilert/src/hooks/useAlertSourceOnCalls.ts
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import { ilertApiRef } from '../api';
+import { useApi, errorApiRef } from '@backstage/core';
+import { AuthenticationError } from '@backstage/errors';
+import { useAsyncRetry } from 'react-use';
+import { AlertSource, OnCall } from '../types';
+
+export const useAlertSourceOnCalls = (alertSource?: AlertSource | null) => {
+ const ilertApi = useApi(ilertApiRef);
+ const errorApi = useApi(errorApiRef);
+
+ const [onCallsList, setOnCallsList] = React.useState([]);
+ const [isLoading, setIsLoading] = React.useState(false);
+
+ const fetchAlertSourceOnCallsCall = async () => {
+ try {
+ if (!alertSource) {
+ return;
+ }
+ setIsLoading(true);
+ const data = await ilertApi.fetchAlertSourceOnCalls(alertSource);
+ setOnCallsList(data || []);
+ setIsLoading(false);
+ } catch (e) {
+ setIsLoading(false);
+ if (!(e instanceof AuthenticationError)) {
+ errorApi.post(e);
+ }
+ throw e;
+ }
+ };
+
+ const { error, retry } = useAsyncRetry(fetchAlertSourceOnCallsCall, [
+ alertSource,
+ ]);
+
+ return [
+ {
+ onCalls: onCallsList,
+ error,
+ isLoading,
+ },
+ {
+ retry,
+ setIsLoading,
+ refetchAlertSourceOnCalls: fetchAlertSourceOnCallsCall,
+ },
+ ] as const;
+};
diff --git a/plugins/ilert/src/hooks/useAssignIncident.ts b/plugins/ilert/src/hooks/useAssignIncident.ts
new file mode 100644
index 0000000000..8f0f663d2b
--- /dev/null
+++ b/plugins/ilert/src/hooks/useAssignIncident.ts
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import { ilertApiRef } from '../api';
+import { useApi, errorApiRef } from '@backstage/core';
+import { AuthenticationError } from '@backstage/errors';
+import { useAsyncRetry } from 'react-use';
+import { Incident, IncidentResponder } from '../types';
+
+export const useAssignIncident = (incident: Incident | null, open: boolean) => {
+ const ilertApi = useApi(ilertApiRef);
+ const errorApi = useApi(errorApiRef);
+
+ const [incidentRespondersList, setIncidentRespondersList] = React.useState<
+ IncidentResponder[]
+ >([]);
+ const [
+ incidentResponder,
+ setIncidentResponder,
+ ] = React.useState(null);
+ const [isLoading, setIsLoading] = React.useState(false);
+
+ const { error, retry } = useAsyncRetry(async () => {
+ try {
+ if (!incident || !open) {
+ return;
+ }
+ const data = await ilertApi.fetchIncidentResponders(incident);
+ if (data && Array.isArray(data)) {
+ const groups = [
+ 'SUGGESTED',
+ 'USER',
+ 'ESCALATION_POLICY',
+ 'ON_CALL_SCHEDULE',
+ ];
+ data.sort((a, b) => groups.indexOf(a.group) - groups.indexOf(b.group));
+ setIncidentRespondersList(data);
+ }
+ } catch (e) {
+ if (!(e instanceof AuthenticationError)) {
+ errorApi.post(e);
+ }
+ throw e;
+ }
+ }, [incident, open]);
+
+ return [
+ {
+ incidentRespondersList,
+ incidentResponder,
+ error,
+ isLoading,
+ },
+ {
+ setIncidentRespondersList,
+ setIncidentResponder,
+ setIsLoading,
+ retry,
+ },
+ ] as const;
+};
diff --git a/plugins/ilert/src/hooks/useIncidentActions.ts b/plugins/ilert/src/hooks/useIncidentActions.ts
new file mode 100644
index 0000000000..e23341ed9e
--- /dev/null
+++ b/plugins/ilert/src/hooks/useIncidentActions.ts
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import { ilertApiRef } from '../api';
+import { useApi, errorApiRef } from '@backstage/core';
+import { AuthenticationError } from '@backstage/errors';
+import { useAsyncRetry } from 'react-use';
+import { Incident, IncidentAction } from '../types';
+
+export const useIncidentActions = (
+ incident: Incident | null,
+ open: boolean,
+) => {
+ const ilertApi = useApi(ilertApiRef);
+ const errorApi = useApi(errorApiRef);
+
+ const [incidentActionsList, setIncidentActionsList] = React.useState<
+ IncidentAction[]
+ >([]);
+ const [isLoading, setIsLoading] = React.useState(false);
+
+ const { error, retry } = useAsyncRetry(async () => {
+ try {
+ if (!incident || !open) {
+ return;
+ }
+ const data = await ilertApi.fetchIncidentActions(incident);
+ setIncidentActionsList(data);
+ } catch (e) {
+ if (!(e instanceof AuthenticationError)) {
+ errorApi.post(e);
+ }
+ throw e;
+ }
+ }, [incident, open]);
+
+ return [
+ {
+ incidentActions: incidentActionsList,
+ error,
+ isLoading,
+ },
+ {
+ setIncidentActionsList,
+ setIsLoading,
+ retry,
+ },
+ ] as const;
+};
diff --git a/plugins/ilert/src/hooks/useIncidents.ts b/plugins/ilert/src/hooks/useIncidents.ts
new file mode 100644
index 0000000000..5f130fb20c
--- /dev/null
+++ b/plugins/ilert/src/hooks/useIncidents.ts
@@ -0,0 +1,159 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import { GetIncidentsOpts, ilertApiRef, TableState } from '../api';
+import { useApi, errorApiRef } from '@backstage/core';
+import { AuthenticationError } from '@backstage/errors';
+import { useAsyncRetry } from 'react-use';
+import {
+ ACCEPTED,
+ PENDING,
+ Incident,
+ IncidentStatus,
+ AlertSource,
+} from '../types';
+
+export const useIncidents = (
+ paging: boolean,
+ singleSource?: boolean,
+ alertSource?: AlertSource | null,
+) => {
+ const ilertApi = useApi(ilertApiRef);
+ const errorApi = useApi(errorApiRef);
+
+ const [tableState, setTableState] = React.useState({
+ page: 0,
+ pageSize: 10,
+ });
+ const [states, setStates] = React.useState([
+ ACCEPTED,
+ PENDING,
+ ]);
+ const [incidentsList, setIncidentsList] = React.useState([]);
+ const [incidentsCount, setIncidentsCount] = React.useState(0);
+ const [isLoading, setIsLoading] = React.useState(false);
+
+ const fetchIncidentsCall = async () => {
+ try {
+ if (singleSource && !alertSource) {
+ return;
+ }
+ setIsLoading(true);
+ const opts: GetIncidentsOpts = {
+ states,
+ alertSources: alertSource ? [alertSource.id] : [],
+ };
+ if (paging) {
+ opts.maxResults = tableState.pageSize;
+ opts.startIndex = tableState.page * tableState.pageSize;
+ }
+ const data = await ilertApi.fetchIncidents(opts);
+ setIncidentsList(data || []);
+ setIsLoading(false);
+ } catch (e) {
+ if (!(e instanceof AuthenticationError)) {
+ errorApi.post(e);
+ }
+ setIsLoading(false);
+ throw e;
+ }
+ };
+
+ const fetchIncidentsCountCall = async () => {
+ try {
+ const count = await ilertApi.fetchIncidentsCount({ states });
+ setIncidentsCount(count || 0);
+ } catch (e) {
+ if (!(e instanceof AuthenticationError)) {
+ errorApi.post(e);
+ }
+ throw e;
+ }
+ };
+ const fetchIncidents = useAsyncRetry(fetchIncidentsCall, [
+ tableState,
+ states,
+ singleSource,
+ alertSource,
+ ]);
+
+ const refetchIncidents = () => {
+ setTableState({ ...tableState, page: 0 });
+ Promise.all([fetchIncidentsCall(), fetchIncidentsCountCall()]);
+ };
+
+ const fetchIncidentsCount = useAsyncRetry(fetchIncidentsCountCall, [states]);
+
+ const error = fetchIncidents.error || fetchIncidentsCount.error;
+ const retry = () => {
+ fetchIncidents.retry();
+ fetchIncidentsCount.retry();
+ };
+
+ const onIncidentChanged = (newIncident: Incident) => {
+ let shouldRefetchIncidents = false;
+ setIncidentsList(
+ incidentsList.reduce((acc: Incident[], incident: Incident) => {
+ if (newIncident.id === incident.id) {
+ if (states.includes(newIncident.status)) {
+ acc.push(newIncident);
+ } else {
+ shouldRefetchIncidents = true;
+ }
+ return acc;
+ }
+ acc.push(incident);
+ return acc;
+ }, []),
+ );
+ if (shouldRefetchIncidents) {
+ refetchIncidents();
+ }
+ };
+
+ const onChangePage = (page: number) => {
+ setTableState({ ...tableState, page });
+ };
+ const onChangeRowsPerPage = (p: number) => {
+ setTableState({ ...tableState, pageSize: p });
+ };
+ const onIncidentStatesChange = (s: IncidentStatus[]) => {
+ setStates(s);
+ };
+
+ return [
+ {
+ tableState,
+ states,
+ incidents: incidentsList,
+ incidentsCount,
+ error,
+ isLoading,
+ },
+ {
+ setTableState,
+ setStates,
+ setIncidentsList,
+ setIsLoading,
+ retry,
+ onIncidentChanged,
+ refetchIncidents,
+ onChangePage,
+ onChangeRowsPerPage,
+ onIncidentStatesChange,
+ },
+ ] as const;
+};
diff --git a/plugins/ilert/src/hooks/useNewIncident.ts b/plugins/ilert/src/hooks/useNewIncident.ts
new file mode 100644
index 0000000000..6fbcfbb5a5
--- /dev/null
+++ b/plugins/ilert/src/hooks/useNewIncident.ts
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import { ilertApiRef } from '../api';
+import { useApi, errorApiRef } from '@backstage/core';
+import { AuthenticationError } from '@backstage/errors';
+import { useAsyncRetry } from 'react-use';
+import { AlertSource } from '../types';
+
+export const useNewIncident = (
+ open: boolean,
+ initialAlertSource?: AlertSource | null,
+) => {
+ const ilertApi = useApi(ilertApiRef);
+ const errorApi = useApi(errorApiRef);
+
+ const [alertSourcesList, setAlertSourcesList] = React.useState(
+ [],
+ );
+ const [alertSource, setAlertSource] = React.useState(
+ null,
+ );
+ const [summary, setSummary] = React.useState('');
+ const [details, setDetails] = React.useState('');
+ const [isLoading, setIsLoading] = React.useState(false);
+
+ const fetchAlertSources = useAsyncRetry(async () => {
+ try {
+ if (!open || initialAlertSource) {
+ return;
+ }
+ const count = await ilertApi.fetchAlertSources();
+ setAlertSourcesList(count || 0);
+ } catch (e) {
+ if (!(e instanceof AuthenticationError)) {
+ errorApi.post(e);
+ }
+ throw e;
+ }
+ }, [open]);
+
+ const error = fetchAlertSources.error;
+ const retry = () => {
+ fetchAlertSources.retry();
+ };
+
+ return [
+ {
+ alertSources: alertSourcesList,
+ alertSource: initialAlertSource ? initialAlertSource : alertSource,
+ summary,
+ details,
+ error,
+ isLoading,
+ },
+ {
+ setAlertSourcesList,
+ setAlertSource,
+ setSummary,
+ setDetails,
+ setIsLoading,
+ retry,
+ },
+ ] as const;
+};
diff --git a/plugins/ilert/src/hooks/useOnCallSchedules.ts b/plugins/ilert/src/hooks/useOnCallSchedules.ts
new file mode 100644
index 0000000000..ce76a0770c
--- /dev/null
+++ b/plugins/ilert/src/hooks/useOnCallSchedules.ts
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import { ilertApiRef } from '../api';
+import { useApi, errorApiRef } from '@backstage/core';
+import { AuthenticationError } from '@backstage/errors';
+import { useAsyncRetry } from 'react-use';
+import { Schedule } from '../types';
+
+export const useOnCallSchedules = () => {
+ const ilertApi = useApi(ilertApiRef);
+ const errorApi = useApi(errorApiRef);
+
+ const [onCallSchedulesList, setOnCallSchedulesList] = React.useState<
+ Schedule[]
+ >([]);
+ const [isLoading, setIsLoading] = React.useState(false);
+
+ const fetchOnCallSchedulesCall = async () => {
+ try {
+ setIsLoading(true);
+ const data = await ilertApi.fetchOnCallSchedules();
+ setOnCallSchedulesList(data || []);
+ setIsLoading(false);
+ } catch (e) {
+ setIsLoading(false);
+ if (!(e instanceof AuthenticationError)) {
+ errorApi.post(e);
+ }
+ throw e;
+ }
+ };
+
+ const { error, retry } = useAsyncRetry(fetchOnCallSchedulesCall, []);
+
+ return [
+ {
+ onCallSchedules: onCallSchedulesList,
+ error,
+ isLoading,
+ },
+ {
+ retry,
+ setIsLoading,
+ refetchOnCallSchedules: fetchOnCallSchedulesCall,
+ },
+ ] as const;
+};
diff --git a/plugins/ilert/src/hooks/useShiftOverride.ts b/plugins/ilert/src/hooks/useShiftOverride.ts
new file mode 100644
index 0000000000..136d20d286
--- /dev/null
+++ b/plugins/ilert/src/hooks/useShiftOverride.ts
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import { ilertApiRef } from '../api';
+import { useApi, errorApiRef } from '@backstage/core';
+import { AuthenticationError } from '@backstage/errors';
+import { useAsyncRetry } from 'react-use';
+import { User, Shift } from '../types';
+
+export const useShiftOverride = (s: Shift, isModalOpened: boolean) => {
+ const ilertApi = useApi(ilertApiRef);
+ const errorApi = useApi(errorApiRef);
+
+ const [shift, setShift] = React.useState(s);
+ const [usersList, setUsersList] = React.useState([]);
+ const [isLoading, setIsLoading] = React.useState(false);
+
+ const { error, retry } = useAsyncRetry(async () => {
+ try {
+ if (!isModalOpened) {
+ return;
+ }
+ setIsLoading(true);
+ const data = await ilertApi.fetchUsers();
+ setUsersList(data || []);
+ setIsLoading(false);
+ } catch (e) {
+ setIsLoading(false);
+ if (!(e instanceof AuthenticationError)) {
+ errorApi.post(e);
+ }
+ throw e;
+ }
+ }, [isModalOpened]);
+
+ const setUser = (user: User) => {
+ setShift({ ...shift, user });
+ };
+
+ const setStart = (start: string) => {
+ setShift({ ...shift, start });
+ };
+
+ const setEnd = (end: string) => {
+ setShift({ ...shift, end });
+ };
+
+ return [
+ {
+ shift,
+ users: usersList,
+ user: shift.user,
+ start: shift.start,
+ end: shift.end,
+ error,
+ isLoading,
+ },
+ {
+ retry,
+ setIsLoading,
+ setUser,
+ setStart,
+ setEnd,
+ },
+ ] as const;
+};
diff --git a/plugins/ilert/src/hooks/useUptimeMonitors.ts b/plugins/ilert/src/hooks/useUptimeMonitors.ts
new file mode 100644
index 0000000000..fa1576642a
--- /dev/null
+++ b/plugins/ilert/src/hooks/useUptimeMonitors.ts
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+import { ilertApiRef, TableState } from '../api';
+import { useApi, errorApiRef } from '@backstage/core';
+import { AuthenticationError } from '@backstage/errors';
+import { useAsyncRetry } from 'react-use';
+import { UptimeMonitor } from '../types';
+
+export const useUptimeMonitors = () => {
+ const ilertApi = useApi(ilertApiRef);
+ const errorApi = useApi(errorApiRef);
+
+ const [tableState, setTableState] = React.useState({
+ page: 0,
+ pageSize: 10,
+ });
+ const [uptimeMonitorsList, setUptimeMonitorsList] = React.useState<
+ UptimeMonitor[]
+ >([]);
+ const [isLoading, setIsLoading] = React.useState(false);
+
+ const { error, retry } = useAsyncRetry(async () => {
+ try {
+ setIsLoading(true);
+ const data = await ilertApi.fetchUptimeMonitors();
+ setUptimeMonitorsList(data || []);
+ setIsLoading(false);
+ } catch (e) {
+ setIsLoading(false);
+ if (!(e instanceof AuthenticationError)) {
+ errorApi.post(e);
+ }
+ throw e;
+ }
+ }, [tableState]);
+
+ const onUptimeMonitorChanged = (newUptimeMonitor: UptimeMonitor) => {
+ setUptimeMonitorsList(
+ uptimeMonitorsList.map(
+ (uptimeMonitor: UptimeMonitor): UptimeMonitor => {
+ if (newUptimeMonitor.id === uptimeMonitor.id) {
+ return newUptimeMonitor;
+ }
+
+ return uptimeMonitor;
+ },
+ ),
+ );
+ };
+
+ const onChangePage = (page: number) => {
+ setTableState({ ...tableState, page });
+ };
+ const onChangeRowsPerPage = (pageSize: number) => {
+ setTableState({ ...tableState, pageSize });
+ };
+
+ return [
+ {
+ tableState,
+ uptimeMonitors: uptimeMonitorsList,
+ error,
+ isLoading,
+ },
+ {
+ setTableState,
+ setUptimeMonitorsList,
+ retry,
+ onUptimeMonitorChanged,
+ onChangePage,
+ onChangeRowsPerPage,
+ setIsLoading,
+ },
+ ] as const;
+};
diff --git a/plugins/ilert/src/index.ts b/plugins/ilert/src/index.ts
new file mode 100644
index 0000000000..2e5301f151
--- /dev/null
+++ b/plugins/ilert/src/index.ts
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { IconComponent } from '@backstage/core';
+import ILertIconComponent from './assets/ilert.icon.svg';
+
+export {
+ ilertPlugin,
+ ilertPlugin as plugin,
+ ILertPage,
+ EntityILertCard,
+} from './plugin';
+export {
+ ILertPage as Router,
+ isPluginApplicableToEntity,
+ isPluginApplicableToEntity as isILertAvailable,
+ ILertCard,
+} from './components';
+export * from './api';
+export * from './route-refs';
+export const ILertIcon: IconComponent = ILertIconComponent;
diff --git a/plugins/ilert/src/plugin.test.ts b/plugins/ilert/src/plugin.test.ts
new file mode 100644
index 0000000000..89a0cb231f
--- /dev/null
+++ b/plugins/ilert/src/plugin.test.ts
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { ilertPlugin } from './plugin';
+
+describe('plugin-ilert', () => {
+ it('should export plugin', () => {
+ expect(ilertPlugin).toBeDefined();
+ });
+});
diff --git a/plugins/ilert/src/plugin.ts b/plugins/ilert/src/plugin.ts
new file mode 100644
index 0000000000..546b77911d
--- /dev/null
+++ b/plugins/ilert/src/plugin.ts
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import {
+ configApiRef,
+ createApiFactory,
+ createPlugin,
+ discoveryApiRef,
+ identityApiRef,
+ createRoutableExtension,
+ createComponentExtension,
+} from '@backstage/core';
+import { ILertClient, ilertApiRef } from './api';
+import { iLertRouteRef } from './route-refs';
+
+export const ilertPlugin = createPlugin({
+ id: 'ilert',
+ apis: [
+ createApiFactory({
+ api: ilertApiRef,
+ deps: {
+ discoveryApi: discoveryApiRef,
+ identityApi: identityApiRef,
+ configApi: configApiRef,
+ },
+ factory: ({ discoveryApi, configApi }) =>
+ ILertClient.fromConfig(configApi, discoveryApi),
+ }),
+ ],
+ routes: {
+ root: iLertRouteRef,
+ },
+});
+
+export const ILertPage = ilertPlugin.provide(
+ createRoutableExtension({
+ component: () => import('./components').then(m => m.ILertPage),
+ mountPoint: iLertRouteRef,
+ }),
+);
+
+export const EntityILertCard = ilertPlugin.provide(
+ createComponentExtension({
+ component: {
+ lazy: () => import('./components/ILertCard').then(m => m.ILertCard),
+ },
+ }),
+);
diff --git a/plugins/ilert/src/route-refs.tsx b/plugins/ilert/src/route-refs.tsx
new file mode 100644
index 0000000000..b63ba15315
--- /dev/null
+++ b/plugins/ilert/src/route-refs.tsx
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { createRouteRef } from '@backstage/core';
+import ILertIcon from './assets/ilert.icon.svg';
+
+export const iLertRouteRef = createRouteRef({
+ icon: ILertIcon,
+ path: '/ilert',
+ title: 'iLert',
+});
diff --git a/plugins/ilert/src/setupTests.ts b/plugins/ilert/src/setupTests.ts
new file mode 100644
index 0000000000..0cec5b395d
--- /dev/null
+++ b/plugins/ilert/src/setupTests.ts
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import '@testing-library/jest-dom';
+import 'cross-fetch/polyfill';
diff --git a/plugins/ilert/src/types.ts b/plugins/ilert/src/types.ts
new file mode 100644
index 0000000000..d7746c9d9b
--- /dev/null
+++ b/plugins/ilert/src/types.ts
@@ -0,0 +1,337 @@
+/*
+ * Copyright 2021 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export interface Incident {
+ id: number;
+ summary: string;
+ details: string;
+ reportTime: string;
+ resolvedOn: string;
+ status: IncidentStatus;
+ priority: IncidentPriority;
+ incidentKey: string;
+ alertSource: AlertSource | null;
+ assignedTo: User | null;
+ logEntries: LogEntry[];
+ links: Link[];
+ images: Image[];
+ subscribers: Subscriber[];
+ commentText: string;
+ commentPublishToSubscribers: boolean;
+}
+
+export const PENDING = 'PENDING';
+export const ACCEPTED = 'ACCEPTED';
+export const RESOLVED = 'RESOLVED';
+export type IncidentStatus = typeof PENDING | typeof ACCEPTED | typeof RESOLVED;
+export type IncidentPriority = 'HIGH' | 'LOW';
+
+export interface Link {
+ href: string;
+ text: string;
+}
+
+export interface Image {
+ src: string;
+ href: string;
+ alt: string;
+}
+
+export type SubscriberType = 'TEAM' | 'USER';
+
+export interface Subscriber {
+ id: number;
+ name: string;
+ type: SubscriberType;
+}
+
+export interface LogEntry {
+ id: number;
+ timestamp: string;
+ logEntryType: string;
+ text: string;
+ incidentId?: number;
+ iconName?: string;
+ iconClass?: string;
+ filterTypes?: string[];
+}
+
+export interface User {
+ id: number;
+ username: string;
+ firstName: string;
+ lastName: string;
+ email: string;
+ mobile: Phone;
+ landline: Phone;
+ timezone?: string;
+ language?: Language;
+ role?: UserRole;
+ notificationPreferences?: any[];
+ position: string;
+ department: string;
+}
+
+export type UserRole =
+ | 'USER'
+ | 'ADMIN'
+ | 'STAKEHOLDER'
+ | 'ACCOUNT_OWNER'
+ | 'RESPONDER';
+export type Language = 'de' | 'en';
+export interface Phone {
+ regionCode: string;
+ number: string;
+}
+
+export interface AlertSource {
+ id: number;
+ name: string;
+ status: AlertSourceStatus;
+ escalationPolicy: EscalationPolicy;
+ integrationType: AlertSourceIntegrationType;
+ integrationKey?: string;
+ iconUrl?: string;
+ lightIconUrl?: string;
+ darkIconUrl?: string;
+ incidentCreation?: AlertSourceIncidentCreation;
+ incidentPriorityRule?: AlertSourceIncidentPriorityRule;
+ emailFiltered?: boolean;
+ emailResolveFiltered?: boolean;
+ active?: boolean;
+ emailPredicates?: AlertSourceEmailPredicate[];
+ emailResolvePredicates?: AlertSourceEmailPredicate[];
+ filterOperator?: AlertSourceFilterOperator;
+ resolveFilterOperator?: AlertSourceFilterOperator;
+ supportHours?: AlertSourceSupportHours;
+ heartbeat?: AlertSourceHeartbeat;
+ autotaskMetadata?: AlertSourceAutotaskMetadata;
+ autoResolutionTimeout?: string;
+ teams: TeamShort[];
+}
+
+export interface TeamShort {
+ id: number;
+ name: string;
+}
+
+export interface TeamMember {
+ user: User;
+ role: 'STAKEHOLDER' | 'RESPONDER' | 'USER' | 'ADMIN';
+}
+
+export type AlertSourceStatus =
+ | 'PENDING'
+ | 'ALL_ACCEPTED'
+ | 'ALL_RESOLVED'
+ | 'IN_MAINTENANCE'
+ | 'DISABLED';
+export type AlertSourceIntegrationType =
+ | 'NAGIOS'
+ | 'ICINGA'
+ | 'EMAIL'
+ | 'SMS'
+ | 'API'
+ | 'CRN'
+ | 'HEARTBEAT'
+ | 'PRTG'
+ | 'PINGDOM'
+ | 'CLOUDWATCH'
+ | 'AWSPHD'
+ | 'STACKDRIVER'
+ | 'INSTANA'
+ | 'ZABBIX'
+ | 'SOLARWINDS'
+ | 'PROMETHEUS'
+ | 'NEWRELIC'
+ | 'GRAFANA'
+ | 'GITHUB'
+ | 'DATADOG'
+ | 'UPTIMEROBOT'
+ | 'APPDYNAMICS'
+ | 'DYNATRACE'
+ | 'TOPDESK'
+ | 'STATUSCAKE'
+ | 'MONITOR'
+ | 'TOOL'
+ | 'CHECKMK'
+ | 'AUTOTASK'
+ | 'AWSBUDGET'
+ | 'KENTIXAM'
+ | 'CONSUL'
+ | 'ZAMMAD'
+ | 'SIGNALFX'
+ | 'SPLUNK'
+ | 'KUBERNETES'
+ | 'SEMATEXT'
+ | 'SENTRY'
+ | 'SUMOLOGIC'
+ | 'RAYGUN'
+ | 'MXTOOLBOX'
+ | 'ESWATCHER'
+ | 'AMAZONSNS'
+ | 'KAPACITOR'
+ | 'CORTEXXSOAR'
+ | string;
+export type AlertSourceIncidentCreation =
+ | 'ONE_INCIDENT_PER_EMAIL'
+ | 'ONE_INCIDENT_PER_EMAIL_SUBJECT'
+ | 'ONE_PENDING_INCIDENT_ALLOWED'
+ | 'ONE_OPEN_INCIDENT_ALLOWED'
+ | 'OPEN_RESOLVE_ON_EXTRACTION';
+export type AlertSourceFilterOperator = 'AND' | 'OR';
+export type AlertSourceIncidentPriorityRule =
+ | 'HIGH'
+ | 'LOW'
+ | 'HIGH_DURING_SUPPORT_HOURS'
+ | 'LOW_DURING_SUPPORT_HOURS';
+export interface AlertSourceEmailPredicate {
+ field: 'EMAIL_FROM' | 'EMAIL_SUBJECT' | 'EMAIL_BODY';
+ criteria:
+ | 'CONTAINS_ANY_WORDS'
+ | 'CONTAINS_NOT_WORDS'
+ | 'CONTAINS_STRING'
+ | 'CONTAINS_NOT_STRING'
+ | 'IS_STRING'
+ | 'IS_NOT_STRING'
+ | 'MATCHES_REGEX'
+ | 'MATCHES_NOT_REGEX';
+ value: string;
+}
+export type AlertSourceTimeZone =
+ | 'Europe/Berlin'
+ | 'America/New_York'
+ | 'America/Los_Angeles'
+ | 'Asia/Istanbul';
+export interface AlertSourceSupportDay {
+ start: string;
+ end: string;
+}
+export interface AlertSourceSupportHours {
+ timezone: AlertSourceTimeZone;
+ autoRaiseIncidents: boolean;
+ supportDays: {
+ MONDAY: AlertSourceSupportDay;
+ TUESDAY: AlertSourceSupportDay;
+ WEDNESDAY: AlertSourceSupportDay;
+ THURSDAY: AlertSourceSupportDay;
+ FRIDAY: AlertSourceSupportDay;
+ SATURDAY: AlertSourceSupportDay;
+ SUNDAY: AlertSourceSupportDay;
+ };
+}
+export interface AlertSourceHeartbeat {
+ summary: string;
+ intervalSec: number;
+ status: 'OVERDUE' | 'ON_TIME' | 'NEVER_RECEIVED';
+}
+
+export interface AlertSourceAutotaskMetadata {
+ userName: string;
+ secret: string;
+ apiIntegrationCode: string;
+ webServer: string;
+}
+
+export interface EscalationPolicy {
+ id: number;
+ name: string;
+ escalationRules: EscalationRule[];
+ newEscalationRule: EscalationRule;
+ repeating?: boolean;
+ frequency?: number;
+ teams: TeamShort[];
+}
+
+export interface EscalationRule {
+ user: User | null;
+ schedule: Schedule | null;
+ escalationTimeout: number;
+}
+
+export interface Schedule {
+ id: number;
+ name: string;
+ timezone: string;
+ startsOn: string;
+ currentShift: Shift;
+ nextShift: Shift;
+ shifts: Shift[];
+ overrides: Shift[];
+ teams: TeamShort[];
+}
+
+export interface Shift {
+ user: User;
+ start: string;
+ end: string;
+}
+
+export interface UptimeMonitor {
+ id: number;
+ name: string;
+ region: 'EU' | 'US';
+ checkType: 'http' | 'tcp' | 'udp' | 'ping';
+ checkParams: UptimeMonitorCheckParams;
+ intervalSec: number;
+ timeoutMs: number;
+ createIncidentAfterFailedChecks: number;
+ paused: boolean;
+ embedUrl: string;
+ shareUrl: string;
+ status: string;
+ lastStatusChange: string;
+ escalationPolicy: EscalationPolicy;
+ teams: TeamShort[];
+}
+
+export interface UptimeMonitorCheckParams {
+ host?: string;
+ port?: number;
+ url?: string;
+}
+
+export interface IncidentResponder {
+ group: 'SUGGESTED' | 'USER' | 'ESCALATION_POLICY' | 'ON_CALL_SCHEDULE';
+ id: number;
+ name: string;
+ disabled: boolean;
+}
+
+export interface IncidentAction {
+ name: string;
+ type: string;
+ webhookId: string;
+ extensionId?: string;
+ history?: IncidentActionHistory[];
+}
+
+export interface IncidentActionHistory {
+ id: string;
+ webhookId: string;
+ incidentId: number;
+ actor: User;
+ success: boolean;
+}
+
+export interface OnCall {
+ user: User;
+ escalationPolicy: EscalationPolicy;
+ schedule?: Schedule;
+ start: string;
+ end: string;
+ escalationLevel: number;
+}
diff --git a/plugins/jenkins/CHANGELOG.md b/plugins/jenkins/CHANGELOG.md
index ac734e9a95..79e204b350 100644
--- a/plugins/jenkins/CHANGELOG.md
+++ b/plugins/jenkins/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-jenkins
+## 0.4.3
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- 675a569a9: chore: bump `react-use` dependency in all packages
+- Updated dependencies [062bbf90f]
+- Updated dependencies [10c008a3a]
+- Updated dependencies [889d89b6e]
+- Updated dependencies [16be1d093]
+- Updated dependencies [3f988cb63]
+- Updated dependencies [675a569a9]
+ - @backstage/core@0.7.9
+ - @backstage/plugin-catalog-react@0.1.6
+ - @backstage/catalog-model@0.7.9
+
## 0.4.2
### Patch Changes
diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json
index c4ba600d7e..d14a18ffe7 100644
--- a/plugins/jenkins/package.json
+++ b/plugins/jenkins/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-jenkins",
- "version": "0.4.2",
+ "version": "0.4.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,9 +31,9 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/catalog-model": "^0.7.3",
- "@backstage/core": "^0.7.8",
- "@backstage/plugin-catalog-react": "^0.1.3",
+ "@backstage/catalog-model": "^0.7.9",
+ "@backstage/core": "^0.7.9",
+ "@backstage/plugin-catalog-react": "^0.1.6",
"@backstage/theme": "^0.2.7",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -47,12 +47,12 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/dev-utils": "^0.1.13",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/dev-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.11",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
- "@testing-library/user-event": "^12.0.7",
+ "@testing-library/user-event": "^13.1.8",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32",
"@types/testing-library__jest-dom": "^5.9.1",
diff --git a/plugins/kafka-backend/CHANGELOG.md b/plugins/kafka-backend/CHANGELOG.md
index ef006a360f..b71ac92e5a 100644
--- a/plugins/kafka-backend/CHANGELOG.md
+++ b/plugins/kafka-backend/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-kafka-backend
+## 0.2.5
+
+### Patch Changes
+
+- Updated dependencies [22fd8ce2a]
+- Updated dependencies [10c008a3a]
+- Updated dependencies [f9fb4a205]
+- Updated dependencies [16be1d093]
+ - @backstage/backend-common@0.8.0
+ - @backstage/catalog-model@0.7.9
+
## 0.2.4
### Patch Changes
diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json
index 3e3f22654a..14bbfef486 100644
--- a/plugins/kafka-backend/package.json
+++ b/plugins/kafka-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-kafka-backend",
- "version": "0.2.4",
+ "version": "0.2.5",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,8 +31,8 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.7.0",
- "@backstage/catalog-model": "^0.7.8",
+ "@backstage/backend-common": "^0.8.0",
+ "@backstage/catalog-model": "^0.7.9",
"@backstage/config": "^0.1.5",
"@types/express": "^4.17.6",
"express": "^4.17.1",
@@ -42,7 +42,7 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
+ "@backstage/cli": "^0.6.11",
"@types/jest-when": "^2.7.2",
"@types/lodash": "^4.14.151",
"jest-when": "^3.1.0",
diff --git a/plugins/kafka/CHANGELOG.md b/plugins/kafka/CHANGELOG.md
index f1c4c215ed..67c70c321d 100644
--- a/plugins/kafka/CHANGELOG.md
+++ b/plugins/kafka/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-kafka
+## 0.2.7
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- 675a569a9: chore: bump `react-use` dependency in all packages
+- Updated dependencies [062bbf90f]
+- Updated dependencies [10c008a3a]
+- Updated dependencies [889d89b6e]
+- Updated dependencies [16be1d093]
+- Updated dependencies [3f988cb63]
+- Updated dependencies [675a569a9]
+ - @backstage/core@0.7.9
+ - @backstage/plugin-catalog-react@0.1.6
+ - @backstage/catalog-model@0.7.9
+
## 0.2.6
### Patch Changes
diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json
index e405460262..b6c600a90c 100644
--- a/plugins/kafka/package.json
+++ b/plugins/kafka/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-kafka",
- "version": "0.2.6",
+ "version": "0.2.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -20,9 +20,9 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/catalog-model": "^0.7.4",
- "@backstage/core": "^0.7.8",
- "@backstage/plugin-catalog-react": "^0.1.1",
+ "@backstage/catalog-model": "^0.7.9",
+ "@backstage/core": "^0.7.9",
+ "@backstage/plugin-catalog-react": "^0.1.6",
"@backstage/theme": "^0.2.7",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -33,13 +33,13 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/dev-utils": "^0.1.13",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/dev-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.11",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/react-hooks": "^3.4.2",
- "@testing-library/user-event": "^12.0.7",
+ "@testing-library/user-event": "^13.1.8",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32",
"cross-fetch": "^3.0.6",
diff --git a/plugins/kubernetes-backend/CHANGELOG.md b/plugins/kubernetes-backend/CHANGELOG.md
index a9893925e2..265b7eb414 100644
--- a/plugins/kubernetes-backend/CHANGELOG.md
+++ b/plugins/kubernetes-backend/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-kubernetes-backend
+## 0.3.7
+
+### Patch Changes
+
+- f9f9d633d: Add possibility to configure TLS verification for `gke` type clusters
+- Updated dependencies [22fd8ce2a]
+- Updated dependencies [10c008a3a]
+- Updated dependencies [f9fb4a205]
+- Updated dependencies [16be1d093]
+ - @backstage/backend-common@0.8.0
+ - @backstage/catalog-model@0.7.9
+
## 0.3.6
### Patch Changes
diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json
index f73166d5fc..9e438ce788 100644
--- a/plugins/kubernetes-backend/package.json
+++ b/plugins/kubernetes-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-kubernetes-backend",
- "version": "0.3.6",
+ "version": "0.3.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,8 +31,8 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.7.0",
- "@backstage/catalog-model": "^0.7.8",
+ "@backstage/backend-common": "^0.8.0",
+ "@backstage/catalog-model": "^0.7.9",
"@backstage/config": "^0.1.5",
"@backstage/plugin-kubernetes-common": "^0.1.0",
"@google-cloud/container": "^2.2.0",
@@ -53,7 +53,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
+ "@backstage/cli": "^0.6.11",
"@types/aws4": "^1.5.1",
"supertest": "^6.1.3"
},
diff --git a/plugins/kubernetes/CHANGELOG.md b/plugins/kubernetes/CHANGELOG.md
index d78842f351..cca63f6389 100644
--- a/plugins/kubernetes/CHANGELOG.md
+++ b/plugins/kubernetes/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-kubernetes
+## 0.4.4
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- ea21d46f0: Export types
+- 675a569a9: chore: bump `react-use` dependency in all packages
+- Updated dependencies [062bbf90f]
+- Updated dependencies [10c008a3a]
+- Updated dependencies [889d89b6e]
+- Updated dependencies [16be1d093]
+- Updated dependencies [3f988cb63]
+- Updated dependencies [675a569a9]
+ - @backstage/core@0.7.9
+ - @backstage/plugin-catalog-react@0.1.6
+ - @backstage/catalog-model@0.7.9
+
## 0.4.3
### Patch Changes
diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json
index 19865a6fcc..5036e08852 100644
--- a/plugins/kubernetes/package.json
+++ b/plugins/kubernetes/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-kubernetes",
- "version": "0.4.3",
+ "version": "0.4.4",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,10 +30,10 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/catalog-model": "^0.7.8",
+ "@backstage/catalog-model": "^0.7.9",
"@backstage/config": "^0.1.5",
- "@backstage/core": "^0.7.8",
- "@backstage/plugin-catalog-react": "^0.1.5",
+ "@backstage/core": "^0.7.9",
+ "@backstage/plugin-catalog-react": "^0.1.6",
"@backstage/plugin-kubernetes-common": "^0.1.0",
"@backstage/theme": "^0.2.7",
"@kubernetes/client-node": "^0.14.0",
@@ -49,13 +49,13 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/dev-utils": "^0.1.13",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/dev-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.11",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/react-hooks": "^3.4.2",
- "@testing-library/user-event": "^12.0.7",
+ "@testing-library/user-event": "^13.1.8",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32",
"cross-fetch": "^3.0.6",
diff --git a/plugins/kubernetes/src/index.ts b/plugins/kubernetes/src/index.ts
index eca6b068f1..aabf36f1dc 100644
--- a/plugins/kubernetes/src/index.ts
+++ b/plugins/kubernetes/src/index.ts
@@ -19,3 +19,4 @@ export {
EntityKubernetesContent,
} from './plugin';
export { Router } from './Router';
+export * from './kubernetes-auth-provider';
diff --git a/plugins/kubernetes/src/kubernetes-auth-provider/index.ts b/plugins/kubernetes/src/kubernetes-auth-provider/index.ts
new file mode 100644
index 0000000000..8f54913903
--- /dev/null
+++ b/plugins/kubernetes/src/kubernetes-auth-provider/index.ts
@@ -0,0 +1,18 @@
+/*
+ * Copyright 2020 Spotify AB
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export { kubernetesAuthProvidersApiRef } from './types';
+export { KubernetesAuthProviders } from './KubernetesAuthProviders';
diff --git a/plugins/lighthouse/CHANGELOG.md b/plugins/lighthouse/CHANGELOG.md
index cb2cb5b9d1..d9b9b541d0 100644
--- a/plugins/lighthouse/CHANGELOG.md
+++ b/plugins/lighthouse/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-lighthouse
+## 0.2.16
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- 675a569a9: chore: bump `react-use` dependency in all packages
+- Updated dependencies [062bbf90f]
+- Updated dependencies [10c008a3a]
+- Updated dependencies [889d89b6e]
+- Updated dependencies [16be1d093]
+- Updated dependencies [3f988cb63]
+- Updated dependencies [675a569a9]
+ - @backstage/core@0.7.9
+ - @backstage/plugin-catalog-react@0.1.6
+ - @backstage/catalog-model@0.7.9
+
## 0.2.15
### Patch Changes
diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json
index f70e29f69b..68f4722157 100644
--- a/plugins/lighthouse/package.json
+++ b/plugins/lighthouse/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-lighthouse",
- "version": "0.2.15",
+ "version": "0.2.16",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,10 +31,10 @@
"start": "backstage-cli plugin:serve"
},
"dependencies": {
- "@backstage/catalog-model": "^0.7.3",
+ "@backstage/catalog-model": "^0.7.9",
"@backstage/config": "^0.1.4",
- "@backstage/core": "^0.7.8",
- "@backstage/plugin-catalog-react": "^0.1.2",
+ "@backstage/core": "^0.7.9",
+ "@backstage/plugin-catalog-react": "^0.1.6",
"@backstage/theme": "^0.2.7",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -46,12 +46,12 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/dev-utils": "^0.1.13",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/dev-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.11",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
- "@testing-library/user-event": "^12.0.7",
+ "@testing-library/user-event": "^13.1.8",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32",
"@types/react": "^16.9",
diff --git a/plugins/newrelic/CHANGELOG.md b/plugins/newrelic/CHANGELOG.md
index f2745796d8..2091ef6a1d 100644
--- a/plugins/newrelic/CHANGELOG.md
+++ b/plugins/newrelic/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-newrelic
+## 0.2.7
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- 675a569a9: chore: bump `react-use` dependency in all packages
+- Updated dependencies [062bbf90f]
+- Updated dependencies [889d89b6e]
+- Updated dependencies [3f988cb63]
+- Updated dependencies [675a569a9]
+ - @backstage/core@0.7.9
+
## 0.2.6
### Patch Changes
diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json
index 20ee5521f4..7938f19100 100644
--- a/plugins/newrelic/package.json
+++ b/plugins/newrelic/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-newrelic",
- "version": "0.2.6",
+ "version": "0.2.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,7 +31,7 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/core": "^0.7.8",
+ "@backstage/core": "^0.7.9",
"@backstage/theme": "^0.2.7",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -41,12 +41,12 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/dev-utils": "^0.1.13",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/dev-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.11",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
- "@testing-library/user-event": "^12.0.7",
+ "@testing-library/user-event": "^13.1.8",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32",
"cross-fetch": "^3.0.6",
diff --git a/plugins/org/CHANGELOG.md b/plugins/org/CHANGELOG.md
index c62c618ff4..33ef38a7c2 100644
--- a/plugins/org/CHANGELOG.md
+++ b/plugins/org/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/plugin-org
+## 0.3.13
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- f59a945b7: Paginate group members to only display 50 members maximum.
+- 675a569a9: chore: bump `react-use` dependency in all packages
+- Updated dependencies [062bbf90f]
+- Updated dependencies [10c008a3a]
+- Updated dependencies [889d89b6e]
+- Updated dependencies [16be1d093]
+- Updated dependencies [3f988cb63]
+- Updated dependencies [675a569a9]
+ - @backstage/core@0.7.9
+ - @backstage/core-api@0.2.18
+ - @backstage/plugin-catalog-react@0.1.6
+ - @backstage/catalog-model@0.7.9
+
## 0.3.12
### Patch Changes
diff --git a/plugins/org/package.json b/plugins/org/package.json
index 012514f1c4..4f8e37fa99 100644
--- a/plugins/org/package.json
+++ b/plugins/org/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-org",
- "version": "0.3.12",
+ "version": "0.3.13",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -20,10 +20,10 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/catalog-model": "^0.7.6",
- "@backstage/core": "^0.7.8",
- "@backstage/core-api": "^0.2.16",
- "@backstage/plugin-catalog-react": "^0.1.4",
+ "@backstage/catalog-model": "^0.7.9",
+ "@backstage/core": "^0.7.9",
+ "@backstage/core-api": "^0.2.18",
+ "@backstage/plugin-catalog-react": "^0.1.6",
"@backstage/theme": "^0.2.7",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -35,12 +35,12 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/dev-utils": "^0.1.13",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/dev-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.11",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
- "@testing-library/user-event": "^12.0.7",
+ "@testing-library/user-event": "^13.1.8",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32",
"cross-fetch": "^3.0.6",
diff --git a/plugins/pagerduty/CHANGELOG.md b/plugins/pagerduty/CHANGELOG.md
index b7fc7fec40..21e79445b0 100644
--- a/plugins/pagerduty/CHANGELOG.md
+++ b/plugins/pagerduty/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-pagerduty
+## 0.3.4
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- 675a569a9: chore: bump `react-use` dependency in all packages
+- Updated dependencies [062bbf90f]
+- Updated dependencies [10c008a3a]
+- Updated dependencies [889d89b6e]
+- Updated dependencies [16be1d093]
+- Updated dependencies [3f988cb63]
+- Updated dependencies [675a569a9]
+ - @backstage/core@0.7.9
+ - @backstage/plugin-catalog-react@0.1.6
+ - @backstage/catalog-model@0.7.9
+
## 0.3.3
### Patch Changes
diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json
index 53f0ddbb23..b3fbc37569 100644
--- a/plugins/pagerduty/package.json
+++ b/plugins/pagerduty/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-pagerduty",
- "version": "0.3.3",
+ "version": "0.3.4",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,9 +30,9 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/catalog-model": "^0.7.3",
- "@backstage/core": "^0.7.8",
- "@backstage/plugin-catalog-react": "^0.1.1",
+ "@backstage/catalog-model": "^0.7.9",
+ "@backstage/core": "^0.7.9",
+ "@backstage/plugin-catalog-react": "^0.1.6",
"@backstage/theme": "^0.2.7",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -46,12 +46,12 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/dev-utils": "^0.1.13",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/dev-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.11",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
- "@testing-library/user-event": "^12.0.7",
+ "@testing-library/user-event": "^13.1.8",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32",
"cross-fetch": "^3.0.6",
diff --git a/plugins/proxy-backend/CHANGELOG.md b/plugins/proxy-backend/CHANGELOG.md
index 06a96576e6..2890039b96 100644
--- a/plugins/proxy-backend/CHANGELOG.md
+++ b/plugins/proxy-backend/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-proxy-backend
+## 0.2.8
+
+### Patch Changes
+
+- Updated dependencies [22fd8ce2a]
+- Updated dependencies [f9fb4a205]
+ - @backstage/backend-common@0.8.0
+
## 0.2.7
### Patch Changes
diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json
index 2c6fc9e08d..d2b0d64678 100644
--- a/plugins/proxy-backend/package.json
+++ b/plugins/proxy-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-proxy-backend",
- "version": "0.2.7",
+ "version": "0.2.8",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -28,7 +28,7 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.7.0",
+ "@backstage/backend-common": "^0.8.0",
"@backstage/config": "^0.1.5",
"@types/express": "^4.17.6",
"express": "^4.17.1",
@@ -42,7 +42,7 @@
"yup": "^0.29.3"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
+ "@backstage/cli": "^0.6.11",
"@types/http-proxy-middleware": "^0.19.3",
"@types/supertest": "^2.0.8",
"@types/uuid": "^8.0.0",
diff --git a/plugins/register-component/CHANGELOG.md b/plugins/register-component/CHANGELOG.md
index 3634972e9a..ae0ae6562b 100644
--- a/plugins/register-component/CHANGELOG.md
+++ b/plugins/register-component/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-register-component
+## 0.2.15
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- 675a569a9: chore: bump `react-use` dependency in all packages
+- Updated dependencies [062bbf90f]
+- Updated dependencies [10c008a3a]
+- Updated dependencies [889d89b6e]
+- Updated dependencies [16be1d093]
+- Updated dependencies [3f988cb63]
+- Updated dependencies [675a569a9]
+ - @backstage/core@0.7.9
+ - @backstage/plugin-catalog-react@0.1.6
+ - @backstage/catalog-model@0.7.9
+
## 0.2.14
### Patch Changes
diff --git a/plugins/register-component/package.json b/plugins/register-component/package.json
index 3efb61b982..d10bdcfc38 100644
--- a/plugins/register-component/package.json
+++ b/plugins/register-component/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-register-component",
- "version": "0.2.14",
+ "version": "0.2.15",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,9 +30,9 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/catalog-model": "^0.7.5",
- "@backstage/core": "^0.7.8",
- "@backstage/plugin-catalog-react": "^0.1.4",
+ "@backstage/catalog-model": "^0.7.9",
+ "@backstage/core": "^0.7.9",
+ "@backstage/plugin-catalog-react": "^0.1.6",
"@backstage/theme": "^0.2.7",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -45,12 +45,12 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/dev-utils": "^0.1.13",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/dev-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.11",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
- "@testing-library/user-event": "^12.0.7",
+ "@testing-library/user-event": "^13.1.8",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32",
"cross-fetch": "^3.0.6",
diff --git a/plugins/rollbar-backend/CHANGELOG.md b/plugins/rollbar-backend/CHANGELOG.md
index 9aa0d77e69..0318d3a111 100644
--- a/plugins/rollbar-backend/CHANGELOG.md
+++ b/plugins/rollbar-backend/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-rollbar-backend
+## 0.1.11
+
+### Patch Changes
+
+- Updated dependencies [22fd8ce2a]
+- Updated dependencies [f9fb4a205]
+ - @backstage/backend-common@0.8.0
+
## 0.1.10
### Patch Changes
diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json
index c7eb819dc1..03be93dbfa 100644
--- a/plugins/rollbar-backend/package.json
+++ b/plugins/rollbar-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-rollbar-backend",
- "version": "0.1.10",
+ "version": "0.1.11",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,7 +30,7 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.7.0",
+ "@backstage/backend-common": "^0.8.0",
"@backstage/config": "^0.1.5",
"@types/express": "^4.17.6",
"axios": "^0.21.1",
@@ -47,7 +47,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
+ "@backstage/cli": "^0.6.11",
"@types/supertest": "^2.0.8",
"supertest": "^6.1.3"
},
diff --git a/plugins/rollbar/CHANGELOG.md b/plugins/rollbar/CHANGELOG.md
index 1d8c2c399e..26b9913df2 100644
--- a/plugins/rollbar/CHANGELOG.md
+++ b/plugins/rollbar/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-rollbar
+## 0.3.5
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- 675a569a9: chore: bump `react-use` dependency in all packages
+- Updated dependencies [062bbf90f]
+- Updated dependencies [10c008a3a]
+- Updated dependencies [889d89b6e]
+- Updated dependencies [16be1d093]
+- Updated dependencies [3f988cb63]
+- Updated dependencies [675a569a9]
+ - @backstage/core@0.7.9
+ - @backstage/plugin-catalog-react@0.1.6
+ - @backstage/catalog-model@0.7.9
+
## 0.3.4
### Patch Changes
diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json
index 8b559e0bf1..37ada55f5f 100644
--- a/plugins/rollbar/package.json
+++ b/plugins/rollbar/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-rollbar",
- "version": "0.3.4",
+ "version": "0.3.5",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,9 +31,9 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/catalog-model": "^0.7.3",
- "@backstage/core": "^0.7.8",
- "@backstage/plugin-catalog-react": "^0.1.1",
+ "@backstage/catalog-model": "^0.7.9",
+ "@backstage/core": "^0.7.9",
+ "@backstage/plugin-catalog-react": "^0.1.6",
"@backstage/theme": "^0.2.7",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -47,13 +47,13 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/dev-utils": "^0.1.13",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/dev-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.11",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
"@testing-library/react-hooks": "^3.3.0",
- "@testing-library/user-event": "^12.0.7",
+ "@testing-library/user-event": "^13.1.8",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32",
"@types/react": "^16.9",
diff --git a/plugins/scaffolder-backend/CHANGELOG.md b/plugins/scaffolder-backend/CHANGELOG.md
index b4aa856606..cdb8fd734b 100644
--- a/plugins/scaffolder-backend/CHANGELOG.md
+++ b/plugins/scaffolder-backend/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-scaffolder-backend
+## 0.11.1
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- 82ca1ac22: The apiBaseUrl setting for Bitbucket Server integrations will now be used when it is set. Otherwise, it will default back to the host setting.
+- fd39d4662: Move `jest-when` to the dev dependencies
+- Updated dependencies [22fd8ce2a]
+- Updated dependencies [10c008a3a]
+- Updated dependencies [f9fb4a205]
+- Updated dependencies [16be1d093]
+ - @backstage/backend-common@0.8.0
+ - @backstage/catalog-model@0.7.9
+
## 0.11.0
### Minor Changes
@@ -16,7 +30,6 @@
+ SingleHostDiscovery,
+ } from '@backstage/backend-common';
-
export default async function createPlugin({
logger,
config,
diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json
index 7452d94c63..2565a9d05a 100644
--- a/plugins/scaffolder-backend/package.json
+++ b/plugins/scaffolder-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-scaffolder-backend",
- "version": "0.11.0",
+ "version": "0.11.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -29,9 +29,9 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.7.0",
+ "@backstage/backend-common": "^0.8.0",
"@backstage/catalog-client": "^0.3.11",
- "@backstage/catalog-model": "^0.7.8",
+ "@backstage/catalog-model": "^0.7.9",
"@backstage/config": "^0.1.5",
"@backstage/errors": "^0.1.1",
"@backstage/integration": "^0.5.2",
@@ -64,8 +64,8 @@
"yaml": "^1.10.0"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/test-utils": "^0.1.11",
"@types/fs-extra": "^9.0.1",
"@types/mock-fs": "^4.13.0",
"@types/supertest": "^2.0.8",
diff --git a/plugins/scaffolder/CHANGELOG.md b/plugins/scaffolder/CHANGELOG.md
index b67740ecc1..7e55dabc55 100644
--- a/plugins/scaffolder/CHANGELOG.md
+++ b/plugins/scaffolder/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/plugin-scaffolder
+## 0.9.4
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- 81ef1d57b: Show error on task page if task does not exist.
+- 675a569a9: chore: bump `react-use` dependency in all packages
+- Updated dependencies [062bbf90f]
+- Updated dependencies [10c008a3a]
+- Updated dependencies [889d89b6e]
+- Updated dependencies [16be1d093]
+- Updated dependencies [3f988cb63]
+- Updated dependencies [675a569a9]
+ - @backstage/core@0.7.9
+ - @backstage/integration-react@0.1.2
+ - @backstage/plugin-catalog-react@0.1.6
+ - @backstage/catalog-model@0.7.9
+
## 0.9.3
### Patch Changes
diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json
index 1992028157..a29251f705 100644
--- a/plugins/scaffolder/package.json
+++ b/plugins/scaffolder/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-scaffolder",
- "version": "0.9.3",
+ "version": "0.9.4",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,13 +31,13 @@
},
"dependencies": {
"@backstage/catalog-client": "^0.3.11",
- "@backstage/catalog-model": "^0.7.8",
+ "@backstage/catalog-model": "^0.7.9",
"@backstage/config": "^0.1.5",
"@backstage/errors": "^0.1.1",
- "@backstage/core": "^0.7.8",
+ "@backstage/core": "^0.7.9",
"@backstage/integration": "^0.5.2",
- "@backstage/integration-react": "^0.1.1",
- "@backstage/plugin-catalog-react": "^0.1.5",
+ "@backstage/integration-react": "^0.1.2",
+ "@backstage/plugin-catalog-react": "^0.1.6",
"@backstage/theme": "^0.2.7",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -60,12 +60,12 @@
"zen-observable": "^0.8.15"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/dev-utils": "^0.1.13",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/dev-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.11",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
- "@testing-library/user-event": "^12.0.7",
+ "@testing-library/user-event": "^13.1.8",
"@types/humanize-duration": "^3.18.1",
"@testing-library/react-hooks": "^3.3.0",
"@types/jest": "^26.0.7",
diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json
index 99077b9b62..23234aca2f 100644
--- a/plugins/search-backend-node/package.json
+++ b/plugins/search-backend-node/package.json
@@ -25,8 +25,8 @@
"@types/lunr": "^2.3.3"
},
"devDependencies": {
- "@backstage/backend-common": "^0.7.0",
- "@backstage/cli": "^0.6.10"
+ "@backstage/backend-common": "^0.8.0",
+ "@backstage/cli": "^0.6.11"
},
"files": [
"dist"
diff --git a/plugins/search-backend/CHANGELOG.md b/plugins/search-backend/CHANGELOG.md
index fd429aae62..9d34d92575 100644
--- a/plugins/search-backend/CHANGELOG.md
+++ b/plugins/search-backend/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-search-backend
+## 0.1.5
+
+### Patch Changes
+
+- Updated dependencies [22fd8ce2a]
+- Updated dependencies [f9fb4a205]
+ - @backstage/backend-common@0.8.0
+
## 0.1.4
### Patch Changes
diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json
index 4de8ada9bc..c06f54a266 100644
--- a/plugins/search-backend/package.json
+++ b/plugins/search-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-search-backend",
- "version": "0.1.4",
+ "version": "0.1.5",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -19,7 +19,7 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.7.0",
+ "@backstage/backend-common": "^0.8.0",
"@backstage/search-common": "^0.1.1",
"@backstage/plugin-search-backend-node": "^0.1.3",
"@types/express": "^4.17.6",
@@ -29,7 +29,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
+ "@backstage/cli": "^0.6.11",
"@types/supertest": "^2.0.8",
"supertest": "^6.1.3"
},
diff --git a/plugins/search/CHANGELOG.md b/plugins/search/CHANGELOG.md
index b4bcd1f855..9c0ab2fa8c 100644
--- a/plugins/search/CHANGELOG.md
+++ b/plugins/search/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-search
+## 0.3.6
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- 675a569a9: chore: bump `react-use` dependency in all packages
+- Updated dependencies [062bbf90f]
+- Updated dependencies [10c008a3a]
+- Updated dependencies [889d89b6e]
+- Updated dependencies [16be1d093]
+- Updated dependencies [3f988cb63]
+- Updated dependencies [675a569a9]
+ - @backstage/core@0.7.9
+ - @backstage/plugin-catalog-react@0.1.6
+ - @backstage/catalog-model@0.7.9
+
## 0.3.5
### Patch Changes
diff --git a/plugins/search/package.json b/plugins/search/package.json
index f503b9a78e..7593a2901d 100644
--- a/plugins/search/package.json
+++ b/plugins/search/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-search",
- "version": "0.3.5",
+ "version": "0.3.6",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -29,9 +29,9 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/core": "^0.7.8",
- "@backstage/catalog-model": "^0.7.3",
- "@backstage/plugin-catalog-react": "^0.1.2",
+ "@backstage/core": "^0.7.9",
+ "@backstage/catalog-model": "^0.7.9",
+ "@backstage/plugin-catalog-react": "^0.1.6",
"@backstage/search-common": "^0.1.1",
"@backstage/theme": "^0.2.7",
"@material-ui/core": "^4.11.0",
@@ -44,12 +44,12 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/dev-utils": "^0.1.13",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/dev-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.11",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
- "@testing-library/user-event": "^12.0.7",
+ "@testing-library/user-event": "^13.1.8",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32",
"cross-fetch": "^3.0.6",
diff --git a/plugins/sentry/CHANGELOG.md b/plugins/sentry/CHANGELOG.md
index 261972384a..b22b5539ef 100644
--- a/plugins/sentry/CHANGELOG.md
+++ b/plugins/sentry/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-sentry
+## 0.3.10
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- 675a569a9: chore: bump `react-use` dependency in all packages
+- Updated dependencies [062bbf90f]
+- Updated dependencies [10c008a3a]
+- Updated dependencies [889d89b6e]
+- Updated dependencies [16be1d093]
+- Updated dependencies [3f988cb63]
+- Updated dependencies [675a569a9]
+ - @backstage/core@0.7.9
+ - @backstage/plugin-catalog-react@0.1.6
+ - @backstage/catalog-model@0.7.9
+
## 0.3.9
### Patch Changes
diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json
index 6784debcf9..7da547dd94 100644
--- a/plugins/sentry/package.json
+++ b/plugins/sentry/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-sentry",
- "version": "0.3.9",
+ "version": "0.3.10",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,9 +31,9 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/catalog-model": "^0.7.3",
- "@backstage/core": "^0.7.8",
- "@backstage/plugin-catalog-react": "^0.1.1",
+ "@backstage/catalog-model": "^0.7.9",
+ "@backstage/core": "^0.7.9",
+ "@backstage/plugin-catalog-react": "^0.1.6",
"@backstage/theme": "^0.2.7",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -46,12 +46,12 @@
"timeago.js": "^4.0.2"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/dev-utils": "^0.1.13",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/dev-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.11",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
- "@testing-library/user-event": "^12.0.7",
+ "@testing-library/user-event": "^13.1.8",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32",
"@types/react": "^16.9",
diff --git a/plugins/shortcuts/CHANGELOG.md b/plugins/shortcuts/CHANGELOG.md
new file mode 100644
index 0000000000..bdc4b3adba
--- /dev/null
+++ b/plugins/shortcuts/CHANGELOG.md
@@ -0,0 +1,12 @@
+# @backstage/plugin-shortcuts
+
+## 0.1.2
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- Updated dependencies [062bbf90f]
+- Updated dependencies [889d89b6e]
+- Updated dependencies [3f988cb63]
+- Updated dependencies [675a569a9]
+ - @backstage/core@0.7.9
diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json
index f87fe0e683..aea2f8461e 100644
--- a/plugins/shortcuts/package.json
+++ b/plugins/shortcuts/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-shortcuts",
- "version": "0.1.1",
+ "version": "0.1.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -20,7 +20,7 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/core": "^0.7.8",
+ "@backstage/core": "^0.7.9",
"@backstage/theme": "^0.2.7",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -35,12 +35,12 @@
"zen-observable": "^0.8.15"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/dev-utils": "^0.1.13",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/dev-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.11",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
- "@testing-library/user-event": "^12.0.7",
+ "@testing-library/user-event": "^13.1.8",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32",
"cross-fetch": "^3.0.6",
diff --git a/plugins/sonarqube/CHANGELOG.md b/plugins/sonarqube/CHANGELOG.md
index 48b9292791..e457d2bdf9 100644
--- a/plugins/sonarqube/CHANGELOG.md
+++ b/plugins/sonarqube/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-sonarqube
+## 0.1.18
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- 675a569a9: chore: bump `react-use` dependency in all packages
+- Updated dependencies [062bbf90f]
+- Updated dependencies [10c008a3a]
+- Updated dependencies [889d89b6e]
+- Updated dependencies [16be1d093]
+- Updated dependencies [3f988cb63]
+- Updated dependencies [675a569a9]
+ - @backstage/core@0.7.9
+ - @backstage/plugin-catalog-react@0.1.6
+ - @backstage/catalog-model@0.7.9
+
## 0.1.17
### Patch Changes
diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json
index df5304d746..9e3d6bf03b 100644
--- a/plugins/sonarqube/package.json
+++ b/plugins/sonarqube/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-sonarqube",
- "version": "0.1.17",
+ "version": "0.1.18",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -32,9 +32,9 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/catalog-model": "^0.7.7",
- "@backstage/plugin-catalog-react": "^0.1.3",
- "@backstage/core": "^0.7.8",
+ "@backstage/catalog-model": "^0.7.9",
+ "@backstage/plugin-catalog-react": "^0.1.6",
+ "@backstage/core": "^0.7.9",
"@backstage/theme": "^0.2.7",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -47,12 +47,12 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/dev-utils": "^0.1.13",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/dev-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.11",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
- "@testing-library/user-event": "^12.0.7",
+ "@testing-library/user-event": "^13.1.8",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32",
"cross-fetch": "^3.0.6",
diff --git a/plugins/splunk-on-call/CHANGELOG.md b/plugins/splunk-on-call/CHANGELOG.md
index b3151c3e04..4f34ea3bcc 100644
--- a/plugins/splunk-on-call/CHANGELOG.md
+++ b/plugins/splunk-on-call/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-splunk-on-call
+## 0.2.1
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- 675a569a9: chore: bump `react-use` dependency in all packages
+- Updated dependencies [062bbf90f]
+- Updated dependencies [10c008a3a]
+- Updated dependencies [889d89b6e]
+- Updated dependencies [16be1d093]
+- Updated dependencies [3f988cb63]
+- Updated dependencies [675a569a9]
+ - @backstage/core@0.7.9
+ - @backstage/plugin-catalog-react@0.1.6
+ - @backstage/catalog-model@0.7.9
+
## 0.2.0
### Minor Changes
diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json
index 020fbc37cd..ebb6fdb42e 100644
--- a/plugins/splunk-on-call/package.json
+++ b/plugins/splunk-on-call/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-splunk-on-call",
- "version": "0.2.0",
+ "version": "0.2.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,9 +30,9 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/catalog-model": "^0.7.4",
- "@backstage/core": "^0.7.8",
- "@backstage/plugin-catalog-react": "^0.1.1",
+ "@backstage/catalog-model": "^0.7.9",
+ "@backstage/core": "^0.7.9",
+ "@backstage/plugin-catalog-react": "^0.1.6",
"@backstage/theme": "^0.2.7",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -45,12 +45,12 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/dev-utils": "^0.1.13",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/dev-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.11",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
- "@testing-library/user-event": "^12.0.7",
+ "@testing-library/user-event": "^13.1.8",
"@types/jest": "^26.0.7",
"@types/luxon": "^1.25.0",
"@types/node": "^14.14.32",
diff --git a/plugins/tech-radar/CHANGELOG.md b/plugins/tech-radar/CHANGELOG.md
index 9f0a5b87c3..64f255adb1 100644
--- a/plugins/tech-radar/CHANGELOG.md
+++ b/plugins/tech-radar/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-tech-radar
+## 0.3.11
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- 675a569a9: chore: bump `react-use` dependency in all packages
+- Updated dependencies [062bbf90f]
+- Updated dependencies [889d89b6e]
+- Updated dependencies [3f988cb63]
+- Updated dependencies [675a569a9]
+ - @backstage/core@0.7.9
+
## 0.3.10
### Patch Changes
diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json
index 5e33024f87..e65e3d27a7 100644
--- a/plugins/tech-radar/package.json
+++ b/plugins/tech-radar/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-tech-radar",
- "version": "0.3.10",
+ "version": "0.3.11",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,7 +30,7 @@
"start": "backstage-cli plugin:serve"
},
"dependencies": {
- "@backstage/core": "^0.7.8",
+ "@backstage/core": "^0.7.9",
"@backstage/theme": "^0.2.7",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -43,12 +43,12 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/dev-utils": "^0.1.13",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/dev-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.11",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
- "@testing-library/user-event": "^12.0.7",
+ "@testing-library/user-event": "^13.1.8",
"@types/color": "^3.0.1",
"@types/d3-force": "^2.1.1",
"@types/jest": "^26.0.7",
diff --git a/plugins/techdocs-backend/CHANGELOG.md b/plugins/techdocs-backend/CHANGELOG.md
index 59a116f653..4b348d49a4 100644
--- a/plugins/techdocs-backend/CHANGELOG.md
+++ b/plugins/techdocs-backend/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-techdocs-backend
+## 0.8.1
+
+### Patch Changes
+
+- Updated dependencies [22fd8ce2a]
+- Updated dependencies [10c008a3a]
+- Updated dependencies [f9fb4a205]
+- Updated dependencies [16be1d093]
+- Updated dependencies [e04f1ccfb]
+ - @backstage/backend-common@0.8.0
+ - @backstage/catalog-model@0.7.9
+ - @backstage/techdocs-common@0.6.1
+
## 0.8.0
### Minor Changes
diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json
index 1424381f30..a702f63622 100644
--- a/plugins/techdocs-backend/package.json
+++ b/plugins/techdocs-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-techdocs-backend",
- "version": "0.8.0",
+ "version": "0.8.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,11 +30,11 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.7.0",
- "@backstage/catalog-model": "^0.7.8",
+ "@backstage/backend-common": "^0.8.0",
+ "@backstage/catalog-model": "^0.7.9",
"@backstage/config": "^0.1.5",
"@backstage/errors": "^0.1.1",
- "@backstage/techdocs-common": "^0.6.0",
+ "@backstage/techdocs-common": "^0.6.1",
"@types/express": "^4.17.6",
"cross-fetch": "^3.0.6",
"dockerode": "^3.2.1",
@@ -45,7 +45,7 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
+ "@backstage/cli": "^0.6.11",
"@types/dockerode": "^3.2.1",
"supertest": "^6.1.3"
},
diff --git a/plugins/techdocs/CHANGELOG.md b/plugins/techdocs/CHANGELOG.md
index 69e988a433..8382ef9419 100644
--- a/plugins/techdocs/CHANGELOG.md
+++ b/plugins/techdocs/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-techdocs
+## 0.9.2
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- 675a569a9: chore: bump `react-use` dependency in all packages
+- Updated dependencies [062bbf90f]
+- Updated dependencies [10c008a3a]
+- Updated dependencies [889d89b6e]
+- Updated dependencies [16be1d093]
+- Updated dependencies [3f988cb63]
+- Updated dependencies [675a569a9]
+ - @backstage/core@0.7.9
+ - @backstage/integration-react@0.1.2
+ - @backstage/plugin-catalog-react@0.1.6
+ - @backstage/catalog-model@0.7.9
+
## 0.9.1
### Patch Changes
diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json
index 20fca364da..ce748f836d 100644
--- a/plugins/techdocs/package.json
+++ b/plugins/techdocs/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-techdocs",
- "version": "0.9.1",
+ "version": "0.9.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -32,11 +32,11 @@
},
"dependencies": {
"@backstage/config": "^0.1.5",
- "@backstage/catalog-model": "^0.7.8",
- "@backstage/core": "^0.7.8",
+ "@backstage/catalog-model": "^0.7.9",
+ "@backstage/core": "^0.7.9",
"@backstage/integration": "^0.5.2",
- "@backstage/integration-react": "^0.1.1",
- "@backstage/plugin-catalog-react": "^0.1.5",
+ "@backstage/integration-react": "^0.1.2",
+ "@backstage/plugin-catalog-react": "^0.1.6",
"@backstage/theme": "^0.2.7",
"@backstage/errors": "^0.1.1",
"@material-ui/core": "^4.11.0",
@@ -51,12 +51,12 @@
"sanitize-html": "^2.3.2"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/dev-utils": "^0.1.13",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/dev-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.11",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
- "@testing-library/user-event": "^12.0.7",
+ "@testing-library/user-event": "^13.1.8",
"@types/react": "^16.9",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32",
diff --git a/plugins/techdocs/src/reader/components/Reader.tsx b/plugins/techdocs/src/reader/components/Reader.tsx
index a67443e40f..7bcf182d56 100644
--- a/plugins/techdocs/src/reader/components/Reader.tsx
+++ b/plugins/techdocs/src/reader/components/Reader.tsx
@@ -89,12 +89,17 @@ export const Reader = ({ entityId, onReady }: Props) => {
useEffect(() => {
const updateSidebarPosition = () => {
if (!!shadowDomRef.current && !!sidebars) {
+ const mdTabs = shadowDomRef.current!.querySelector(
+ '.md-container > .md-tabs',
+ );
sidebars!.forEach(sidebar => {
const newTop = Math.max(
shadowDomRef.current!.getBoundingClientRect().top,
0,
);
- sidebar.style.top = `${newTop}px`;
+ sidebar.style.top = mdTabs
+ ? `${newTop + mdTabs.getBoundingClientRect().height}px`
+ : `${newTop}px`;
});
}
};
@@ -318,8 +323,11 @@ export const Reader = ({ entityId, onReady }: Props) => {
// set sidebar height so they don't initially render in wrong position
const docTopPosition = (dom as HTMLElement).getBoundingClientRect()
.top;
+ const mdTabs = dom.querySelector('.md-container > .md-tabs');
sideDivs!.forEach(sidebar => {
- sidebar.style.top = `${docTopPosition}px`;
+ sidebar.style.top = mdTabs
+ ? `${docTopPosition + mdTabs.getBoundingClientRect().height}px`
+ : `${docTopPosition}px`;
});
},
}),
diff --git a/plugins/techdocs/src/reader/transformers/rewriteDocLinks.test.ts b/plugins/techdocs/src/reader/transformers/rewriteDocLinks.test.ts
index 06da8a447c..ca85c64fbe 100644
--- a/plugins/techdocs/src/reader/transformers/rewriteDocLinks.test.ts
+++ b/plugins/techdocs/src/reader/transformers/rewriteDocLinks.test.ts
@@ -16,6 +16,7 @@
import { createTestShadowDom, getSample } from '../../test-utils';
import { rewriteDocLinks } from '../transformers';
+import { normalizeUrl } from './rewriteDocLinks';
describe('rewriteDocLinks', () => {
it('should not do anything', () => {
@@ -56,3 +57,17 @@ describe('rewriteDocLinks', () => {
]);
});
});
+
+describe('normalizeUrl', () => {
+ it.each([
+ ['http://example.org', 'http://example.org/'],
+ ['http://example.org/', 'http://example.org/'],
+ ['http://example.org/folder', 'http://example.org/folder/'],
+ ['http://example.org/folder/', 'http://example.org/folder/'],
+ ['http://example.org/folder#intro', 'http://example.org/folder/#intro'],
+ ['http://example.org/folder/#intro', 'http://example.org/folder/#intro'],
+ ['http://example.org/folder#', 'http://example.org/folder/#'],
+ ])('should handle %s', (url, expected) => {
+ expect(normalizeUrl(url)).toEqual(expected);
+ });
+});
diff --git a/plugins/techdocs/src/reader/transformers/rewriteDocLinks.ts b/plugins/techdocs/src/reader/transformers/rewriteDocLinks.ts
index 7b0c23c3e3..54e5537347 100644
--- a/plugins/techdocs/src/reader/transformers/rewriteDocLinks.ts
+++ b/plugins/techdocs/src/reader/transformers/rewriteDocLinks.ts
@@ -31,9 +31,7 @@ export const rewriteDocLinks = (): Transformer => {
if (elemAttribute.match(/^https?:\/\//i)) {
elem.setAttribute('target', '_blank');
}
- const normalizedWindowLocation = window.location.href.endsWith('/')
- ? window.location.href
- : `${window.location.href}/`;
+ const normalizedWindowLocation = normalizeUrl(window.location.href);
elem.setAttribute(
attributeName,
@@ -48,3 +46,14 @@ export const rewriteDocLinks = (): Transformer => {
return dom;
};
};
+
+/** Make sure that the input url always ends with a '/' */
+export function normalizeUrl(input: string): string {
+ const url = new URL(input);
+
+ if (!url.pathname.endsWith('/')) {
+ url.pathname += '/';
+ }
+
+ return url.toString();
+}
diff --git a/plugins/todo-backend/CHANGELOG.md b/plugins/todo-backend/CHANGELOG.md
index b42f631a98..ebe3c2003c 100644
--- a/plugins/todo-backend/CHANGELOG.md
+++ b/plugins/todo-backend/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-todo-backend
+## 0.1.5
+
+### Patch Changes
+
+- Updated dependencies [22fd8ce2a]
+- Updated dependencies [10c008a3a]
+- Updated dependencies [f9fb4a205]
+- Updated dependencies [16be1d093]
+ - @backstage/backend-common@0.8.0
+ - @backstage/catalog-model@0.7.9
+
## 0.1.4
### Patch Changes
diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json
index 1af9f9b40c..5225adb648 100644
--- a/plugins/todo-backend/package.json
+++ b/plugins/todo-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-todo-backend",
- "version": "0.1.4",
+ "version": "0.1.5",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -24,9 +24,9 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.7.0",
+ "@backstage/backend-common": "^0.8.0",
"@backstage/catalog-client": "^0.3.11",
- "@backstage/catalog-model": "^0.7.8",
+ "@backstage/catalog-model": "^0.7.9",
"@backstage/config": "^0.1.5",
"@backstage/errors": "^0.1.1",
"@backstage/integration": "^0.5.2",
@@ -39,7 +39,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
+ "@backstage/cli": "^0.6.11",
"@types/supertest": "^2.0.8",
"msw": "^0.21.2",
"supertest": "^6.1.3"
diff --git a/plugins/todo/CHANGELOG.md b/plugins/todo/CHANGELOG.md
new file mode 100644
index 0000000000..f3732c923e
--- /dev/null
+++ b/plugins/todo/CHANGELOG.md
@@ -0,0 +1,17 @@
+# @backstage/plugin-todo
+
+## 0.1.1
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- 675a569a9: chore: bump `react-use` dependency in all packages
+- Updated dependencies [062bbf90f]
+- Updated dependencies [10c008a3a]
+- Updated dependencies [889d89b6e]
+- Updated dependencies [16be1d093]
+- Updated dependencies [3f988cb63]
+- Updated dependencies [675a569a9]
+ - @backstage/core@0.7.9
+ - @backstage/plugin-catalog-react@0.1.6
+ - @backstage/catalog-model@0.7.9
diff --git a/plugins/todo/package.json b/plugins/todo/package.json
index b7564f7080..c9a9f4bb51 100644
--- a/plugins/todo/package.json
+++ b/plugins/todo/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-todo",
- "version": "0.1.0",
+ "version": "0.1.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -26,10 +26,10 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/catalog-model": "^0.7.3",
- "@backstage/core": "^0.7.8",
+ "@backstage/catalog-model": "^0.7.9",
+ "@backstage/core": "^0.7.9",
"@backstage/errors": "^0.1.1",
- "@backstage/plugin-catalog-react": "^0.1.1",
+ "@backstage/plugin-catalog-react": "^0.1.6",
"@backstage/theme": "^0.2.7",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -39,12 +39,12 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/dev-utils": "^0.1.13",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/dev-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.11",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
- "@testing-library/user-event": "^12.0.7",
+ "@testing-library/user-event": "^13.1.8",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32",
"msw": "^0.21.2",
diff --git a/plugins/user-settings/CHANGELOG.md b/plugins/user-settings/CHANGELOG.md
index f6f3046bef..5b1706e0c7 100644
--- a/plugins/user-settings/CHANGELOG.md
+++ b/plugins/user-settings/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-user-settings
+## 0.2.10
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- 675a569a9: chore: bump `react-use` dependency in all packages
+- Updated dependencies [062bbf90f]
+- Updated dependencies [889d89b6e]
+- Updated dependencies [3f988cb63]
+- Updated dependencies [675a569a9]
+ - @backstage/core@0.7.9
+
## 0.2.9
### Patch Changes
diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json
index 32e232cad4..f47f5b50af 100644
--- a/plugins/user-settings/package.json
+++ b/plugins/user-settings/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-user-settings",
- "version": "0.2.9",
+ "version": "0.2.10",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,7 +30,7 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/core": "^0.7.8",
+ "@backstage/core": "^0.7.9",
"@backstage/theme": "^0.2.7",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -41,12 +41,12 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/dev-utils": "^0.1.13",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/dev-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.11",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
- "@testing-library/user-event": "^12.0.7",
+ "@testing-library/user-event": "^13.1.8",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32",
"cross-fetch": "^3.0.6",
diff --git a/plugins/welcome/CHANGELOG.md b/plugins/welcome/CHANGELOG.md
index cf907b5b4f..53ffd59264 100644
--- a/plugins/welcome/CHANGELOG.md
+++ b/plugins/welcome/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-welcome
+## 0.2.8
+
+### Patch Changes
+
+- 062bbf90f: chore: bump `@testing-library/user-event` from 12.8.3 to 13.1.8
+- 675a569a9: chore: bump `react-use` dependency in all packages
+- Updated dependencies [062bbf90f]
+- Updated dependencies [889d89b6e]
+- Updated dependencies [3f988cb63]
+- Updated dependencies [675a569a9]
+ - @backstage/core@0.7.9
+
## 0.2.7
### Patch Changes
diff --git a/plugins/welcome/package.json b/plugins/welcome/package.json
index 72ec24bf71..df16ec7f4d 100644
--- a/plugins/welcome/package.json
+++ b/plugins/welcome/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-welcome",
- "version": "0.2.7",
+ "version": "0.2.8",
"main": "src/index.ts",
"types": "src/index.ts",
"private": false,
@@ -30,7 +30,7 @@
"start": "backstage-cli plugin:serve"
},
"dependencies": {
- "@backstage/core": "^0.7.8",
+ "@backstage/core": "^0.7.9",
"@backstage/theme": "^0.2.7",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -41,12 +41,12 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.6.10",
- "@backstage/dev-utils": "^0.1.13",
- "@backstage/test-utils": "^0.1.10",
+ "@backstage/cli": "^0.6.11",
+ "@backstage/dev-utils": "^0.1.14",
+ "@backstage/test-utils": "^0.1.11",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
- "@testing-library/user-event": "^12.0.7",
+ "@testing-library/user-event": "^13.1.8",
"@types/jest": "^26.0.7",
"@types/node": "^14.14.32",
"cross-fetch": "^3.0.6",
diff --git a/yarn.lock b/yarn.lock
index 437a9be678..9d9400fbbf 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1951,6 +1951,13 @@
dependencies:
"@date-io/core" "^1.3.13"
+"@date-io/luxon@1.x":
+ version "1.3.13"
+ resolved "https://registry.npmjs.org/@date-io/luxon/-/luxon-1.3.13.tgz#68f0134bb38ef486b2ed6df01981f814c633e28a"
+ integrity sha512-9wUrJCNSMZJeYAiH+dbb45oGpnHeFP7TOH/Lt26If47gjFCkjvyINzWx+K5AGsnlP0Qosxc7hkF1yLi6ecutxw==
+ dependencies:
+ "@date-io/core" "^1.3.13"
+
"@emotion/cache@^10.0.27":
version "10.0.29"
resolved "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz#87e7e64f412c060102d589fe7c6dc042e6f9d1e0"
@@ -3729,14 +3736,26 @@
react-transition-group "^4.0.0"
rifm "^0.7.0"
+"@material-ui/pickers@^3.3.10":
+ version "3.3.10"
+ resolved "https://registry.npmjs.org/@material-ui/pickers/-/pickers-3.3.10.tgz#f1b0f963348cc191645ef0bdeff7a67c6aa25485"
+ integrity sha512-hS4pxwn1ZGXVkmgD4tpFpaumUaAg2ZzbTrxltfC5yPw4BJV+mGkfnQOB4VpWEYZw2jv65Z0wLwDE/piQiPPZ3w==
+ dependencies:
+ "@babel/runtime" "^7.6.0"
+ "@date-io/core" "1.x"
+ "@types/styled-jsx" "^2.2.8"
+ clsx "^1.0.2"
+ react-transition-group "^4.0.0"
+ rifm "^0.7.0"
+
"@material-ui/styles@^4.10.0", "@material-ui/styles@^4.11.0", "@material-ui/styles@^4.11.3", "@material-ui/styles@^4.9.6":
- version "4.11.3"
- resolved "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.3.tgz#1b8d97775a4a643b53478c895e3f2a464e8916f2"
- integrity sha512-HzVzCG+PpgUGMUYEJ2rTEmQYeonGh41BYfILNFb/1ueqma+p1meSdu4RX6NjxYBMhf7k+jgfHFTTz+L1SXL/Zg==
+ version "4.11.4"
+ resolved "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.4.tgz#eb9dfccfcc2d208243d986457dff025497afa00d"
+ integrity sha512-KNTIZcnj/zprG5LW0Sao7zw+yG3O35pviHzejMdcSGCdWbiO8qzRgOYL8JAxAsWBKOKYwVZxXtHWaB5T2Kvxew==
dependencies:
"@babel/runtime" "^7.4.4"
"@emotion/hash" "^0.8.0"
- "@material-ui/types" "^5.1.0"
+ "@material-ui/types" "5.1.0"
"@material-ui/utils" "^4.11.2"
clsx "^1.0.4"
csstype "^2.5.2"
@@ -3761,7 +3780,7 @@
csstype "^2.5.2"
prop-types "^15.7.2"
-"@material-ui/types@^5.1.0":
+"@material-ui/types@5.1.0", "@material-ui/types@^5.1.0":
version "5.1.0"
resolved "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz#efa1c7a0b0eaa4c7c87ac0390445f0f88b0d88f2"
integrity sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==
@@ -5606,10 +5625,10 @@
"@babel/runtime" "^7.12.5"
"@testing-library/dom" "^7.28.1"
-"@testing-library/user-event@^12.0.7":
- version "12.8.3"
- resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-12.8.3.tgz#1aa3ed4b9f79340a1e1836bc7f57c501e838704a"
- integrity sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ==
+"@testing-library/user-event@^13.1.8":
+ version "13.1.8"
+ resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.1.8.tgz#9cbf342b88d837ee188f9f9f4df6d1beaaf179c2"
+ integrity sha512-M04HgOlJvxILf5xyrkJaEQfFOtcvhy3usLldQIEg9zgFIYQofSmFGVfFlS7BWowqlBGLrItwGMlPXCoBgoHSiw==
dependencies:
"@babel/runtime" "^7.12.5"
@@ -7440,7 +7459,7 @@ agentkeepalive@^4.1.3:
depd "^1.1.2"
humanize-ms "^1.2.1"
-aggregate-error@3.0.1, aggregate-error@^3.0.0:
+aggregate-error@3.0.1:
version "3.0.1"
resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0"
integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==
@@ -7448,6 +7467,14 @@ aggregate-error@3.0.1, aggregate-error@^3.0.0:
clean-stack "^2.0.0"
indent-string "^4.0.0"
+aggregate-error@^3.0.0, aggregate-error@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
+ integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
+ dependencies:
+ clean-stack "^2.0.0"
+ indent-string "^4.0.0"
+
airbnb-js-shims@^2.2.1:
version "2.2.1"
resolved "https://registry.npmjs.org/airbnb-js-shims/-/airbnb-js-shims-2.2.1.tgz#db481102d682b98ed1daa4c5baa697a05ce5c040"
@@ -8667,7 +8694,7 @@ base64-js@^1.0.2, base64-js@^1.3.0, base64-js@^1.3.1, base64-js@^1.5.1:
resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
-base64url@3.x.x, base64url@^3.0.1:
+base64url@3.x.x:
version "3.0.1"
resolved "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d"
integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==
@@ -10098,11 +10125,6 @@ compare-func@^2.0.0:
array-ify "^1.0.0"
dot-prop "^5.1.0"
-compare-versions@^3.6.0:
- version "3.6.0"
- resolved "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62"
- integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==
-
component-emitter@^1.2.0, component-emitter@^1.2.1, component-emitter@^1.3.0:
version "1.3.0"
resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
@@ -10138,21 +10160,21 @@ compression@^1.7.4:
safe-buffer "5.1.2"
vary "~1.1.2"
-compute-gcd@^1.2.0:
- version "1.2.0"
- resolved "https://registry.npmjs.org/compute-gcd/-/compute-gcd-1.2.0.tgz#fc1ede5b65001e950226502f46543863e4fea10e"
- integrity sha1-/B7eW2UAHpUCJlAvRlQ4Y+T+oQ4=
+compute-gcd@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/compute-gcd/-/compute-gcd-1.2.1.tgz#34d639f3825625e1357ce81f0e456a6249d8c77f"
+ integrity sha512-TwMbxBNz0l71+8Sc4czv13h4kEqnchV9igQZBi6QUaz09dnz13juGnnaWWJTRsP3brxOoxeB4SA2WELLw1hCtg==
dependencies:
validate.io-array "^1.0.3"
validate.io-function "^1.0.2"
validate.io-integer-array "^1.0.0"
-compute-lcm@^1.1.0:
- version "1.1.0"
- resolved "https://registry.npmjs.org/compute-lcm/-/compute-lcm-1.1.0.tgz#abd96d040b41b0a166f89944b5c8b7c511e21ad5"
- integrity sha1-q9ltBAtBsKFm+JlEtci3xRHiGtU=
+compute-lcm@^1.1.0, compute-lcm@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmjs.org/compute-lcm/-/compute-lcm-1.1.2.tgz#9107c66b9dca28cefb22b4ab4545caac4034af23"
+ integrity sha512-OFNPdQAXnQhDSKioX8/XYT6sdUlXwpeMjfd6ApxMJfyZ4GxmLR1xvMERctlYhlHwIiz6CSpBc2+qYKjHGZw4TQ==
dependencies:
- compute-gcd "^1.2.0"
+ compute-gcd "^1.2.1"
validate.io-array "^1.0.3"
validate.io-function "^1.0.2"
validate.io-integer-array "^1.0.0"
@@ -10611,13 +10633,20 @@ cross-env@^7.0.0:
dependencies:
cross-spawn "^7.0.1"
-cross-fetch@3.0.6, cross-fetch@^3.0.4, cross-fetch@^3.0.5, cross-fetch@^3.0.6:
+cross-fetch@3.0.6:
version "3.0.6"
resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c"
integrity sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ==
dependencies:
node-fetch "2.6.1"
+cross-fetch@^3.0.4, cross-fetch@^3.0.5, cross-fetch@^3.0.6:
+ version "3.1.4"
+ resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz#9723f3a3a247bf8b89039f3a380a9244e8fa2f39"
+ integrity sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==
+ dependencies:
+ node-fetch "2.6.1"
+
cross-spawn@7.0.1:
version "7.0.1"
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14"
@@ -11495,6 +11524,11 @@ delegates@^1.0.0:
resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+denque@^1.4.1:
+ version "1.5.0"
+ resolved "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz#773de0686ff2d8ec2ff92914316a47b73b1c73de"
+ integrity sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==
+
depd@^1.1.2, depd@~1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
@@ -13419,13 +13453,6 @@ find-up@^5.0.0:
locate-path "^6.0.0"
path-exists "^4.0.0"
-find-versions@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz#3c57e573bf97769b8cb8df16934b627915da4965"
- integrity sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==
- dependencies:
- semver-regex "^3.1.2"
-
find-yarn-workspace-root2@1.2.16:
version "1.2.16"
resolved "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz#60287009dd2f324f59646bdb4b7610a6b301c2a9"
@@ -13490,7 +13517,7 @@ for-own@^0.1.3:
foreach@^2.0.4:
version "2.0.5"
- resolved "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
+ resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k=
forever-agent@~0.6.1:
@@ -13822,6 +13849,13 @@ gcs-resumable-upload@^3.1.4:
pumpify "^2.0.0"
stream-events "^1.0.4"
+generate-function@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f"
+ integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==
+ dependencies:
+ is-property "^1.0.2"
+
generic-names@^2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872"
@@ -14483,9 +14517,11 @@ graphql-subscriptions@^1.0.0:
iterall "^1.2.1"
graphql-tag@^2.11.0:
- version "2.11.0"
- resolved "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.11.0.tgz#1deb53a01c46a7eb401d6cb59dec86fa1cccbffd"
- integrity sha512-VmsD5pJqWJnQZMUeRwrDhfgoyqcfwEkvtpANqcoUG8/tOLkwNgU9mzub/Mc78OJMhHjx7gfAMTxzdG43VGg3bA==
+ version "2.12.4"
+ resolved "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.4.tgz#d34066688a4f09e72d6f4663c74211e9b4b7c4bf"
+ integrity sha512-VV1U4O+9x99EkNpNmCUV5RZwq6MnK4+pGbRYWG+lA/m3uo7TSqJF81OkcOP148gFP6fzdl7JWYBrwWVTS9jXww==
+ dependencies:
+ tslib "^2.1.0"
graphql-tools@5.0.0:
version "5.0.0"
@@ -14802,9 +14838,9 @@ hoopy@^0.1.4:
integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==
hosted-git-info@^2.1.4:
- version "2.8.8"
- resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
- integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
+ version "2.8.9"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
+ integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
hosted-git-info@^3.0.6:
version "3.0.8"
@@ -15098,6 +15134,11 @@ humanize-duration@^3.25.1:
resolved "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.25.1.tgz#50e12bf4b3f515ec91106107ee981e8cfe955d6f"
integrity sha512-P+dRo48gpLgc2R9tMRgiDRNULPKCmqFYgguwqOO2C0fjO35TgdURDQDANSR1Nt92iHlbHGMxOTnsB8H8xnMa2Q==
+humanize-duration@^3.26.0:
+ version "3.26.0"
+ resolved "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.26.0.tgz#4d77f6b3d2fe0ca1ff14623ccc2b2f8b48ab1aaf"
+ integrity sha512-SddekX3p5ApvPY6bbAYppGKe874jP6iFZXYtrQToDV4R0j2UpTYPqwTFM2QpXpuw9DhS/eXTUnKYTF9TbXAJ6A==
+
humanize-ms@^1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed"
@@ -15105,21 +15146,10 @@ humanize-ms@^1.2.1:
dependencies:
ms "^2.0.0"
-husky@^4.2.3:
- version "4.3.8"
- resolved "https://registry.npmjs.org/husky/-/husky-4.3.8.tgz#31144060be963fd6850e5cc8f019a1dfe194296d"
- integrity sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow==
- dependencies:
- chalk "^4.0.0"
- ci-info "^2.0.0"
- compare-versions "^3.6.0"
- cosmiconfig "^7.0.0"
- find-versions "^4.0.0"
- opencollective-postinstall "^2.0.2"
- pkg-dir "^5.0.0"
- please-upgrade-node "^3.2.0"
- slash "^3.0.0"
- which-pm-runs "^1.0.0"
+husky@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/husky/-/husky-6.0.0.tgz#810f11869adf51604c32ea577edbc377d7f9319e"
+ integrity sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==
hyphenate-style-name@^1.0.2, hyphenate-style-name@^1.0.3:
version "1.0.3"
@@ -15920,6 +15950,11 @@ is-promise@^2.1.0, is-promise@^2.2.2:
resolved "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1"
integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==
+is-property@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
+ integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=
+
is-reference@^1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7"
@@ -16707,10 +16742,10 @@ jose@^1.27.1:
dependencies:
"@panva/asn1.js" "^1.0.0"
-jose@^2.0.2:
- version "2.0.3"
- resolved "https://registry.npmjs.org/jose/-/jose-2.0.3.tgz#9c931ab3e13e2d16a5b9e6183e60b2fc40a8e1b8"
- integrity sha512-L+RlDgjO0Tk+Ki6/5IXCSEnmJCV8iMFZoBuEgu2vPQJJ4zfG/k3CAqZUMKDYNRHIDyy0QidJpOvX0NgpsAqFlw==
+jose@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.npmjs.org/jose/-/jose-2.0.5.tgz#29746a18d9fff7dcf9d5d2a6f62cb0c7cd27abd3"
+ integrity sha512-BAiDNeDKTMgk4tvD0BbxJ8xHEHBZgpeRZ1zGPPsitSyMgjoMWiLGYAE7H7NpP5h0lPppQajQs871E8NHUrzVPA==
dependencies:
"@panva/asn1.js" "^1.0.0"
@@ -16870,7 +16905,7 @@ json-buffer@3.0.0:
resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=
-json-buffer@3.0.1:
+json-buffer@3.0.1, json-buffer@^3.0.1:
version "3.0.1"
resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
@@ -16886,9 +16921,9 @@ json-parse-even-better-errors@^2.3.0:
integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
json-pointer@^0.6.0:
- version "0.6.0"
- resolved "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.0.tgz#8e500550a6aac5464a473377da57aa6cc22828d7"
- integrity sha1-jlAFUKaqxUZKRzN32leqbMIoKNc=
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/json-pointer/-/json-pointer-0.6.1.tgz#3c6caa6ac139e2599f5a1659d39852154015054d"
+ integrity sha512-3OvjqKdCBvH41DLpV4iSt6v2XhZXV1bPB4OROuknvUXI7ZQNofieCPkmE26stEJ9zdQuvIxDHCuYhfgxFAAs+Q==
dependencies:
foreach "^2.0.4"
@@ -16908,14 +16943,14 @@ json-schema-merge-allof@^0.6.0:
json-schema-compare "^0.2.2"
lodash "^4.17.4"
-json-schema-merge-allof@^0.7.0:
- version "0.7.0"
- resolved "https://registry.npmjs.org/json-schema-merge-allof/-/json-schema-merge-allof-0.7.0.tgz#84d3e8c3e03d3060014286958eb8834fa9d76304"
- integrity sha512-kvsuSVnl1n5xnNEu5ed4o8r8ujSA4/IgRtHmpgfMfa7FOMIRAzN4F9qbuklouTn5J8bi83y6MQ11n+ERMMTXZg==
+json-schema-merge-allof@^0.8.1:
+ version "0.8.1"
+ resolved "https://registry.npmjs.org/json-schema-merge-allof/-/json-schema-merge-allof-0.8.1.tgz#ed2828cdd958616ff74f932830a26291789eaaf2"
+ integrity sha512-CTUKmIlPJbsWfzRRnOXz+0MjIqvnleIXwFTzz+t9T86HnYX/Rozria6ZVGLktAU9e+NygNljveP+yxqtQp/Q4w==
dependencies:
- compute-lcm "^1.1.0"
+ compute-lcm "^1.1.2"
json-schema-compare "^0.2.2"
- lodash "^4.17.4"
+ lodash "^4.17.20"
json-schema-traverse@^0.4.1:
version "0.4.1"
@@ -17222,6 +17257,14 @@ keytar@^5.4.0:
nan "2.14.1"
prebuild-install "5.3.3"
+keyv-memcache@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/keyv-memcache/-/keyv-memcache-1.2.5.tgz#9097af5c617dc740e7300ebfd4a2efb8917429e3"
+ integrity sha512-iG+GHlhXyV83gmlCtMFIqNYVvv0i0towAy42NvziUR7D+k9jp81fAq0lu66H4gooOnW+ojkdigRvRpL40j1f7w==
+ dependencies:
+ json-buffer "^3.0.1"
+ memjs "^1.3.0"
+
keyv@^3.0.0:
version "3.1.0"
resolved "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
@@ -17236,6 +17279,13 @@ keyv@^4.0.0:
dependencies:
json-buffer "3.0.1"
+keyv@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.3.tgz#4f3aa98de254803cafcd2896734108daa35e4254"
+ integrity sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==
+ dependencies:
+ json-buffer "3.0.1"
+
killable@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
@@ -17996,7 +18046,7 @@ lru-cache@2:
resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952"
integrity sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=
-lru-cache@^4.0.1:
+lru-cache@^4.0.1, lru-cache@^4.1.3:
version "4.1.5"
resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
@@ -18309,6 +18359,11 @@ media-typer@0.3.0:
resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
+memjs@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/memjs/-/memjs-1.3.0.tgz#b7959b4ff3770e4c785463fd147f1e4fafd47a24"
+ integrity sha512-y/V9a0auepA9Lgyr4QieK6K2FczjHucEdTpSS+hHVNmVEkYxruXhkHu8n6DSRQ4HXHEE3cc6Sf9f88WCJXGXsQ==
+
memoize-one@^5.1.1:
version "5.1.1"
resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0"
@@ -18426,9 +18481,9 @@ merge2@^1.2.3, merge2@^1.3.0:
integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==
merge@^2.1.0:
- version "2.1.0"
- resolved "https://registry.npmjs.org/merge/-/merge-2.1.0.tgz#91fff62458ba2eca378dd395fa85f1690bf87f60"
- integrity sha512-TcuhVDV+e6X457MQAm7xIb19rWhZuEDEho7RrwxMpQ/3GhD5sDlnP188gjQQuweXHy9igdke5oUtVOXX1X8Sxg==
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/merge/-/merge-2.1.1.tgz#59ef4bf7e0b3e879186436e8481c06a6c162ca98"
+ integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==
meros@^1.1.2:
version "1.1.4"
@@ -18668,7 +18723,6 @@ minipass-fetch@^1.3.0, minipass-fetch@^1.3.2:
resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.3.3.tgz#34c7cea038c817a8658461bf35174551dce17a0a"
integrity sha512-akCrLDWfbdAWkMLBxJEeWTdNsjML+dt5YgOI4gJ53vuO0vrmYQkUPxa6j6V65s9CcePIr2SSWqjT2EcrNseryQ==
dependencies:
- encoding "^0.1.12"
minipass "^3.1.0"
minipass-sized "^1.0.3"
minizlib "^2.0.0"
@@ -18993,6 +19047,20 @@ mv@~2:
ncp "~2.0.0"
rimraf "~2.4.0"
+mysql2@^2.2.5:
+ version "2.2.5"
+ resolved "https://registry.npmjs.org/mysql2/-/mysql2-2.2.5.tgz#72624ffb4816f80f96b9c97fedd8c00935f9f340"
+ integrity sha512-XRqPNxcZTpmFdXbJqb+/CtYVLCx14x1RTeNMD4954L331APu75IC74GDqnZMEt1kwaXy6TySo55rF2F3YJS78g==
+ dependencies:
+ denque "^1.4.1"
+ generate-function "^2.3.1"
+ iconv-lite "^0.6.2"
+ long "^4.0.0"
+ lru-cache "^6.0.0"
+ named-placeholders "^1.1.2"
+ seq-queue "^0.0.5"
+ sqlstring "^2.3.2"
+
mz@^2.7.0:
version "2.7.0"
resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
@@ -19002,6 +19070,13 @@ mz@^2.7.0:
object-assign "^4.0.1"
thenify-all "^1.0.0"
+named-placeholders@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz#ceb1fbff50b6b33492b5cf214ccf5e39cef3d0e8"
+ integrity sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==
+ dependencies:
+ lru-cache "^4.1.3"
+
nan@2.14.1, nan@^2.12.1, nan@^2.14.0:
version "2.14.1"
resolved "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01"
@@ -19746,10 +19821,10 @@ octokit-plugin-create-pull-request@^3.9.3:
dependencies:
"@octokit/types" "^6.8.2"
-oidc-token-hash@^5.0.0:
- version "5.0.0"
- resolved "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.0.tgz#acdfb1f4310f58e64d5d74a4e8671a426986e888"
- integrity sha512-8Yr4CZSv+Tn8ZkN3iN2i2w2G92mUKClp4z7EGUfdsERiYSbj7P4i/NHm72ft+aUdsiFx9UdIPSTwbyzQ6C4URg==
+oidc-token-hash@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.1.tgz#ae6beec3ec20f0fd885e5400d175191d6e2f10c6"
+ integrity sha512-EvoOtz6FIEBzE+9q253HsLCVRiK/0doEJ2HCvvqMQb3dHZrP3WlJKYtJ55CRTw4jmYomzH4wkPuCj/I3ZvpKxQ==
on-finished@~2.3.0:
version "2.3.0"
@@ -19811,24 +19886,18 @@ openapi-sampler@^1.0.0-beta.15:
dependencies:
json-pointer "^0.6.0"
-opencollective-postinstall@^2.0.2:
- version "2.0.2"
- resolved "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89"
- integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==
-
openid-client@^4.1.1, openid-client@^4.2.1:
- version "4.2.1"
- resolved "https://registry.npmjs.org/openid-client/-/openid-client-4.2.1.tgz#8200c0ab6a3b8e954727dfa790847dc5cb8999c2"
- integrity sha512-07eOcJeMH3ZHNvx5DVMZQmy3vZSTQqKSSunbtM1pXb+k5LBPi5hMum1vJCFReXlo4wuLEqZ/OgbsZvXPhbGRtA==
+ version "4.7.3"
+ resolved "https://registry.npmjs.org/openid-client/-/openid-client-4.7.3.tgz#ea4f6f9ff6203dfbbe3d9bb4415d5dce751b0a70"
+ integrity sha512-YLwZQLSjo3gdSVxw/G25ddoRp9oCpXkREZXssmenlejZQPsnTq+yQtFUcBmC7u3VVkx+gwqXZF7X0CtAAJrRRg==
dependencies:
- base64url "^3.0.1"
+ aggregate-error "^3.1.0"
got "^11.8.0"
- jose "^2.0.2"
+ jose "^2.0.5"
lru-cache "^6.0.0"
make-error "^1.3.6"
object-hash "^2.0.1"
- oidc-token-hash "^5.0.0"
- p-any "^3.0.0"
+ oidc-token-hash "^5.0.1"
opn@^5.5.0:
version "5.5.0"
@@ -19943,14 +20012,6 @@ p-all@^2.1.0:
dependencies:
p-map "^2.0.0"
-p-any@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmjs.org/p-any/-/p-any-3.0.0.tgz#79847aeed70b5d3a10ea625296c0c3d2e90a87b9"
- integrity sha512-5rqbqfsRWNb0sukt0awwgJMlaep+8jV45S15SKKB34z4UuzjcofIfnriCBhWjZP2jbVtjt9yRl7buB6RlKsu9w==
- dependencies:
- p-cancelable "^2.0.0"
- p-some "^5.0.0"
-
p-cancelable@^1.0.0:
version "1.1.0"
resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
@@ -20095,14 +20156,6 @@ p-retry@^3.0.1:
dependencies:
retry "^0.12.0"
-p-some@^5.0.0:
- version "5.0.0"
- resolved "https://registry.npmjs.org/p-some/-/p-some-5.0.0.tgz#8b730c74b4fe5169d7264a240ad010b6ebc686a4"
- integrity sha512-Js5XZxo6vHjB9NOYAzWDYAIyyiPvva0DWESAIWIK7uhSpGsyg5FwUPxipU/SOQx5x9EqhOh545d1jo6cVkitig==
- dependencies:
- aggregate-error "^3.0.0"
- p-cancelable "^2.0.0"
-
p-timeout@^3.1.0, p-timeout@^3.2.0:
version "3.2.0"
resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe"
@@ -20758,13 +20811,6 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0:
dependencies:
find-up "^4.0.0"
-pkg-dir@^5.0.0:
- version "5.0.0"
- resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760"
- integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==
- dependencies:
- find-up "^5.0.0"
-
pkg-up@3.1.0, pkg-up@^3.1.0:
version "3.1.0"
resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5"
@@ -23467,11 +23513,6 @@ semver-diff@^3.1.1:
dependencies:
semver "^6.3.0"
-semver-regex@^3.1.2:
- version "3.1.2"
- resolved "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.2.tgz#34b4c0d361eef262e07199dbef316d0f2ab11807"
- integrity sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA==
-
"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1:
version "5.7.1"
resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
@@ -23532,6 +23573,11 @@ sentence-case@^3.0.4:
tslib "^2.0.3"
upper-case-first "^2.0.2"
+seq-queue@^0.0.5:
+ version "0.0.5"
+ resolved "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e"
+ integrity sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4=
+
serialize-error@^8.0.1, serialize-error@^8.1.0:
version "8.1.0"
resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz#3a069970c712f78634942ddd50fbbc0eaebe2f67"
@@ -24137,6 +24183,11 @@ sqlite3@^5.0.0:
optionalDependencies:
node-gyp "3.x"
+sqlstring@^2.3.2:
+ version "2.3.2"
+ resolved "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.2.tgz#cdae7169389a1375b18e885f2e60b3e460809514"
+ integrity sha512-vF4ZbYdKS8OnoJAWBmMxCQDkiEBkGQYU7UZPtL8flbDRSNkhaXvRJ279ZtI6M+zDaQovVU4tuRgzK5fVhvFAhg==
+
ssh2-streams@~0.4.10:
version "0.4.10"
resolved "https://registry.npmjs.org/ssh2-streams/-/ssh2-streams-0.4.10.tgz#48ef7e8a0e39d8f2921c30521d56dacb31d23a34"