graphql_playground 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0c1e898b431a64c5ee65c1e03770450b83a90ac1fa914ec58b99eecb2e5f257f
4
+ data.tar.gz: a6aa590d07067bac2156488dce4ae20364b890939cda99b8bd372e7c48788aed
5
+ SHA512:
6
+ metadata.gz: 5bc462eeedf9aa5860806477ffc1037f8aee8e94d79fb026829a307e609cca46a61ece007a8f6639831dbb71d896058a3b0d64c86aa56aae20f1609ecf19dca3
7
+ data.tar.gz: c7a385fffd648f0738f5bf6ebe4208f95b565b27e49d34ce310f74bb782ad981a4bb3f37c04ce898c5131395e29293a78d840b14b593cc609aea5375984ecf11
@@ -0,0 +1,53 @@
1
+ This gem is a simple middleware wrapper for [GraphQL Playground](https://github.com/prisma/graphql-playground), a GraphQL IDE for better development workflows (GraphQL Subscriptions, interactive docs & collaboration).
2
+
3
+ ```
4
+ gem install graphql_playground
5
+ ```
6
+
7
+ ## Usage
8
+
9
+ If you use rack, you can mount it like this
10
+
11
+ ```ruby
12
+ require 'graphql_playground'
13
+
14
+ map '/playground' do
15
+ use GraphQLPlayground, endpoint: '/graphql' # endpoint to your graphql server endpoint
16
+ end
17
+ ```
18
+
19
+ ## Example using graphql_server gem
20
+
21
+ ```ruby
22
+ # app.ru
23
+ require 'graphql_playground'
24
+ require 'graphql_server'
25
+
26
+ type_def = <<-GRAPHQL
27
+ type Query {
28
+ hello: String
29
+ }
30
+ GRAPHQL
31
+
32
+ resolver = {
33
+ "Query" => {
34
+ "hello" => Proc.new { "world" }
35
+ }
36
+ }
37
+
38
+ map '/playground' do
39
+ use GraphQLPlayground
40
+ end
41
+
42
+ run GraphqlServer.new(type_def: type_def, resolver: resolver)
43
+ ```
44
+
45
+ Launch it with
46
+
47
+ ```
48
+ rackup app.ru
49
+ ```
50
+
51
+ And then open http://localhost:9292/playground
52
+
53
+ (Reference https://github.com/betaflag/graphql-server-ruby)
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ class GraphQLPlayground
4
+ CDN_URL = '//cdn.jsdelivr.net/npm'
5
+
6
+ # Initialize the middleware
7
+ #
8
+ # @param string cdn_url The CDN url for graphql playground (defaults to the official release)
9
+ # @param string version The version of the graphql playground to use (defaults to latest)
10
+ # @param string endpoint The endpoint of your graphql server
11
+ def initialize(app = nil, cdn_url: CDN_URL, version: '', endpoint: '/')
12
+ @app = app
13
+ @cdn_url = cdn_url
14
+ @version = version
15
+ @endpoint = endpoint
16
+ @index_template = File.read(template('index.html.erb'))
17
+ end
18
+
19
+ def template(path)
20
+ File.expand_path("templates/#{path}", __dir__)
21
+ end
22
+
23
+ def call(env)
24
+ ['200', {'Content-Type' => 'text/html'}, [ERB.new(@index_template).result(binding)]]
25
+ end
26
+ end
@@ -0,0 +1,69 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset=utf-8 />
5
+ <meta name="viewport" content="user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, minimal-ui">
6
+ <link rel="shortcut icon" href="https://graphcool-playground.netlify.com/favicon.png">
7
+ <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700|Source+Code+Pro:400,700" rel="stylesheet">
8
+ <title>GraphQL Playground</title>
9
+ <link rel="stylesheet" href="<%= @cdn_url %>/graphql-playground-react<%= @version %>/build/static/css/index.css" />
10
+ <link rel="shortcut icon" href="<%= @cdn_url %>/graphql-playground-react<%= @version %>/build/favicon.png" />
11
+ <script src="<%= @cdn_url %>/graphql-playground-react<%= @version %>/build/static/js/middleware.js"></script>
12
+ </head>
13
+ <body>
14
+ <style type="text/css">
15
+ html {
16
+ font-family: "Open Sans", sans-serif;
17
+ overflow: hidden;
18
+ }
19
+
20
+ body {
21
+ margin: 0;
22
+ background: #172a3a;
23
+ }
24
+
25
+ .playgroundIn {
26
+ -webkit-animation: playgroundIn 0.5s ease-out forwards;
27
+ animation: playgroundIn 0.5s ease-out forwards;
28
+ }
29
+
30
+ @-webkit-keyframes playgroundIn {
31
+ from {
32
+ opacity: 0;
33
+ -webkit-transform: translateY(10px);
34
+ -ms-transform: translateY(10px);
35
+ transform: translateY(10px);
36
+ }
37
+ to {
38
+ opacity: 1;
39
+ -webkit-transform: translateY(0);
40
+ -ms-transform: translateY(0);
41
+ transform: translateY(0);
42
+ }
43
+ }
44
+
45
+ @keyframes playgroundIn {
46
+ from {
47
+ opacity: 0;
48
+ -webkit-transform: translateY(10px);
49
+ -ms-transform: translateY(10px);
50
+ transform: translateY(10px);
51
+ }
52
+ to {
53
+ opacity: 1;
54
+ -webkit-transform: translateY(0);
55
+ -ms-transform: translateY(0);
56
+ transform: translateY(0);
57
+ }
58
+ }
59
+ </style>
60
+ <div id="root" />
61
+ <script type="text/javascript">
62
+ window.addEventListener('load', function (event) {
63
+ const root = document.getElementById('root');
64
+ root.classList.add('playgroundIn');
65
+ GraphQLPlayground.init(root, { endpoint: '<%= @endpoint %>' })
66
+ })
67
+ </script>
68
+ </body>
69
+ </html>
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: graphql_playground
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - betaflag
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-01-21 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A rack middleware wrapper for GraphQL Playground
14
+ email: hello@betaflag.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - README.md
20
+ - lib/graphql_playground.rb
21
+ - lib/templates/index.html.erb
22
+ homepage: https://github.com/betaflag/graphql-playground-ruby
23
+ licenses:
24
+ - MIT
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 2.2.0
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.7.6
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: A rack middleware wrapper for GraphQL Playground
46
+ test_files: []