├── .gitignore
├── README.md
├── basic
├── .babelrc
├── .eslintrc
├── .gitignore
├── .install
│ ├── index.js
│ ├── package.json
│ └── yarn.lock
├── .watchmanconfig
├── App.js
├── App.test.js
├── LICENSE
├── README.md
├── app.json
├── components
│ ├── CreatePage.js
│ ├── ListPage.js
│ └── Post.js
├── package.json
├── server
│ ├── .gitignore
│ ├── .graphqlconfig.yml
│ ├── database
│ │ ├── datamodel.graphql
│ │ └── schema.generated.graphql
│ ├── graphcool.yml
│ ├── package.json
│ ├── src
│ │ ├── index.js
│ │ └── schema.graphql
│ └── yarn.lock
└── yarn.lock
└── renovate.json
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | .expo/
3 | npm-debug.*
4 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | > **Note:** This repository is currently outdated. Contributions are very welcome! You can compare to https://github.com/graphql-boilerplates/react-fullstack-graphql and join the [`#graphql-boilerplate`](https://graphcool.slack.com/messages/graphql-boilerplate) channel on our [Slack](https://graphcool.slack.com/) for more information.
2 |
3 | # react-native-fullstack-graphql
4 |
5 | 🚀 Starter projects for mobile applications based on React Native & GraphQL.
6 |
7 | ## Quickstart
8 |
9 | **Select a boilerplate and follow the instructions in the belonging README to get started:**
10 |
11 | - `minimal` (_coming soon_): Minimal boilerplate with basic "Hello World" functionality
12 | - [`basic`](./basic): Basic boilerplate based on a simple data model and with a GraphQL database
13 | - `advanced` (_coming soon_): Advanced boilerplate with a GraphQL database, authentication and realtime subscriptions
14 |
15 | > All projects are using [`graphql-yoga`](https://github.com/graphcool/graphql-yoga/) on the server-side and [`apollo-client`](https://www.apollographql.com/client/) for the frontend.
16 |
17 | ## Contributing [](https://slack.graph.cool)
18 |
19 | Your feedback is **very helpful**, please share your opinion and thoughts! If you have any questions, join the [`#graphql-boilerplate`](https://graphcool.slack.com/messages/graphql-boilerplate) channel on our [Slack](https://graphcool.slack.com/).
20 |
--------------------------------------------------------------------------------
/basic/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["babel-preset-expo"],
3 | "env": {
4 | "development": {
5 | "plugins": ["transform-react-jsx-source"]
6 | }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/basic/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "parser": "babel-eslint",
3 | "extends": "airbnb",
4 | "plugins": ["react", "react-native", "jsx-a11y", "import"],
5 | "rules": {
6 | "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"]}]
7 | },
8 | {
9 | "env": {
10 | "jest": true
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/basic/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | .expo/
3 | npm-debug.*
4 |
--------------------------------------------------------------------------------
/basic/.install/index.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs')
2 | const { replaceInFiles, deploy, writeEnv, getInfo } = require('graphql-boilerplate-install')
3 |
4 | module.exports = async ({ project, projectDir }) => {
5 | const templateName = 'graphql-boilerplate'
6 |
7 | replaceInFiles(['server/src/index.js', 'server/package.json', 'server/database/prisma.yml'], templateName, project)
8 |
9 | console.log('Running $ prisma deploy...')
10 |
11 | process.chdir('server/')
12 |
13 | await deploy(false)
14 | const info = await getInfo()
15 |
16 | process.chdir('../')
17 |
18 | replaceInFiles(['server/src/index.js'], '__PRISMA_ENDPOINT__', info.httpEndpoint)
19 |
20 | console.log(`\
21 | Next steps:
22 | 1. Change directory: \`cd ${projectDir}/server\`
23 | 2. Start local server: \`yarn start\` (you can now open a Playground at http://localhost:4000)
24 | 3. Change directory: \`cd ..\`
25 | 4. Start React app: \`yarn start\`
26 | 5. Open browser: http://localhost:3000
27 | `)
28 | }
29 |
--------------------------------------------------------------------------------
/basic/.install/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "install",
3 | "version": "0.0.0",
4 | "devDependencies": {
5 | "graphql-boilerplate-install": "0.1.8"
6 | },
7 | "prettier": {
8 | "semi": false,
9 | "singleQuote": true,
10 | "trailingComma": "all"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/basic/.install/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | commander@^2.9.0:
6 | version "2.13.0"
7 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c"
8 |
9 | cross-spawn@5.1.0, cross-spawn@^5.1.0:
10 | version "5.1.0"
11 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
12 | dependencies:
13 | lru-cache "^4.0.1"
14 | shebang-command "^1.2.0"
15 | which "^1.2.9"
16 |
17 | graphql-boilerplate-install@0.1.8:
18 | version "0.1.8"
19 | resolved "https://registry.yarnpkg.com/graphql-boilerplate-install/-/graphql-boilerplate-install-0.1.8.tgz#7d71b3f5908d968aaa77c524765cc1b4d7bec348"
20 | dependencies:
21 | cross-spawn "5.1.0"
22 | npm-run "4.1.2"
23 |
24 | isexe@^2.0.0:
25 | version "2.0.0"
26 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
27 |
28 | lru-cache@^4.0.1:
29 | version "4.1.1"
30 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55"
31 | dependencies:
32 | pseudomap "^1.0.2"
33 | yallist "^2.1.2"
34 |
35 | minimist@^1.2.0:
36 | version "1.2.0"
37 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
38 |
39 | npm-path@^2.0.2, npm-path@^2.0.3:
40 | version "2.0.4"
41 | resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64"
42 | dependencies:
43 | which "^1.2.10"
44 |
45 | npm-run@4.1.2:
46 | version "4.1.2"
47 | resolved "https://registry.yarnpkg.com/npm-run/-/npm-run-4.1.2.tgz#1030e1ec56908c89fcc3fa366d03a2c2ba98eb99"
48 | dependencies:
49 | cross-spawn "^5.1.0"
50 | minimist "^1.2.0"
51 | npm-path "^2.0.3"
52 | npm-which "^3.0.1"
53 | serializerr "^1.0.3"
54 | sync-exec "^0.6.2"
55 |
56 | npm-which@^3.0.1:
57 | version "3.0.1"
58 | resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa"
59 | dependencies:
60 | commander "^2.9.0"
61 | npm-path "^2.0.2"
62 | which "^1.2.10"
63 |
64 | protochain@^1.0.5:
65 | version "1.0.5"
66 | resolved "https://registry.yarnpkg.com/protochain/-/protochain-1.0.5.tgz#991c407e99de264aadf8f81504b5e7faf7bfa260"
67 |
68 | pseudomap@^1.0.2:
69 | version "1.0.2"
70 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
71 |
72 | serializerr@^1.0.3:
73 | version "1.0.3"
74 | resolved "https://registry.yarnpkg.com/serializerr/-/serializerr-1.0.3.tgz#12d4c5aa1c3ffb8f6d1dc5f395aa9455569c3f91"
75 | dependencies:
76 | protochain "^1.0.5"
77 |
78 | shebang-command@^1.2.0:
79 | version "1.2.0"
80 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
81 | dependencies:
82 | shebang-regex "^1.0.0"
83 |
84 | shebang-regex@^1.0.0:
85 | version "1.0.0"
86 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
87 |
88 | sync-exec@^0.6.2:
89 | version "0.6.2"
90 | resolved "https://registry.yarnpkg.com/sync-exec/-/sync-exec-0.6.2.tgz#717d22cc53f0ce1def5594362f3a89a2ebb91105"
91 |
92 | which@^1.2.10, which@^1.2.9:
93 | version "1.3.0"
94 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a"
95 | dependencies:
96 | isexe "^2.0.0"
97 |
98 | yallist@^2.1.2:
99 | version "2.1.2"
100 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
101 |
--------------------------------------------------------------------------------
/basic/.watchmanconfig:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/basic/App.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { ApolloProvider } from 'react-apollo'
3 | import { ApolloClient, HttpLink, InMemoryCache } from 'apollo-client-preset'
4 | import ListPage from './components/ListPage'
5 |
6 | const httpLink = new HttpLink({ uri: 'http://localhost:4000' })
7 |
8 | const client = new ApolloClient({
9 | link: httpLink,
10 | cache: new InMemoryCache(),
11 | })
12 |
13 | export default class App extends React.Component {
14 | render() {
15 | return (
16 |
17 |
18 |
19 | )
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/basic/App.test.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import App from './App';
3 |
4 | import renderer from 'react-test-renderer';
5 |
6 | it('renders without crashing', () => {
7 | const rendered = renderer.create().toJSON();
8 | expect(rendered).toBeTruthy();
9 | });
10 |
--------------------------------------------------------------------------------
/basic/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2016 Prisma Examples
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/basic/README.md:
--------------------------------------------------------------------------------
1 |
2 | # react-native-apollo-basic
3 |
4 | 🚀 Basic starter code for a mobile app based on React Native, GraphQL & Apollo Client.
5 |
6 | ## TODO
7 |
8 | - [ ] Fix runtime issue
9 | - [ ] Enable in [https://github.com/graphql-cli/graphql-cli/blob/master/src/cmds/create/boilerplates.ts](https://github.com/graphql-cli/graphql-cli/blob/master/src/cmds/create/boilerplates.ts)
10 |
11 | > **PRs are very welcome** 🙏
12 |
13 | ## Technologies
14 |
15 | * **Frontend**
16 | * [React Native](https://facebook.github.io/react-native/): JavaScript framework for building native mobile apps with [React](https://facebook.github.io/react/)
17 | * [Apollo Client](https://github.com/apollographql/apollo-client): Fully-featured, production ready caching GraphQL client
18 | * **Backend**
19 | * [Graphcool](https://www.graph.cool): Powerful GraphQL database
20 | * [`graphql-yoga`](https://github.com/graphcool/graphql-yoga/): Fully-featured GraphQL server with focus on easy setup, performance & great developer experience
21 | * [`graphcool-binding`](https://github.com/graphcool/graphcool-binding): GraphQL binding for Graphcool services
22 |
23 | ## Requirements
24 |
25 | You need to have the following things installed:
26 |
27 | * [Expo](https://expo.io/)
28 | * Node 8+
29 | * GraphQL CLI: `npm i -g graphql-cli`
30 | * GraphQL Playground desktop app (optional): [Download](https://github.com/graphcool/graphql-playground/releases)
31 |
32 | ## Getting started
33 |
34 | ```sh
35 | # Bootstrap GraphQL server in directory `my-app`, based on `react-fullstack-basic` boilerplate
36 | graphql create my-app --boilerplate react-native-basic
37 |
38 | # Navigate into the new project's `server` directory
39 | cd my-app/server
40 |
41 | # Deploy the Graphcool database & start the server (runs on http://localhost:4000)
42 | yarn start
43 |
44 | # Navigate back into the project's root directory and launch the React app
45 | cd ..
46 | yarn run ios # open with iOS simulator
47 | # yarn run android # open with Android emulator
48 | # yarn start # open using the Expo app on your phone (does not work when server is deployed locally)
49 | ```
50 |
51 |
52 |
53 | Alternative: Clone repo
54 |
55 | ```sh
56 | TODO
57 | ```
58 |
59 |
60 |
61 | ## Docs
62 |
63 | ### Project structure
64 |
65 | #### `/server`
66 |
67 | - [`.graphqlconfig.yml`](./server/.graphqlconfig.yml) GraphQL configuration file containing the endpoints and schema configuration. Used by the [`graphql-cli`](https://github.com/graphcool/graphql-cli) and the [GraphQL Playground](https://github.com/graphcool/graphql-playground). See [`graphql-config`](https://github.com/graphcool/graphql-config) for more information.
68 | - [`graphcool.yml`](./server/graphcool.yml): The root configuration file for your database service ([documentation](https://www.graph.cool/docs/1.0/reference/graphcool.yml/overview-and-example-foatho8aip)).
69 |
70 | #### `/server/database`
71 |
72 | - [`database/datamodel.graphql`](./server/database/datamodel.graphql) contains the data model that you define for the project (written in [SDL](https://blog.graph.cool/graphql-sdl-schema-definition-language-6755bcb9ce51)).
73 | - [`database/schema.generated.graphql`](./server/database/schema.generated.graphql) defines the **database schema**. It contains the definition of the CRUD API for the types in your data model and is generated based on your `datamodel.graphql`. **You should never edit this file manually**, but introduce changes only by altering `datamodel.graphql` and run `graphcool deploy`.
74 |
75 | #### `/server/src`
76 |
77 | - [`src/schema.graphql`](src/schema.graphql) defines your **application schema**. It contains the GraphQL API that you want to expose to your client applications.
78 | - [`src/index.js`](src/index.js) is the entry point of your server, pulling everything together and starting the `GraphQLServer` from [`graphql-yoga`](https://github.com/graphcool/graphql-yoga).
79 |
80 | ### Common questions
81 |
82 | #### I'm getting a 'Schema could not be fetched.' error after deploying, what gives?
83 |
84 | Access to the Graphcool API is secured by a secret. This also applies to the introspection query. Using the latest version of GraphQL Playground, the `Authorization` header should automatically be setup with a proper JWT signing the secret. If that's not the case, you can follow these steps to access your API:
85 |
86 | 1. Visit http://jwtbuilder.jamiekurtz.com/
87 | 1. Replace the `Key` at the bottom of the page with your `secret` from the [`graphcool.yml`](./server/graphcool.yml#L5)
88 | 1. Click `Create signed JWT` and copy the obtained token
89 | 1. Now, to access the schema, use the `Authorization: Bearer ` header, or in the GraphQL Playground set it as JSON:
90 | ```json
91 | {
92 | "Authorization": "Bearer "
93 | }
94 | ```
95 | 1. Reload the schema in the Playground (the _refresh_-button is located right next to the URL of the server)
96 |
97 | > Note: Currently, no content of the signed JWT is verified by the database! This will be implemented [according to this proposal](https://github.com/graphcool/framework/issues/1365) at a later stage.
98 |
99 | ## Contributing
100 |
101 | Your feedback is **very helpful**, please share your opinion and thoughts! If you have any questions, join the [`#graphql-boilerplate`](https://graphcool.slack.com/messages/graphql-boilerplate) channel on our [Slack](https://graphcool.slack.com/).
102 |
--------------------------------------------------------------------------------
/basic/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "expo": {
3 | "sdkVersion": "25.0.0"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/basic/components/CreatePage.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { graphql } from 'react-apollo'
3 | import gql from 'graphql-tag'
4 | import {
5 | View,
6 | TextInput,
7 | Button,
8 | Image,
9 | Text,
10 | StyleSheet,
11 | TouchableHighlight,
12 | } from 'react-native'
13 |
14 | class CreatePage extends React.Component {
15 | state = {
16 | description: '',
17 | imageUrl: '',
18 | }
19 |
20 | render() {
21 | return (
22 |
23 |
24 |
25 |
26 | {this.state.imageUrl.length > 0 ? (
27 |
32 | ) : (
33 |
34 | )}
35 |
36 | this.setState({ imageUrl: text })}
40 | value={this.state.imageUrl}
41 | placeholderTextColor="rgba(42,126,211,.5)"
42 | />
43 |
44 |
45 | this.setState({ description: text })}
49 | value={this.state.description}
50 | />
51 |
52 |
53 | this.props.onComplete()}
56 | >
57 | Cancel
58 |
59 | this._createPost()}
62 | >
63 | Create Post
64 |
65 |
66 |
67 | )
68 | }
69 |
70 | _createPost = async () => {
71 | const { description, imageUrl } = this.state
72 | await this.props.createPostMutation({
73 | variables: { description, imageUrl },
74 | })
75 | this.props.onComplete()
76 | }
77 | }
78 |
79 | const styles = StyleSheet.create({
80 | container: {
81 | flex: 1,
82 | flexDirection: 'column',
83 | justifyContent: 'space-between',
84 | alignItems: 'stretch',
85 | backgroundColor: 'rgba(255,255,255,1)',
86 | },
87 | addImageContainer: {
88 | backgroundColor: 'rgba(0,0,0,.03)',
89 | },
90 | addImage: {
91 | paddingTop: 30,
92 | paddingHorizontal: 20,
93 | },
94 | photoPlaceholderContainer: {
95 | alignItems: 'center',
96 | height: 80,
97 | },
98 | photoPlaceholder: {
99 | backgroundColor: 'rgba(42,126,211,.1)',
100 | height: 80,
101 | width: 80,
102 | },
103 | imageUrlInput: {
104 | color: 'rgba(42,126,211,1)',
105 | height: 60,
106 | },
107 | descriptionInput: {
108 | paddingHorizontal: 20,
109 | height: 100,
110 | fontSize: 20,
111 | },
112 | buttons: {
113 | flex: 1,
114 | flexDirection: 'row',
115 | justifyContent: 'space-between',
116 | paddingHorizontal: 20,
117 | },
118 | saveButton: {
119 | flex: 1,
120 | justifyContent: 'center',
121 | alignItems: 'center',
122 | backgroundColor: 'rgba(39,174,96,1)',
123 | height: 45,
124 | borderRadius: 2,
125 | },
126 | saveButtonText: {
127 | color: 'white',
128 | },
129 | cancelButton: {
130 | flex: 1,
131 | justifyContent: 'center',
132 | alignItems: 'center',
133 | height: 45,
134 | },
135 | cancelButtonText: {
136 | color: 'rgba(0,0,0,.5)',
137 | },
138 | })
139 |
140 | const CREATE_POST_MUTATION = gql`
141 | mutation CreatePostMutation($description: String!, $imageUrl: String!) {
142 | createPost(description: $description, imageUrl: $imageUrl) {
143 | id
144 | description
145 | imageUrl
146 | }
147 | }
148 | `
149 |
150 | export default graphql(CREATE_POST_MUTATION, {
151 | name: 'createPostMutation', // name of the injected prop: this.props.createPostMutation...
152 | })(CreatePage)
153 |
--------------------------------------------------------------------------------
/basic/components/ListPage.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import Post from './Post'
3 | import { graphql } from 'react-apollo'
4 | import gql from 'graphql-tag'
5 | import {
6 | View,
7 | TouchableHighlight,
8 | ListView,
9 | Modal,
10 | StyleSheet,
11 | Text,
12 | } from 'react-native'
13 | import CreatePage from './CreatePage'
14 |
15 | class ListPage extends React.Component {
16 | constructor(props) {
17 | super(props)
18 | const ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 })
19 | this.state = {
20 | dataSource: ds.cloneWithRows([]),
21 | modalVisible: false,
22 | user: undefined,
23 | }
24 | }
25 |
26 | componentWillReceiveProps(nextProps) {
27 | if (!nextProps.feedQuery.loading && !nextProps.feedQuery.error) {
28 | const { dataSource } = this.state
29 | this.setState({
30 | dataSource: dataSource.cloneWithRows(nextProps.feedQuery.allPosts),
31 | })
32 | }
33 | }
34 |
35 | render() {
36 | if (this.props.feedQuery.loading) {
37 | return Loading
38 | }
39 |
40 | return (
41 |
42 |
47 | {
49 | this.props.feedQuery.refetch()
50 | this.setState({ modalVisible: false })
51 | }}
52 | />
53 |
54 |
55 | (
59 |
60 | )}
61 | />
62 |
66 | Create Post
67 |
68 |
69 | )
70 | }
71 |
72 | _createPost = () => {
73 | // this.props.router.push('/create');
74 | this.setState({ modalVisible: true })
75 | }
76 | }
77 |
78 | const styles = StyleSheet.create({
79 | container: {
80 | flex: 1,
81 | paddingTop: 22,
82 | },
83 | createPostButtonContainer: {
84 | justifyContent: 'center',
85 | alignItems: 'center',
86 | },
87 | createPostButton: {
88 | backgroundColor: 'rgba(39,174,96,1)',
89 | color: 'white',
90 | textAlign: 'center',
91 | fontSize: 22,
92 | height: 60,
93 | width: 480,
94 | paddingTop: 18,
95 | },
96 | })
97 |
98 | const FEED_QUERY = gql`
99 | query FeedQuery {
100 | feed {
101 | id
102 | imageUrl
103 | description
104 | }
105 | }
106 | `
107 |
108 | export default graphql(FEED_QUERY, {
109 | name: 'feedQuery', // name of the injected prop: this.props.feedQuery...
110 | options: {
111 | fetchPolicy: 'network-only',
112 | },
113 | })(ListPage)
114 |
--------------------------------------------------------------------------------
/basic/components/Post.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { View, Image, Text, StyleSheet } from 'react-native'
3 |
4 | export default class Post extends React.Component {
5 | state = {
6 | width: 0,
7 | height: 0,
8 | }
9 |
10 | componentDidMount() {
11 | Image.getSize(this.props.imageUrl, (width, height) => {
12 | const imageHeight = 250
13 | const scaleFactor = height / imageHeight
14 | const imageWidth = width / scaleFactor
15 | this.setState({ width: imageWidth, height: imageHeight })
16 | })
17 | }
18 |
19 | render() {
20 | const { width, height } = this.state
21 | return (
22 |
23 |
24 |
29 |
30 | {this.props.description}
31 |
32 | )
33 | }
34 | }
35 |
36 | const styles = StyleSheet.create({
37 | imageContainer: {
38 | justifyContent: 'center',
39 | alignItems: 'center',
40 | backgroundColor: 'rgba(0,0,0,.07)',
41 | },
42 | title: {
43 | padding: 22,
44 | color: 'rgba(0,0,0,.8)',
45 | fontWeight: '300',
46 | fontSize: 16,
47 | },
48 | })
49 |
--------------------------------------------------------------------------------
/basic/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-native-fullstack-boilerplate",
3 | "version": "0.1.0",
4 | "private": true,
5 | "devDependencies": {
6 | "eslint": "4.18.1",
7 | "eslint-config-airbnb": "16.1.0",
8 | "eslint-config-airbnb-base": "12.1.0",
9 | "eslint-plugin-import": "2.9.0",
10 | "eslint-plugin-jsx-a11y": "6.0.3",
11 | "eslint-plugin-react": "7.7.0",
12 | "eslint-plugin-react-native": "3.2.1",
13 | "jest-expo": "25.1.0",
14 | "react-native-scripts": "1.11.1",
15 | "react-test-renderer": "16.2.0"
16 | },
17 | "main": "./node_modules/react-native-scripts/build/bin/crna-entry.js",
18 | "scripts": {
19 | "start": "react-native-scripts start",
20 | "eject": "react-native-scripts eject",
21 | "android": "react-native-scripts android",
22 | "ios": "react-native-scripts ios",
23 | "test": "node node_modules/jest/bin/jest.js --watch"
24 | },
25 | "jest": {
26 | "preset": "jest-expo"
27 | },
28 | "dependencies": {
29 | "apollo-client-preset": "1.0.8",
30 | "expo": "25.0.0",
31 | "graphql": "0.13.1",
32 | "graphql-tag": "2.8.0",
33 | "react": "16.2.0",
34 | "react-apollo": "2.0.4",
35 | "react-native": "https://github.com/expo/react-native/archive/sdk-25.0.0.tar.gz"
36 | },
37 | "prettier": {
38 | "semi": false,
39 | "singleQuote": true,
40 | "trailingComma": "all"
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/basic/server/.gitignore:
--------------------------------------------------------------------------------
1 | .env*
2 | dist
3 | package-lock.json
4 | node_modules
5 | .idea
6 | .vscode
7 | *.log
8 |
--------------------------------------------------------------------------------
/basic/server/.graphqlconfig.yml:
--------------------------------------------------------------------------------
1 | projects:
2 | app:
3 | schemaPath: "src/schema.graphql"
4 | extensions:
5 | endpoints:
6 | default: "http://localhost:4000"
7 | database:
8 | schemaPath: "database/schema.generated.graphql"
9 | extensions:
10 | graphcool: graphcool.yml
--------------------------------------------------------------------------------
/basic/server/database/datamodel.graphql:
--------------------------------------------------------------------------------
1 | type Post {
2 | id: ID! @unique
3 | createdAt: DateTime!
4 | updatedAt: DateTime!
5 | description: String!
6 | imageUrl: String!
7 | }
8 |
--------------------------------------------------------------------------------
/basic/server/database/schema.generated.graphql:
--------------------------------------------------------------------------------
1 | # THIS FILE HAS BEEN AUTO-GENERATED BY THE "GRAPHCOOL DEPLOY"
2 | # DO NOT EDIT THIS FILE DIRECTLY
3 |
4 | #
5 | # Model Types
6 | #
7 |
8 | type Post implements Node {
9 | id: ID!
10 | createdAt: DateTime!
11 | updatedAt: DateTime!
12 | description: String!
13 | imageUrl: String!
14 | }
15 |
16 |
17 | #
18 | # Other Types
19 | #
20 |
21 | type BatchPayload {
22 | count: Long!
23 | }
24 |
25 | scalar DateTime
26 |
27 | scalar Long
28 |
29 | type Mutation {
30 | createPost(data: PostCreateInput!): Post!
31 | updatePost(data: PostUpdateInput!, where: PostWhereUniqueInput!): Post
32 | deletePost(where: PostWhereUniqueInput!): Post
33 | upsertPost(where: PostWhereUniqueInput!, create: PostCreateInput!, update: PostUpdateInput!): Post!
34 | updatePosts(data: PostUpdateInput!, where: PostWhereInput!): BatchPayload!
35 | deletePosts(where: PostWhereInput!): BatchPayload!
36 | resetData: Boolean
37 | }
38 |
39 | interface Node {
40 | id: ID!
41 | }
42 |
43 | type PageInfo {
44 | hasNextPage: Boolean!
45 | hasPreviousPage: Boolean!
46 | startCursor: String
47 | endCursor: String
48 | }
49 |
50 | type PostConnection {
51 | pageInfo: PageInfo!
52 | edges: [PostEdge!]
53 | }
54 |
55 | input PostCreateInput {
56 | description: String!
57 | imageUrl: String!
58 | }
59 |
60 | type PostEdge {
61 | node: Post!
62 | cursor: String!
63 | }
64 |
65 | enum PostOrderByInput {
66 | id_ASC
67 | id_DESC
68 | createdAt_ASC
69 | createdAt_DESC
70 | updatedAt_ASC
71 | updatedAt_DESC
72 | description_ASC
73 | description_DESC
74 | imageUrl_ASC
75 | imageUrl_DESC
76 | }
77 |
78 | input PostUpdateInput {
79 | description: String
80 | imageUrl: String
81 | }
82 |
83 | input PostWhereInput {
84 | AND: [PostWhereInput!]
85 | OR: [PostWhereInput!]
86 | id: ID
87 | id_not: ID
88 | id_in: [ID!]
89 | id_not_in: [ID!]
90 | id_lt: ID
91 | id_lte: ID
92 | id_gt: ID
93 | id_gte: ID
94 | id_contains: ID
95 | id_not_contains: ID
96 | id_starts_with: ID
97 | id_not_starts_with: ID
98 | id_ends_with: ID
99 | id_not_ends_with: ID
100 | createdAt: DateTime
101 | createdAt_not: DateTime
102 | createdAt_in: [DateTime!]
103 | createdAt_not_in: [DateTime!]
104 | createdAt_lt: DateTime
105 | createdAt_lte: DateTime
106 | createdAt_gt: DateTime
107 | createdAt_gte: DateTime
108 | updatedAt: DateTime
109 | updatedAt_not: DateTime
110 | updatedAt_in: [DateTime!]
111 | updatedAt_not_in: [DateTime!]
112 | updatedAt_lt: DateTime
113 | updatedAt_lte: DateTime
114 | updatedAt_gt: DateTime
115 | updatedAt_gte: DateTime
116 | description: String
117 | description_not: String
118 | description_in: [String!]
119 | description_not_in: [String!]
120 | description_lt: String
121 | description_lte: String
122 | description_gt: String
123 | description_gte: String
124 | description_contains: String
125 | description_not_contains: String
126 | description_starts_with: String
127 | description_not_starts_with: String
128 | description_ends_with: String
129 | description_not_ends_with: String
130 | imageUrl: String
131 | imageUrl_not: String
132 | imageUrl_in: [String!]
133 | imageUrl_not_in: [String!]
134 | imageUrl_lt: String
135 | imageUrl_lte: String
136 | imageUrl_gt: String
137 | imageUrl_gte: String
138 | imageUrl_contains: String
139 | imageUrl_not_contains: String
140 | imageUrl_starts_with: String
141 | imageUrl_not_starts_with: String
142 | imageUrl_ends_with: String
143 | imageUrl_not_ends_with: String
144 | }
145 |
146 | input PostWhereUniqueInput {
147 | id: ID
148 | }
149 |
150 | type Query {
151 | posts(where: PostWhereInput, orderBy: PostOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Post]!
152 | post(where: PostWhereUniqueInput!): Post
153 | postsConnection(where: PostWhereInput, orderBy: PostOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): PostConnection!
154 | node(id: ID!): Node
155 | }
156 |
--------------------------------------------------------------------------------
/basic/server/graphcool.yml:
--------------------------------------------------------------------------------
1 | # the name for the service (will be part of the service's HTTP endpoint)
2 | service: graphql-boilerplate
3 |
4 | # the cluster and stage the service is deployed to
5 | stage: dev
6 | cluster: local
7 |
8 | # the file path pointing to your data model
9 | datamodel: database/datamodel.graphql
10 |
11 | # to enable authentication, provide
12 | # secret: mysecret123
13 | disableAuth: true
14 |
--------------------------------------------------------------------------------
/basic/server/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "myapp21",
3 | "scripts": {
4 | "start": "graphcool deploy && node src/index.js"
5 | },
6 | "dependencies": {
7 | "graphcool-binding": "1.3.5",
8 | "graphql-yoga": "1.4.3"
9 | },
10 | "prettier": {
11 | "semi": false,
12 | "singleQuote": true,
13 | "trailingComma": "all"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/basic/server/src/index.js:
--------------------------------------------------------------------------------
1 | const { GraphQLServer } = require('graphql-yoga')
2 | const { Graphcool } = require('graphcool-binding')
3 |
4 | const resolvers = {
5 | Query: {
6 | feed(parent, args, ctx, info) {
7 | return ctx.db.query.posts(
8 | {
9 | orderBy: 'createdAt_DESC',
10 | },
11 | info,
12 | )
13 | },
14 | post(parent, args, ctx, info) {
15 | return ctx.db.query.post(
16 | {
17 | where: { id: args.id },
18 | },
19 | info,
20 | )
21 | },
22 | },
23 | Mutation: {
24 | createPost(parent, args, ctx, info) {
25 | return ctx.db.mutation.createPost(
26 | {
27 | data: {
28 | description: args.description,
29 | imageUrl: args.imageUrl,
30 | },
31 | },
32 | info,
33 | )
34 | },
35 | deletePost(parent, args, ctx, info) {
36 | return ctx.db.mutation.deletePost(
37 | {
38 | where: { id: args.id },
39 | },
40 | info,
41 | )
42 | },
43 | },
44 | }
45 |
46 | const server = new GraphQLServer({
47 | typeDefs: './src/schema.graphql',
48 | resolvers,
49 | context: req => ({
50 | ...req,
51 | db: new Graphcool({
52 | typeDefs: './database/schema.generated.graphql',
53 | endpoint: 'http://localhost:60000/graphql-boilerplate/dev',
54 | secret: 'mysecret123',
55 | }),
56 | }),
57 | })
58 |
59 | server.start(() => console.log('Server is running on http://localhost:4000'))
60 |
--------------------------------------------------------------------------------
/basic/server/src/schema.graphql:
--------------------------------------------------------------------------------
1 | # import Post from "../database/schema.generated.graphql"
2 |
3 | type Query {
4 | feed: [Post!]!
5 | post(id: ID!): Post
6 | }
7 |
8 | type Mutation {
9 | createPost(description: String!, imageUrl: String!): Post!
10 | deletePost(id: ID!): Post
11 | }
12 |
--------------------------------------------------------------------------------
/basic/server/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@types/body-parser@*":
6 | version "1.16.8"
7 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.16.8.tgz#687ec34140624a3bec2b1a8ea9268478ae8f3be3"
8 | dependencies:
9 | "@types/express" "*"
10 | "@types/node" "*"
11 |
12 | "@types/cors@^2.8.3":
13 | version "2.8.3"
14 | resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.3.tgz#eaf6e476da0d36bee6b061a24d57e343ddce86d6"
15 | dependencies:
16 | "@types/express" "*"
17 |
18 | "@types/express-serve-static-core@*":
19 | version "4.0.57"
20 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.0.57.tgz#3cd8ab4b11d5ecd70393bada7fc1c480491537dd"
21 | dependencies:
22 | "@types/node" "*"
23 |
24 | "@types/express@*", "@types/express@^4.0.39":
25 | version "4.0.39"
26 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.0.39.tgz#1441f21d52b33be8d4fa8a865c15a6a91cd0fa09"
27 | dependencies:
28 | "@types/body-parser" "*"
29 | "@types/express-serve-static-core" "*"
30 | "@types/serve-static" "*"
31 |
32 | "@types/graphql@^0.12.0":
33 | version "0.12.3"
34 | resolved "https://registry.yarnpkg.com/@types/graphql/-/graphql-0.12.3.tgz#c429585aaa4523135e0ab4e12dec72d2d913946f"
35 |
36 | "@types/mime@*":
37 | version "2.0.0"
38 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.0.tgz#5a7306e367c539b9f6543499de8dd519fac37a8b"
39 |
40 | "@types/node@*":
41 | version "8.5.1"
42 | resolved "https://registry.yarnpkg.com/@types/node/-/node-8.5.1.tgz#4ec3020bcdfe2abffeef9ba3fbf26fca097514b5"
43 |
44 | "@types/serve-static@*":
45 | version "1.13.1"
46 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.1.tgz#1d2801fa635d274cd97d4ec07e26b21b44127492"
47 | dependencies:
48 | "@types/express-serve-static-core" "*"
49 | "@types/mime" "*"
50 |
51 | "@types/zen-observable@0.5.3", "@types/zen-observable@^0.5.3":
52 | version "0.5.3"
53 | resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.5.3.tgz#91b728599544efbb7386d8b6633693a3c2e7ade5"
54 |
55 | accepts@~1.3.4:
56 | version "1.3.4"
57 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f"
58 | dependencies:
59 | mime-types "~2.1.16"
60 | negotiator "0.6.1"
61 |
62 | apollo-cache-control@^0.0.x:
63 | version "0.0.7"
64 | resolved "https://registry.yarnpkg.com/apollo-cache-control/-/apollo-cache-control-0.0.7.tgz#ffef56413a429a1ce204be5b78d248c4fe3b67ac"
65 | dependencies:
66 | graphql-extensions "^0.0.x"
67 |
68 | apollo-link-error@1.0.3:
69 | version "1.0.3"
70 | resolved "https://registry.yarnpkg.com/apollo-link-error/-/apollo-link-error-1.0.3.tgz#2c679d2e6a2df09a9ae3f70d23c64af922a801a2"
71 | dependencies:
72 | apollo-link "^1.0.6"
73 |
74 | apollo-link-http@1.3.2:
75 | version "1.3.2"
76 | resolved "https://registry.yarnpkg.com/apollo-link-http/-/apollo-link-http-1.3.2.tgz#63537ee5ecf9c004efb0317f1222b7dbc6f21559"
77 | dependencies:
78 | apollo-link "^1.0.7"
79 |
80 | apollo-link-ws@1.0.4:
81 | version "1.0.4"
82 | resolved "https://registry.yarnpkg.com/apollo-link-ws/-/apollo-link-ws-1.0.4.tgz#d0067aa0204470dbd3955aa5204f8dd72d389350"
83 | dependencies:
84 | apollo-link "^1.0.7"
85 |
86 | apollo-link@1.0.7, apollo-link@^1.0.0, apollo-link@^1.0.6, apollo-link@^1.0.7:
87 | version "1.0.7"
88 | resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.0.7.tgz#42cd38a7378332fc3e41a214ff6a6e5e703a556f"
89 | dependencies:
90 | "@types/zen-observable" "0.5.3"
91 | apollo-utilities "^1.0.0"
92 | zen-observable "^0.6.0"
93 |
94 | apollo-server-core@^1.3.2:
95 | version "1.3.2"
96 | resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-1.3.2.tgz#f36855a3ebdc2d77b8b9c454380bf1d706105ffc"
97 | dependencies:
98 | apollo-cache-control "^0.0.x"
99 | apollo-tracing "^0.1.0"
100 | graphql-extensions "^0.0.x"
101 |
102 | apollo-server-express@^1.3.2:
103 | version "1.3.2"
104 | resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-1.3.2.tgz#0ff8201c0bf362804a151e1399767dae6ab7e309"
105 | dependencies:
106 | apollo-server-core "^1.3.2"
107 | apollo-server-module-graphiql "^1.3.0"
108 |
109 | apollo-server-lambda@1.3.2:
110 | version "1.3.2"
111 | resolved "https://registry.yarnpkg.com/apollo-server-lambda/-/apollo-server-lambda-1.3.2.tgz#bcf75f3d7115d11cc9892ad3b17427b3d536df0f"
112 | dependencies:
113 | apollo-server-core "^1.3.2"
114 | apollo-server-module-graphiql "^1.3.0"
115 |
116 | apollo-server-module-graphiql@^1.3.0:
117 | version "1.3.0"
118 | resolved "https://registry.yarnpkg.com/apollo-server-module-graphiql/-/apollo-server-module-graphiql-1.3.0.tgz#077bb8c7bf292f6128c6c96d59c2096445b084ef"
119 |
120 | apollo-tracing@^0.1.0:
121 | version "0.1.1"
122 | resolved "https://registry.yarnpkg.com/apollo-tracing/-/apollo-tracing-0.1.1.tgz#7a5707543fc102f81cda7ba45b98331a82a6750b"
123 | dependencies:
124 | graphql-extensions "^0.0.x"
125 |
126 | apollo-upload-server@^4.0.0-alpha.1:
127 | version "4.0.0-alpha.1"
128 | resolved "https://registry.yarnpkg.com/apollo-upload-server/-/apollo-upload-server-4.0.0-alpha.1.tgz#9f680ad31578d51305c5641cdc5e0014db866f85"
129 | dependencies:
130 | busboy "^0.2.14"
131 | object-path "^0.11.4"
132 |
133 | apollo-utilities@^1.0.0, apollo-utilities@^1.0.1:
134 | version "1.0.3"
135 | resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.0.3.tgz#bf435277609850dd442cf1d5c2e8bc6655eaa943"
136 |
137 | argparse@^1.0.7:
138 | version "1.0.9"
139 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
140 | dependencies:
141 | sprintf-js "~1.0.2"
142 |
143 | array-flatten@1.1.1:
144 | version "1.1.1"
145 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
146 |
147 | async-limiter@~1.0.0:
148 | version "1.0.0"
149 | resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
150 |
151 | aws-lambda@^0.1.2:
152 | version "0.1.2"
153 | resolved "https://registry.yarnpkg.com/aws-lambda/-/aws-lambda-0.1.2.tgz#19b1585075df31679597b976a5f1def61f12ccee"
154 | dependencies:
155 | aws-sdk "^*"
156 | commander "^2.5.0"
157 | dotenv "^0.4.0"
158 |
159 | aws-sdk@^*:
160 | version "2.197.0"
161 | resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.197.0.tgz#986e3749f4d1944c6253d7824aa8035efb1db0e4"
162 | dependencies:
163 | buffer "4.9.1"
164 | events "^1.1.1"
165 | jmespath "0.15.0"
166 | querystring "0.2.0"
167 | sax "1.2.1"
168 | url "0.10.3"
169 | uuid "3.1.0"
170 | xml2js "0.4.17"
171 | xmlbuilder "4.2.1"
172 |
173 | backo2@^1.0.2:
174 | version "1.0.2"
175 | resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
176 |
177 | balanced-match@^1.0.0:
178 | version "1.0.0"
179 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
180 |
181 | base64-js@^1.0.2:
182 | version "1.2.3"
183 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.3.tgz#fb13668233d9614cf5fb4bce95a9ba4096cdf801"
184 |
185 | base64url@2.0.0, base64url@^2.0.0:
186 | version "2.0.0"
187 | resolved "https://registry.yarnpkg.com/base64url/-/base64url-2.0.0.tgz#eac16e03ea1438eff9423d69baa36262ed1f70bb"
188 |
189 | body-parser-graphql@1.0.0:
190 | version "1.0.0"
191 | resolved "https://registry.yarnpkg.com/body-parser-graphql/-/body-parser-graphql-1.0.0.tgz#997de1792ed222cbc4845d404f4549eb88ec6d37"
192 | dependencies:
193 | body-parser "^1.18.2"
194 |
195 | body-parser@1.18.2, body-parser@^1.18.2:
196 | version "1.18.2"
197 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454"
198 | dependencies:
199 | bytes "3.0.0"
200 | content-type "~1.0.4"
201 | debug "2.6.9"
202 | depd "~1.1.1"
203 | http-errors "~1.6.2"
204 | iconv-lite "0.4.19"
205 | on-finished "~2.3.0"
206 | qs "6.5.1"
207 | raw-body "2.3.2"
208 | type-is "~1.6.15"
209 |
210 | brace-expansion@^1.1.7:
211 | version "1.1.8"
212 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
213 | dependencies:
214 | balanced-match "^1.0.0"
215 | concat-map "0.0.1"
216 |
217 | buffer-equal-constant-time@1.0.1:
218 | version "1.0.1"
219 | resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
220 |
221 | buffer@4.9.1:
222 | version "4.9.1"
223 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
224 | dependencies:
225 | base64-js "^1.0.2"
226 | ieee754 "^1.1.4"
227 | isarray "^1.0.0"
228 |
229 | busboy@^0.2.14:
230 | version "0.2.14"
231 | resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.2.14.tgz#6c2a622efcf47c57bbbe1e2a9c37ad36c7925453"
232 | dependencies:
233 | dicer "0.2.5"
234 | readable-stream "1.1.x"
235 |
236 | bytes@3.0.0:
237 | version "3.0.0"
238 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
239 |
240 | commander@^2.5.0:
241 | version "2.14.1"
242 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa"
243 |
244 | concat-map@0.0.1:
245 | version "0.0.1"
246 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
247 |
248 | content-disposition@0.5.2:
249 | version "0.5.2"
250 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
251 |
252 | content-type@~1.0.4:
253 | version "1.0.4"
254 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
255 |
256 | cookie-signature@1.0.6:
257 | version "1.0.6"
258 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
259 |
260 | cookie@0.3.1:
261 | version "0.3.1"
262 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
263 |
264 | core-js@^2.5.1:
265 | version "2.5.3"
266 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e"
267 |
268 | core-util-is@~1.0.0:
269 | version "1.0.2"
270 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
271 |
272 | cors@^2.8.4:
273 | version "2.8.4"
274 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.4.tgz#2bd381f2eb201020105cd50ea59da63090694686"
275 | dependencies:
276 | object-assign "^4"
277 | vary "^1"
278 |
279 | cross-fetch@0.0.8:
280 | version "0.0.8"
281 | resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-0.0.8.tgz#01ed94dc407df2c00f1807fde700a7cfa48a205c"
282 | dependencies:
283 | node-fetch "1.7.3"
284 | whatwg-fetch "2.0.3"
285 |
286 | cross-fetch@1.1.1:
287 | version "1.1.1"
288 | resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-1.1.1.tgz#dede6865ae30f37eae62ac90ebb7bdac002b05a0"
289 | dependencies:
290 | node-fetch "1.7.3"
291 | whatwg-fetch "2.0.3"
292 |
293 | debug@2.6.9:
294 | version "2.6.9"
295 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
296 | dependencies:
297 | ms "2.0.0"
298 |
299 | depd@1.1.1, depd@~1.1.1:
300 | version "1.1.1"
301 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
302 |
303 | deprecated-decorator@^0.1.6:
304 | version "0.1.6"
305 | resolved "https://registry.yarnpkg.com/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz#00966317b7a12fe92f3cc831f7583af329b86c37"
306 |
307 | destroy@~1.0.4:
308 | version "1.0.4"
309 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
310 |
311 | dicer@0.2.5:
312 | version "0.2.5"
313 | resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.2.5.tgz#5996c086bb33218c812c090bddc09cd12facb70f"
314 | dependencies:
315 | readable-stream "1.1.x"
316 | streamsearch "0.1.2"
317 |
318 | dotenv@^0.4.0:
319 | version "0.4.0"
320 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-0.4.0.tgz#f6fb351363c2d92207245c737802c9ab5ae1495a"
321 |
322 | ecdsa-sig-formatter@1.0.9:
323 | version "1.0.9"
324 | resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz#4bc926274ec3b5abb5016e7e1d60921ac262b2a1"
325 | dependencies:
326 | base64url "^2.0.0"
327 | safe-buffer "^5.0.1"
328 |
329 | ee-first@1.1.1:
330 | version "1.1.1"
331 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
332 |
333 | encodeurl@~1.0.1:
334 | version "1.0.1"
335 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20"
336 |
337 | encoding@^0.1.11:
338 | version "0.1.12"
339 | resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
340 | dependencies:
341 | iconv-lite "~0.4.13"
342 |
343 | es6-promise@^4.1.1:
344 | version "4.1.1"
345 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.1.tgz#8811e90915d9a0dba36274f0b242dbda78f9c92a"
346 |
347 | escape-html@~1.0.3:
348 | version "1.0.3"
349 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
350 |
351 | esprima@^4.0.0:
352 | version "4.0.0"
353 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804"
354 |
355 | etag@~1.8.1:
356 | version "1.8.1"
357 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
358 |
359 | eventemitter3@^2.0.3:
360 | version "2.0.3"
361 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-2.0.3.tgz#b5e1079b59fb5e1ba2771c0a993be060a58c99ba"
362 |
363 | events@^1.1.1:
364 | version "1.1.1"
365 | resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
366 |
367 | express@^4.16.2:
368 | version "4.16.2"
369 | resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c"
370 | dependencies:
371 | accepts "~1.3.4"
372 | array-flatten "1.1.1"
373 | body-parser "1.18.2"
374 | content-disposition "0.5.2"
375 | content-type "~1.0.4"
376 | cookie "0.3.1"
377 | cookie-signature "1.0.6"
378 | debug "2.6.9"
379 | depd "~1.1.1"
380 | encodeurl "~1.0.1"
381 | escape-html "~1.0.3"
382 | etag "~1.8.1"
383 | finalhandler "1.1.0"
384 | fresh "0.5.2"
385 | merge-descriptors "1.0.1"
386 | methods "~1.1.2"
387 | on-finished "~2.3.0"
388 | parseurl "~1.3.2"
389 | path-to-regexp "0.1.7"
390 | proxy-addr "~2.0.2"
391 | qs "6.5.1"
392 | range-parser "~1.2.0"
393 | safe-buffer "5.1.1"
394 | send "0.16.1"
395 | serve-static "1.13.1"
396 | setprototypeof "1.1.0"
397 | statuses "~1.3.1"
398 | type-is "~1.6.15"
399 | utils-merge "1.0.1"
400 | vary "~1.1.2"
401 |
402 | finalhandler@1.1.0:
403 | version "1.1.0"
404 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5"
405 | dependencies:
406 | debug "2.6.9"
407 | encodeurl "~1.0.1"
408 | escape-html "~1.0.3"
409 | on-finished "~2.3.0"
410 | parseurl "~1.3.2"
411 | statuses "~1.3.1"
412 | unpipe "~1.0.0"
413 |
414 | forwarded@~0.1.2:
415 | version "0.1.2"
416 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
417 |
418 | fresh@0.5.2:
419 | version "0.5.2"
420 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
421 |
422 | graphcool-binding@1.3.5:
423 | version "1.3.5"
424 | resolved "https://registry.yarnpkg.com/graphcool-binding/-/graphcool-binding-1.3.5.tgz#dcd284c4e3d3d14df8cc6e27286b0934101e55ed"
425 | dependencies:
426 | apollo-link "1.0.7"
427 | apollo-link-error "1.0.3"
428 | apollo-link-http "1.3.2"
429 | apollo-link-ws "1.0.4"
430 | cross-fetch "1.1.1"
431 | graphql "0.12.3"
432 | graphql-binding "1.2.0"
433 | graphql-import "0.3.1"
434 | graphql-tools "2.18.0"
435 | jsonwebtoken "^8.1.0"
436 | subscriptions-transport-ws "0.9.5"
437 |
438 | graphql-binding@1.2.0:
439 | version "1.2.0"
440 | resolved "https://registry.yarnpkg.com/graphql-binding/-/graphql-binding-1.2.0.tgz#0876318735fb469631586d7721a2189eff7a8532"
441 | dependencies:
442 | graphql "0.12.3"
443 | graphql-tools "2.18.0"
444 | iterall "1.1.3"
445 |
446 | graphql-config@2.0.0:
447 | version "2.0.0"
448 | resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-2.0.0.tgz#daf69091055c6f675d63893a2d14c48f3fec3327"
449 | dependencies:
450 | graphql-import "^0.4.0"
451 | graphql-request "^1.4.0"
452 | js-yaml "^3.10.0"
453 | lodash "^4.17.4"
454 | minimatch "^3.0.4"
455 |
456 | graphql-extensions@^0.0.x:
457 | version "0.0.5"
458 | resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.0.5.tgz#63bc4a3fd31aab12bfadf783cbc038a9a6937cf0"
459 | dependencies:
460 | core-js "^2.5.1"
461 | source-map-support "^0.5.0"
462 |
463 | graphql-import@0.3.1:
464 | version "0.3.1"
465 | resolved "https://registry.yarnpkg.com/graphql-import/-/graphql-import-0.3.1.tgz#953f31323e851b5246602ea8e3d36a95b8fc47b5"
466 | dependencies:
467 | graphql "^0.12.3"
468 | lodash "^4.17.4"
469 |
470 | graphql-import@^0.4.0:
471 | version "0.4.1"
472 | resolved "https://registry.yarnpkg.com/graphql-import/-/graphql-import-0.4.1.tgz#ef1c047d6250bc8c009b12b64c26924ac4f4716c"
473 | dependencies:
474 | graphql "^0.12.3"
475 | lodash "^4.17.4"
476 |
477 | graphql-import@^0.4.4:
478 | version "0.4.4"
479 | resolved "https://registry.yarnpkg.com/graphql-import/-/graphql-import-0.4.4.tgz#57a485f3b954fd3fa80ae58bf35d8d158e263e92"
480 | dependencies:
481 | lodash "^4.17.4"
482 |
483 | graphql-playground-html@1.5.5:
484 | version "1.5.5"
485 | resolved "https://registry.yarnpkg.com/graphql-playground-html/-/graphql-playground-html-1.5.5.tgz#e2aca543eb66b435ead495b45244b2604d6b2d48"
486 | dependencies:
487 | graphql-config "2.0.0"
488 |
489 | graphql-playground-middleware-express@1.5.7:
490 | version "1.5.7"
491 | resolved "https://registry.yarnpkg.com/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.5.7.tgz#a07418791d9f3728b2bda18fc2c6edcaf997cc93"
492 | dependencies:
493 | graphql-playground-html "1.5.5"
494 |
495 | graphql-playground-middleware-lambda@1.4.3:
496 | version "1.4.3"
497 | resolved "https://registry.yarnpkg.com/graphql-playground-middleware-lambda/-/graphql-playground-middleware-lambda-1.4.3.tgz#017ed8124eac7360f676ccc6a23b1e4e24a04c50"
498 | dependencies:
499 | graphql-playground-html "1.5.5"
500 |
501 | graphql-request@^1.4.0:
502 | version "1.4.0"
503 | resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-1.4.0.tgz#f5b067c83070296d93fb45760e83dfad0d9f537a"
504 | dependencies:
505 | cross-fetch "0.0.8"
506 |
507 | graphql-subscriptions@^0.5.6:
508 | version "0.5.6"
509 | resolved "https://registry.yarnpkg.com/graphql-subscriptions/-/graphql-subscriptions-0.5.6.tgz#0d8e960fbaaf9ecbe7900366e86da2fc143fc5b2"
510 | dependencies:
511 | es6-promise "^4.1.1"
512 | iterall "^1.1.3"
513 |
514 | graphql-subscriptions@^0.5.8:
515 | version "0.5.8"
516 | resolved "https://registry.yarnpkg.com/graphql-subscriptions/-/graphql-subscriptions-0.5.8.tgz#13a6143c546bce390404657dc73ca501def30aa7"
517 | dependencies:
518 | iterall "^1.2.1"
519 |
520 | graphql-tools@2.18.0, graphql-tools@^2.18.0:
521 | version "2.18.0"
522 | resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-2.18.0.tgz#8e2d6436f9adba1d579c1a1710ae95e7f5e7248b"
523 | dependencies:
524 | apollo-link "^1.0.0"
525 | apollo-utilities "^1.0.1"
526 | deprecated-decorator "^0.1.6"
527 | graphql-subscriptions "^0.5.6"
528 | uuid "^3.1.0"
529 |
530 | graphql-yoga@1.4.3:
531 | version "1.4.3"
532 | resolved "https://registry.yarnpkg.com/graphql-yoga/-/graphql-yoga-1.4.3.tgz#a5e17c131454a4c244f1df65eeddf5afb7ab3f26"
533 | dependencies:
534 | "@types/cors" "^2.8.3"
535 | "@types/express" "^4.0.39"
536 | "@types/graphql" "^0.12.0"
537 | "@types/zen-observable" "^0.5.3"
538 | apollo-server-express "^1.3.2"
539 | apollo-server-lambda "1.3.2"
540 | apollo-upload-server "^4.0.0-alpha.1"
541 | aws-lambda "^0.1.2"
542 | body-parser-graphql "1.0.0"
543 | cors "^2.8.4"
544 | express "^4.16.2"
545 | graphql "^0.11.0 || ^0.12.0 || ^0.13.0"
546 | graphql-import "^0.4.4"
547 | graphql-playground-middleware-express "1.5.7"
548 | graphql-playground-middleware-lambda "1.4.3"
549 | graphql-subscriptions "^0.5.8"
550 | graphql-tools "^2.18.0"
551 | subscriptions-transport-ws "^0.9.6"
552 |
553 | graphql@0.12.3, graphql@^0.12.3:
554 | version "0.12.3"
555 | resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.12.3.tgz#11668458bbe28261c0dcb6e265f515ba79f6ce07"
556 | dependencies:
557 | iterall "1.1.3"
558 |
559 | "graphql@^0.11.0 || ^0.12.0 || ^0.13.0":
560 | version "0.13.1"
561 | resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.13.1.tgz#9b3db3d8e40d1827e4172404bfdd2e4e17a58b55"
562 | dependencies:
563 | iterall "^1.2.0"
564 |
565 | http-errors@1.6.2, http-errors@~1.6.2:
566 | version "1.6.2"
567 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
568 | dependencies:
569 | depd "1.1.1"
570 | inherits "2.0.3"
571 | setprototypeof "1.0.3"
572 | statuses ">= 1.3.1 < 2"
573 |
574 | iconv-lite@0.4.19, iconv-lite@~0.4.13:
575 | version "0.4.19"
576 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
577 |
578 | ieee754@^1.1.4:
579 | version "1.1.8"
580 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
581 |
582 | inherits@2.0.3, inherits@~2.0.1:
583 | version "2.0.3"
584 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
585 |
586 | ipaddr.js@1.5.2:
587 | version "1.5.2"
588 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.5.2.tgz#d4b505bde9946987ccf0fc58d9010ff9607e3fa0"
589 |
590 | is-stream@^1.0.1:
591 | version "1.1.0"
592 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
593 |
594 | isarray@0.0.1:
595 | version "0.0.1"
596 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
597 |
598 | isarray@^1.0.0:
599 | version "1.0.0"
600 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
601 |
602 | iterall@1.1.3, iterall@^1.1.1, iterall@^1.1.3:
603 | version "1.1.3"
604 | resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.1.3.tgz#1cbbff96204056dde6656e2ed2e2226d0e6d72c9"
605 |
606 | iterall@^1.2.0, iterall@^1.2.1:
607 | version "1.2.1"
608 | resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.2.1.tgz#59a347ae8001d2d4bc546b8487ca755d61849965"
609 |
610 | jmespath@0.15.0:
611 | version "0.15.0"
612 | resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217"
613 |
614 | js-yaml@^3.10.0:
615 | version "3.10.0"
616 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
617 | dependencies:
618 | argparse "^1.0.7"
619 | esprima "^4.0.0"
620 |
621 | jsonwebtoken@^8.1.0:
622 | version "8.1.0"
623 | resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.1.0.tgz#c6397cd2e5fd583d65c007a83dc7bb78e6982b83"
624 | dependencies:
625 | jws "^3.1.4"
626 | lodash.includes "^4.3.0"
627 | lodash.isboolean "^3.0.3"
628 | lodash.isinteger "^4.0.4"
629 | lodash.isnumber "^3.0.3"
630 | lodash.isplainobject "^4.0.6"
631 | lodash.isstring "^4.0.1"
632 | lodash.once "^4.0.0"
633 | ms "^2.0.0"
634 | xtend "^4.0.1"
635 |
636 | jwa@^1.1.4:
637 | version "1.1.5"
638 | resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.1.5.tgz#a0552ce0220742cd52e153774a32905c30e756e5"
639 | dependencies:
640 | base64url "2.0.0"
641 | buffer-equal-constant-time "1.0.1"
642 | ecdsa-sig-formatter "1.0.9"
643 | safe-buffer "^5.0.1"
644 |
645 | jws@^3.1.4:
646 | version "3.1.4"
647 | resolved "https://registry.yarnpkg.com/jws/-/jws-3.1.4.tgz#f9e8b9338e8a847277d6444b1464f61880e050a2"
648 | dependencies:
649 | base64url "^2.0.0"
650 | jwa "^1.1.4"
651 | safe-buffer "^5.0.1"
652 |
653 | lodash.assign@^4.2.0:
654 | version "4.2.0"
655 | resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
656 |
657 | lodash.includes@^4.3.0:
658 | version "4.3.0"
659 | resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f"
660 |
661 | lodash.isboolean@^3.0.3:
662 | version "3.0.3"
663 | resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6"
664 |
665 | lodash.isinteger@^4.0.4:
666 | version "4.0.4"
667 | resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343"
668 |
669 | lodash.isnumber@^3.0.3:
670 | version "3.0.3"
671 | resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc"
672 |
673 | lodash.isobject@^3.0.2:
674 | version "3.0.2"
675 | resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d"
676 |
677 | lodash.isplainobject@^4.0.6:
678 | version "4.0.6"
679 | resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
680 |
681 | lodash.isstring@^4.0.1:
682 | version "4.0.1"
683 | resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451"
684 |
685 | lodash.once@^4.0.0:
686 | version "4.1.1"
687 | resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
688 |
689 | lodash@^4.0.0:
690 | version "4.17.5"
691 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511"
692 |
693 | lodash@^4.17.4:
694 | version "4.17.4"
695 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
696 |
697 | media-typer@0.3.0:
698 | version "0.3.0"
699 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
700 |
701 | merge-descriptors@1.0.1:
702 | version "1.0.1"
703 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
704 |
705 | methods@~1.1.2:
706 | version "1.1.2"
707 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
708 |
709 | mime-db@~1.30.0:
710 | version "1.30.0"
711 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
712 |
713 | mime-types@~2.1.15, mime-types@~2.1.16:
714 | version "2.1.17"
715 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
716 | dependencies:
717 | mime-db "~1.30.0"
718 |
719 | mime@1.4.1:
720 | version "1.4.1"
721 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
722 |
723 | minimatch@^3.0.4:
724 | version "3.0.4"
725 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
726 | dependencies:
727 | brace-expansion "^1.1.7"
728 |
729 | ms@2.0.0:
730 | version "2.0.0"
731 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
732 |
733 | ms@^2.0.0:
734 | version "2.1.1"
735 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
736 |
737 | negotiator@0.6.1:
738 | version "0.6.1"
739 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
740 |
741 | node-fetch@1.7.3:
742 | version "1.7.3"
743 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
744 | dependencies:
745 | encoding "^0.1.11"
746 | is-stream "^1.0.1"
747 |
748 | object-assign@^4:
749 | version "4.1.1"
750 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
751 |
752 | object-path@^0.11.4:
753 | version "0.11.4"
754 | resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949"
755 |
756 | on-finished@~2.3.0:
757 | version "2.3.0"
758 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
759 | dependencies:
760 | ee-first "1.1.1"
761 |
762 | parseurl@~1.3.2:
763 | version "1.3.2"
764 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
765 |
766 | path-to-regexp@0.1.7:
767 | version "0.1.7"
768 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
769 |
770 | proxy-addr@~2.0.2:
771 | version "2.0.2"
772 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.2.tgz#6571504f47bb988ec8180253f85dd7e14952bdec"
773 | dependencies:
774 | forwarded "~0.1.2"
775 | ipaddr.js "1.5.2"
776 |
777 | punycode@1.3.2:
778 | version "1.3.2"
779 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
780 |
781 | qs@6.5.1:
782 | version "6.5.1"
783 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
784 |
785 | querystring@0.2.0:
786 | version "0.2.0"
787 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
788 |
789 | range-parser@~1.2.0:
790 | version "1.2.0"
791 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
792 |
793 | raw-body@2.3.2:
794 | version "2.3.2"
795 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89"
796 | dependencies:
797 | bytes "3.0.0"
798 | http-errors "1.6.2"
799 | iconv-lite "0.4.19"
800 | unpipe "1.0.0"
801 |
802 | readable-stream@1.1.x:
803 | version "1.1.14"
804 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
805 | dependencies:
806 | core-util-is "~1.0.0"
807 | inherits "~2.0.1"
808 | isarray "0.0.1"
809 | string_decoder "~0.10.x"
810 |
811 | safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@~5.1.0:
812 | version "5.1.1"
813 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
814 |
815 | sax@1.2.1:
816 | version "1.2.1"
817 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
818 |
819 | sax@>=0.6.0:
820 | version "1.2.4"
821 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
822 |
823 | send@0.16.1:
824 | version "0.16.1"
825 | resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3"
826 | dependencies:
827 | debug "2.6.9"
828 | depd "~1.1.1"
829 | destroy "~1.0.4"
830 | encodeurl "~1.0.1"
831 | escape-html "~1.0.3"
832 | etag "~1.8.1"
833 | fresh "0.5.2"
834 | http-errors "~1.6.2"
835 | mime "1.4.1"
836 | ms "2.0.0"
837 | on-finished "~2.3.0"
838 | range-parser "~1.2.0"
839 | statuses "~1.3.1"
840 |
841 | serve-static@1.13.1:
842 | version "1.13.1"
843 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.1.tgz#4c57d53404a761d8f2e7c1e8a18a47dbf278a719"
844 | dependencies:
845 | encodeurl "~1.0.1"
846 | escape-html "~1.0.3"
847 | parseurl "~1.3.2"
848 | send "0.16.1"
849 |
850 | setprototypeof@1.0.3:
851 | version "1.0.3"
852 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
853 |
854 | setprototypeof@1.1.0:
855 | version "1.1.0"
856 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
857 |
858 | source-map-support@^0.5.0:
859 | version "0.5.0"
860 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.0.tgz#2018a7ad2bdf8faf2691e5fddab26bed5a2bacab"
861 | dependencies:
862 | source-map "^0.6.0"
863 |
864 | source-map@^0.6.0:
865 | version "0.6.1"
866 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
867 |
868 | sprintf-js@~1.0.2:
869 | version "1.0.3"
870 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
871 |
872 | "statuses@>= 1.3.1 < 2":
873 | version "1.4.0"
874 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
875 |
876 | statuses@~1.3.1:
877 | version "1.3.1"
878 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
879 |
880 | streamsearch@0.1.2:
881 | version "0.1.2"
882 | resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a"
883 |
884 | string_decoder@~0.10.x:
885 | version "0.10.31"
886 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
887 |
888 | subscriptions-transport-ws@0.9.5:
889 | version "0.9.5"
890 | resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.5.tgz#faa9eb1230d5f2efe355368cd973b867e4483c53"
891 | dependencies:
892 | backo2 "^1.0.2"
893 | eventemitter3 "^2.0.3"
894 | iterall "^1.1.1"
895 | lodash.assign "^4.2.0"
896 | lodash.isobject "^3.0.2"
897 | lodash.isstring "^4.0.1"
898 | symbol-observable "^1.0.4"
899 | ws "^3.0.0"
900 |
901 | subscriptions-transport-ws@^0.9.6:
902 | version "0.9.6"
903 | resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.6.tgz#5ff86a0746316ca3eb2423b118b8bc74a6793e1b"
904 | dependencies:
905 | backo2 "^1.0.2"
906 | eventemitter3 "^2.0.3"
907 | iterall "^1.2.1"
908 | lodash.assign "^4.2.0"
909 | lodash.isobject "^3.0.2"
910 | lodash.isstring "^4.0.1"
911 | symbol-observable "^1.0.4"
912 | ws "^3.0.0"
913 |
914 | symbol-observable@^1.0.4:
915 | version "1.1.0"
916 | resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.1.0.tgz#5c68fd8d54115d9dfb72a84720549222e8db9b32"
917 |
918 | type-is@~1.6.15:
919 | version "1.6.15"
920 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410"
921 | dependencies:
922 | media-typer "0.3.0"
923 | mime-types "~2.1.15"
924 |
925 | ultron@~1.1.0:
926 | version "1.1.1"
927 | resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
928 |
929 | unpipe@1.0.0, unpipe@~1.0.0:
930 | version "1.0.0"
931 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
932 |
933 | url@0.10.3:
934 | version "0.10.3"
935 | resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64"
936 | dependencies:
937 | punycode "1.3.2"
938 | querystring "0.2.0"
939 |
940 | utils-merge@1.0.1:
941 | version "1.0.1"
942 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
943 |
944 | uuid@3.1.0, uuid@^3.1.0:
945 | version "3.1.0"
946 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
947 |
948 | vary@^1, vary@~1.1.2:
949 | version "1.1.2"
950 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
951 |
952 | whatwg-fetch@2.0.3:
953 | version "2.0.3"
954 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"
955 |
956 | ws@^3.0.0:
957 | version "3.3.3"
958 | resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2"
959 | dependencies:
960 | async-limiter "~1.0.0"
961 | safe-buffer "~5.1.0"
962 | ultron "~1.1.0"
963 |
964 | xml2js@0.4.17:
965 | version "0.4.17"
966 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868"
967 | dependencies:
968 | sax ">=0.6.0"
969 | xmlbuilder "^4.1.0"
970 |
971 | xmlbuilder@4.2.1, xmlbuilder@^4.1.0:
972 | version "4.2.1"
973 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5"
974 | dependencies:
975 | lodash "^4.0.0"
976 |
977 | xtend@^4.0.1:
978 | version "4.0.1"
979 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
980 |
981 | zen-observable@^0.6.0:
982 | version "0.6.1"
983 | resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.6.1.tgz#01dbed3bc8d02cbe9ee1112c83e04c807f647244"
984 |
--------------------------------------------------------------------------------
/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "config:base",
4 | ":skipStatusChecks"
5 | ],
6 | "automerge": false,
7 | "major": {
8 | "automerge": false
9 | }
10 | }
11 |
--------------------------------------------------------------------------------