Update deps and Zammad version (6.4.1)

This commit is contained in:
Darren Clarke 2025-01-15 14:15:02 +01:00
parent 07ee819520
commit 9e5ea2fc41
40 changed files with 973 additions and 849 deletions

View file

@ -1,6 +1,6 @@
{
"name": "@link-stack/bridge-frontend",
"version": "2.3.4",
"version": "2.4.0b1",
"type": "module",
"scripts": {
"dev": "next dev",
@ -17,10 +17,10 @@
"@mui/icons-material": "^6",
"@mui/material": "^6",
"@mui/material-nextjs": "^6",
"@mui/x-license": "^7.23.2",
"@mui/x-license": "^7.23.6",
"@link-stack/bridge-common": "*",
"@link-stack/bridge-ui": "*",
"next": "15.1.0",
"next": "15.1.4",
"next-auth": "^4.24.11",
"react": "19.0.0",
"react-dom": "19.0.0",

View file

@ -1,6 +1,6 @@
{
"name": "@link-stack/bridge-migrations",
"version": "2.3.4",
"version": "2.4.0b1",
"type": "module",
"scripts": {
"migrate:up:all": "tsx migrate.ts up:all",

View file

@ -1,6 +1,6 @@
{
"name": "@link-stack/bridge-whatsapp",
"version": "2.3.4",
"version": "2.4.0b1",
"main": "build/main/index.js",
"author": "Darren Clarke <darren@redaranj.com>",
"license": "AGPL-3.0-or-later",
@ -11,16 +11,16 @@
"@hapipal/toys": "^4.0.0",
"@whiskeysockets/baileys": "^6.7.9",
"hapi-pino": "^12.1.0",
"link-preview-js": "^3.0.12"
"link-preview-js": "^3.0.13"
},
"devDependencies": {
"@link-stack/eslint-config": "*",
"@link-stack/jest-config": "*",
"@link-stack/typescript-config": "*",
"@types/node": "*",
"dotenv-cli": "^7.4.4",
"dotenv-cli": "^8.0.0",
"tsx": "^4.19.2",
"typescript": "^5.7.2"
"typescript": "^5.7.3"
},
"scripts": {
"build": "tsc -p tsconfig.json",

View file

@ -1,6 +1,6 @@
{
"name": "@link-stack/bridge-worker",
"version": "2.3.4",
"version": "2.4.0b1",
"type": "module",
"main": "build/main/index.js",
"author": "Darren Clarke <darren@redaranj.com>",
@ -16,14 +16,14 @@
"@link-stack/signal-api": "*",
"fluent-ffmpeg": "^2.1.3",
"graphile-worker": "^0.16.6",
"remeda": "^2.17.4",
"twilio": "^5.4.0"
"remeda": "^2.19.1",
"twilio": "^5.4.2"
},
"devDependencies": {
"@types/fluent-ffmpeg": "^2.1.27",
"dotenv-cli": "^7.4.4",
"dotenv-cli": "^8.0.0",
"@link-stack/eslint-config": "*",
"@link-stack/typescript-config": "*",
"typescript": "^5.7.2"
"typescript": "^5.7.3"
}
}

View file

@ -22,9 +22,9 @@ const getVisualization = async (visualizationID: string) => {
);
const hit = hits[0];
const visualization = {
id: hit._id.split(":")[1],
title: hit._source.visualization.title,
description: hit._source.visualization.description,
id: hit?._id.split(":")[1],
title: hit?._source?.visualization.title,
description: hit?._source?.visualization.description,
url: `/app/visualize?security_tenant=global#/edit/${
hit._id.split(":")[1]
}?embed=true`,

View file

@ -10,7 +10,8 @@ const userMetadataIndexName = "user_metadata";
const baseURL = `https://${process.env.OPENSEARCH_USERNAME}:${process.env.OPENSEARCH_PASSWORD}@${process.env.OPENSEARCH_URL}`;
const createClient = () => new Client({
const createClient = () =>
new Client({
node: baseURL,
auth: {
username: process.env.OPENSEARCH_USERNAME!,
@ -19,9 +20,10 @@ const createClient = () => new Client({
ssl: {
rejectUnauthorized: false,
},
});
});
const createUserClient = (username: string, password: string) => new Client({
const createUserClient = (username: string, password: string) =>
new Client({
node: baseURL,
auth: {
username,
@ -30,7 +32,7 @@ const createUserClient = (username: string, password: string) => new Client({
ssl: {
rejectUnauthorized: false,
},
});
});
export const checkAuth = async (username: string, password: string) => {
const client = createUserClient(username, password);
@ -115,7 +117,7 @@ export const getUserMetadata = async (username: string) => {
await client.create({
id: username,
index: userMetadataIndexName,
body: { username, savedSearches: [] }
body: { username, savedSearches: [] },
});
res = await client.get({
@ -132,7 +134,7 @@ export const saveUserMetadata = async (username: string, metadata: any) => {
await client.update({
id: username,
index: userMetadataIndexName,
body: { doc: { username, ...metadata } }
body: { doc: { username, ...metadata } },
});
};
@ -181,7 +183,7 @@ const getIndexPattern: any = async (index: string) => {
sort: ["updated_at:desc"],
});
if (res.body.hits.total.value === 0) {
if (res?.body?.hits?.total?.valueOf() === 0) {
// eslint-disable-next-line no-use-before-define
return createCurrentUserIndexPattern(index);
}
@ -226,7 +228,7 @@ interface createUserVisualizationProps {
}
export const createUserVisualization = async (
props: createUserVisualizationProps
props: createUserVisualizationProps,
) => {
const { email, query, visualizationID, title, description } = props;
const userIndex = await getCurrentUserIndex(email);
@ -279,7 +281,7 @@ interface updateVisualizationProps {
}
export const updateUserVisualization = async (
props: updateVisualizationProps
props: updateVisualizationProps,
) => {
const { email, id, query, title, description } = props;
const userIndex = await getCurrentUserIndex(email);
@ -469,10 +471,18 @@ export const performQuery = async (searchQuery: any, limit: number) => {
const results = hits.map((hit: any) => ({
...hit._source,
id: hit._id,
incident: Array.isArray(hit._source.incident) ? hit._source.incident.join(", ") : hit._source.incident,
technology: Array.isArray(hit._source.technology) ? hit._source.technology.join(", ") : hit._source.technology,
targeted_group: Array.isArray(hit._source.targeted_group) ? hit._source.targeted_group.join(", ") : hit._source.targeted_group,
country: Array.isArray(hit._source.country) ? hit._source.country.join(", ") : hit._source.country,
incident: Array.isArray(hit._source.incident)
? hit._source.incident.join(", ")
: hit._source.incident,
technology: Array.isArray(hit._source.technology)
? hit._source.technology.join(", ")
: hit._source.technology,
targeted_group: Array.isArray(hit._source.targeted_group)
? hit._source.targeted_group.join(", ")
: hit._source.targeted_group,
country: Array.isArray(hit._source.country)
? hit._source.country.join(", ")
: hit._source.country,
}));
return results;
@ -570,7 +580,6 @@ export const getTemplates = async (limit: number) => {
},
};
const rawResponse = await client.search({
index: globalIndex,
size: limit,

View file

@ -1,6 +1,6 @@
{
"name": "@link-stack/leafcutter",
"version": "2.3.4",
"version": "2.4.0b1",
"scripts": {
"dev": "next dev -p 3001",
"login": "aws sso login --sso-session cdr",
@ -22,12 +22,12 @@
"@mui/icons-material": "^6",
"@mui/material": "^6",
"@mui/material-nextjs": "^6",
"@mui/x-date-pickers-pro": "^7.23.2",
"@opensearch-project/opensearch": "^2.13.0",
"@mui/x-date-pickers-pro": "^7.23.6",
"@opensearch-project/opensearch": "^3.1.0",
"date-fns": "^4.1.0",
"http-proxy-middleware": "^3.0.3",
"material-ui-popup-state": "^5.3.1",
"next": "15.1.0",
"material-ui-popup-state": "^5.3.3",
"next": "15.1.4",
"next-auth": "^4.24.11",
"react": "19.0.0",
"react-cookie": "^7.2.2",
@ -36,14 +36,14 @@
"react-iframe": "^1.8.5",
"react-polyglot": "^0.7.2",
"sharp": "^0.33.5",
"uuid": "^11.0.3"
"uuid": "^11.0.5"
},
"devDependencies": {
"@types/node": "^22.10.2",
"@types/react": "19.0.1",
"@types/node": "^22.10.6",
"@types/react": "19.0.7",
"@types/uuid": "^10.0.0",
"@link-stack/eslint-config": "*",
"@link-stack/typescript-config": "*",
"typescript": "5.7.2"
"typescript": "5.7.3"
}
}

View file

@ -36,6 +36,9 @@ const fetchUser = async (email: string) => {
const getUserRoles = async (email: string) => {
try {
const user = await fetchUser(email);
if (!user) {
return [];
}
const allRoles = await fetchRoles();
const roles = user.role_ids.map((roleID: number) => {
const role = allRoles[roleID];

View file

@ -14,9 +14,6 @@ const rewriteURL = (
const destinationURL = `${destinationBaseURL}/${path}`;
console.log(`Rewriting ${request.url} to ${destinationURL}`);
const requestHeaders = new Headers(request.headers);
for (const [key, value] of requestHeaders.entries()) {
console.log(`${key}: ${value}`);
}
requestHeaders.delete("x-forwarded-user");
requestHeaders.delete("x-forwarded-roles");
@ -46,6 +43,7 @@ const checkRewrites = async (request: NextRequestWithAuth) => {
"/graphql",
"/cable",
];
const isSetupMode = process.env.SETUP_MODE === "true";
const { token } = request.nextauth;
const email = token?.email?.toLowerCase() ?? "unknown";
const roles = (token?.roles as string[]) ?? [];
@ -66,7 +64,7 @@ const checkRewrites = async (request: NextRequestWithAuth) => {
} else if (zammadPaths.some((p) => request.nextUrl.pathname.startsWith(p))) {
return rewriteURL(request, linkBaseURL, zammadURL, headers);
} else if (request.nextUrl.pathname.startsWith("/api/v1")) {
if (email && email !== "unknown") {
if ((email && email !== "unknown") || isSetupMode) {
return NextResponse.next();
} else {
return NextResponse.json({ error: "Unauthorized" }, { status: 401 });

View file

@ -1,6 +1,6 @@
{
"name": "@link-stack/link",
"version": "2.3.4",
"version": "2.4.0b1",
"type": "module",
"scripts": {
"dev": "next dev",
@ -24,14 +24,14 @@
"@mui/icons-material": "^6",
"@mui/material": "^6",
"@mui/material-nextjs": "^6",
"@mui/x-data-grid-pro": "^7.23.2",
"@mui/x-date-pickers": "^7.23.2",
"@mui/x-date-pickers-pro": "^7.23.2",
"@mui/x-license": "^7.23.2",
"@mui/x-data-grid-pro": "^7.23.6",
"@mui/x-date-pickers": "^7.23.6",
"@mui/x-date-pickers-pro": "^7.23.6",
"@mui/x-license": "^7.23.6",
"date-fns": "^4.1.0",
"graphql-request": "^7.1.2",
"mui-chips-input": "^4.0.1",
"next": "15.1.0",
"next": "15.1.4",
"next-auth": "^4.24.11",
"react": "19.0.0",
"react-cookie": "^7.2.2",
@ -42,8 +42,8 @@
},
"devDependencies": {
"@link-stack/eslint-config": "*",
"@types/node": "^22.10.2",
"@types/react": "19.0.1",
"@types/node": "^22.10.6",
"@types/react": "19.0.7",
"@types/uuid": "^10.0.0"
}
}

View file

@ -25,6 +25,7 @@ services:
context: ../../
dockerfile: ./apps/bridge-frontend/Dockerfile
container_name: bridge-frontend
image: registry.gitlab.com/digiresilience/link/link-stack/bridge-frontend:${LINK_STACK_VERSION}
restart: ${RESTART}
ports:
- 8006:3000
@ -35,5 +36,6 @@ services:
context: ../../
dockerfile: ./apps/bridge-worker/Dockerfile
container_name: bridge-worker
image: registry.gitlab.com/digiresilience/link/link-stack/bridge-worker:${LINK_STACK_VERSION}
restart: ${RESTART}
environment: *common-bridge-variables

View file

@ -1,7 +1,8 @@
services:
signal-cli-rest-api:
container_name: signal-cli-rest-api
build: ../signal-cli-rest-api
image: registry.gitlab.com/digiresilience/link/link-stack/signal-cli-rest-api:develop
platform: linux/amd64
environment:
- MODE=json-rpc
volumes:

View file

@ -17,7 +17,6 @@ x-zammad-vars: &common-zammad-variables
services:
zammad-init:
platform: linux/x86_64
container_name: zammad-init
command: ["zammad-init"]
depends_on:
@ -47,7 +46,6 @@ services:
<<: *common-global-variables
zammad-nginx:
platform: linux/x86_64
container_name: zammad-nginx
command: ["zammad-nginx"]
expose:
@ -72,7 +70,6 @@ services:
- zammad-var:/opt/zammad/var:ro
zammad-railsserver:
platform: linux/x86_64
container_name: zammad-railsserver
command: ["zammad-railsserver"]
depends_on:
@ -103,7 +100,6 @@ services:
- redis-data:/data
zammad-scheduler:
platform: linux/x86_64
container_name: zammad-scheduler
command: ["zammad-scheduler"]
depends_on:
@ -123,7 +119,6 @@ services:
- zammad-storage:/opt/zammad/storage
zammad-websocket:
platform: linux/x86_64
container_name: zammad-websocket
command: ["zammad-websocket"]
depends_on:

View file

@ -1 +1 @@
FROM memcached:1.6.31-bookworm
FROM memcached:1.6.34-bookworm

View file

@ -1 +1 @@
FROM nginxproxy/nginx-proxy:1.6.1
FROM nginxproxy/nginx-proxy:1.6.4

View file

@ -1 +1 @@
FROM opensearchproject/opensearch-dashboards:2.17.0
FROM opensearchproject/opensearch-dashboards:2.18.0

View file

@ -1,2 +1,2 @@
FROM opensearchproject/opensearch:2.17.0
FROM opensearchproject/opensearch:2.18.0
RUN /usr/share/opensearch/bin/opensearch-plugin install ingest-attachment -b

View file

@ -1 +1 @@
FROM redis:7.4.0-bookworm
FROM redis:7.4.2-bookworm

View file

@ -17,8 +17,7 @@ const files = {
const finalFiles = files[app]
.map((file) => ['-f', `docker/compose/${file}.yml`]).flat();
const finalCommand = command === "up" ? ["up", "-d"] : [command];
const finalCommand = command === "up" ? ["up", "-d", "--remove-orphans"] : [command];
const dockerCompose = spawn('docker', ['compose', '--env-file', '.env', ...finalFiles, ...finalCommand]);
dockerCompose.stdout.on('data', (data) => {

View file

@ -1 +1 @@
FROM bbernhard/signal-cli-rest-api:0.89
FROM bbernhard/signal-cli-rest-api:0.90

View file

@ -1,19 +1,25 @@
ARG ZAMMAD_VERSION=6.3.1
ARG ZAMMAD_VERSION=6.4.1
FROM node:22-slim as node
FROM node:22-slim AS node
FROM zammad/zammad-docker-compose:${ZAMMAD_VERSION} AS builder
USER root
COPY --from=node /opt /opt
COPY --from=node /usr/local/bin /usr/local/bin
COPY --from=node /usr/local/lib /usr/local/lib
COPY --from=node /usr/lib /usr/lib
SHELL ["/bin/bash", "-e", "-o", "pipefail", "-c"]
RUN npm install -g pnpm
RUN pnpm --version
WORKDIR ${ZAMMAD_DIR}
RUN mkdir -p /opt/zammad/contrib/link/addons
COPY addons contrib/link/addons
COPY setup.rb contrib/link/setup.rb
COPY install.rb contrib/link/install.rb
USER root
RUN sed -i '/script\/build\/cleanup\.sh/d' contrib/docker/setup.sh
RUN sed -i '/touch db\/schema.rb/a ZAMMAD_SAFE_MODE=1 DATABASE_URL=postgresql:\/\/zammad:\/zammad bundle exec rails runner \/opt\/zammad\/contrib\/link\/install.rb' contrib/docker/setup.sh
RUN cat contrib/docker/setup.sh
RUN contrib/docker/setup.sh builder
ARG EMBEDDED=false
RUN if [ "$EMBEDDED" = "true" ] ; then sed -i '/proxy_set_header X-Forwarded-User "";/d' ${ZAMMAD_DIR}/contrib/nginx/zammad.conf; fi
@ -22,11 +28,9 @@ RUN sed -i '/^[[:space:]]*# es config/a\
bundle exec rails runner /opt/zammad/contrib/link/setup.rb\n\
bundle exec rake zammad:package:migrate\n\
' /docker-entrypoint.sh
RUN ZAMMAD_SAFE_MODE=1 DATABASE_URL=postgresql://zammad:/zammad bundle exec rails runner /opt/zammad/contrib/link/install.rb
RUN ZAMMAD_SAFE_MODE=1 DATABASE_URL=postgresql://zammad:/zammad bundle exec rake assets:precompile
FROM zammad/zammad-docker-compose:${ZAMMAD_VERSION} as runner
USER ${ZAMMAD_USER}
FROM zammad/zammad-docker-compose:${ZAMMAD_VERSION} AS runner
USER zammad
COPY --from=builder --chown=zammad:zammad ${ZAMMAD_DIR} ${ZAMMAD_DIR}
COPY --from=builder /usr/local/bundle /usr/local/bundle
COPY --from=builder /docker-entrypoint.sh /docker-entrypoint.sh

1521
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,13 +1,13 @@
{
"name": "@link-stack",
"version": "2.3.4",
"version": "2.4.0b1",
"description": "Link from the Center for Digital Resilience",
"scripts": {
"dev": "dotenv -- turbo dev",
"build": "dotenv -- turbo build",
"migrate": "dotenv -- npm run migrate --workspace=database",
"lint": "dotenv turbo lint",
"update-version": "find . -name 'package.json' -exec sed -i -E 's/\"version\": \"[^\"]+\"/\"version\": \"2.3.4\"/' {} +",
"update-version": "find . -name 'package.json' -exec sed -i -E 's/\"version\": \"[^\"]+\"/\"version\": \"2.4.0b1\"/' {} +",
"upgrade:setup": "npm i -g npm-check-updates",
"upgrade:check": "ncu && ncu -ws",
"upgrade": "ncu -u -x eslint -x kysely && ncu -ws -u -x eslint -x kysely && npm i",
@ -46,7 +46,7 @@
"type": "git",
"url": "git+https://gitlab.com/digiresilience/link/link-stack.git"
},
"packageManager": "npm@10.9.2",
"packageManager": "npm@11.0.0",
"author": "Darren Clarke",
"license": "AGPL-3.0-or-later",
"devDependencies": {
@ -56,7 +56,7 @@
"typescript": "latest",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"@types/react": "^19.0.0"
"@types/react": "^19.0.7"
},
"overrides": {
"material-ui-popup-state": {

View file

@ -1,6 +1,6 @@
{
"name": "@link-stack/bridge-common",
"version": "2.3.4",
"version": "2.4.0b1",
"main": "build/main/index.js",
"type": "module",
"author": "Darren Clarke <darren@redaranj.com>",
@ -17,6 +17,6 @@
"devDependencies": {
"@link-stack/eslint-config": "*",
"@link-stack/typescript-config": "*",
"typescript": "^5.7.2"
"typescript": "^5.7.3"
}
}

View file

@ -1,25 +1,25 @@
{
"name": "@link-stack/bridge-ui",
"version": "2.3.4",
"version": "2.4.0b1",
"scripts": {
"build": "tsc -p tsconfig.json"
},
"dependencies": {
"@link-stack/bridge-common": "^2.2.0",
"@link-stack/bridge-common": "*",
"@link-stack/signal-api": "*",
"@link-stack/ui": "^2.2.0",
"@link-stack/ui": "*",
"@mui/material": "^6",
"@mui/x-data-grid-pro": "^7.23.2",
"@mui/x-data-grid-pro": "^7.23.6",
"kysely": "0.26.1",
"next": "15.1.0",
"next": "15.1.4",
"react": "19.0.0",
"react-dom": "19.0.0",
"react-qr-code": "^2.0.15"
},
"devDependencies": {
"@types/node": "^22.10.2",
"@types/react": "19.0.1",
"@types/react-dom": "^19.0.2",
"typescript": "5.7.2"
"@types/node": "^22.10.6",
"@types/react": "19.0.7",
"@types/react-dom": "^19.0.3",
"typescript": "5.7.3"
}
}

View file

@ -1,6 +1,6 @@
{
"name": "@link-stack/eslint-config",
"version": "2.3.4",
"version": "2.4.0b1",
"description": "amigo's eslint config",
"author": "Abel Luck <abel@guardianproject.info>",
"license": "AGPL-3.0-or-later",
@ -9,17 +9,17 @@
"fmt": "prettier \"profile/**/*.js\" --write"
},
"dependencies": {
"@rushstack/eslint-patch": "^1.10.4",
"@typescript-eslint/eslint-plugin": "^8.18.0",
"@typescript-eslint/parser": "^8.18.0",
"eslint-config-prettier": "^9.1.0",
"@rushstack/eslint-patch": "^1.10.5",
"@typescript-eslint/eslint-plugin": "^8.20.0",
"@typescript-eslint/parser": "^8.20.0",
"eslint-config-prettier": "^10.0.1",
"eslint-config-xo-space": "^0.35.0",
"eslint-plugin-eslint-comments": "^3.2.0",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jest": "^28.9.0",
"eslint-plugin-jest": "^28.11.0",
"eslint-plugin-promise": "^7.2.1",
"eslint-plugin-unicorn": "56.0.1",
"@babel/eslint-parser": "7.25.9"
"@babel/eslint-parser": "7.26.5"
},
"peerDependencies": {
"typescript": "^4.9.5"
@ -27,6 +27,6 @@
"devDependencies": {
"eslint": "^8",
"jest": "^29.7.0",
"typescript": "^5.7.2"
"typescript": "^5.7.3"
}
}

View file

@ -1,6 +1,6 @@
{
"name": "@link-stack/jest-config",
"version": "2.3.4",
"version": "2.4.0b1",
"description": "",
"author": "Abel Luck <abel@guardianproject.info>",
"license": "AGPL-3.0-or-later",

View file

@ -1,6 +1,6 @@
{
"name": "@link-stack/leafcutter-ui",
"version": "2.3.4",
"version": "2.4.0b1",
"scripts": {
"build": "tsc -p tsconfig.json"
},
@ -10,23 +10,23 @@
"@link-stack/opensearch-common": "*",
"@mui/icons-material": "^6",
"@mui/material": "^6",
"@mui/x-data-grid-pro": "^7.23.2",
"@mui/x-date-pickers-pro": "^7.23.2",
"@mui/x-data-grid-pro": "^7.23.6",
"@mui/x-date-pickers-pro": "^7.23.6",
"date-fns": "^4.1.0",
"next": "15.1.0",
"next": "15.1.4",
"next-auth": "^4.24.11",
"react": "19.0.0",
"react-cookie": "^7.2.2",
"react-dom": "19.0.0",
"react-iframe": "^1.8.5",
"react-markdown": "^9.0.1",
"react-markdown": "^9.0.3",
"react-polyglot": "^0.7.2"
},
"devDependencies": {
"@link-stack/eslint-config": "*",
"@link-stack/typescript-config": "*",
"@types/node": "^22.10.2",
"@types/react": "19.0.1",
"typescript": "5.7.2"
"@types/node": "^22.10.6",
"@types/react": "19.0.7",
"typescript": "5.7.3"
}
}

View file

@ -164,7 +164,7 @@ const getIndexPattern: any = async (index: string) => {
sort: ["updated_at:desc"],
});
if (res.body.hits.total.value === 0) {
if (res?.body?.hits?.total?.valueOf() === 0) {
// eslint-disable-next-line no-use-before-define
return createCurrentUserIndexPattern(index);
}

View file

@ -1,18 +1,18 @@
{
"name": "@link-stack/opensearch-common",
"version": "2.3.4",
"version": "2.4.0b1",
"scripts": {
"build": "tsc -p tsconfig.json"
},
"dependencies": {
"@opensearch-project/opensearch": "^2.13.0",
"uuid": "^11.0.3"
"@opensearch-project/opensearch": "^3.1.0",
"uuid": "^11.0.5"
},
"devDependencies": {
"@types/node": "^22.10.2",
"@types/node": "^22.10.6",
"@types/uuid": "^10.0.0",
"@link-stack/typescript-config": "*",
"@link-stack/eslint-config": "*",
"typescript": "5.7.2"
"typescript": "5.7.3"
}
}

View file

@ -1,6 +1,6 @@
{
"name": "@link-stack/signal-api",
"version": "2.3.4",
"version": "2.4.0b1",
"type": "module",
"main": "build/index.js",
"exports": {

View file

@ -1,6 +1,6 @@
{
"name": "@link-stack/typescript-config",
"version": "2.3.4",
"version": "2.4.0b1",
"description": "Shared TypeScript config",
"license": "AGPL-3.0-or-later",
"author": "Abel Luck <abel@guardianproject.info>",

View file

@ -1,6 +1,6 @@
{
"name": "@link-stack/ui",
"version": "2.3.4",
"version": "2.4.0b1",
"description": "",
"scripts": {
"build": "tsc -p tsconfig.json"
@ -9,15 +9,15 @@
"dependencies": {
"@mui/icons-material": "^6",
"@mui/material": "^6",
"@mui/x-data-grid-pro": "^7.23.2",
"@mui/x-license": "^7.23.2",
"next": "15.1.0",
"@mui/x-data-grid-pro": "^7.23.6",
"@mui/x-license": "^7.23.6",
"next": "15.1.4",
"react": "19.0.0",
"react-dom": "19.0.0"
},
"devDependencies": {
"@types/node": "^22.10.2",
"@types/react": "19.0.1",
"typescript": "^5.7.2"
"@types/node": "^22.10.6",
"@types/react": "19.0.7",
"typescript": "^5.7.3"
}
}

View file

@ -1,7 +1,7 @@
{
"name": "@link-stack/zammad-addon-bridge",
"displayName": "Bridge",
"version": "2.3.4",
"version": "2.4.0b1",
"description": "An addon that adds CDR Bridge channels to Zammad.",
"scripts": {
"build": "node '../../node_modules/@link-stack/zammad-addon-common/dist/build.js'",

View file

@ -10,7 +10,7 @@ class CdrSignalChannel < ActiveRecord::Migration[5.2]
)
Permission.create_if_not_exists(
name: 'admin.channel_cdr_signal',
note: 'Manage %s',
description: 'Manage %s',
preferences: {
translations: ['Channel - Signal']
}

View file

@ -10,7 +10,7 @@ class CdrVoiceChannel < ActiveRecord::Migration[5.2]
)
Permission.create_if_not_exists(
name: 'admin.channel_cdr_voice',
note: 'Manage %s',
description: 'Manage %s',
preferences: {
translations: ['Channel - Voice']
}

View file

@ -10,7 +10,7 @@ class CdrWhatsappChannel < ActiveRecord::Migration[5.2]
)
Permission.create_if_not_exists(
name: 'admin.channel_cdr_whatsapp',
note: 'Manage %s',
description: 'Manage %s',
preferences: {
translations: ['Channel - Whatsapp']
}

View file

@ -1,6 +1,6 @@
{
"name": "@link-stack/zammad-addon-common",
"version": "2.3.4",
"version": "2.4.0b1",
"description": "",
"bin": {
"zpm-build": "./dist/build.js",
@ -10,12 +10,12 @@
"build": "tsc"
},
"devDependencies": {
"@types/node": "^22.10.2",
"@types/node": "^22.10.6",
"typescript": "^5"
},
"author": "",
"license": "AGPL-3.0-or-later",
"dependencies": {
"glob": "^11.0.0"
"glob": "^11.0.1"
}
}

View file

@ -1,7 +1,7 @@
{
"name": "@link-stack/zammad-addon-hardening",
"displayName": "Hardening",
"version": "2.3.4",
"version": "2.4.0b1",
"description": "A Zammad addon that hardens a Zammad instance according to CDR's needs.",
"scripts": {
"build": "node '../../node_modules/@link-stack/zammad-addon-common/dist/build.js'",

View file

@ -1,7 +1,7 @@
{
"name": "@link-stack/zammad-addon-leafcutter",
"displayName": "Leafcutter",
"version": "2.3.4",
"version": "2.4.0b1",
"description": "Adds a common set of tags for Leafcutter uses.",
"scripts": {
"build": "node '../../node_modules/@link-stack/zammad-addon-common/dist/build.js'",