sourcecred/package.json

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

150 lines
4.4 KiB
JSON
Raw Normal View History

{
"name": "sourcecred",
"version": "0.5.0",
"private": false,
"dependencies": {
"aphrodite": "^2.4.0",
"base64url": "^3.0.1",
"better-sqlite3": "^7.0.0",
"bottleneck": "^2.19.5",
"chalk": "^4.0.0",
"commonmark": "^0.29.1",
"d3-array": "^2.4.0",
"d3-format": "^1.4.3",
"d3-scale": "^3.2.1",
"d3-scale-chromatic": "^1.5.0",
"d3-shape": "^1.3.7",
"d3-time": "^1.1.0",
"d3-time-format": "^2.2.3",
"deep-freeze": "^0.0.1",
"express": "^4.17.1",
"fs-extra": "^9.0.0",
"globby": "^11.0.0",
"history": "^3.3.0",
"htmlparser2": "^4.1.0",
"isomorphic-fetch": "^2.2.1",
"json-stable-stringify": "^1.0.1",
"lodash.clonedeep": "^4.5.0",
"lodash.isequal": "^4.5.0",
"lodash.sortby": "^4.7.0",
"object-assign": "^4.1.1",
"pako": "^1.0.11",
"promise": "^8.1.0",
"react": "^16.13.0",
"react-dom": "^16.13.0",
"react-icons": "^3.9.0",
"react-markdown": "^4.3.1",
"react-router": "^3.2.6",
"recharts": "^1.8.5",
"remove-markdown": "^0.3.0",
Retry GitHub queries with exponential backoff (#699) Summary: This patch adds independent exponential backoff to each individual GitHub GraphQL query. We remove the fixed `GITHUB_DELAY_MS` delay before each query in favor of this solution, which requires no additional configuration (thus resolving a TODO in the process). We use the NPM module `retry` with its default settings: namely, a maximum of 10 retries with factor-2 backoff starting at 1000ms. Empirically, it seems very unlikely that we should require much more than 2 retries for a query. (See Test Plan for more details.) This is both a short-term unblocker and a good kind of thing to have in the long term. Test Plan: Note that `yarn test --full` passes, including `fetchGithubRepoTest.sh`. Consider manual testing as follows. Add `console.info` statements in `retryGithubFetch`, then load a large repository like TensorFlow, and observe the output: ```shell $ node bin/sourcecred.js load --plugin github tensorflow/tensorflow 2>&1 | ts -s '%.s' 0.252566 Fetching repo... 0.258422 Trying... 5.203014 Trying... [snip] 1244.521197 Trying... 1254.848044 Will retry (n=1)... 1260.893334 Trying... 1271.547368 Trying... 1282.094735 Will retry (n=1)... 1283.349192 Will retry (n=2)... 1289.188728 Trying... [snip] 1741.026869 Ensuring no more pages... 1742.139978 Creating view... 1752.023697 Stringifying... 1754.697116 Writing... 1754.697772 Done. ``` This took just under half an hour, with 264 queries total, of which: - 225 queries required 0 retries; - 38 queries required exactly 1 retry; - 1 query required exactly 2 retries; and - 0 queries required 3 or more retries. wchargin-branch: github-backoff
2018-08-22 11:37:29 -07:00
"retry": "^0.12.0",
"rimraf": "^3.0.2",
"svg-react-loader": "^0.4.6",
"tmp": "0.0.33",
"whatwg-fetch": "^2.0.4"
},
"devDependencies": {
"@babel/core": "^7.8.7",
"@babel/plugin-proposal-class-properties": "^7.8.3",
2020-03-14 12:31:02 -07:00
"@babel/plugin-syntax-bigint": "^7.8.3",
"@babel/preset-env": "^7.8.7",
"@babel/preset-flow": "^7.8.3",
"@babel/preset-react": "^7.8.3",
"babel-eslint": "^10.1.0",
"babel-jest": "^26.0.1",
"babel-loader": "^8.0.6",
"copy-webpack-plugin": "^5.1.1",
"css-loader": "^3.4.2",
"dotenv": "^8.2.0",
"dotenv-expand": "^5.1.0",
"enzyme": "^3.11.0",
"enzyme-adapter-react-16": "^1.15.2",
"enzyme-to-json": "^3.4.4",
"eslint": "^6.8.0",
"eslint-plugin-flowtype": "^4.6.0",
"eslint-plugin-import": "^2.20.1",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-react": "7.16.0",
"file-loader": "^6.0.0",
"flow-bin": "^0.127.0",
"jest": "^26.0.1",
"jest-fetch-mock": "^3.0.2",
"npm-run-all": "^4.1.5",
"prettier": "^2.0.1",
"raf": "^3.4.1",
"react-dev-utils": "^5.0.3",
"static-site-generator-webpack-plugin": "^3.4.2",
"url-loader": "^4.0.0",
"webpack": "^4.42.0",
"webpack-cli": "^3.3.11",
"webpack-dev-server": "^3.10.3",
"webpack-manifest-plugin": "^2.2.0",
"webpack-node-externals": "^1.7.2"
},
"greenkeeper": {
"ignore": [
"history",
"react-dev-utils",
"react-router",
"whatwg-fetch",
"tmp"
]
},
"scripts": {
"prettify": "prettier --write '**/*.js'",
"check-pretty": "prettier --list-different '**/*.js'",
"start": "NODE_ENV=development webpack-dev-server --config config/webpack.config.web.js",
cli: add `site` subcommand (#1905) Summary: The `sourcecred site` command now sets up a static site for a cred instance, which may be deployed to (e.g.) GitHub Pages or IPFS. This implementation sets up a directory structure where the site is contained in a `site/` subdirectory whose top-level entries are also symbolically linked from the root of the instance. Thus: ``` my-instance/ sourcecred.json config/ output/ site/ index.html favicon.png static/ static/js/... index.html -> site/index.html favicon.png -> site/favicon.png static -> site/static ``` The purpose of this is to enable the instance to be served directly as a GitHub Pages site without the user having to navigate to a URL that includes a `site/` path component. It’s not a perfect solution. The top level of the instance is cluttered. If we have any web pages other than the root directory, then they’ll appear at top level, too. If we change the structure, we’ll need to teach `sourcecred site` to clean up vestiges of old structures. We also won’t be able to have any pages called `config` or `output` or `cache` due to namespace collision. But we think that it’s at least a reasonable stopgap, and doesn’t incur much conceptual overhead. This isn’t tested or officially supported on Windows. Paired with @decentralion. Test Plan: Run `yarn build` to build the frontend and backend, then `cd` into a SourceCred instance and run `node "${OLDPWD}/bin/sourcecred.js site`. Note that a `site/` directory is created, and when the static site is served it works from either `site/` or the instance root. Note that this all works when actually deployed to GitHub Pages as well. wchargin-branch: cli-site
2020-06-27 23:21:56 -07:00
"build": "run-p build:* && ln -sf ../build ./bin/site-template",
"build:frontend": "NODE_ENV=production webpack --config config/webpack.config.web.js",
"build:backend": "NODE_ENV=development webpack --config config/webpack.config.backend.js",
"api": "webpack --config config/webpack.config.api.js",
"test": "node ./config/test.js",
"unit": "BABEL_ENV=test NODE_ENV=test jest --env=jsdom",
Add `sharness` for shell-based testing (#597) Summary: We will shortly want to perform testing of shell scripts; it makes the most sense to do so via the shell. We could roll our own testing framework, but it makes more sense to use an existing one. By choosing Sharness, we’re in good company: `go-ipfs` and `go-multihash` use it as well, and it’s derived from Git’s testing library. I like it a lot. For now, we need a dummy test file; our test runner will fail if there are no tests to run. As soon as we have a real test, we can remove this. This commit was generated by following the “per-project installation” instructions at https://github.com/chriscool/sharness, and by additionally including that repository’s `COPYING` file as `SHARNESS_LICENSE`, with a header prepended. I considered instead adding Sharness as a submodule, which is supported and has clear advantages (e.g., you can update the thing), but opted to avoid the complexity of submodules for now. Test Plan: Create the following tests in the `sharness` directory: ```shell $ cat sharness/good.t #!/bin/sh test_description='demo of passing tests' . ./sharness.sh test_expect_success "look at me go" true test_expect_success EXPENSIVE "this may take a while" 'sleep 2' test_done # vim: ft=sh $ cat sharness/bad.t #!/bin/sh test_description='demo of failing tests' . ./sharness.sh test_expect_success "I don't feel so good" false test_done # vim: ft=sh ``` Note that `yarn sharness` and `yarn test` fail appropriately. Note that `yarn sharness-full` fails appropriately after taking two extra seconds, and `yarn test --full` runs the latter. Each failure message should print the name of the failing test case, not just the suite name, and should indicate that the passing tests passed. Then, remove `sharness/bad.t`, and note that the above commands all pass, with the `--full` variants still taking longer. Finally, remove `sharness/good.t`, and note that the above commands all pass (and all pass quickly). wchargin-branch: add-sharness
2018-08-06 12:56:25 -07:00
"sharness": "make -sC ./sharness prove PROVE_OPTS=-f TEST_OPTS='--chain-lint'",
"sharness-full": "make -sC ./sharness prove PROVE_OPTS=-vf TEST_OPTS='-v --chain-lint --long'",
"coverage": "yarn run unit --coverage",
"flow": "flow",
"lint": "eslint src config --max-warnings 0"
},
"license": "(MIT OR Apache-2.0)",
"jest": {
"collectCoverageFrom": [
"src/**/*.{js,jsx,mjs}"
],
"setupFiles": [
"<rootDir>/config/polyfills.js",
"<rootDir>/config/jest/setupJest.js"
],
"testMatch": [
"<rootDir>/src/**/__tests__/**/*.{js,jsx,mjs}",
"<rootDir>/src/**/?(*.)(spec|test).{js,jsx,mjs}"
],
"testEnvironment": "node",
"testURL": "http://localhost",
"transform": {
"^.+\\.(js|jsx|mjs)$": "<rootDir>/node_modules/babel-jest",
"^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
"^(?!.*\\.(js|jsx|mjs|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
},
"transformIgnorePatterns": [
"[/\\\\]node_modules[/\\\\].+\\.(js|jsx|mjs)$"
],
"moduleNameMapper": {
"^react-native$": "react-native-web"
},
"moduleFileExtensions": [
"web.js",
"js",
"json",
"web.jsx",
"jsx",
"node",
"mjs"
]
},
"files": [
"/bin",
"/build"
]
}