diff --git a/packages/client/README.md b/packages/client/README.md
index 99af730..d3478f9 100644
--- a/packages/client/README.md
+++ b/packages/client/README.md
@@ -4,7 +4,7 @@
[](http://npm-stat.com/charts.html?package=streams-client&from=2018-10-13)
[](http://opensource.org/licenses/MIT)
-> Streams Client implements a React Client
+> Streams Client implements an Apollo GraphQL Client
## Scripts
diff --git a/packages/client/package-lock.json b/packages/client/package-lock.json
index 71d58d7..6d2b009 100644
--- a/packages/client/package-lock.json
+++ b/packages/client/package-lock.json
@@ -821,6 +821,17 @@
"resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz",
"integrity": "sha1-ioP5M1x4YO/6Lu7KJUMyqgru2PI="
},
+ "@types/async": {
+ "version": "2.0.50",
+ "resolved": "https://registry.npmjs.org/@types/async/-/async-2.0.50.tgz",
+ "integrity": "sha512-VMhZMMQgV1zsR+lX/0IBfAk+8Eb7dPVMWiQGFAt3qjo5x7Ml6b77jUo0e1C3ToD+XRDXqtrfw+6AB0uUsPEr3Q==",
+ "optional": true
+ },
+ "@types/zen-observable": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.0.tgz",
+ "integrity": "sha512-te5lMAWii1uEJ4FwLjzdlbw3+n0FZNOvFXHxQDKeT0dilh7HOzdMzV2TrJVUzq8ep7J4Na8OUYPRLSQkJHAlrg=="
+ },
"@webassemblyjs/ast": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz",
@@ -1145,6 +1156,81 @@
"normalize-path": "^2.1.1"
}
},
+ "apollo-cache": {
+ "version": "1.1.21",
+ "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.1.21.tgz",
+ "integrity": "sha512-5ErNb78KHtrJNimkDBTEigcvHkIqUmS7QJIk4lpZZ+XLVVgvk2fD+GhD1PLP+s8vHfAKVbO6vdbRxCCjGGrh5w==",
+ "requires": {
+ "apollo-utilities": "^1.0.26"
+ }
+ },
+ "apollo-cache-inmemory": {
+ "version": "1.3.11",
+ "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.3.11.tgz",
+ "integrity": "sha512-fSoyjBV5RV57J3i/VHDDB74ZgXc0PFiogheNFHEhC0mL6rg5e/DjTx0Vg+csIBk23gvlzTvV+eypx7Q2NJ+dYg==",
+ "requires": {
+ "apollo-cache": "^1.1.21",
+ "apollo-utilities": "^1.0.26",
+ "optimism": "^0.6.6"
+ }
+ },
+ "apollo-client": {
+ "version": "2.4.7",
+ "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.4.7.tgz",
+ "integrity": "sha512-6aAm+16AFBYZhJF8eKxrup6AbYni01InDiwTfZhMMTP2xaXQWjsQnfaHbI2oE+hd3+AZFy1drkse8RZKghR/WQ==",
+ "requires": {
+ "@types/async": "2.0.50",
+ "@types/zen-observable": "^0.8.0",
+ "apollo-cache": "1.1.21",
+ "apollo-link": "^1.0.0",
+ "apollo-link-dedup": "^1.0.0",
+ "apollo-utilities": "1.0.26",
+ "symbol-observable": "^1.0.2",
+ "zen-observable": "^0.8.0"
+ }
+ },
+ "apollo-link": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.4.tgz",
+ "integrity": "sha512-B1z+9H2nTyWEhMXRFSnoZ1vSuAYP+V/EdUJvRx9uZ8yuIBZMm6reyVtr1n0BWlKeSFyPieKJy2RLzmITAAQAMQ==",
+ "requires": {
+ "apollo-utilities": "^1.0.0",
+ "zen-observable-ts": "^0.8.11"
+ }
+ },
+ "apollo-link-dedup": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/apollo-link-dedup/-/apollo-link-dedup-1.0.11.tgz",
+ "integrity": "sha512-RcvkXR0CNbQcsw6LdrPksGa+9YjZ1ghk0k2PKal6rSBCyyqzokcBawXOtoMN8q+0FLR1dGs5GnAQVeucQuY28g==",
+ "requires": {
+ "apollo-link": "^1.2.4"
+ }
+ },
+ "apollo-link-http": {
+ "version": "1.5.7",
+ "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.7.tgz",
+ "integrity": "sha512-EZ9nynHjwYCpGYP5IsRrZGTWidUVpshk7MuSG4joqGtJMwpFCgMQz+y3BHdUhowHtfAd9z60XmeOTG9FJolb8A==",
+ "requires": {
+ "apollo-link": "^1.2.4",
+ "apollo-link-http-common": "^0.2.6"
+ }
+ },
+ "apollo-link-http-common": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.6.tgz",
+ "integrity": "sha512-LUOMWvrZuBP1hyWLBXyaW0KyFeKo79j+k3N+Q4HSkXKbLibnllXQ+JxxoSKGhm0bhREygiLtJAG9JnGlhxGO/Q==",
+ "requires": {
+ "apollo-link": "^1.2.4"
+ }
+ },
+ "apollo-utilities": {
+ "version": "1.0.26",
+ "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.0.26.tgz",
+ "integrity": "sha512-URw7o3phymliqYCYatcird2YRPUU2eWCNvip64U9gQrX56mEfK4m99yBIDCMTpmcvOFsKLii1sIEZsHIs/bvnw==",
+ "requires": {
+ "fast-json-stable-stringify": "^2.0.0"
+ }
+ },
"aproba": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
@@ -1271,6 +1357,11 @@
"integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
"dev": true
},
+ "asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
+ },
"asn1": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
@@ -2395,6 +2486,11 @@
"integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
"dev": true
},
+ "core-js": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.0.tgz",
+ "integrity": "sha512-kLRC6ncVpuEW/1kwrOXYX6KQASCVtrh1gQr/UiaVgFlf9WE5Vp+lNe5+h3LuMr5PAucWnnEXwH0nQHRH/gpGtw=="
+ },
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
@@ -3064,6 +3160,14 @@
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
"dev": true
},
+ "encoding": {
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
+ "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
+ "requires": {
+ "iconv-lite": "~0.4.13"
+ }
+ },
"end-of-stream": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
@@ -3469,8 +3573,7 @@
"fast-json-stable-stringify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
- "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
- "dev": true
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
},
"fast-levenshtein": {
"version": "2.0.6",
@@ -3493,6 +3596,26 @@
"websocket-driver": ">=0.5.1"
}
},
+ "fbjs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz",
+ "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==",
+ "requires": {
+ "core-js": "^2.4.1",
+ "fbjs-css-vars": "^1.0.0",
+ "isomorphic-fetch": "^2.1.1",
+ "loose-envify": "^1.0.0",
+ "object-assign": "^4.1.0",
+ "promise": "^7.1.1",
+ "setimmediate": "^1.0.5",
+ "ua-parser-js": "^0.7.18"
+ }
+ },
+ "fbjs-css-vars": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.1.tgz",
+ "integrity": "sha512-IM+v/C40MNZWqsLErc32e0TyIk/NhkkQZL0QmjBh6zi1eXv0/GeVKmKmueQX7nn9SXQBQbTUcB8zuexIF3/88w=="
+ },
"figgy-pudding": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
@@ -4505,6 +4628,19 @@
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
"dev": true
},
+ "graphql": {
+ "version": "14.0.2",
+ "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.0.2.tgz",
+ "integrity": "sha512-gUC4YYsaiSJT1h40krG3J+USGlwhzNTXSb4IOZljn9ag5Tj+RkoXrWp+Kh7WyE3t1NCfab5kzCuxBIvOMERMXw==",
+ "requires": {
+ "iterall": "^1.2.2"
+ }
+ },
+ "graphql-tag": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.10.0.tgz",
+ "integrity": "sha512-9FD6cw976TLLf9WYIUPCaaTpniawIjHWZSwIRZSjrfufJamcXbVVYfN2TWvJYbw0Xf2JjYbl1/f2+wDnBVw3/w=="
+ },
"handle-thing": {
"version": "1.2.5",
"resolved": "http://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz",
@@ -4863,6 +4999,14 @@
"integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
"dev": true
},
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
"icss-replace-symbols": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
@@ -4896,6 +5040,11 @@
"integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=",
"dev": true
},
+ "immutable-tuple": {
+ "version": "0.4.9",
+ "resolved": "https://registry.npmjs.org/immutable-tuple/-/immutable-tuple-0.4.9.tgz",
+ "integrity": "sha512-LWbJPZnidF8eczu7XmcnLBsumuyRBkpwIRPCZxlojouhBo5jEBO4toj6n7hMy6IxHU/c+MqDSWkvaTpPlMQcyA=="
+ },
"import-cwd": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
@@ -5341,8 +5490,7 @@
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
- "dev": true
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
},
"is-symbol": {
"version": "1.0.2",
@@ -5400,12 +5548,26 @@
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
"dev": true
},
+ "isomorphic-fetch": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
+ "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
+ "requires": {
+ "node-fetch": "^1.0.1",
+ "whatwg-fetch": ">=0.10.0"
+ }
+ },
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
"dev": true
},
+ "iterall": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.2.2.tgz",
+ "integrity": "sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA=="
+ },
"js-base64": {
"version": "2.4.9",
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.9.tgz",
@@ -5627,6 +5789,16 @@
"integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
"dev": true
},
+ "lodash.flowright": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.flowright/-/lodash.flowright-3.5.0.tgz",
+ "integrity": "sha1-K1//OZcW1+fcVyT+k0n2cGUYTWc="
+ },
+ "lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
+ },
"lodash.memoize": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
@@ -6123,6 +6295,15 @@
"lower-case": "^1.1.1"
}
},
+ "node-fetch": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
+ "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
+ "requires": {
+ "encoding": "^0.1.11",
+ "is-stream": "^1.0.1"
+ }
+ },
"node-forge": {
"version": "0.7.5",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz",
@@ -6614,6 +6795,14 @@
"is-wsl": "^1.1.0"
}
},
+ "optimism": {
+ "version": "0.6.8",
+ "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.6.8.tgz",
+ "integrity": "sha512-bN5n1KCxSqwBDnmgDnzMtQTHdL+uea2HYFx1smvtE+w2AMl0Uy31g0aXnP/Nt85OINnMJPRpJyfRQLTCqn5Weg==",
+ "requires": {
+ "immutable-tuple": "^0.4.9"
+ }
+ },
"original": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
@@ -8375,6 +8564,14 @@
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
"dev": true
},
+ "promise": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+ "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+ "requires": {
+ "asap": "~2.0.3"
+ }
+ },
"promise-inflight": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
@@ -8572,6 +8769,19 @@
"scheduler": "^0.11.2"
}
},
+ "react-apollo": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/react-apollo/-/react-apollo-2.3.2.tgz",
+ "integrity": "sha512-3lU9iqmj4KMIZvlWWSuLihxMGLEAL6oNmnSTWrb3/mRP36Zy0zJD4rdaonDx4WzqFYQAnUPaOiFnHGp0UQUTwA==",
+ "requires": {
+ "fbjs": "^1.0.0",
+ "hoist-non-react-statics": "^3.0.0",
+ "invariant": "^2.2.2",
+ "lodash.flowright": "^3.5.0",
+ "lodash.isequal": "^4.5.0",
+ "prop-types": "^15.6.0"
+ }
+ },
"react-dom": {
"version": "16.6.3",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.6.3.tgz",
@@ -9097,8 +9307,7 @@
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"sass-graph": {
"version": "2.2.4",
@@ -9328,8 +9537,7 @@
"setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
- "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
- "dev": true
+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
},
"setprototypeof": {
"version": "1.1.0",
@@ -10099,6 +10307,11 @@
"has-flag": "^3.0.0"
}
},
+ "symbol-observable": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
+ "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
+ },
"tapable": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz",
@@ -10456,6 +10669,11 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
+ "ua-parser-js": {
+ "version": "0.7.19",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz",
+ "integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ=="
+ },
"uglify-js": {
"version": "3.4.9",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
@@ -11530,6 +11748,11 @@
"integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
"dev": true
},
+ "whatwg-fetch": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz",
+ "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q=="
+ },
"which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
@@ -11716,6 +11939,19 @@
"requires": {
"stylus": "^0.54.5"
}
+ },
+ "zen-observable": {
+ "version": "0.8.11",
+ "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.11.tgz",
+ "integrity": "sha512-N3xXQVr4L61rZvGMpWe8XoCGX8vhU35dPyQ4fm5CY/KDlG0F75un14hjbckPXTDuKUY6V0dqR2giT6xN8Y4GEQ=="
+ },
+ "zen-observable-ts": {
+ "version": "0.8.11",
+ "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.11.tgz",
+ "integrity": "sha512-8bs7rgGV4kz5iTb9isudkuQjtWwPnQ8lXq6/T76vrepYZVMsDEv6BXaEA+DHdJSK3KVLduagi9jSpSAJ5NgKHw==",
+ "requires": {
+ "zen-observable": "^0.8.0"
+ }
}
}
}
diff --git a/packages/client/package.json b/packages/client/package.json
index c5f874d..ff7f527 100644
--- a/packages/client/package.json
+++ b/packages/client/package.json
@@ -56,11 +56,17 @@
"yeticss": "^7.4.1"
},
"dependencies": {
+ "apollo-cache-inmemory": "1.3.11",
+ "apollo-client": "2.4.7",
+ "apollo-link-http": "1.5.7",
"classnames": "^2.2.6",
"google-map-react": "^1.1.1",
+ "graphql": "14.0.2",
+ "graphql-tag": "2.10.0",
"leaflet": "^1.3.4",
"primer": "^10.10.2",
"react": "^16.6.3",
+ "react-apollo": "2.3.2",
"react-dom": "^16.6.3",
"react-leaflet": "^2.1.2",
"react-router-dom": "^4.3.1"
diff --git a/packages/client/src/data/stations.js b/packages/client/src/data/stations.js
deleted file mode 100644
index 316f9ea..0000000
--- a/packages/client/src/data/stations.js
+++ /dev/null
@@ -1,10 +0,0 @@
-const list = [
- { id: '1', lat: 52.380528, lng: 4.900263, text: 'station 1', isFocussed: true, isSelected: true },
- { id: '2', lat: 52.378851, lng: 4.901465, text: 'station 2', isFocussed: false, isSelected: false },
- { id: '3', lat: 52.374502, lng: 4.889878, text: 'station 3', isFocussed: false, isSelected: false },
- { id: '4', lat: 52.373244, lng: 4.890908, text: 'station 4', isFocussed: false, isSelected: false },
- { id: '5', lat: 52.368109, lng: 4.889105, text: 'station 5', isFocussed: false, isSelected: false },
- { id: '6', lat: 52.369000, lng: 4.905671, text: 'station 6', isFocussed: false, isSelected: false },
-]
-
-export default list
diff --git a/packages/client/src/graphql/client.js b/packages/client/src/graphql/client.js
new file mode 100644
index 0000000..3bdd0d2
--- /dev/null
+++ b/packages/client/src/graphql/client.js
@@ -0,0 +1,17 @@
+import { ApolloClient } from 'apollo-client'
+import { InMemoryCache } from 'apollo-cache-inmemory'
+import { HttpLink } from 'apollo-link-http'
+import { typeDefs } from './resolvers'
+
+const cache = new InMemoryCache()
+
+const client = new ApolloClient({
+ cache,
+ link: new HttpLink({
+ uri: process.env.SERVER_URL,
+ }),
+ typeDefs,
+})
+
+
+export default client
diff --git a/packages/client/src/graphql/query.js b/packages/client/src/graphql/query.js
new file mode 100644
index 0000000..3d8e611
--- /dev/null
+++ b/packages/client/src/graphql/query.js
@@ -0,0 +1,17 @@
+/* eslint import/prefer-default-export: 0 */
+import gql from 'graphql-tag'
+
+export const STATIONS = gql`
+ query GetStations {
+ stations(pageSize: 10) {
+ stations {
+ id
+ lat
+ lng
+ text
+ isFocussed
+ isSelected
+ }
+ }
+ }
+`
diff --git a/packages/client/src/graphql/resolvers.js b/packages/client/src/graphql/resolvers.js
new file mode 100644
index 0000000..4b6f063
--- /dev/null
+++ b/packages/client/src/graphql/resolvers.js
@@ -0,0 +1,26 @@
+/* eslint import/prefer-default-export: 0 */
+import gql from 'graphql-tag'
+
+export const typeDefs = gql`
+ extend type Query {
+ stations(
+ pageSize: Int
+ after: String
+ ): StationConnection!
+ station(id: String!): Station
+ }
+
+ extend type StationConnection {
+ cursor: String!
+ hasMore: Boolean!
+ stations: [Station]!
+ }
+
+ extend type Station {
+ id: String!
+ lat: Float!
+ lng: Float!
+ text: String!
+ isFocussed: Boolean!
+ isSelected: Boolean!
+ }`
diff --git a/packages/client/src/index.js b/packages/client/src/index.js
index a8a1c93..87d061a 100644
--- a/packages/client/src/index.js
+++ b/packages/client/src/index.js
@@ -1,30 +1,32 @@
-import React from 'react';
-import ReactDOM from 'react-dom';
-import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
-import StartPage from './pages/StartPage';
-import DemoPage from './pages/DemoPage';
+import React from 'react'
+import ReactDOM from 'react-dom'
+import { ApolloProvider } from 'react-apollo'
+import { BrowserRouter, Route, Switch } from 'react-router-dom'
+import StartPage from './pages/StartPage'
+import DemoPage from './pages/DemoPage'
import { startPageRoute, demoPageRoute } from './routes'
import './index.scss'
+import client from './graphql/client'
function addDivWithIdToBody() {
- const appElement = document.createElement("div");
- appElement.id = 'app';
- document.body.appendChild(appElement);
+ const appElement = document.createElement("div")
+ appElement.id = 'app'
+ document.body.appendChild(appElement)
}
addDivWithIdToBody()
-const App = () => {
- return (
-