phobos_checkpoint_ui 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/.rspec +2 -0
  4. data/CHANGELOG.md +9 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +81 -0
  8. data/Rakefile +12 -0
  9. data/assets/index-52cbf3063583f3c09a4b-0.css +2 -0
  10. data/assets/index-52cbf3063583f3c09a4b-0.css.map +1 -0
  11. data/assets/index-52cbf3063583f3c09a4b-1.css +2 -0
  12. data/assets/index-52cbf3063583f3c09a4b-1.css.map +1 -0
  13. data/assets/index-52cbf3063583f3c09a4b.js +49 -0
  14. data/assets/index-52cbf3063583f3c09a4b.js.map +1 -0
  15. data/assets/index.html +12 -0
  16. data/bin/console +14 -0
  17. data/bin/setup +8 -0
  18. data/circle.yml +29 -0
  19. data/frontend/.babelrc +3 -0
  20. data/frontend/.editorconfig +8 -0
  21. data/frontend/.eslintignore +2 -0
  22. data/frontend/.eslintrc +3 -0
  23. data/frontend/.npmignore +8 -0
  24. data/frontend/package.json +45 -0
  25. data/frontend/sagui.config.js +52 -0
  26. data/frontend/src/actions/event-details.js +42 -0
  27. data/frontend/src/actions/event-details.spec.js +71 -0
  28. data/frontend/src/actions/event-overview.js +11 -0
  29. data/frontend/src/actions/event-overview.spec.js +20 -0
  30. data/frontend/src/actions/event-retry.js +58 -0
  31. data/frontend/src/actions/event-retry.spec.js +117 -0
  32. data/frontend/src/actions/events-search.js +75 -0
  33. data/frontend/src/actions/events-search.spec.js +197 -0
  34. data/frontend/src/actions/flash-messages.js +16 -0
  35. data/frontend/src/actions/flash-messages.spec.js +23 -0
  36. data/frontend/src/actions/index.js +24 -0
  37. data/frontend/src/actions/search-input-filter.js +14 -0
  38. data/frontend/src/actions/search-input-filter.spec.js +20 -0
  39. data/frontend/src/api.js +46 -0
  40. data/frontend/src/components/event/error-message.js +19 -0
  41. data/frontend/src/components/event/error-message.scss +8 -0
  42. data/frontend/src/components/event/event.scss +3 -0
  43. data/frontend/src/components/event/index.js +77 -0
  44. data/frontend/src/components/event/index.spec.js +89 -0
  45. data/frontend/src/components/event/loading.js +16 -0
  46. data/frontend/src/components/event/style.js +16 -0
  47. data/frontend/src/components/event-overview/attribute.js +24 -0
  48. data/frontend/src/components/event-overview/event-overview.scss +28 -0
  49. data/frontend/src/components/event-overview/index.js +47 -0
  50. data/frontend/src/components/event-overview/index.spec.js +67 -0
  51. data/frontend/src/components/event-overview-dialog/event-overview-dialog.scss +15 -0
  52. data/frontend/src/components/event-overview-dialog/index.js +85 -0
  53. data/frontend/src/components/event-retry-dialog/index.js +72 -0
  54. data/frontend/src/components/events-list/events-list.scss +49 -0
  55. data/frontend/src/components/events-list/index.js +62 -0
  56. data/frontend/src/components/events-list/index.spec.js +59 -0
  57. data/frontend/src/components/flash-message/flash-message.scss +40 -0
  58. data/frontend/src/components/flash-message/index.js +45 -0
  59. data/frontend/src/components/flash-message/index.spec.js +59 -0
  60. data/frontend/src/components/flash-message-list/index.js +34 -0
  61. data/frontend/src/components/header/header.scss +29 -0
  62. data/frontend/src/components/header/index.js +44 -0
  63. data/frontend/src/components/search-input/index.js +104 -0
  64. data/frontend/src/components/search-input/index.spec.js +56 -0
  65. data/frontend/src/components/search-input/search-input.scss +7 -0
  66. data/frontend/src/configs.js +15 -0
  67. data/frontend/src/helpers.spec.js +2 -0
  68. data/frontend/src/index.html +12 -0
  69. data/frontend/src/index.js +26 -0
  70. data/frontend/src/index.scss +31 -0
  71. data/frontend/src/reducers/event-details.js +32 -0
  72. data/frontend/src/reducers/event-details.spec.js +54 -0
  73. data/frontend/src/reducers/events-filters.js +17 -0
  74. data/frontend/src/reducers/events-filters.spec.js +34 -0
  75. data/frontend/src/reducers/events.js +48 -0
  76. data/frontend/src/reducers/events.spec.js +95 -0
  77. data/frontend/src/reducers/flash-messages.js +14 -0
  78. data/frontend/src/reducers/flash-messages.spec.js +34 -0
  79. data/frontend/src/reducers/index.js +18 -0
  80. data/frontend/src/reducers/index.spec.js +20 -0
  81. data/frontend/src/reducers/xhr-status.js +75 -0
  82. data/frontend/src/reducers/xhr-status.spec.js +94 -0
  83. data/frontend/src/routes.js +20 -0
  84. data/frontend/src/store.js +15 -0
  85. data/frontend/src/views/event-details.js +50 -0
  86. data/frontend/src/views/events-search.js +112 -0
  87. data/frontend/src/views/events-search.scss +24 -0
  88. data/frontend/src/views/events-search.spec.js +96 -0
  89. data/frontend/src/views/layout.js +24 -0
  90. data/frontend/src/views/layout.scss +3 -0
  91. data/lib/phobos_checkpoint_ui/app.rb +11 -0
  92. data/lib/phobos_checkpoint_ui/static_app.rb +19 -0
  93. data/lib/phobos_checkpoint_ui/tasks.rb +20 -0
  94. data/lib/phobos_checkpoint_ui/version.rb +3 -0
  95. data/lib/phobos_checkpoint_ui.rb +10 -0
  96. data/phobos_checkpoint_ui.gemspec +53 -0
  97. data/screenshot1.png +0 -0
  98. data/screenshot2.png +0 -0
  99. metadata +267 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7e693f33b985ea9fc067f401d19d66c0e3547d84
