CI updates #1

This commit is contained in:
Darren Clarke 2023-06-20 07:49:52 +00:00 committed by GitHub
parent 59ae833099
commit 5a343c7eb9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 707 additions and 652 deletions

View file

@ -1,16 +1,62 @@
image: node:20-bullseye-slim image: node:20-bullseye-slim
include:
- /apps/leafcutter/.gitlab-ci.yml
- /apps/link/.gitlab-ci.yml
- /docker/zammad/.gitlab-ci.yml
stages: stages:
- helm-release
- build - build
- docker-build - docker-build
- docker-release - docker-release
build-all:
stage: build
script:
- npm install -g turbo
- npm ci
- turbo build
.docker-build:
image: registry.gitlab.com/guardianproject-ops/docker-alpine-git:latest
services:
- docker:dind
stage: docker-build
variables:
DOCKER_NS: ${CI_REGISTRY}/digiresilience/link/link-stack/$(basename "${PWD}")
DOCKER_TAG: ${CI_COMMIT_SHORT_SHA}
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- DOCKER_BUILDKIT=1 docker build --pull --no-cache -t ${DOCKER_NS}:${DOCKER_TAG} ${PWD}
- docker push
.docker-release:
image: registry.gitlab.com/guardianproject-ops/docker-alpine-git:latest
services:
- docker:dind
stage: docker-release
variables:
DOCKER_NS: ${CI_REGISTRY}/digiresilience/link/link-stack/$(basename "${PWD}")
DOCKER_TAG: ${CI_COMMIT_SHORT_SHA}
DOCKER_TAG_NEW: ${CI_COMMIT_REF_NAME}-$(shell jq -r '.version' package.json)
only:
- main
- develop
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker pull ${DOCKER_NS}:${DOCKER_TAG}
- docker tag ${DOCKER_NS}:${DOCKER_TAG} ${DOCKER_NS}:${DOCKER_TAG_NEW}
- docker push ${DOCKER_NS}:${DOCKER_TAG_NEW}
link-docker-build:
extends: .docker-build
before_script:
- cd apps/link
variables:
DOCKER_NS: ${CI_REGISTRY}/digiresilience/link/link-stack/link
link-docker-release:
extends: .docker-release
before_script:
- cd apps/link
variables:
DOCKER_NS: ${CI_REGISTRY}/digiresilience/link/link-stack/link
cache: cache:
key: ${CI_COMMIT_REF_SLUG} key: ${CI_COMMIT_REF_SLUG}
paths: paths:

View file

@ -1,9 +1,3 @@
leafcutter-build:
stage: build
script:
- npm install
- cd apps/leafcutter && npm run-script build
leafcutter-docker-build: leafcutter-docker-build:
image: registry.gitlab.com/guardianproject-ops/docker-alpine-git:latest image: registry.gitlab.com/guardianproject-ops/docker-alpine-git:latest
services: services:
@ -31,19 +25,3 @@ leafcutter-docker-release:
script: script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- cd apps/leafcutter && make docker/add-tag - cd apps/leafcutter && make docker/add-tag
leafcutter-helm-release:
image: debian:bullseye-slim
stage: helm-release
only:
- main
- develop
script:
- apt-get update
- apt-get install curl gnupg make jq -y
- curl https://baltocdn.com/helm/signing.asc | apt-key add -
- apt-get install apt-transport-https -y
- echo "deb https://baltocdn.com/helm/stable/debian/ all main" | tee /etc/apt/sources.list.d/helm-stable-debian.list
- apt-get update
- apt-get install helm
- cd apps/leafcutter && make helm/build-push

View file

