From 881335775b8e65b2831599c0ab6440b44056af9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chu=C3=A1nq=C3=AD=20Sun?= <1895289+chuanqisun@users.noreply.github.com> Date: Sun, 9 Jan 2022 20:53:56 -0800 Subject: [PATCH] Error recovery (#72) * Error boundary * revert sandbox config Co-authored-by: sora --- CHANGELOG.md | 12 +- package-lock.json | 358 ++++++++++++++------------ packages/cli/package.json | 8 +- packages/cli/src/lib/enrich.ts | 25 +- packages/cli/src/main.ts | 7 +- packages/cli/src/utils/is-not-null.ts | 3 + 6 files changed, 232 insertions(+), 181 deletions(-) create mode 100644 packages/cli/src/utils/is-not-null.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index fec8993..da48752 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,14 +1,20 @@ +# v1.12.0 + +- New: When source download fails, fall back to cache and continue rest of the build. +- Chore: Dependency updates +- Thank you: @sokomin, @molakirlee, @philippnagel + # v1.11.3 -- Fixed: broken links in documentation +- Fixed: Broken links in documentation - Chore: Dependency updates - Thank you: @hirdot # v1.11.2 - Fixed: unicode characters in URL caused download error -- Fixed: project root npm install error -- Added: unit test library +- Fixed: Project root npm install error +- Added: Unit test library - Chore: Dependency updates - Thank you: @CaptNo1 diff --git a/package-lock.json b/package-lock.json index a46f9e5..abea2be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,18 +17,18 @@ "link": true }, "node_modules/@osmoscraft/typescript-testing-library": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@osmoscraft/typescript-testing-library/-/typescript-testing-library-0.0.4.tgz", - "integrity": "sha512-W/oHXKMRzvvrbMOK1PwXUeYJusLuQOVsXkRS2bxVZqDXoelav/CBt/bpR7fYPBCk2rGK4ViAf7n5mZdnjciguw==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@osmoscraft/typescript-testing-library/-/typescript-testing-library-0.0.5.tgz", + "integrity": "sha512-PU852L7R1k5eBW8UFg/1ac/0TN4WB3Fy6j45pJOPL5X8P3sO5eB/h6RfV5uLT2NjFcjZ2+dCEnO1KgqzF+VHMQ==", "dev": true, "dependencies": { "ts-node-dev": "^1.1.8" } }, "node_modules/@types/js-yaml": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.3.tgz", - "integrity": "sha512-5t9BhoORasuF5uCPr+d5/hdB++zRFUTMIZOzbNkr+jZh3yQht4HYbRDyj9fY8n2TZT30iW9huzav73x4NikqWg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", + "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==", "dev": true }, "node_modules/@types/node": { @@ -74,9 +74,9 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/axios": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.23.0.tgz", - "integrity": "sha512-NmvAE4i0YAv5cKq8zlDoPd1VLKAqX5oLuZKs8xkJa4qi6RGn0uhCYFjWtHHC9EM/MwOwYWOs53W+V0aqEXq1sg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", "dependencies": { "follow-redirects": "^1.14.4" } @@ -301,38 +301,39 @@ } }, "node_modules/esbuild": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.7.tgz", - "integrity": "sha512-Ok3w+Pc9SNdNVEEJUUx9OvNZHwFyoKS0N+ceytfUB3wh/HxhRkOEc9dO8KR9AjfpFI82/Wg258GRDs1/8SFgKQ==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.11.tgz", + "integrity": "sha512-xZvPtVj6yecnDeFb3KjjCM6i7B5TCAQZT77kkW/CpXTMnd6VLnRPKrUB1XHI1pSq6a4Zcy3BGueQ8VljqjDGCg==", "dev": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" }, "optionalDependencies": { - "esbuild-android-arm64": "0.13.7", - "esbuild-darwin-64": "0.13.7", - "esbuild-darwin-arm64": "0.13.7", - "esbuild-freebsd-64": "0.13.7", - "esbuild-freebsd-arm64": "0.13.7", - "esbuild-linux-32": "0.13.7", - "esbuild-linux-64": "0.13.7", - "esbuild-linux-arm": "0.13.7", - "esbuild-linux-arm64": "0.13.7", - "esbuild-linux-mips64le": "0.13.7", - "esbuild-linux-ppc64le": "0.13.7", - "esbuild-netbsd-64": "0.13.7", - "esbuild-openbsd-64": "0.13.7", - "esbuild-sunos-64": "0.13.7", - "esbuild-windows-32": "0.13.7", - "esbuild-windows-64": "0.13.7", - "esbuild-windows-arm64": "0.13.7" + "esbuild-android-arm64": "0.14.11", + "esbuild-darwin-64": "0.14.11", + "esbuild-darwin-arm64": "0.14.11", + "esbuild-freebsd-64": "0.14.11", + "esbuild-freebsd-arm64": "0.14.11", + "esbuild-linux-32": "0.14.11", + "esbuild-linux-64": "0.14.11", + "esbuild-linux-arm": "0.14.11", + "esbuild-linux-arm64": "0.14.11", + "esbuild-linux-mips64le": "0.14.11", + "esbuild-linux-ppc64le": "0.14.11", + "esbuild-linux-s390x": "0.14.11", + "esbuild-netbsd-64": "0.14.11", + "esbuild-openbsd-64": "0.14.11", + "esbuild-sunos-64": "0.14.11", + "esbuild-windows-32": "0.14.11", + "esbuild-windows-64": "0.14.11", + "esbuild-windows-arm64": "0.14.11" } }, "node_modules/esbuild-android-arm64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.7.tgz", - "integrity": "sha512-yqCTKzmm3jiUXgi0yeKhvwZCZTqClUXwwMRAntcM9u/xvXhmpw0V0Z4qDEpnkmF2NCMzmJRH+DAAQ5whuf3CYA==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.11.tgz", + "integrity": "sha512-6iHjgvMnC/SzDH8TefL+/3lgCjYWwAd1LixYfmz/TBPbDQlxcuSkX0yiQgcJB9k+ibZ54yjVXziIwGdlc+6WNw==", "cpu": [ "arm64" ], @@ -343,9 +344,9 @@ ] }, "node_modules/esbuild-darwin-64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.7.tgz", - "integrity": "sha512-MvsgMUWzq5FxoeJLSavw3rgQbaC55A8QTI1U2/8MWamtAeDKyzWQnglcsF0/TkjGLaKEqS0ZLo8akJ8q34BCtw==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.11.tgz", + "integrity": "sha512-olq84ikh6TiBcrs3FnM4eR5VPPlcJcdW8BnUz/lNoEWYifYQ+Po5DuYV1oz1CTFMw4k6bQIZl8T3yxL+ZT2uvQ==", "cpu": [ "x64" ], @@ -356,9 +357,9 @@ ] }, "node_modules/esbuild-darwin-arm64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.7.tgz", - "integrity": "sha512-tuP+dpIzXj17UC17VkHFDAH5nB7MajJK7sF8Fz4iVo8cml8YXj3MeNtjjLmx9YFvPs4XW3hFw1eqZJ06h2ssIA==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.11.tgz", + "integrity": "sha512-Jj0ieWLREPBYr/TZJrb2GFH8PVzDqiQWavo1pOFFShrcmHWDBDrlDxPzEZ67NF/Un3t6sNNmeI1TUS/fe1xARg==", "cpu": [ "arm64" ], @@ -369,9 +370,9 @@ ] }, "node_modules/esbuild-freebsd-64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.7.tgz", - "integrity": "sha512-p07TrpkCJJyAXXCXFm2IpAvyASUTcuT0OF43riEsgjuRJmtaNBOUENecr2B2k/zd9wkGz6UyxxtnFntaBttkDg==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.11.tgz", + "integrity": "sha512-C5sT3/XIztxxz/zwDjPRHyzj/NJFOnakAanXuyfLDwhwupKPd76/PPHHyJx6Po6NI6PomgVp/zi6GRB8PfrOTA==", "cpu": [ "x64" ], @@ -382,9 +383,9 @@ ] }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.7.tgz", - "integrity": "sha512-MCtfBRkE1GwAnjVoWPYoZ+S/+zanzWxAJVER1/8jmWobCXJG0w+YM2IXQ2fN4T9U96RusFWQDMJVoACnqhIAzg==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.11.tgz", + "integrity": "sha512-y3Llu4wbs0bk4cwjsdAtVOesXb6JkdfZDLKMt+v1U3tOEPBdSu6w8796VTksJgPfqvpX22JmPLClls0h5p+L9w==", "cpu": [ "arm64" ], @@ -395,9 +396,9 @@ ] }, "node_modules/esbuild-linux-32": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.7.tgz", - "integrity": "sha512-HM4d16XbqToo93LPrgzkiLgX3Xgr9Mw67tEM8vjhHDx18JnaZqPdIsl5ZfCqRGHlLUq+GdFKl6+dH7WlsiWMCA==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.11.tgz", + "integrity": "sha512-Cg3nVsxArjyLke9EuwictFF3Sva+UlDTwHIuIyx8qpxRYAOUTmxr2LzYrhHyTcGOleLGXUXYsnUVwKqnKAgkcg==", "cpu": [ "ia32" ], @@ -408,9 +409,9 @@ ] }, "node_modules/esbuild-linux-64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.7.tgz", - "integrity": "sha512-krgiIEyqcS0kfTjptGEQzdYwiEmmqpmiZHlKqZILVuU5BaIVWCBMmVx20HH9waJw1yT0Ao4fZTZ9kg8s/pKAYA==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.11.tgz", + "integrity": "sha512-oeR6dIrrojr8DKVrxtH3xl4eencmjsgI6kPkDCRIIFwv4p+K7ySviM85K66BN01oLjzthpUMvBVfWSJkBLeRbg==", "cpu": [ "x64" ], @@ -421,9 +422,9 @@ ] }, "node_modules/esbuild-linux-arm": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.7.tgz", - "integrity": "sha512-GOAt1brGG14mmQx2sRD3wHi3rih94OzhmDRVyo7JvlSmWOfEczPf7zL7YfmgjuktvvuLTERtTJzaih7nyCwPOg==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.11.tgz", + "integrity": "sha512-vcwskfD9g0tojux/ZaTJptJQU3a7YgTYsptK1y6LQ/rJmw7U5QJvboNawqM98Ca3ToYEucfCRGbl66OTNtp6KQ==", "cpu": [ "arm" ], @@ -434,9 +435,9 @@ ] }, "node_modules/esbuild-linux-arm64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.7.tgz", - "integrity": "sha512-aM2BUTdbtzEUOuLqDusGCuWQRqc0JazgbA/6+Q9xhUgNLHGUMAsu4C5G0qPnJCTlWGZX+bcQYma6wFVEp9ibBg==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.11.tgz", + "integrity": "sha512-+e6ZCgTFQYZlmg2OqLkg1jHLYtkNDksxWDBWNtI4XG4WxuOCUErLqfEt9qWjvzK3XBcCzHImrajkUjO+rRkbMg==", "cpu": [ "arm64" ], @@ -447,9 +448,9 @@ ] }, "node_modules/esbuild-linux-mips64le": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.7.tgz", - "integrity": "sha512-+UJq6cxpc2ldaQFdpEDrBhqhluXsqCNlWiHccIjq25r+3YbFg0c/RJEypoVU7tjhGXUGWyWWQ7SLkzHYpf+Nsg==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.11.tgz", + "integrity": "sha512-Rrs99L+p54vepmXIb87xTG6ukrQv+CzrM8eoeR+r/OFL2Rg8RlyEtCeshXJ2+Q66MXZOgPJaokXJZb9snq28bw==", "cpu": [ "mips64el" ], @@ -460,9 +461,9 @@ ] }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.7.tgz", - "integrity": "sha512-6zwpliO4ZZtodDYM1JJEmSMpkd07I8bnNOKoHe7TOs9VhylXJooHh5ObSbSvk3FxCBs+jL5bxb24p10/Cg4RGw==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.11.tgz", + "integrity": "sha512-JyzziGAI0D30Vyzt0HDihp4s1IUtJ3ssV2zx9O/c+U/dhUHVP2TmlYjzCfCr2Q6mwXTeloDcLS4qkyvJtYptdQ==", "cpu": [ "ppc64" ], @@ -472,10 +473,23 @@ "linux" ] }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.11.tgz", + "integrity": "sha512-DoThrkzunZ1nfRGoDN6REwmo8ZZWHd2ztniPVIR5RMw/Il9wiWEYBahb8jnMzQaSOxBsGp0PbyJeVLTUatnlcw==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/esbuild-netbsd-64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.7.tgz", - "integrity": "sha512-CfTHeTfJWlwjgfpApXYvECytLD6BzTWovLE0+28KT7bjU5fM4ieDYzRvjWjFAOB2X6DWpaoQnJAlhJirQBW0EQ==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.11.tgz", + "integrity": "sha512-12luoRQz+6eihKYh1zjrw0CBa2aw3twIiHV/FAfjh2NEBDgJQOY4WCEUEN+Rgon7xmLh4XUxCQjnwrvf8zhACw==", "cpu": [ "x64" ], @@ -486,9 +500,9 @@ ] }, "node_modules/esbuild-openbsd-64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.7.tgz", - "integrity": "sha512-qfW+f0MQfl72zVwgbV00I1kAP2zty+N031cNnQINcBmzHOSbEbaBQbUM0kawq+wdfgS/Xmppgf7nD1H8GWAvow==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.11.tgz", + "integrity": "sha512-l18TZDjmvwW6cDeR4fmizNoxndyDHamGOOAenwI4SOJbzlJmwfr0jUgjbaXCUuYVOA964siw+Ix+A+bhALWg8Q==", "cpu": [ "x64" ], @@ -499,9 +513,9 @@ ] }, "node_modules/esbuild-sunos-64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.7.tgz", - "integrity": "sha512-fVRM9mV0wAYLt92IqzudxACMLJZRQFx1oJsNeU4fPFmUxIkYE4C7G7z9vqI2eu9bpDo1fA+3+5djo/T/28Mckg==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.11.tgz", + "integrity": "sha512-bmYzDtwASBB8c+0/HVOAiE9diR7+8zLm/i3kEojUH2z0aIs6x/S4KiTuT5/0VKJ4zk69kXel1cNWlHBMkmavQg==", "cpu": [ "x64" ], @@ -512,9 +526,9 @@ ] }, "node_modules/esbuild-windows-32": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.7.tgz", - "integrity": "sha512-v3csjeQtlHHWS1q/tE9rTRCSSU/fGvJVh1l7gkS93ysAaIMeC0j9Q0h2PxFpQ6yxuwftuDYfQdnkVGcqjkKM8A==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.11.tgz", + "integrity": "sha512-J1Ys5hMid8QgdY00OBvIolXgCQn1ARhYtxPnG6ESWNTty3ashtc4+As5nTrsErnv8ZGUcWZe4WzTP/DmEVX1UQ==", "cpu": [ "ia32" ], @@ -525,9 +539,9 @@ ] }, "node_modules/esbuild-windows-64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.7.tgz", - "integrity": "sha512-vk+yv/vYpHZP0vxSaxaA4EMaicuxy4E435EXkbsgk5UgpcQgSP0CVlIeaqtgfSM3IwGnpbagOirRVqqZqxyMDQ==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.11.tgz", + "integrity": "sha512-h9FmMskMuGeN/9G9+LlHPAoiQk9jlKDUn9yA0MpiGzwLa82E7r1b1u+h2a+InprbSnSLxDq/7p5YGtYVO85Mlg==", "cpu": [ "x64" ], @@ -538,9 +552,9 @@ ] }, "node_modules/esbuild-windows-arm64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.7.tgz", - "integrity": "sha512-0Fp+IeG5qWLCK+U6d8L9/SnXkI6f3JMtauSQ8HHzw3Fl0pZ+VImUAUWZ3g2fhthNqp+t8dB3n238CJD6XBn15w==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.11.tgz", + "integrity": "sha512-dZp7Krv13KpwKklt9/1vBFBMqxEQIO6ri7Azf8C+ob4zOegpJmha2XY9VVWP/OyQ0OWk6cEeIzMJwInRZrzBUQ==", "cpu": [ "arm64" ], @@ -1174,7 +1188,7 @@ "version": "1.11.3", "license": "MIT", "dependencies": { - "axios": "^0.23.0", + "axios": "^0.24.0", "cheerio": "^1.0.0-rc.10", "feed": "^4.2.2", "handlebars": "^4.7.7", @@ -1185,10 +1199,10 @@ "osmosfeed": "main.js" }, "devDependencies": { - "@osmoscraft/typescript-testing-library": "^0.0.4", - "@types/js-yaml": "^4.0.3", + "@osmoscraft/typescript-testing-library": "^0.0.5", + "@types/js-yaml": "^4.0.5", "@types/node": "^16.10.1", - "esbuild": "^0.13.2" + "esbuild": "^0.14.11" } }, "packages/sandbox": { @@ -1209,12 +1223,12 @@ "@osmoscraft/osmosfeed": { "version": "file:packages/cli", "requires": { - "@osmoscraft/typescript-testing-library": "^0.0.4", - "@types/js-yaml": "^4.0.3", + "@osmoscraft/typescript-testing-library": "^0.0.5", + "@types/js-yaml": "^4.0.5", "@types/node": "^16.10.1", - "axios": "^0.23.0", + "axios": "^0.24.0", "cheerio": "^1.0.0-rc.10", - "esbuild": "^0.13.2", + "esbuild": "^0.14.11", "feed": "^4.2.2", "handlebars": "^4.7.7", "js-yaml": "^4.1.0", @@ -1222,18 +1236,18 @@ } }, "@osmoscraft/typescript-testing-library": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@osmoscraft/typescript-testing-library/-/typescript-testing-library-0.0.4.tgz", - "integrity": "sha512-W/oHXKMRzvvrbMOK1PwXUeYJusLuQOVsXkRS2bxVZqDXoelav/CBt/bpR7fYPBCk2rGK4ViAf7n5mZdnjciguw==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@osmoscraft/typescript-testing-library/-/typescript-testing-library-0.0.5.tgz", + "integrity": "sha512-PU852L7R1k5eBW8UFg/1ac/0TN4WB3Fy6j45pJOPL5X8P3sO5eB/h6RfV5uLT2NjFcjZ2+dCEnO1KgqzF+VHMQ==", "dev": true, "requires": { "ts-node-dev": "^1.1.8" } }, "@types/js-yaml": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.3.tgz", - "integrity": "sha512-5t9BhoORasuF5uCPr+d5/hdB++zRFUTMIZOzbNkr+jZh3yQht4HYbRDyj9fY8n2TZT30iW9huzav73x4NikqWg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", + "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==", "dev": true }, "@types/node": { @@ -1276,9 +1290,9 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "axios": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.23.0.tgz", - "integrity": "sha512-NmvAE4i0YAv5cKq8zlDoPd1VLKAqX5oLuZKs8xkJa4qi6RGn0uhCYFjWtHHC9EM/MwOwYWOs53W+V0aqEXq1sg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", "requires": { "follow-redirects": "^1.14.4" } @@ -1450,146 +1464,154 @@ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" }, "esbuild": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.7.tgz", - "integrity": "sha512-Ok3w+Pc9SNdNVEEJUUx9OvNZHwFyoKS0N+ceytfUB3wh/HxhRkOEc9dO8KR9AjfpFI82/Wg258GRDs1/8SFgKQ==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.11.tgz", + "integrity": "sha512-xZvPtVj6yecnDeFb3KjjCM6i7B5TCAQZT77kkW/CpXTMnd6VLnRPKrUB1XHI1pSq6a4Zcy3BGueQ8VljqjDGCg==", "dev": true, "requires": { - "esbuild-android-arm64": "0.13.7", - "esbuild-darwin-64": "0.13.7", - "esbuild-darwin-arm64": "0.13.7", - "esbuild-freebsd-64": "0.13.7", - "esbuild-freebsd-arm64": "0.13.7", - "esbuild-linux-32": "0.13.7", - "esbuild-linux-64": "0.13.7", - "esbuild-linux-arm": "0.13.7", - "esbuild-linux-arm64": "0.13.7", - "esbuild-linux-mips64le": "0.13.7", - "esbuild-linux-ppc64le": "0.13.7", - "esbuild-netbsd-64": "0.13.7", - "esbuild-openbsd-64": "0.13.7", - "esbuild-sunos-64": "0.13.7", - "esbuild-windows-32": "0.13.7", - "esbuild-windows-64": "0.13.7", - "esbuild-windows-arm64": "0.13.7" + "esbuild-android-arm64": "0.14.11", + "esbuild-darwin-64": "0.14.11", + "esbuild-darwin-arm64": "0.14.11", + "esbuild-freebsd-64": "0.14.11", + "esbuild-freebsd-arm64": "0.14.11", + "esbuild-linux-32": "0.14.11", + "esbuild-linux-64": "0.14.11", + "esbuild-linux-arm": "0.14.11", + "esbuild-linux-arm64": "0.14.11", + "esbuild-linux-mips64le": "0.14.11", + "esbuild-linux-ppc64le": "0.14.11", + "esbuild-linux-s390x": "0.14.11", + "esbuild-netbsd-64": "0.14.11", + "esbuild-openbsd-64": "0.14.11", + "esbuild-sunos-64": "0.14.11", + "esbuild-windows-32": "0.14.11", + "esbuild-windows-64": "0.14.11", + "esbuild-windows-arm64": "0.14.11" } }, "esbuild-android-arm64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.7.tgz", - "integrity": "sha512-yqCTKzmm3jiUXgi0yeKhvwZCZTqClUXwwMRAntcM9u/xvXhmpw0V0Z4qDEpnkmF2NCMzmJRH+DAAQ5whuf3CYA==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.11.tgz", + "integrity": "sha512-6iHjgvMnC/SzDH8TefL+/3lgCjYWwAd1LixYfmz/TBPbDQlxcuSkX0yiQgcJB9k+ibZ54yjVXziIwGdlc+6WNw==", "dev": true, "optional": true }, "esbuild-darwin-64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.7.tgz", - "integrity": "sha512-MvsgMUWzq5FxoeJLSavw3rgQbaC55A8QTI1U2/8MWamtAeDKyzWQnglcsF0/TkjGLaKEqS0ZLo8akJ8q34BCtw==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.11.tgz", + "integrity": "sha512-olq84ikh6TiBcrs3FnM4eR5VPPlcJcdW8BnUz/lNoEWYifYQ+Po5DuYV1oz1CTFMw4k6bQIZl8T3yxL+ZT2uvQ==", "dev": true, "optional": true }, "esbuild-darwin-arm64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.7.tgz", - "integrity": "sha512-tuP+dpIzXj17UC17VkHFDAH5nB7MajJK7sF8Fz4iVo8cml8YXj3MeNtjjLmx9YFvPs4XW3hFw1eqZJ06h2ssIA==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.11.tgz", + "integrity": "sha512-Jj0ieWLREPBYr/TZJrb2GFH8PVzDqiQWavo1pOFFShrcmHWDBDrlDxPzEZ67NF/Un3t6sNNmeI1TUS/fe1xARg==", "dev": true, "optional": true }, "esbuild-freebsd-64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.7.tgz", - "integrity": "sha512-p07TrpkCJJyAXXCXFm2IpAvyASUTcuT0OF43riEsgjuRJmtaNBOUENecr2B2k/zd9wkGz6UyxxtnFntaBttkDg==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.11.tgz", + "integrity": "sha512-C5sT3/XIztxxz/zwDjPRHyzj/NJFOnakAanXuyfLDwhwupKPd76/PPHHyJx6Po6NI6PomgVp/zi6GRB8PfrOTA==", "dev": true, "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.7.tgz", - "integrity": "sha512-MCtfBRkE1GwAnjVoWPYoZ+S/+zanzWxAJVER1/8jmWobCXJG0w+YM2IXQ2fN4T9U96RusFWQDMJVoACnqhIAzg==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.11.tgz", + "integrity": "sha512-y3Llu4wbs0bk4cwjsdAtVOesXb6JkdfZDLKMt+v1U3tOEPBdSu6w8796VTksJgPfqvpX22JmPLClls0h5p+L9w==", "dev": true, "optional": true }, "esbuild-linux-32": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.7.tgz", - "integrity": "sha512-HM4d16XbqToo93LPrgzkiLgX3Xgr9Mw67tEM8vjhHDx18JnaZqPdIsl5ZfCqRGHlLUq+GdFKl6+dH7WlsiWMCA==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.11.tgz", + "integrity": "sha512-Cg3nVsxArjyLke9EuwictFF3Sva+UlDTwHIuIyx8qpxRYAOUTmxr2LzYrhHyTcGOleLGXUXYsnUVwKqnKAgkcg==", "dev": true, "optional": true }, "esbuild-linux-64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.7.tgz", - "integrity": "sha512-krgiIEyqcS0kfTjptGEQzdYwiEmmqpmiZHlKqZILVuU5BaIVWCBMmVx20HH9waJw1yT0Ao4fZTZ9kg8s/pKAYA==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.11.tgz", + "integrity": "sha512-oeR6dIrrojr8DKVrxtH3xl4eencmjsgI6kPkDCRIIFwv4p+K7ySviM85K66BN01oLjzthpUMvBVfWSJkBLeRbg==", "dev": true, "optional": true }, "esbuild-linux-arm": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.7.tgz", - "integrity": "sha512-GOAt1brGG14mmQx2sRD3wHi3rih94OzhmDRVyo7JvlSmWOfEczPf7zL7YfmgjuktvvuLTERtTJzaih7nyCwPOg==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.11.tgz", + "integrity": "sha512-vcwskfD9g0tojux/ZaTJptJQU3a7YgTYsptK1y6LQ/rJmw7U5QJvboNawqM98Ca3ToYEucfCRGbl66OTNtp6KQ==", "dev": true, "optional": true }, "esbuild-linux-arm64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.7.tgz", - "integrity": "sha512-aM2BUTdbtzEUOuLqDusGCuWQRqc0JazgbA/6+Q9xhUgNLHGUMAsu4C5G0qPnJCTlWGZX+bcQYma6wFVEp9ibBg==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.11.tgz", + "integrity": "sha512-+e6ZCgTFQYZlmg2OqLkg1jHLYtkNDksxWDBWNtI4XG4WxuOCUErLqfEt9qWjvzK3XBcCzHImrajkUjO+rRkbMg==", "dev": true, "optional": true }, "esbuild-linux-mips64le": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.7.tgz", - "integrity": "sha512-+UJq6cxpc2ldaQFdpEDrBhqhluXsqCNlWiHccIjq25r+3YbFg0c/RJEypoVU7tjhGXUGWyWWQ7SLkzHYpf+Nsg==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.11.tgz", + "integrity": "sha512-Rrs99L+p54vepmXIb87xTG6ukrQv+CzrM8eoeR+r/OFL2Rg8RlyEtCeshXJ2+Q66MXZOgPJaokXJZb9snq28bw==", "dev": true, "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.7.tgz", - "integrity": "sha512-6zwpliO4ZZtodDYM1JJEmSMpkd07I8bnNOKoHe7TOs9VhylXJooHh5ObSbSvk3FxCBs+jL5bxb24p10/Cg4RGw==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.11.tgz", + "integrity": "sha512-JyzziGAI0D30Vyzt0HDihp4s1IUtJ3ssV2zx9O/c+U/dhUHVP2TmlYjzCfCr2Q6mwXTeloDcLS4qkyvJtYptdQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.11.tgz", + "integrity": "sha512-DoThrkzunZ1nfRGoDN6REwmo8ZZWHd2ztniPVIR5RMw/Il9wiWEYBahb8jnMzQaSOxBsGp0PbyJeVLTUatnlcw==", "dev": true, "optional": true }, "esbuild-netbsd-64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.7.tgz", - "integrity": "sha512-CfTHeTfJWlwjgfpApXYvECytLD6BzTWovLE0+28KT7bjU5fM4ieDYzRvjWjFAOB2X6DWpaoQnJAlhJirQBW0EQ==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.11.tgz", + "integrity": "sha512-12luoRQz+6eihKYh1zjrw0CBa2aw3twIiHV/FAfjh2NEBDgJQOY4WCEUEN+Rgon7xmLh4XUxCQjnwrvf8zhACw==", "dev": true, "optional": true }, "esbuild-openbsd-64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.7.tgz", - "integrity": "sha512-qfW+f0MQfl72zVwgbV00I1kAP2zty+N031cNnQINcBmzHOSbEbaBQbUM0kawq+wdfgS/Xmppgf7nD1H8GWAvow==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.11.tgz", + "integrity": "sha512-l18TZDjmvwW6cDeR4fmizNoxndyDHamGOOAenwI4SOJbzlJmwfr0jUgjbaXCUuYVOA964siw+Ix+A+bhALWg8Q==", "dev": true, "optional": true }, "esbuild-sunos-64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.7.tgz", - "integrity": "sha512-fVRM9mV0wAYLt92IqzudxACMLJZRQFx1oJsNeU4fPFmUxIkYE4C7G7z9vqI2eu9bpDo1fA+3+5djo/T/28Mckg==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.11.tgz", + "integrity": "sha512-bmYzDtwASBB8c+0/HVOAiE9diR7+8zLm/i3kEojUH2z0aIs6x/S4KiTuT5/0VKJ4zk69kXel1cNWlHBMkmavQg==", "dev": true, "optional": true }, "esbuild-windows-32": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.7.tgz", - "integrity": "sha512-v3csjeQtlHHWS1q/tE9rTRCSSU/fGvJVh1l7gkS93ysAaIMeC0j9Q0h2PxFpQ6yxuwftuDYfQdnkVGcqjkKM8A==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.11.tgz", + "integrity": "sha512-J1Ys5hMid8QgdY00OBvIolXgCQn1ARhYtxPnG6ESWNTty3ashtc4+As5nTrsErnv8ZGUcWZe4WzTP/DmEVX1UQ==", "dev": true, "optional": true }, "esbuild-windows-64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.7.tgz", - "integrity": "sha512-vk+yv/vYpHZP0vxSaxaA4EMaicuxy4E435EXkbsgk5UgpcQgSP0CVlIeaqtgfSM3IwGnpbagOirRVqqZqxyMDQ==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.11.tgz", + "integrity": "sha512-h9FmMskMuGeN/9G9+LlHPAoiQk9jlKDUn9yA0MpiGzwLa82E7r1b1u+h2a+InprbSnSLxDq/7p5YGtYVO85Mlg==", "dev": true, "optional": true }, "esbuild-windows-arm64": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.7.tgz", - "integrity": "sha512-0Fp+IeG5qWLCK+U6d8L9/SnXkI6f3JMtauSQ8HHzw3Fl0pZ+VImUAUWZ3g2fhthNqp+t8dB3n238CJD6XBn15w==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.11.tgz", + "integrity": "sha512-dZp7Krv13KpwKklt9/1vBFBMqxEQIO6ri7Azf8C+ob4zOegpJmha2XY9VVWP/OyQ0OWk6cEeIzMJwInRZrzBUQ==", "dev": true, "optional": true }, diff --git a/packages/cli/package.json b/packages/cli/package.json index b403834..4d8c66c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -28,7 +28,7 @@ }, "homepage": "https://osmoscraft.org", "dependencies": { - "axios": "^0.23.0", + "axios": "^0.24.0", "cheerio": "^1.0.0-rc.10", "feed": "^4.2.2", "handlebars": "^4.7.7", @@ -36,9 +36,9 @@ "rss-parser": "^3.12.0" }, "devDependencies": { - "@osmoscraft/typescript-testing-library": "^0.0.4", - "@types/js-yaml": "^4.0.3", + "@osmoscraft/typescript-testing-library": "^0.0.5", + "@types/js-yaml": "^4.0.5", "@types/node": "^16.10.1", - "esbuild": "^0.13.2" + "esbuild": "^0.14.11" } } diff --git a/packages/cli/src/lib/enrich.ts b/packages/cli/src/lib/enrich.ts index 73403f6..17b5e33 100644 --- a/packages/cli/src/lib/enrich.ts +++ b/packages/cli/src/lib/enrich.ts @@ -46,16 +46,34 @@ export interface EnrichInput { config: Config; } -export async function enrich(enrichInput: EnrichInput): Promise { +/** + * @returns null when enrich failed due to fatal errors + */ +export async function enrich(enrichInput: EnrichInput): Promise { // TODO split into download, parse, report, etc. steps return enrichInternal(enrichInput); } -async function enrichInternal(enrichInput: EnrichInput): Promise { +async function enrichInternal(enrichInput: EnrichInput): Promise { const { source, cache, config } = enrichInput; + const cachedSource = cache.sources.find((cachedSource) => cachedSource.feedUrl === source.href); const startTime = performance.now(); - const xmlString = await downloadTextFile(source.href); + const xmlString = await downloadTextFile(source.href).catch((err) => { + console.error(`[enrich] Error downloading source ${source.href}`); + return null; + }); + + if (!xmlString) { + if (cachedSource) { + console.log(`[enrich] Error recovery: cache used for ${source.href}`); + return cachedSource; + } else { + console.log(`[enrich] Error recovery: no cache available. ${source.href} is skipped.`); + return null; + } + } + const rawFeed = await parser.parseString(xmlString)!.catch((err) => { console.error(`[enrich] Parse source failed ${source.href}`); throw err; @@ -166,6 +184,7 @@ async function enrichItem(link: string): Promise { return enrichItemResult; } catch (err) { console.log(`[enrich] Error enrich ${link}`); + console.log(`[enrich] Recover: plain content used for ${link}`); return unenrichableItem; } } diff --git a/packages/cli/src/main.ts b/packages/cli/src/main.ts index 37c744a..b16d21f 100644 --- a/packages/cli/src/main.ts +++ b/packages/cli/src/main.ts @@ -15,6 +15,7 @@ import { getTemplateData } from "./lib/get-template-data"; import { renderAtom } from "./lib/render-atom"; import { renderUserSnippets } from "./lib/render-user-snippets"; import { cliVersion } from "./utils/version"; +import { isNotNull } from "./utils/is-not-null"; async function run() { const startTime = performance.now(); @@ -26,9 +27,9 @@ async function run() { const cache = await getCache({ cacheUrl: config.cacheUrl, localCacheFile: systemFiles.localCacheFile }); - const enrichedSources: EnrichedSource[] = await Promise.all( - config.sources.map((source) => enrich({ source, cache, config })) - ); + const enrichedSources: EnrichedSource[] = ( + await Promise.all(config.sources.map((source) => enrich({ source, cache, config }))) + ).filter(isNotNull); const executableTemplate = compileTemplates({ userTemplates: userFiles.userTemplateFiles, diff --git a/packages/cli/src/utils/is-not-null.ts b/packages/cli/src/utils/is-not-null.ts new file mode 100644 index 0000000..9c72d8a --- /dev/null +++ b/packages/cli/src/utils/is-not-null.ts @@ -0,0 +1,3 @@ +export function isNotNull(maybeNull: T | null): maybeNull is T { + return maybeNull !== null; +}