4
+ data.tar.gz: d86487724767c46a5c4f3e5a10435af4e80a05c1
5
+ SHA512:
6
+ metadata.gz: 15d1ae88be0e59540e2894cc807008f0deadd3eadfa49633e3dc8f2210c8ed8b589e5c45c86b41d92522fbf4f105e19c367d02750d5edd6cb7e16c1c18b63253
7
+ data.tar.gz: c5c35f12b19ee4968cea083ba00bd26f560843bf5197579cd97e27e1389cd843ba65892953c06e1a00d231dd5b1c431d7671afa9767f25c96af6ab868e79c6d2
data/.gitignore ADDED
@@ -0,0 +1,15 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ .DS_Store
11
+ npm-debug.log
12
+ frontend/node_modules/
13
+ frontend/dist/
14
+ spec/examples.txt
15
+ .byebug_history
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/CHANGELOG.md ADDED
@@ -0,0 +1,9 @@
1
+ # Change Log
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](http://keepachangelog.com/)
5
+ and this project adheres to [Semantic Versioning](http://semver.org/).
6
+
7
+ ## 0.1.0 (2016-10-10)
8
+
9
+ - Published on Github
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in phobos_checkpoint_ui.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Túlio Ornelas
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
13
+ all 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
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,81 @@
1
+ [![CircleCI](https://circleci.com/gh/klarna/phobos_checkpoint_ui.svg?style=shield)](https://circleci.com/gh/klarna/phobos_checkpoint_ui)
2
+
3
+ # Phobos Checkpoint UI
4
+
5
+ Phobos Checkpoint UI is a GUI for phobos checkpoint API. It is compatible with [Phobos DB Checkpoint](https://github.com/klarna/phobos_db_checkpoint)
6
+
7
+ ![Events list](https://github.com/klarna/phobos_checkpoint_ui/raw/master/screenshot1.png)
8
+ ![Event overview](https://github.com/klarna/phobos_checkpoint_ui/raw/master/screenshot2.png)
9
+
10
+ ## Installation
11
+
12
+ Add this line to your application's Gemfile:
13
+
14
+ ```ruby
15
+ gem 'phobos_checkpoint_ui'
16
+ ```
17
+
18
+ And then execute:
19
+
20
+ $ bundle
21
+
22
+ Or install it yourself as:
23
+
24
+ $ gem install phobos_checkpoint_ui
25
+
26
+ ## Usage
27
+
28
+ 1) Add `require 'phobos_checkpoint_ui/tasks'` to your __Rakefile__
29
+
30
+ 2) Run `rake phobos_checkpoint_ui:copy_assets`, this will copy the precompile assets to `./public`
31
+
32
+ 3) In `config.ru` add:
33
+
34
+ ```ruby
35
+ require 'phobos_checkpoint_ui'
36
+
37
+ # ...
38
+ # < keep the previous configurations >
39
+ # ...
40
+
41
+ # run PhobosDBCheckpoint::EventsAPI
42
+ run PhobosCheckpointUI::App.new(PhobosDBCheckpoint::EventsAPI)
43
+ ```
44
+
45
+ It is possible to configure some aspects of the app, `App.new` accepts a hash with options to be delivered to the front-end. The fron-end is prepared to receive the following options:
46
+
47
+ * `logo` - Path of image to be used as a logo (can be something inside `/public`)
48
+ * `title` - App title
49
+ * `env_label` - Special label display the environment
50
+
51
+ Example:
52
+
53
+ ```ruby
54
+ run PhobosCheckpointUI::App.new(PhobosDBCheckpoint::EventsAPI, {
55
+ logo: '/assets/logo.png',
56
+ title: 'Checkpoint',
57
+ env_label: 'production'
58
+ })
59
+ ```
60
+
61
+ ## Development
62
+
63
+ The front-end is written with `React` and `Redux`, ensure that you have `nodejs` version >= 6.3 installed.
64
+
65
+ ```sh
66
+ cd frontend
67
+ npm install
68
+ npm test:unit
69
+ ```
70
+
71
+ Run `rake spec` to run the ruby tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
72
+
73
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
74
+
75
+ ## Contributing
76
+
77
+ Bug reports and pull requests are welcome on GitHub at https://github.com/klarna/phobos_checkpoint_ui.
78
+
79
+ ## License
80
+
81
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
7
+
8
+ desc 'Compile front-end app'
9
+ task :compile_frontend do
10
+ `rm -rf assets/`
11
+ puts `cd frontend; npm run dist`
12
+ end
@@ -0,0 +1,2 @@
1
+ @import url(https://fonts.googleapis.com/css?family=Roboto:300,400,500);.event-error-message{display:-webkit-box;display:flex;text-align:left}.event-error-message>span{color:#f44336}.event{cursor:pointer}.event-overview .detail{margin-bottom:20px}.event-overview .detail:first-child{margin-top:20px}.event-overview .detail p{margin:0}.event-overview .detail label{font-weight:lighter;text-transform:uppercase}.event-overview .detail .value{font-weight:700}.event-overview .json-pretty{margin-top:0;padding:10px;white-space:pre-wrap}.event-overview-dialog .dialog-title{text-decoration:none;color:rgba(0,0,0,.87)}.event-overview-dialog .dialog-title:active,.event-overview-dialog .dialog-title:visited{color:inherit}.event-overview-dialog .dialog-title:hover{color:#666}.events-list{display:-webkit-box;display:flex;flex-wrap:wrap;-webkit-box-align:inherit;align-items:inherit}.events-list>.event{margin:10px}.flash-message{position:fixed;top:0;left:0;right:0;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;z-index:2000;height:64px;color:#fff;font-family:Roboto;font-size:20px;max-width:95%}.flash-message .close{-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;position:absolute;right:10px;cursor:pointer;font-weight:lighter;padding:4px 12px;border-radius:50%}.flash-message .close:hover{color:#000;background-color:#fff}.flash-message.success{background-color:#5bbd66}.flash-message.error{background-color:#ff5f5f}.header{display:-webkit-inline-box;display:inline-flex;-webkit-box-align:center;align-items:center;text-decoration:none;max-height:64px;box-sizing:border-box}.header:active,.header:hover,.header:visited{color:#fff}.header img{height:64px;min-width:54px;margin:5px 10px 5px 0}.header .title{-webkit-transition:all .15s ease-in-out;transition:all .15s ease-in-out;color:#fff}.header .title:hover{color:#999}.search-input{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;background-color:#fff;padding:5px 30px;margin:0 10px}body,html{margin:0;padding:0}#root,body,html{height:100%}body{background-color:#ccc;color:#d0d0d0}.load-error,.loading-boot{margin:0 auto;color:#000;width:100%;height:100%;text-align:center;font-size:40px;padding-top:100px}.load-error{color:#ff5f5f}.events-search{max-width:1020px;height:100%;background-color:#e4e4e4;margin:0 auto;padding:20px 0}.events-search .page-loader{text-align:center;padding:50px 0}.events-search .timeline{display:-webkit-box;display:flex;flex-wrap:wrap}.events-search .timeline .empty-event{margin:50px 15px 0;font-size:30px;font-weight:lighter;font-family:Roboto}.events-search .timeline>.event{margin:10px}.layout{height:100%}
2
+ /*# sourceMappingURL=index-52cbf3063583f3c09a4b-0.css.map*/
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///webpack:///components/event/error-message.scss","webpack:///webpack:///index.scss","webpack:///webpack:///components/event/event.scss","webpack:///webpack:///components/event-overview/event-overview.scss","webpack:///webpack:///components/event-overview-dialog/event-overview-dialog.scss","webpack:///webpack:///components/events-list/events-list.scss","webpack:///webpack:///components/flash-message/flash-message.scss","webpack:///webpack:///components/header/header.scss","webpack:///webpack:///components/search-input/search-input.scss","webpack:///webpack:///views/events-search.scss","webpack:///webpack:///views/layout.scss"],"names":[],"mappings":"wEAAA,qBACE,iCACA,gBCqCD,0BDlCG,cELJ,OACE,eCDF,wBAEI,mBAFJ,oCAKM,gBALN,0BASM,SATN,8BAaM,oBACA,yBAdN,+BAkBM,gBAIJ,6BACE,aACA,aACA,qBCzBJ,qCAEI,qBACA,sBAFF,yFAMI,cANJ,2CAUI,WCXN,aACE,iCACA,eACA,8CAHF,oBAMI,YCNJ,eACE,eACA,MACA,OACA,QAEA,iCACA,4CACA,+CAEA,aACA,YACA,WACA,mBACA,eACA,cAEA,sBACE,sEACA,kBACA,WACA,eACA,oBACA,iBACA,kBAxBJ,4BA2BM,WACA,sBA5BN,uBAiCI,yBAjCJ,qBAqCI,yBCrCJ,QACE,+CACA,4CACA,qBAEA,gBACA,sBANF,6CAWI,WAGF,YACE,YACA,eACA,sBAjBJ,eAqBI,wEACA,WAFF,qBAKI,WCzBN,cACE,iCACA,4CACA,sBACA,iBACA,cPyKD,UA1KC,SACA,UA+KD,gBA3KC,YAiLD,KA7KC,sBACA,cAiLD,0BA5KC,cACA,WACA,WACA,YACA,kBACA,eACA,kBAiLD,YA7KC,cQ7BF,eACE,iBACA,YAEA,yBACA,cACA,eANF,4BASI,kBACA,eAGF,yBACE,iCACA,eAEA,sCACE,mBACA,eACA,oBACA,mBAGE,gCACF,YCzBN,QACE","file":"index-52cbf3063583f3c09a4b-0.css","sourcesContent":[".event-error-message {\n display: flex;\n text-align: left;\n\n & > span {\n color: #f44336;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///components/event/error-message.scss\n **/","@import url('https://fonts.googleapis.com/css?family=Roboto:300,400,500');\n\nhtml,\nbody {\n margin: 0;\n padding: 0;\n}\n\nhtml, body, #root {\n height: 100%\n}\n\nbody {\n background-color: #ccc;\n color: #d0d0d0;\n}\n\n.loading-boot,\n.load-error {\n margin: 0 auto;\n color: black;\n width: 100%;\n height: 100%;\n text-align: center;\n font-size: 40px;\n padding-top: 100px;\n}\n\n.load-error {\n color: #ff5f5f;\n}\n\n\n@import './components/event/error-message';\n@import './components/event/event';\n@import './components/event-overview/event-overview';\n@import './components/event-overview-dialog/event-overview-dialog';\n@import './components/events-list/events-list';\n@import './components/flash-message/flash-message';\n@import './components/header/header';\n@import './components/search-input/search-input';\n@import './index';\n@import './views/events-search';\n@import './views/layout';\n\n\n/** WEBPACK FOOTER **\n ** webpack:///index.scss\n **/",".event {\n cursor: pointer;\n}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///components/event/event.scss\n **/",".event-overview {\n .detail {\n margin-bottom: 20px;\n\n &:first-child {\n margin-top: 20px;\n }\n\n p {\n margin: 0;\n }\n\n label {\n font-weight: lighter;\n text-transform: uppercase;\n }\n\n .value {\n font-weight: bold;\n }\n }\n\n .json-pretty {\n margin-top: 0;\n padding: 10px;\n white-space: pre-wrap;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///components/event-overview/event-overview.scss\n **/",".event-overview-dialog {\n .dialog-title {\n text-decoration: none;\n color: rgba(0, 0, 0, 0.87);\n\n &:active,\n &:visited {\n color: inherit;\n }\n\n &:hover {\n color: #666;\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///components/event-overview-dialog/event-overview-dialog.scss\n **/",".events-list {\n display: flex;\n flex-wrap: wrap;\n align-items: inherit;\n\n & > .event {\n margin: 10px 10px;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///components/events-list/events-list.scss\n **/",".flash-message {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n z-index: 2000;\n height: 64px;\n color: #fff;\n font-family: 'Roboto';\n font-size: 20px;\n max-width: 95%;\n\n .close {\n transition: all ease-in-out 200ms;\n position: absolute;\n right: 10px;\n cursor: pointer;\n font-weight: lighter;\n padding: 4px 12px;\n border-radius: 50%;\n\n &:hover {\n color: black;\n background-color: white;\n }\n }\n\n &.success {\n background-color: #5bbd66;\n }\n\n &.error {\n background-color: #ff5f5f;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///components/flash-message/flash-message.scss\n **/",".header {\n display: inline-flex;\n align-items: center;\n text-decoration: none;\n\n max-height: 64px;\n box-sizing: border-box;\n\n &:active,\n &:visited,\n &:hover {\n color: white;\n }\n\n img {\n height: 64px;\n min-width: 54px;\n margin: 5px 10px 5px 0;\n }\n\n .title {\n transition: all ease-in-out 150ms;\n color: white;\n\n &:hover {\n color: #999;\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///components/header/header.scss\n **/",".search-input {\n display: flex;\n align-items: center;\n background-color: #fff;\n padding: 5px 30px;\n margin: 0 10px;\n}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///components/search-input/search-input.scss\n **/",".events-search {\n max-width: 1020px;\n height: 100%;\n\n background-color: #e4e4e4;\n margin: 0 auto;\n padding: 20px 0;\n\n .page-loader {\n text-align: center;\n padding: 50px 0;\n }\n\n .timeline {\n display: flex;\n flex-wrap: wrap;\n\n .empty-event {\n margin: 50px 15px 0;\n font-size: 30px;\n font-weight: lighter;\n font-family: Roboto;\n }\n\n & > .event {\n margin: 10px 10px;\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///views/events-search.scss\n **/",".layout {\n height: 100%\n}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///views/layout.scss\n **/"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ .json-pretty{line-height:1.3;color:#66d9ef;background:#272822}.json-pretty .json-key{color:#f92672}.json-pretty .json-value{color:#a6e22e}.json-pretty .json-string{color:#fd971f}
2
+ /*# sourceMappingURL=index-52cbf3063583f3c09a4b-1.css.map*/
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///webpack:///~/react-json-pretty/src/JSONPretty.monikai.css"],"names":[],"mappings":"AAAA,aAAa,gBAAgB,cAAc,kBAAmB,CAAC,uBAAuB,aAAa,CAAC,yBAAyB,aAAa,CAAC,0BAA0B,aAAa","file":"index-52cbf3063583f3c09a4b-1.css","sourcesContent":[".json-pretty{line-height:1.3;color:#66d9ef;background:#272822;}.json-pretty .json-key{color:#f92672}.json-pretty .json-value{color:#a6e22e}.json-pretty .json-string{color:#fd971f}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///~/react-json-pretty/src/JSONPretty.monikai.css\n **/"],"sourceRoot":""}