2018-02-16 22:32:24 +00:00
|
|
|
{
|
2018-05-05 07:04:42 +00:00
|
|
|
"name": "sourcecred",
|
2018-02-16 22:32:24 +00:00
|
|
|
"version": "0.1.0",
|
|
|
|
"private": true,
|
|
|
|
"dependencies": {
|
2018-03-19 22:31:08 +00:00
|
|
|
"aphrodite": "^2.1.0",
|
deps: add `better-sqlite3` (#836)
Summary:
I selected this over the alternatives, `sqlite` and `sqlite3`, primarily
because its README explicitly acknowledges that using asynchronous APIs
for CPU-bound or serialized work units are worse than useless. To me,
this is a sign that the maintainer has his head on straight.
The many-fold performance increase over `sqlite` and `sqlite3` is nice
to have, too.
For now, we use my fork of the project, which includes a critical patch
to support private in-memory databases via SQLite’s standard `:memory:`
filepath. When this patch is merged upstream, we can move back to
mainline.
Test Plan:
The following session demonstrates the basic API and validates that the
install has completed successfully:
```js
const Database = require("better-sqlite3");
const db = new Database("/tmp/irrelevant", {memory: true});
db.prepare("CREATE TABLE pythagorean_triples (x, y, z)").run();
const insert = db.prepare("INSERT INTO pythagorean_triples VALUES (?, ?, ?)");
const get = db.prepare(
"SELECT rowid, x * x + y * y AS xxyy, z * z AS zz FROM pythagorean_triples"
);
function print(x) {
console.log(JSON.stringify(x));
}
print(insert.run(3, 4, 5));
print(get.all());
print(insert.run(5, 12, 13));
print(get.all());
db.prepare("DELETE FROM pythagorean_triples").run();
print(get.all());
```
It prints:
```js
{"changes":1,"lastInsertROWID":1}
[{"rowid":1,"xxyy":25,"zz":25}]
{"changes":1,"lastInsertROWID":2}
[{"rowid":1,"xxyy":25,"zz":25},{"rowid":2,"xxyy":169,"zz":169}]
[]
```
wchargin-branch: dep-better-sqlite3
2018-09-14 01:20:10 +00:00
|
|
|
"better-sqlite3": "wchargin/better-sqlite3#wchargin-private-inmemory-db",
|
2018-07-27 19:38:40 +00:00
|
|
|
"chalk": "1.1.3",
|
|
|
|
"commonmark": "^0.28.1",
|
|
|
|
"express": "^4.16.3",
|
|
|
|
"fs-extra": "3.0.1",
|
2018-08-15 19:01:27 +00:00
|
|
|
"history": "^3.0.0",
|
2018-07-27 19:38:40 +00:00
|
|
|
"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",
|
|
|
|
"mkdirp": "^0.5.1",
|
|
|
|
"object-assign": "4.1.1",
|
2018-09-01 17:42:30 +00:00
|
|
|
"pako": "^1.0.6",
|
2018-07-27 19:38:40 +00:00
|
|
|
"promise": "8.0.1",
|
2018-07-27 20:27:19 +00:00
|
|
|
"react": "^16.4.1",
|
|
|
|
"react-dom": "^16.4.1",
|
2018-07-27 19:38:40 +00:00
|
|
|
"react-router": "3.2.1",
|
2018-08-22 18:37:29 +00:00
|
|
|
"retry": "^0.12.0",
|
2018-07-27 19:38:40 +00:00
|
|
|
"tmp": "^0.0.33",
|
|
|
|
"whatwg-fetch": "2.0.3"
|
|
|
|
},
|
|
|
|
"devDependencies": {
|
2018-02-17 21:28:47 +00:00
|
|
|
"babel-core": "6.26.0",
|
|
|
|
"babel-eslint": "7.2.3",
|
|
|
|
"babel-jest": "20.0.3",
|
|
|
|
"babel-loader": "7.1.2",
|
Target latest Node for backend applications (#213)
Summary:
Consequently, Babel won’t transform classes to their roughly equivalent
ES5 counterparts, etc.
Test Plan:
Create `src/classy.js` with `class X {}; console.log(X);`. Then, add a
build target for `classy: resolveApp("src/classy.js"),` in `paths.js`.
Use `yarn backend` and inspect the contents of `bin/classy.js`; in
particular, look at the definition of `X` (whatever the argument to
`console.log` is). Before this commit, the result will be a big
complicated mess. After this commit, it will be `class X {}`.
Note also that `yarn travis --full` passes, indicating that the two
manual tests, which call out to the utilities in `bin/`, still work.
wchargin-branch: target-node
2018-05-05 02:22:39 +00:00
|
|
|
"babel-plugin-transform-es2015-for-of": "^6.23.0",
|
2018-02-17 21:28:47 +00:00
|
|
|
"babel-preset-react-app": "^3.1.1",
|
|
|
|
"babel-runtime": "6.26.0",
|
2018-08-10 20:15:49 +00:00
|
|
|
"copy-webpack-plugin": "^4.5.2",
|
2018-02-17 21:28:47 +00:00
|
|
|
"css-loader": "0.28.7",
|
|
|
|
"dotenv": "4.0.0",
|
|
|
|
"dotenv-expand": "4.0.1",
|
2018-07-27 19:38:40 +00:00
|
|
|
"enzyme": "^3.3.0",
|
|
|
|
"enzyme-adapter-react-16": "^1.1.1",
|
|
|
|
"enzyme-to-json": "^3.3.3",
|
2018-02-17 21:28:47 +00:00
|
|
|
"eslint": "4.10.0",
|
|
|
|
"eslint-config-react-app": "^2.1.0",
|
2018-09-17 21:11:39 +00:00
|
|
|
"eslint-plugin-flowtype": "2.50.0",
|
2018-02-17 21:28:47 +00:00
|
|
|
"eslint-plugin-import": "2.8.0",
|
|
|
|
"eslint-plugin-jsx-a11y": "5.1.1",
|
|
|
|
"eslint-plugin-react": "7.4.0",
|
|
|
|
"file-loader": "1.1.5",
|
2018-09-06 20:37:29 +00:00
|
|
|
"flow-bin": "^0.80.0",
|
2018-09-26 01:48:54 +00:00
|
|
|
"jest": "^23.6.0",
|
2018-07-27 19:38:40 +00:00
|
|
|
"jest-fetch-mock": "^1.6.5",
|
2018-06-04 20:02:17 +00:00
|
|
|
"prettier": "^1.13.4",
|
2018-02-17 21:28:47 +00:00
|
|
|
"raf": "3.4.0",
|
|
|
|
"react-dev-utils": "^5.0.0",
|
2018-07-27 19:38:40 +00:00
|
|
|
"static-site-generator-webpack-plugin": "^3.4.1",
|
2018-02-17 21:28:47 +00:00
|
|
|
"url-loader": "0.6.2",
|
|
|
|
"webpack": "3.8.1",
|
|
|
|
"webpack-dev-server": "2.9.4",
|
|
|
|
"webpack-manifest-plugin": "1.3.2",
|
2018-07-27 19:38:40 +00:00
|
|
|
"webpack-node-externals": "^1.7.2"
|
2018-02-16 22:32:24 +00:00
|
|
|
},
|
|
|
|
"scripts": {
|
2018-02-18 09:59:28 +00:00
|
|
|
"prettify": "prettier --write '**/*.js'",
|
2018-03-02 22:39:54 +00:00
|
|
|
"check-pretty": "prettier --list-different '**/*.js'",
|
2018-09-05 04:45:10 +00:00
|
|
|
"start": "NODE_ENV=development webpack-dev-server --config config/webpack.config.web.js",
|
|
|
|
"build": "NODE_ENV=production webpack --config config/webpack.config.web.js",
|
2018-09-05 19:28:27 +00:00
|
|
|
"backend": "NODE_ENV=development webpack --config config/webpack.config.backend.js",
|
2018-07-31 17:53:10 +00:00
|
|
|
"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 19:56:25 +00:00
|
|
|
"sharness": "make -sC ./sharness prove PROVE_OPTS=-f TEST_OPTS='--chain-lint'",
|
|
|
|
"sharness-full": "make -sC ./sharness prove PROVE_OPTS=-f TEST_OPTS='--chain-lint --long'",
|
2018-07-31 17:53:10 +00:00
|
|
|
"coverage": "npm run unit -- --coverage",
|
2018-03-02 22:39:54 +00:00
|
|
|
"flow": "flow",
|
2018-07-31 17:53:10 +00:00
|
|
|
"lint": "eslint src config --max-warnings 0"
|
2018-02-17 21:28:47 +00:00
|
|
|
},
|
2018-09-27 02:28:41 +00:00
|
|
|
"license": "MIT + Apache-2",
|
2018-02-17 21:28:47 +00:00
|
|
|
"jest": {
|
|
|
|
"collectCoverageFrom": [
|
|
|
|
"src/**/*.{js,jsx,mjs}"
|
|
|
|
],
|
|
|
|
"setupFiles": [
|
2018-07-26 22:08:14 +00:00
|
|
|
"<rootDir>/config/polyfills.js",
|
|
|
|
"<rootDir>/config/jest/setupJest.js"
|
2018-02-17 21:28:47 +00:00
|
|
|
],
|
|
|
|
"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",
|
|
|
|
"mjs",
|
|
|
|
"js",
|
|
|
|
"json",
|
|
|
|
"web.jsx",
|
|
|
|
"jsx",
|
|
|
|
"node"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"babel": {
|
|
|
|
"presets": [
|
2018-05-05 02:19:45 +00:00
|
|
|
"./config/babel"
|
2018-02-17 21:28:47 +00:00
|
|
|
]
|
|
|
|
},
|
2018-07-27 21:32:30 +00:00
|
|
|
"files": [
|
|
|
|
"/bin",
|
|
|
|
"/build"
|
2018-09-02 23:11:56 +00:00
|
|
|
]
|
2018-02-16 22:32:24 +00:00
|
|
|
}
|