Unverified Commit e42eb725 authored by Maciej Krüger's avatar Maciej Krüger Committed by GitHub
Browse files

synapse-admin: 0.10.0 -> 0.10.3, add updateScript (#395273)

parents 9ff03ab0 7c0b894e
Loading
Loading
Loading
Loading
+0 −91
Original line number Diff line number Diff line
{
  "name": "synapse-admin",
  "version": "0.10.0",
  "description": "Admin GUI for the Matrix.org server Synapse",
  "type": "module",
  "author": "Awesome Technologies Innovationslabor GmbH",
  "license": "Apache-2.0",
  "homepage": ".",
  "repository": {
    "type": "git",
    "url": "https://github.com/Awesome-Technologies/synapse-admin"
  },
  "devDependencies": {
    "@babel/preset-env": "^7.24.4",
    "@babel/preset-react": "^7.24.1",
    "@testing-library/jest-dom": "^6.0.0",
    "@testing-library/react": "^15.0.2",
    "@testing-library/user-event": "^14.5.2",
    "@vitejs/plugin-react": "^4.0.0",
    "babel-jest": "^29.7.0",
    "eslint": "^8.57.0",
    "eslint-config-prettier": "^9.1.0",
    "eslint-config-react-app": "^7.0.1",
    "eslint-plugin-prettier": "^5.1.3",
    "jest": "^29.7.0",
    "jest-environment-jsdom": "^29.7.0",
    "jest-fetch-mock": "^3.0.3",
    "prettier": "^3.2.5",
    "react-test-renderer": "^18.2.0",
    "vite": "^5.0.0",
    "vite-plugin-version-mark": "^0.0.13"
  },
  "dependencies": {
    "@haleos/ra-language-german": "^1.0.0",
    "@haxqer/ra-language-chinese": "^4.16.2",
    "@mui/icons-material": "^5.15.15",
    "@mui/material": "^5.15.15",
    "@mui/styles": "^5.15.15",
    "papaparse": "^5.4.1",
    "ra-language-farsi": "^4.2.0",
    "ra-language-french": "^4.16.15",
    "ra-language-italian": "^3.13.1",
    "react": "^18.0.0",
    "react-admin": "^4.16.15",
    "react-dom": "^18.0.0"
  },
  "scripts": {
    "start": "vite serve",
    "build": "vite build",
    "fix:other": "yarn prettier --write",
    "fix:code": "yarn test:lint --fix",
    "fix": "yarn fix:code && yarn fix:other",
    "prettier": "prettier --ignore-path .gitignore \"**/*.{js,jsx,json,md,scss,yaml,yml}\"",
    "test:code": "jest",
    "test:lint": "eslint --ignore-path .gitignore --ext .js,.jsx .",
    "test:style": "yarn prettier --list-different",
    "test": "yarn test:style && yarn test:lint && yarn test:code"
  },
  "babel": {
    "presets": [
      "@babel/preset-env",
      [
        "@babel/preset-react",
        {
          "runtime": "automatic"
        }
      ]
    ]
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "jest": {
    "testEnvironment": "jsdom",
    "setupFilesAfterEnv": [
      "<rootDir>/src/setupTests.js"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}
+107 −29
Original line number Diff line number Diff line
{
  lib,
  stdenv,
  fetchFromGitHub,
  fetchYarnDeps,
  mkYarnPackage,
  nodejs,
  yarn-berry,
  cacert,
  nix-update-script,
  formats,
  baseUrl ? null,
  writeShellScriptBin,
}:

mkYarnPackage rec {
let
  config = lib.optionalAttrs (baseUrl != null) { restrictBaseUrl = baseUrl; };
  configFormat = formats.json { };
  configFile = configFormat.generate "synapse-admin-config" config;
in

stdenv.mkDerivation (finalAttrs: {
  pname = "synapse-admin";
  version = "0.10.0";
  version = "0.10.3";

  src = fetchFromGitHub {
    owner = "Awesome-Technologies";
    repo = "synapse-admin";
    tag = version;
    sha256 = "sha256-3MC5PCEwYfZzJy9AW9nHTpvU49Lk6wbYC4Rcv9J9MEg=";
    tag = finalAttrs.version;
    hash = "sha256-o2HzGuKjmIeJ+Kxd9KiFWmQgGVtvRdydiQJlr6P0+s8=";
  };

  packageJSON = ./package.json;
  # we cannot use fetchYarnDeps because that doesn't support yarn 2/berry lockfiles
  yarnOfflineCache = stdenv.mkDerivation {
    pname = "yarn-deps";
    inherit (finalAttrs) version src;

    nativeBuildInputs = [ yarn-berry ];

    dontInstall = true;

    env = {
      YARN_ENABLE_TELEMETRY = 0;
      NODE_EXTRA_CA_CERTS = "${cacert}/etc/ssl/certs/ca-bundle.crt";
    };

  offlineCache = fetchYarnDeps {
    yarnLock = "${src}/yarn.lock";
    hash = "sha256-vpCwPL1B+hbIaVSHtlkGjPAteu9BFNNmCTE66CSyFkg=";
    supportedArchitectures = builtins.toJSON {
      os = [
        "darwin"
        "linux"
      ];
      cpu = [
        "arm"
        "arm64"
        "ia32"
        "x64"
      ];
      libc = [
        "glibc"
        "musl"
      ];
    };

    configurePhase = ''
      runHook preConfigure

      export HOME="$NIX_BUILD_TOP"
      yarn config set enableGlobalCache false
      yarn config set cacheFolder $out
      yarn config set --json supportedArchitectures "$supportedArchitectures"

      runHook postConfigure
    '';

    buildPhase = ''
      runHook preBuild

      mkdir -p $out
      yarn install --immutable --mode skip-build

      runHook postBuild
    '';

    outputHash = "sha256-hIz+tWaDiq9qslEKjRyNzC0z1zA5TFgVr/hf3/T6YGw=";
    outputHashMode = "recursive";
  };

  nativeBuildInputs = [
    (writeShellScriptBin "git" "echo ${version}")
    nodejs
    yarn-berry
  ];

  env = {
    NODE_ENV = "production";
  ${if baseUrl != null then "REACT_APP_SERVER" else null} = baseUrl;
  };

  # error:0308010C:digital envelope routines::unsupported
  NODE_OPTIONS = "--openssl-legacy-provider";
  postPatch = ''
    substituteInPlace vite.config.ts \
      --replace-fail "git describe --tags" "echo ${finalAttrs.version}"
  '';

  configurePhase = ''
    runHook preConfigure

    export HOME="$NIX_BUILD_TOP"
    yarn config set enableGlobalCache false
    yarn config set cacheFolder $yarnOfflineCache

    runHook postConfigure
  '';

  buildPhase = ''
    runHook preBuild

    export HOME=$(mktemp -d)
    yarn --offline run build
    yarn install --immutable --immutable-cache
    yarn build

    runHook postBuild
  '';

  distPhase = ''
    runHook preDist
  installPhase = ''
    runHook preInstall

    cp -r deps/synapse-admin/dist $out
    cp -r dist $out
    cp ${configFile} $out/config.json

    runHook postDist
    runHook postInstall
  '';

  dontFixup = true;
  dontInstall = true;
  passthru.updateScript = nix-update-script { };

  meta = with lib; {
  meta = {
    description = "Admin UI for Synapse Homeservers";
    homepage = "https://github.com/Awesome-Technologies/synapse-admin";
    license = licenses.asl20;
    platforms = platforms.all;
    maintainers = with maintainers; [
    changelog = "https://github.com/Awesome-Technologies/synapse-admin/releases/tag/${finalAttrs.version}";
    license = lib.licenses.asl20;
    platforms = [
      "x86_64-linux"
      "aarch64-linux"
      "x86_64-darwin"
      "aarch64-darwin"
    ];
    maintainers = with lib.maintainers; [
      mkg20001
      ma27
    ];
  };
}
})