@ -9,13 +9,16 @@ import { GettingStartedDialog } from "./GettingStartedDialog";
import { useAppContext } from "./AppProvider"; import { useAppContext } from "./AppProvider";
// import { Footer } from "./Footer"; // import { Footer } from "./Footer";
export const Layout: FC<PropsWithChildren> = ({ children }: any) => { type LayoutProps = PropsWithChildren<{
embedded?: boolean;
}>;
export const Layout: FC<LayoutProps> = ({
embedded = false,
children,
}: any) => {
const [cookies, setCookie] = useCookies(["cookieConsent"]); const [cookies, setCookie] = useCookies(["cookieConsent"]);
const consentGranted = cookies.cookieConsent === "true"; const consentGranted = cookies.cookieConsent === "true";
const {
publicRuntimeConfig: { embedded },
} = getConfig();
const { const {
colors: { colors: {
white, white,

View file

@ -0,0 +1,4 @@
import { GetServerSidePropsContext } from "next";
export const getEmbedded = (context: GetServerSidePropsContext) =>
context.req.headers["x-leafcutter-embedded"] === "true";

View file

@ -23,13 +23,13 @@
"@mui/icons-material": "^5", "@mui/icons-material": "^5",
"@mui/lab": "^5.0.0-alpha.134", "@mui/lab": "^5.0.0-alpha.134",
"@mui/material": "^5", "@mui/material": "^5",
"@mui/x-data-grid-pro": "^6.7.0", "@mui/x-data-grid-pro": "^6.8.0",
"@mui/x-date-pickers-pro": "^6.7.0", "@mui/x-date-pickers-pro": "^6.8.0",
"@opensearch-project/opensearch": "^2.0.0", "@opensearch-project/opensearch": "^2.0.0",
"date-fns": "^2.30.0", "date-fns": "^2.30.0",
"http-proxy-middleware": "^2.0.6", "http-proxy-middleware": "^2.0.6",
"material-ui-popup-state": "^5.0.9", "material-ui-popup-state": "^5.0.9",
"next": "13.4.5", "next": "13.4.6",
"next-auth": "^4.22.1", "next-auth": "^4.22.1",
"next-http-proxy-middleware": "^1.2.5", "next-http-proxy-middleware": "^1.2.5",
"nodemailer": "^6.9.3", "nodemailer": "^6.9.3",
@ -46,12 +46,12 @@
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.22.5", "@babel/core": "^7.22.5",
"@types/react": "18.2.12", "@types/react": "18.2.13",
"@types/uuid": "^9.0.2", "@types/uuid": "^9.0.2",
"babel-loader": "^9.1.2", "babel-loader": "^9.1.2",
"eslint": "^8.42.0", "eslint": "^8.43.0",
"eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb": "^19.0.4",
"eslint-config-next": "^13.4.5", "eslint-config-next": "^13.4.6",
"eslint-config-prettier": "^8.8.0", "eslint-config-prettier": "^8.8.0",
"eslint-plugin-import": "^2.27.5", "eslint-plugin-import": "^2.27.5",
"eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-jsx-a11y": "^6.7.1",

View file

@ -1,4 +1,4 @@
import { GetServerSideProps, GetServerSidePropsContext } from "next"; import { NextPage, GetServerSideProps, GetServerSidePropsContext } from "next";
import { useTranslate } from "react-polyglot"; import { useTranslate } from "react-polyglot";
import Head from "next/head"; import Head from "next/head";
import Image from "next/legacy/image"; import Image from "next/legacy/image";
@ -15,15 +15,21 @@ import Globe from "images/globe.png";
import Controls from "images/controls.png"; import Controls from "images/controls.png";
import CommunityBackground from "images/community-background.png"; import CommunityBackground from "images/community-background.png";
import Bicycle from "images/bicycle.png"; import Bicycle from "images/bicycle.png";
import { getEmbedded } from "lib/utils";
const About = () => { type AboutProps = {
embedded: boolean;
};
const About: NextPage<AboutProps> = ({ embedded }) => {
const t = useTranslate(); const t = useTranslate();
const { const {
colors: { white, leafcutterElectricBlue, cdrLinkOrange }, colors: { white, leafcutterElectricBlue, cdrLinkOrange },
typography: { h1, h4, p }, typography: { h1, h4, p },
} = useAppContext(); } = useAppContext();
return ( return (
<Layout> <Layout embedded={embedded}>
<Head> <Head>
<title>Digital Threat Dashboard Leafcutter</title> <title>Digital Threat Dashboard Leafcutter</title>
</Head> </Head>
@ -165,3 +171,7 @@ const About = () => {
}; };
export default About; export default About;
export const getServerSideProps: GetServerSideProps = async (
context: GetServerSidePropsContext
) => ({ props: { embedded: getEmbedded(context) } });

View file

@ -10,12 +10,14 @@ import { Layout } from "components/Layout";
import { useAppContext } from "components/AppProvider"; import { useAppContext } from "components/AppProvider";
import { PageHeader } from "components/PageHeader"; import { PageHeader } from "components/PageHeader";
import { VisualizationBuilder } from "components/VisualizationBuilder"; import { VisualizationBuilder } from "components/VisualizationBuilder";
import { getEmbedded } from "lib/utils";
type CreateProps = { type CreateProps = {
templates: any; templates: any;
embedded: boolean;
}; };
const Create: FC<CreateProps> = ({ templates }) => { const Create: FC<CreateProps> = ({ templates, embedded }) => {
const t = useTranslate(); const t = useTranslate();
const { const {
colors: { cdrLinkOrange }, colors: { cdrLinkOrange },
@ -34,7 +36,7 @@ const Create: FC<CreateProps> = ({ templates }) => {
}, [searchIntroComplete, router, setCookie]); }, [searchIntroComplete, router, setCookie]);
return ( return (
<Layout> <Layout embedded={embedded}>
<Head> <Head>
<title>Digital Threat Dashboard Leafcutter</title> <title>Digital Threat Dashboard Leafcutter</title>
</Head> </Head>
@ -76,5 +78,5 @@ export const getServerSideProps: GetServerSideProps = async (
) => { ) => {
const templates = await getTemplates(100); const templates = await getTemplates(100);
return { props: { templates } }; return { props: { templates, embedded: getEmbedded(context) } };
}; };

View file

@ -1,13 +1,19 @@
import Head from "next/head"; import Head from "next/head";
import { useTranslate } from "react-polyglot"; import { useTranslate } from "react-polyglot";
import { NextPage, GetServerSideProps, GetServerSidePropsContext } from "next";
import { Box, Grid } from "@mui/material"; import { Box, Grid } from "@mui/material";
import { Layout } from "components/Layout"; import { Layout } from "components/Layout";
import { PageHeader } from "components/PageHeader"; import { PageHeader } from "components/PageHeader";
import { Question } from "components/Question"; import { Question } from "components/Question";
import { useAppContext } from "components/AppProvider"; import { useAppContext } from "components/AppProvider";
import FaqHeader from "images/faq-header.svg"; import FaqHeader from "images/faq-header.svg";
import { getEmbedded } from "lib/utils";
const FAQ = () => { type FAQProps = {
embedded: boolean;
};
const FAQ: NextPage<FAQProps> = ({ embedded }) => {
const t = useTranslate(); const t = useTranslate();
const { const {
colors: { lavender }, colors: { lavender },
@ -64,7 +70,7 @@ const FAQ = () => {
]; ];
return ( return (
<Layout> <Layout embedded={embedded}>
<Head> <Head>
<title>Digital Threat Dashboard Leafcutter</title> <title>Digital Threat Dashboard Leafcutter</title>
</Head> </Head>
@ -104,3 +110,7 @@ const FAQ = () => {
}; };
export default FAQ; export default FAQ;
export const getServerSideProps: GetServerSideProps = async (
context: GetServerSidePropsContext
) => ({ props: { embedded: getEmbedded(context) } });

View file

@ -14,13 +14,16 @@ import { Welcome } from "components/Welcome";
import { WelcomeDialog } from "components/WelcomeDialog"; import { WelcomeDialog } from "components/WelcomeDialog";
import { VisualizationCard } from "components/VisualizationCard"; import { VisualizationCard } from "components/VisualizationCard";
import { useAppContext } from "components/AppProvider"; import { useAppContext } from "components/AppProvider";
import { getEmbedded } from "lib/utils";
type MyVisualizationsProps = { type MyVisualizationsProps = {
visualizations: any; visualizations: any;
embedded: boolean;
}; };
const MyVisualizations: NextPage<MyVisualizationsProps> = ({ const MyVisualizations: NextPage<MyVisualizationsProps> = ({
visualizations, visualizations,
embedded,
}) => { }) => {
const router = useRouter(); const router = useRouter();
const cookieName = "homeIntroComplete"; const cookieName = "homeIntroComplete";
@ -40,7 +43,7 @@ const MyVisualizations: NextPage<MyVisualizationsProps> = ({
}, [homeIntroComplete, router, setCookie]); }, [homeIntroComplete, router, setCookie]);
return ( return (
<Layout> <Layout embedded={embedded}>
<Head> <Head>
<title>Digital Threat Dashboard Leafcutter</title> <title>Digital Threat Dashboard Leafcutter</title>
</Head> </Head>
@ -116,5 +119,5 @@ export const getServerSideProps: GetServerSideProps = async (
session?.user?.email ?? "none", session?.user?.email ?? "none",
20 20
); );
return { props: { visualizations } }; return { props: { visualizations, embedded: getEmbedded(context) } };
}; };

View file

@ -1,6 +1,5 @@
import { FC } from "react"; import { FC } from "react";
/* eslint-disable no-underscore-dangle */ /* eslint-disable no-underscore-dangle */
import { GetServerSideProps, GetServerSidePropsContext } from "next";
// import { Client } from "@opensearch-project/opensearch"; // import { Client } from "@opensearch-project/opensearch";
import { RawDataViewer } from "components/RawDataViewer"; import { RawDataViewer } from "components/RawDataViewer";
import { VisualizationDetail } from "components/VisualizationDetail"; import { VisualizationDetail } from "components/VisualizationDetail";
@ -24,6 +23,7 @@ const Preview: FC<PreviewProps> = ({
); );
export default Preview; export default Preview;
/* /*
export const getServerSideProps: GetServerSideProps = async ( export const getServerSideProps: GetServerSideProps = async (
context: GetServerSidePropsContext context: GetServerSidePropsContext

View file

@ -7,12 +7,14 @@ import { getTrends } from "lib/opensearch";
import { PageHeader } from "components/PageHeader"; import { PageHeader } from "components/PageHeader";
import { VisualizationCard } from "components/VisualizationCard"; import { VisualizationCard } from "components/VisualizationCard";
import { useAppContext } from "components/AppProvider"; import { useAppContext } from "components/AppProvider";
import { getEmbedded } from "lib/utils";
type TrendsProps = { type TrendsProps = {
visualizations: any; visualizations: any;
embedded: boolean;
}; };
const Trends: NextPage<TrendsProps> = ({ visualizations }) => { const Trends: NextPage<TrendsProps> = ({ visualizations, embedded }) => {
const t = useTranslate(); const t = useTranslate();
const { const {
colors: { cdrLinkOrange }, colors: { cdrLinkOrange },
@ -20,7 +22,7 @@ const Trends: NextPage<TrendsProps> = ({ visualizations }) => {
} = useAppContext(); } = useAppContext();
return ( return (
<Layout> <Layout embedded={embedded}>
<Head> <Head>
<title>Digital Threat Dashboard Leafcutter</title> <title>Digital Threat Dashboard Leafcutter</title>
</Head> </Head>
@ -82,5 +84,5 @@ export const getServerSideProps: GetServerSideProps = async (
) => { ) => {
const visualizations = await getTrends(25); const visualizations = await getTrends(25);
return { props: { visualizations } }; return { props: { visualizations, embedded: getEmbedded(context) } };
}; };

View file

@ -4,13 +4,18 @@ import { Client } from "@opensearch-project/opensearch";
import Head from "next/head"; import Head from "next/head";
import { Layout } from "components/Layout"; import { Layout } from "components/Layout";
import { VisualizationDetail } from "components/VisualizationDetail"; import { VisualizationDetail } from "components/VisualizationDetail";
import { getEmbedded } from "lib/utils";
type VisualizationProps = { type VisualizationProps = {
visualization: any; visualization: any;
embedded: boolean;
}; };
const Visualization: NextPage<VisualizationProps> = ({ visualization }) => ( const Visualization: NextPage<VisualizationProps> = ({
<Layout> visualization,
embedded,
}) => (
<Layout embedded={embedded}>
<Head> <Head>
<title>Digital Threat Dashboard Leafcutter</title> <title>Digital Threat Dashboard Leafcutter</title>
</Head> </Head>
@ -53,5 +58,5 @@ export const getServerSideProps: GetServerSideProps = async (
}?embed=true`, }?embed=true`,
}; };
return { props: { visualization } }; return { props: { visualization, embedded: getEmbedded(context) } };
}; };

View file

@ -1,9 +1,3 @@
link-build:
stage: build
script:
- npm install
- cd apps/link && npm run-script build
link-docker-build: link-docker-build:
image: registry.gitlab.com/guardianproject-ops/docker-alpine-git:latest image: registry.gitlab.com/guardianproject-ops/docker-alpine-git:latest
services: services:

View file

@ -21,12 +21,12 @@
"@mui/icons-material": "^5", "@mui/icons-material": "^5",
"@mui/lab": "^5.0.0-alpha.134", "@mui/lab": "^5.0.0-alpha.134",
"@mui/material": "^5", "@mui/material": "^5",
"@mui/x-data-grid-pro": "^6.7.0", "@mui/x-data-grid-pro": "^6.8.0",
"@mui/x-date-pickers-pro": "^6.7.0", "@mui/x-date-pickers-pro": "^6.8.0",
"date-fns": "^2.30.0", "date-fns": "^2.30.0",
"graphql-request": "^6.1.0", "graphql-request": "^6.1.0",
"material-ui-popup-state": "^5.0.9", "material-ui-popup-state": "^5.0.9",
"next": "13.4.5", "next": "13.4.6",
"next-auth": "^4.22.1", "next-auth": "^4.22.1",
"react": "18.2.0", "react": "18.2.0",
"react-dom": "18.2.0", "react-dom": "18.2.0",
@ -37,12 +37,12 @@
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.22.5", "@babel/core": "^7.22.5",
"@types/react": "18.2.12", "@types/react": "18.2.13",
"@types/uuid": "^9.0.2", "@types/uuid": "^9.0.2",
"babel-loader": "^9.1.2", "babel-loader": "^9.1.2",
"eslint": "^8.42.0", "eslint": "^8.43.0",
"eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb": "^19.0.4",
"eslint-config-next": "^13.4.5", "eslint-config-next": "^13.4.6",
"eslint-config-prettier": "^8.8.0", "eslint-config-prettier": "^8.8.0",
"eslint-plugin-import": "^2.27.5", "eslint-plugin-import": "^2.27.5",
"eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-jsx-a11y": "^6.7.1",

View file

@ -29,7 +29,7 @@
"graphile-worker": "^0.13.0", "graphile-worker": "^0.13.0",
"hapi-auth-bearer-token": "^8.0.0", "hapi-auth-bearer-token": "^8.0.0",
"hapi-auth-jwt2": "^10.4.0", "hapi-auth-jwt2": "^10.4.0",
"hapi-swagger": "^16.0.1", "hapi-swagger": "^17.0.0",
"joi": "^17.9.2", "joi": "^17.9.2",
"jsonwebtoken": "^9.0.0", "jsonwebtoken": "^9.0.0",
"jwks-rsa": "^3.0.1", "jwks-rsa": "^3.0.1",
@ -41,7 +41,7 @@
"postgraphile": "4.13.0", "postgraphile": "4.13.0",
"postgraphile-plugin-connection-filter": "^2.3.0", "postgraphile-plugin-connection-filter": "^2.3.0",
"remeda": "^1.19.0", "remeda": "^1.19.0",
"twilio": "^4.11.2", "twilio": "^4.12.0",
"typeorm": "^0.3.16" "typeorm": "^0.3.16"
}, },
"devDependencies": { "devDependencies": {

View file

@ -0,0 +1,27 @@
metamigo-docker-build:
image: registry.gitlab.com/guardianproject-ops/docker-alpine-git:latest
services:
- docker:dind
stage: docker-build
variables:
DOCKER_NS: ${CI_REGISTRY}/digiresilience/link/link-stack/metamigo
DOCKER_TAG: ${CI_COMMIT_SHORT_SHA}
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- cd apps/metamigo-cli && make docker/build-fresh-push
metamigo-docker-release:
image: registry.gitlab.com/guardianproject-ops/docker-alpine-git:latest
services:
- docker:dind
stage: docker-release
variables:
DOCKER_NS: ${CI_REGISTRY}/digiresilience/link/link-stack/metamigo
DOCKER_TAG: ${CI_COMMIT_SHORT_SHA}
DOCKER_TAG_NEW: ${CI_COMMIT_REF_NAME}
only:
- main
- develop
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- cd apps/metamigo-cli && make docker/add-tag

View file

@ -0,0 +1,40 @@
PACKAGE_NAME ?= $(shell jq -r '.name' package.json)
PACKAGE_VERSION?= $(shell jq -r '.version' package.json)
BUILD_DATE ?=$(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
DOCKER_ARGS ?=
DOCKER_NS ?= registry.gitlab.com/digiresilience/link/link-stack/metamigo
DOCKER_TAG ?= test
DOCKER_BUILD := docker build ${DOCKER_ARGS} --build-arg BUILD_DATE=${BUILD_DATE}
DOCKER_BUILD_FRESH := ${DOCKER_BUILD} --pull --no-cache
DOCKER_BUILD_ARGS := --build-arg VCS_REF=${CI_COMMIT_SHORT_SHA}
DOCKER_PUSH := docker push
DOCKER_BUILD_TAG := ${DOCKER_NS}:${DOCKER_TAG}
.PHONY: .npmrc
.EXPORT_ALL_VARIABLES:
.npmrc:
ifdef CI_JOB_TOKEN
echo '@guardianproject-ops:registry=https://gitlab.com/api/v4/packages/npm/' > .npmrc
echo '@digiresilience:registry=https://gitlab.com/api/v4/packages/npm/' >> .npmrc
echo '//gitlab.com/api/v4/packages/npm/:_authToken=${CI_JOB_TOKEN}' >> .npmrc
echo '//gitlab.com/api/v4/projects/:_authToken=${CI_JOB_TOKEN}' >> .npmrc
echo '//gitlab.com/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=${CI_JOB_TOKEN}' >> .npmrc
endif
docker/build: .npmrc
DOCKER_BUILDKIT=1 ${DOCKER_BUILD} ${DOCKER_BUILD_ARGS} -t ${DOCKER_BUILD_TAG} ${PWD}
docker/build-fresh: .npmrc
DOCKER_BUILDKIT=1 ${DOCKER_BUILD_FRESH} ${DOCKER_BUILD_ARGS} -t ${DOCKER_BUILD_TAG} ${PWD}
docker/add-tag:
docker pull ${DOCKER_NS}:${DOCKER_TAG}
docker tag ${DOCKER_NS}:${DOCKER_TAG} ${DOCKER_NS}:${DOCKER_TAG_NEW}
docker push ${DOCKER_NS}:${DOCKER_TAG_NEW}
docker/push:
${DOCKER_PUSH} ${DOCKER_BUILD_TAG}
docker/build-push: docker/build docker/push
docker/build-fresh-push: docker/build-fresh docker/push

View file

@ -15,7 +15,7 @@
"@digiresilience/metamigo-db": "*", "@digiresilience/metamigo-db": "*",
"@digiresilience/metamigo-api": "*", "@digiresilience/metamigo-api": "*",
"@digiresilience/metamigo-worker": "*", "@digiresilience/metamigo-worker": "*",
"commander": "^10.0.1", "commander": "^11.0.0",
"graphile-migrate": "^1.4.1", "graphile-migrate": "^1.4.1",
"graphile-worker": "^0.13.0", "graphile-worker": "^0.13.0",
"node-jose": "^2.2.0", "node-jose": "^2.2.0",

View file

@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
set -e set -e
echo "starting leafcutter" echo "starting metamigo-frontend"
exec dumb-init npm run start exec dumb-init npm run start

View file

@ -14,15 +14,15 @@
"http-proxy-middleware": "^2.0.6", "http-proxy-middleware": "^2.0.6",
"jsonwebtoken": "^9.0.0", "jsonwebtoken": "^9.0.0",
"jwks-rsa": "^3.0.1", "jwks-rsa": "^3.0.1",
"next": "13.4.5", "next": "13.4.6",
"next-auth": "4.22.1", "next-auth": "4.22.1",
"ra-data-graphql": "^4.11.0", "ra-data-graphql": "^4.11.3",
"ra-i18n-polyglot": "^4.11.2", "ra-i18n-polyglot": "^4.11.3",
"ra-input-rich-text": "^4.11.2", "ra-input-rich-text": "^4.11.3",
"ra-language-english": "^4.11.2", "ra-language-english": "^4.11.3",
"ra-postgraphile": "^6.1.1", "ra-postgraphile": "^6.1.1",
"react": "18.2.0", "react": "18.2.0",
"react-admin": "^4.11.2", "react-admin": "^4.11.3",
"react-digit-input": "^2.1.0", "react-digit-input": "^2.1.0",
"react-dom": "18.2.0", "react-dom": "18.2.0",
"react-qr-code": "^2.0.11", "react-qr-code": "^2.0.11",
@ -41,9 +41,9 @@
"fmt": "prettier --ignore-path .eslintignore \"**/*.{js,jsx,ts,tsx,graphql,md}\" --write" "fmt": "prettier --ignore-path .eslintignore \"**/*.{js,jsx,ts,tsx,graphql,md}\" --write"
}, },
"devDependencies": { "devDependencies": {
"@next/eslint-plugin-next": "^13.4.5", "@next/eslint-plugin-next": "^13.4.6",
"@types/hapi__wreck": "17.0.1", "@types/hapi__wreck": "17.0.1",
"@types/react": "18.2.12", "@types/react": "18.2.13",
"@types/react-mic": "12.4.3", "@types/react-mic": "12.4.3",
"babel-preset-link": "*", "babel-preset-link": "*",
"eslint-config-link": "*", "eslint-config-link": "*",

View file

@ -10,7 +10,7 @@
"remeda": "^1.19.0", "remeda": "^1.19.0",
"html-to-text": "^9.0.5", "html-to-text": "^9.0.5",
"node-fetch": "^3", "node-fetch": "^3",
"twilio": "^4.11.2", "twilio": "^4.12.0",
"@digiresilience/montar": "*", "@digiresilience/montar": "*",
"@digiresilience/metamigo-common": "*", "@digiresilience/metamigo-common": "*",
"@digiresilience/metamigo-config": "*", "@digiresilience/metamigo-config": "*",
@ -22,7 +22,7 @@
"@babel/preset-typescript": "7.22.5", "@babel/preset-typescript": "7.22.5",
"@types/fluent-ffmpeg": "^2.1.21", "@types/fluent-ffmpeg": "^2.1.21",
"@types/jest": "^29.5.2", "@types/jest": "^29.5.2",
"eslint": "^8.42.0", "eslint": "^8.43.0",
"jest": "^29.5.0", "jest": "^29.5.0",
"jest-circus": "^29.5.0", "jest-circus": "^29.5.0",
"jest-junit": "^16.0.0", "jest-junit": "^16.0.0",

1053
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -15,6 +15,6 @@
}, },
"peerDependencies": {}, "peerDependencies": {},
"devDependencies": { "devDependencies": {
"eslint": "^8.42.0" "eslint": "^8.43.0"
} }
} }

View file

@ -9,15 +9,15 @@
"fmt": "prettier \"profile/**/*.js\" --write" "fmt": "prettier \"profile/**/*.js\" --write"
}, },
"dependencies": { "dependencies": {
"@rushstack/eslint-patch": "^1.3.1", "@rushstack/eslint-patch": "^1.3.2",
"@typescript-eslint/eslint-plugin": "^5.59.11", "@typescript-eslint/eslint-plugin": "^5.60.0",
"@typescript-eslint/parser": "^5.59.11", "@typescript-eslint/parser": "^5.60.0",
"eslint-config-prettier": "^8.8.0", "eslint-config-prettier": "^8.8.0",
"eslint-config-xo-space": "^0.34.0", "eslint-config-xo-space": "^0.34.0",
"eslint-plugin-cypress": "^2.13.3", "eslint-plugin-cypress": "^2.13.3",
"eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-eslint-comments": "^3.2.0",
"eslint-plugin-import": "^2.27.5", "eslint-plugin-import": "^2.27.5",
"eslint-plugin-jest": "^27.2.1", "eslint-plugin-jest": "^27.2.2",
"eslint-plugin-no-use-extend-native": "^0.5.0", "eslint-plugin-no-use-extend-native": "^0.5.0",
"eslint-plugin-promise": "^6.1.1", "eslint-plugin-promise": "^6.1.1",
"eslint-plugin-unicorn": "47.0.0", "eslint-plugin-unicorn": "47.0.0",
@ -28,7 +28,7 @@
"typescript": "^4.9.5" "typescript": "^4.9.5"
}, },
"devDependencies": { "devDependencies": {
"eslint": "^8.42.0", "eslint": "^8.43.0",
"jest": "^29.5.0", "jest": "^29.5.0",
"typescript": "^5.1.3" "typescript": "^5.1.3"
} }

View file

@ -46,7 +46,7 @@
"@types/hapi__vision": "^5.5.4", "@types/hapi__vision": "^5.5.4",
"@types/hapipal__schmervice": "^2.0.3", "@types/hapipal__schmervice": "^2.0.3",
"chalk": "^5.2.0", "chalk": "^5.2.0",
"commander": "^10.0.1", "commander": "^11.0.0",
"convict": "^6.2.4", "convict": "^6.2.4",
"decamelcase-keys": "^1.1.1", "decamelcase-keys": "^1.1.1",
"figlet": "^1.6.0", "figlet": "^1.6.0",

View file

@ -13,7 +13,7 @@
"@babel/core": "7.22.5", "@babel/core": "7.22.5",
"@babel/preset-env": "7.22.5", "@babel/preset-env": "7.22.5",
"@babel/preset-typescript": "7.22.5", "@babel/preset-typescript": "7.22.5",
"eslint": "^8.42.0", "eslint": "^8.43.0",
"pino-pretty": "^10.0.0", "pino-pretty": "^10.0.0",
"prettier": "^2.8.8", "prettier": "^2.8.8",
"ts-node": "^10.9.1", "ts-node": "^10.9.1",

View file

@ -20,7 +20,7 @@
"@babel/preset-env": "7.22.5", "@babel/preset-env": "7.22.5",
"@babel/preset-typescript": "7.22.5", "@babel/preset-typescript": "7.22.5",
"@types/jest": "^29.5.2", "@types/jest": "^29.5.2",
"eslint": "^8.42.0", "eslint": "^8.43.0",
"jest": "^29.5.0", "jest": "^29.5.0",
"jest-junit": "^16.0.0", "jest-junit": "^16.0.0",
"pino-pretty": "^10.0.0", "pino-pretty": "^10.0.0",