From b0437f708af8959f76946ba7cc67787b6c4b4cfd Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Thu, 13 Jun 2024 13:02:19 +0300 Subject: [PATCH] postlight-parser: use yarn{Config,Build}Hook instead of mkYarnPackage --- pkgs/by-name/po/postlight-parser/package.json | 165 ------------------ pkgs/by-name/po/postlight-parser/package.nix | 43 +++-- 2 files changed, 30 insertions(+), 178 deletions(-) delete mode 100644 pkgs/by-name/po/postlight-parser/package.json diff --git a/pkgs/by-name/po/postlight-parser/package.json b/pkgs/by-name/po/postlight-parser/package.json deleted file mode 100644 index 11b49c9e686e..000000000000 --- a/pkgs/by-name/po/postlight-parser/package.json +++ /dev/null @@ -1,165 +0,0 @@ -{ - "name": "@postlight/parser", - "version": "2.2.3", - "description": "Postlight Parser transforms web pages into clean text. Publishers and programmers use it to make the web make sense, and readers use it to read any web article comfortably.", - "author": "Postlight ", - "homepage": "https://reader.postlight.com", - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/postlight/parser.git" - }, - "bugs": { - "url": "https://github.com/postlight/parser/issues" - }, - "keywords": [ - "mercury", - "parser", - "reader", - "web", - "content" - ], - "files": [ - "dist", - "cli.js", - "src/shims/" - ], - "main": "./dist/mercury.js", - "bin": { - "mercury-parser": "./cli.js", - "postlight-parser": "./cli.js" - }, - "scripts": { - "lint": "eslint . --fix", - "lint:ci": "remark . && eslint .", - "lint-fix-quiet": "eslint --fix --quiet", - "build": "yarn lint && rollup -c && yarn test:build", - "build:ci": "rollup -c && yarn test:build", - "build:web": "yarn lint && rollup -c rollup.config.web.js && yarn test:build:web", - "build:esm": "yarn lint && rollup -c rollup.config.esm.js && yarn test:build:esm", - "build:esm:ci": "rollup -c rollup.config.esm.js && yarn test:build:esm", - "build:web:ci": "rollup -c rollup.config.web.js && yarn test:build:web", - "release": "yarn build && yarn build:web", - "build:generator": "rollup -c scripts/rollup.config.js", - "test_build": "rollup -c", - "test": "yarn test:node && yarn test:web", - "test:node": "jest --json --outputFile test-output.json", - "test:web": "node ./node_modules/karma/bin/karma start karma.conf.js --auto-watch", - "test:build": "cd ./scripts && jest check-build.test.js", - "test:build:web": "node ./scripts/proxy-browser-test.js", - "test:build:esm": "node ./scripts/proxy-browser-test.js", - "watch:test": "jest --watch", - "generate-parser": "node ./dist/generate-custom-parser.js" - }, - "engines": { - "node": ">=10" - }, - "devDependencies": { - "@babel/core": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/polyfill": "^7.0.0", - "@babel/preset-env": "^7.0.0", - "@babel/runtime": "^7.0.0", - "@jesses/circle-github-bot": "^2.1.0", - "@octokit/rest": "^16.9.0", - "babel-core": "^7.0.0-bridge.0", - "babel-eslint": "^10.0.1", - "babel-jest": "^23.4.2", - "babel-plugin-module-alias": "^1.6.0", - "babel-plugin-module-resolver": "^3.1.2", - "babelify": "^10.0.0", - "babelrc-rollup": "^3.0.0", - "brfs": "^2.0.1", - "brfs-babel": "^2.0.0", - "browserify": "^16.2.3", - "changelog-maker": "^2.3.0", - "eslint": "^5.12.0", - "eslint-config-airbnb": "^17.1.0", - "eslint-config-prettier": "^6.1.0", - "eslint-import-resolver-babel-module": "^2.2.1", - "eslint-plugin-babel": "^5.3.0", - "eslint-plugin-import": "^2.14.0", - "eslint-plugin-jsx-a11y": "^6.1.2", - "eslint-plugin-react": "^7.12.3", - "express": "^4.16.4", - "husky": "^3.0.0", - "inquirer": "^7.0.0", - "jasmine-core": "^2.5.2", - "jest": "^23.6.0", - "jest-cli": "^23.6.0", - "karma": "^6.3.16", - "karma-browserify": "8.1.0", - "karma-chrome-launcher": "^3.0.0", - "karma-cli": "^2.0.0", - "karma-jasmine": "^1.0.2", - "karma-mocha": "^1.3.0", - "karma-requirejs": "^1.1.0", - "lint-staged": "^8.1.0", - "mocha": "^6.0.0", - "nock": "^10.0.6", - "ora": "^4.0.0", - "prettier": "^1.15.3", - "remark-cli": "^7.0.0", - "remark-lint": "^6.0.4", - "remark-preset-lint-recommended": "^3.0.2", - "request": "^2.88.2", - "requirejs": "^2.3.6", - "rollup": "^1.1.0", - "rollup-plugin-babel": "^4.0.1", - "rollup-plugin-commonjs": "^9.2.0", - "rollup-plugin-node-globals": "^1.4.0", - "rollup-plugin-node-resolve": "^2.0.0", - "rollup-plugin-terser": "^6.1.0", - "rollup-plugin-uglify": "^6.0.1", - "watchify": "^3.11.1" - }, - "dependencies": { - "@babel/runtime-corejs2": "^7.2.0", - "@postlight/ci-failed-test-reporter": "^1.0", - "browser-request": "github:postlight/browser-request#feat-add-headers-to-response", - "cheerio": "^0.22.0", - "difflib": "github:postlight/difflib.js", - "ellipsize": "0.1.0", - "iconv-lite": "0.5.0", - "jquery": "^3.5.0", - "moment": "^2.23.0", - "moment-parseformat": "3.0.0", - "moment-timezone": "0.5.37", - "postman-request": "^2.88.1-postman.31", - "string-direction": "^0.1.2", - "turndown": "^7.1.1", - "valid-url": "^1.0.9", - "wuzzy": "^0.1.4", - "yargs-parser": "^15.0.1" - }, - "bundleDependencies": [ - "jquery", - "moment-timezone", - "browser-request" - ], - "browser": { - "main": "./dist/mercury.web.js", - "cheerio": "./src/shims/cheerio-query", - "jquery": "./node_modules/jquery/dist/jquery.min.js", - "postman-request": "browser-request", - "iconv-lite": "./src/shims/iconv-lite", - "moment-timezone": "./node_modules/moment-timezone/builds/moment-timezone-with-data-2012-2022.min.js" - }, - "husky": { - "hooks": { - "pre-commit": "lint-staged" - } - }, - "lint-staged": { - "*.js": [ - "eslint --fix", - "prettier --write", - "git add" - ], - "*.{json,css,md}": [ - "remark .", - "prettier --write", - "git add" - ] - } -} diff --git a/pkgs/by-name/po/postlight-parser/package.nix b/pkgs/by-name/po/postlight-parser/package.nix index c00028b9a401..fd0617ede1f2 100644 --- a/pkgs/by-name/po/postlight-parser/package.nix +++ b/pkgs/by-name/po/postlight-parser/package.nix @@ -1,36 +1,53 @@ { lib , stdenv -, mkYarnPackage , fetchFromGitHub , fetchYarnDeps +, yarnConfigHook +, yarnBuildHook +, nodejs +, npmHooks }: -mkYarnPackage rec { +stdenv.mkDerivation (finalAttrs: { pname = "postlight-parser"; version = "2.2.3"; src = fetchFromGitHub { owner = "postlight"; repo = "parser"; - rev = "v${version}"; + rev = "v${finalAttrs.version}"; hash = "sha256-k6m95FHeJ+iiWSeY++1zds/bo1RtNXbnv2spaY/M+L0="; }; - packageJSON = ./package.json; - - doDist = false; - offlineCache = fetchYarnDeps { - yarnLock = "${src}/yarn.lock"; + yarnLock = "${finalAttrs.src}/yarn.lock"; hash = "sha256-Vs8bfkhEbPv33ew//HBeDnpQcyWveByHi1gUsdl2CNI="; }; - meta = with lib; { - changelog = "https://github.com/postlight/parser/blob/${src.rev}/CHANGELOG.md"; + nativeBuildInputs = [ + yarnConfigHook + yarnBuildHook + nodejs + npmHooks.npmInstallHook + ]; + # Upstream doesn't include a script in package.json that only builds without + # testing, and tests fail because they need to access online websites. Hence + # we use the builtin interface of yarnBuildHook to lint, and in `postBuild` + # we run the rest of commands needed to create the js files eventually + # distributed and wrapped by npmHooks.npmInstallHook + yarnBuildScript = "lint"; + postBuild = '' + yarn --offline run rollup -c + ''; + # Tries to download stuff from the internet in this phase. + dontNpmPrune = true; + + meta = { + changelog = "https://github.com/postlight/parser/blob/${finalAttrs.src.rev}/CHANGELOG.md"; homepage = "https://reader.postlight.com"; description = "Extracts the bits that humans care about from any URL you give it"; - license = licenses.mit; - maintainers = with maintainers; [ viraptor ]; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ viraptor ]; mainProgram = "postlight-parser"; }; -} +})