graphiti 2.0.0.beta.2 → 2.0.0.beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +30 -86
  3. data/.github/workflows/docs.yml +60 -0
  4. data/.github/workflows/release.yml +8 -8
  5. data/.gitignore +7 -0
  6. data/.npmrc +9 -0
  7. data/.standard.yml +4 -1
  8. data/Appraisals +33 -32
  9. data/CHANGELOG.md +41 -0
  10. data/README.md +13 -2
  11. data/UPGRADING.md +2 -68
  12. data/docs/concepts/backends-and-models.md +122 -0
  13. data/docs/concepts/endpoints.md +183 -0
  14. data/docs/concepts/links.md +212 -0
  15. data/docs/concepts/overview.md +80 -0
  16. data/docs/concepts/persisting.md +376 -0
  17. data/docs/concepts/relationships.md +527 -0
  18. data/docs/concepts/resources.md +677 -0
  19. data/docs/getting-started/first-api.md +289 -0
  20. data/docs/getting-started/installation.md +185 -0
  21. data/docs/intro.md +307 -0
  22. data/docs/js/authentication.md +63 -0
  23. data/docs/js/ddau.md +20 -0
  24. data/docs/js/extra-params.md +41 -0
  25. data/docs/js/index.md +112 -0
  26. data/docs/js/installation.md +120 -0
  27. data/docs/js/middleware.md +72 -0
  28. data/docs/js/models.md +202 -0
  29. data/docs/js/reads.md +494 -0
  30. data/docs/js/state-syncing.md +100 -0
  31. data/docs/js/writes.md +373 -0
  32. data/docs/reference/vandal.md +63 -0
  33. data/docs/reference/why.md +13 -0
  34. data/docs/topics/authorization.md +155 -0
  35. data/docs/topics/caching.md +55 -0
  36. data/docs/topics/customizing-sideloads.md +156 -0
  37. data/docs/topics/debugging.md +216 -0
  38. data/docs/topics/error-handling.md +210 -0
  39. data/docs/topics/etags.md +46 -0
  40. data/docs/topics/hopping-relationships.md +149 -0
  41. data/docs/topics/json-attributes.md +77 -0
  42. data/docs/topics/openstruct-models.md +50 -0
  43. data/docs/topics/remote-resources.md +291 -0
  44. data/docs/topics/testing.md +894 -0
  45. data/docs/topics/without-activerecord.md +324 -0
  46. data/docs/tutorial/index.md +58 -0
  47. data/docs/tutorial/step_0.md +107 -0
  48. data/docs/tutorial/step_1.md +199 -0
  49. data/docs/tutorial/step_2.md +312 -0
  50. data/docs/tutorial/step_3.md +142 -0
  51. data/docs/tutorial/step_4.md +135 -0
  52. data/docs/tutorial/step_5.md +69 -0
  53. data/docs/tutorial/step_6.md +82 -0
  54. data/docs/tutorial/step_7.md +205 -0
  55. data/docs/tutorial/step_8.md +128 -0
  56. data/docs/tutorial/step_9.md +171 -0
  57. data/docs/upgrading.md +265 -0
  58. data/gemfiles/rails_7_1.gemfile +4 -3
  59. data/gemfiles/{rails_7_2_graphiti_rails.gemfile → rails_7_2.gemfile} +3 -3
  60. data/gemfiles/{rails_8_1_graphiti_rails.gemfile → rails_8_0.gemfile} +3 -3
  61. data/gemfiles/{rails_8_0_graphiti_rails.gemfile → rails_8_1.gemfile} +3 -3
  62. data/graphiti.gemspec +7 -5
  63. data/{deprecated_generators → lib/generators}/graphiti/api_test_generator.rb +7 -1
  64. data/{deprecated_generators → lib/generators}/graphiti/generator_mixin.rb +14 -1
  65. data/{deprecated_generators → lib/generators}/graphiti/install_generator.rb +19 -13
  66. data/{deprecated_generators → lib/generators}/graphiti/resource_generator.rb +43 -6
  67. data/{deprecated_generators → lib/generators}/graphiti/templates/index_request_spec.rb.erb +1 -1
  68. data/{deprecated_generators → lib/generators}/graphiti/templates/resource_reads_spec.rb.erb +6 -6
  69. data/{deprecated_generators → lib/generators}/graphiti/templates/show_request_spec.rb.erb +1 -1
  70. data/lib/graphiti/configuration.rb +2 -2
  71. data/lib/graphiti/error_serializers/conflict_request.rb +19 -0
  72. data/lib/graphiti/error_serializers/deprecated_constants.rb +48 -0
  73. data/lib/graphiti/error_serializers/invalid_request.rb +56 -0
  74. data/lib/graphiti/error_serializers/validation.rb +143 -0
  75. data/lib/graphiti/errors.rb +4 -23
  76. data/lib/graphiti/query.rb +1 -1
  77. data/lib/graphiti/rails/context.rb +33 -0
  78. data/lib/graphiti/rails/controller.rb +41 -0
  79. data/lib/graphiti/rails/debugging.rb +18 -0
  80. data/lib/graphiti/rails/exception_handlers.rb +77 -0
  81. data/lib/graphiti/rails/railtie.rb +139 -0
  82. data/lib/graphiti/rails/responders.rb +21 -0
  83. data/lib/graphiti/rails/test_helpers.rb +22 -0
  84. data/lib/graphiti/rails.rb +47 -29
  85. data/lib/graphiti/resource/configuration.rb +1 -0
  86. data/lib/graphiti/resource/interface.rb +2 -2
  87. data/lib/graphiti/resource/persistence.rb +14 -2
  88. data/lib/graphiti/resource/remote.rb +2 -2
  89. data/lib/graphiti/resource/sideloading.rb +1 -1
  90. data/lib/graphiti/resource.rb +13 -1
  91. data/lib/graphiti/responders.rb +7 -20
  92. data/lib/graphiti/schema.rb +5 -1
  93. data/lib/graphiti/schema_diff.rb +4 -0
  94. data/lib/graphiti/scope.rb +45 -37
  95. data/lib/graphiti/serializer.rb +6 -0
  96. data/lib/graphiti/sideload/belongs_to.rb +38 -5
  97. data/lib/graphiti/sideload/polymorphic_belongs_to.rb +27 -23
  98. data/lib/graphiti/sideload.rb +54 -35
  99. data/lib/graphiti/spec_helpers/errors.rb +73 -0
  100. data/lib/graphiti/spec_helpers/errors_proxy.rb +75 -0
  101. data/lib/graphiti/spec_helpers/helpers.rb +107 -0
  102. data/lib/graphiti/spec_helpers/node.rb +88 -0
  103. data/lib/graphiti/spec_helpers/rspec.rb +147 -0
  104. data/lib/graphiti/spec_helpers.rb +53 -0
  105. data/lib/graphiti/util/include_params.rb +2 -2
  106. data/lib/graphiti/util/persistence.rb +10 -11
  107. data/lib/graphiti/util/serializer_relationships.rb +41 -5
  108. data/lib/graphiti/version.rb +1 -1
  109. data/lib/graphiti-rails.rb +11 -0
  110. data/lib/graphiti.rb +34 -10
  111. data/lib/graphiti_errors.rb +11 -0
  112. data/lib/graphiti_spec_helpers/rspec.rb +3 -0
  113. data/lib/graphiti_spec_helpers.rb +11 -0
  114. data/lib/{graphiti/deprecated_tasks.rb → tasks/graphiti.rake} +6 -1
  115. data/package-lock.json +6199 -0
  116. data/package.json +5 -4
  117. data/website/.gitignore +20 -0
  118. data/website/README.md +43 -0
  119. data/website/docusaurus.config.js +141 -0
  120. data/website/package-lock.json +19474 -0
  121. data/website/package.json +46 -0
  122. data/website/sidebars.js +82 -0
  123. data/website/src/css/custom.css +58 -0
  124. data/website/src/pages/markdown-page.mdx +7 -0
  125. data/website/static/.nojekyll +0 -0
  126. data/website/static/1.13/2019/03/31/graphiti-1-0.html +205 -0
  127. data/website/static/1.13/2019/05/08/graphiti-1-1.html +212 -0
  128. data/website/static/1.13/2019/05/20/graphiti-1-2.html +214 -0
  129. data/website/static/1.13/2019/10/14/tutorial.html +198 -0
  130. data/website/static/1.13/CNAME +1 -0
  131. data/website/static/1.13/README.md +16 -0
  132. data/website/static/1.13/assets/css/syntax.css +60 -0
  133. data/website/static/1.13/assets/favicons/android-chrome-192x192.png +0 -0
  134. data/website/static/1.13/assets/favicons/android-chrome-256x256.png +0 -0
  135. data/website/static/1.13/assets/favicons/apple-touch-icon.png +0 -0
  136. data/website/static/1.13/assets/favicons/browserconfig.xml +9 -0
  137. data/website/static/1.13/assets/favicons/favicon-16x16.png +0 -0
  138. data/website/static/1.13/assets/favicons/favicon-32x32.png +0 -0
  139. data/website/static/1.13/assets/favicons/favicon.ico +0 -0
  140. data/website/static/1.13/assets/favicons/mstile-150x150.png +0 -0
  141. data/website/static/1.13/assets/favicons/safari-pinned-tab.svg +1 -0
  142. data/website/static/1.13/assets/favicons/site.webmanifest +19 -0
  143. data/website/static/1.13/assets/img/backend.gif +0 -0
  144. data/website/static/1.13/assets/img/conformity.png +0 -0
  145. data/website/static/1.13/assets/img/error_payload.png +0 -0
  146. data/website/static/1.13/assets/img/gh.png +0 -0
  147. data/website/static/1.13/assets/img/lifecycle.gif +0 -0
  148. data/website/static/1.13/assets/img/logo-500.png +0 -0
  149. data/website/static/1.13/assets/img/logo.png +0 -0
  150. data/website/static/1.13/assets/img/love-graffiti.jpg +0 -0
  151. data/website/static/1.13/assets/img/meta_total_count.png +0 -0
  152. data/website/static/1.13/assets/img/persist.jpg +0 -0
  153. data/website/static/1.13/assets/img/resource.gif +0 -0
  154. data/website/static/1.13/assets/img/rest-graffiti.jpg +0 -0
  155. data/website/static/1.13/assets/img/rest1.gif +0 -0
  156. data/website/static/1.13/assets/img/rest2.gif +0 -0
  157. data/website/static/1.13/assets/img/rest3.gif +0 -0
  158. data/website/static/1.13/assets/img/rethink-rest-graffiti.jpg +0 -0
  159. data/website/static/1.13/assets/img/why.png +0 -0
  160. data/website/static/1.13/assets/js/highlight.pack.js +2 -0
  161. data/website/static/1.13/assets/main.css +15518 -0
  162. data/website/static/1.13/assets/main.css.map +1 -0
  163. data/website/static/1.13/bin/bundle +109 -0
  164. data/website/static/1.13/bin/jekyll +27 -0
  165. data/website/static/1.13/bin/kramdown +27 -0
  166. data/website/static/1.13/bin/listen +27 -0
  167. data/website/static/1.13/bin/rake +27 -0
  168. data/website/static/1.13/bin/rougify +27 -0
  169. data/website/static/1.13/bin/safe_yaml +27 -0
  170. data/website/static/1.13/bin/sass +27 -0
  171. data/website/static/1.13/bin/sass-convert +27 -0
  172. data/website/static/1.13/bin/scss +27 -0
  173. data/website/static/1.13/blog.html +259 -0
  174. data/website/static/1.13/cheatsheet.html +316 -0
  175. data/website/static/1.13/cookbooks/authorization.md +0 -0
  176. data/website/static/1.13/cookbooks/caching.md +0 -0
  177. data/website/static/1.13/cookbooks/customizing-sideloads.html +325 -0
  178. data/website/static/1.13/cookbooks/etags.md +0 -0
  179. data/website/static/1.13/cookbooks/hopping-relationships.html +324 -0
  180. data/website/static/1.13/cookbooks/json_attributes.md +0 -0
  181. data/website/static/1.13/cookbooks/openstruct-models.md +0 -0
  182. data/website/static/1.13/cookbooks/remote-resources.md +0 -0
  183. data/website/static/1.13/cookbooks/without-activerecord.html +510 -0
  184. data/website/static/1.13/features.html +249 -0
  185. data/website/static/1.13/feed.xml +106 -0
  186. data/website/static/1.13/guides/concepts/backends-and-models.html +467 -0
  187. data/website/static/1.13/guides/concepts/debugging.html +440 -0
  188. data/website/static/1.13/guides/concepts/endpoints.html +432 -0
  189. data/website/static/1.13/guides/concepts/error-handling.html +396 -0
  190. data/website/static/1.13/guides/concepts/links.html +501 -0
  191. data/website/static/1.13/guides/concepts/remote-resources.html +536 -0
  192. data/website/static/1.13/guides/concepts/resources.html +2176 -0
  193. data/website/static/1.13/guides/concepts/testing.html +1469 -0
  194. data/website/static/1.13/guides/getting-started/installation.html +420 -0
  195. data/website/static/1.13/guides/graphiti-rails-migration.html +242 -0
  196. data/website/static/1.13/guides/index.html +269 -0
  197. data/website/static/1.13/guides/overview.html +325 -0
  198. data/website/static/1.13/guides/upgrading-2-0.html +193 -0
  199. data/website/static/1.13/guides/upgrading.html +314 -0
  200. data/website/static/1.13/guides/vandal.html +282 -0
  201. data/website/static/1.13/guides/why.html +1121 -0
  202. data/website/static/1.13/index.html +72 -0
  203. data/website/static/1.13/js/authentication.html +295 -0
  204. data/website/static/1.13/js/ddau.html +238 -0
  205. data/website/static/1.13/js/extra-params.html +270 -0
  206. data/website/static/1.13/js/index.html +321 -0
  207. data/website/static/1.13/js/installation.html +637 -0
  208. data/website/static/1.13/js/introduction.html +257 -0
  209. data/website/static/1.13/js/middleware.html +318 -0
  210. data/website/static/1.13/js/reads/fieldsets.html +271 -0
  211. data/website/static/1.13/js/reads/filtering.html +289 -0
  212. data/website/static/1.13/js/reads/includes.html +260 -0
  213. data/website/static/1.13/js/reads/index.html +497 -0
  214. data/website/static/1.13/js/reads/nested-queries.html +353 -0
  215. data/website/static/1.13/js/reads/pagination.html +260 -0
  216. data/website/static/1.13/js/reads/sorting.html +265 -0
  217. data/website/static/1.13/js/reads/statistics.html +289 -0
  218. data/website/static/1.13/js/state-syncing.html +340 -0
  219. data/website/static/1.13/js/writes/deferred.html +296 -0
  220. data/website/static/1.13/js/writes/dirty-tracking.html +399 -0
  221. data/website/static/1.13/js/writes/index.html +391 -0
  222. data/website/static/1.13/js/writes/nested.html +330 -0
  223. data/website/static/1.13/js/writes/validations.html +272 -0
  224. data/website/static/1.13/quickstart.html +660 -0
  225. data/website/static/1.13/template +161 -0
  226. data/website/static/1.13/tutorial/index.html +250 -0
  227. data/website/static/1.13/tutorial/step_0.html +292 -0
  228. data/website/static/1.13/tutorial/step_1.html +517 -0
  229. data/website/static/1.13/tutorial/step_2.html +481 -0
  230. data/website/static/1.13/tutorial/step_3.html +323 -0
  231. data/website/static/1.13/tutorial/step_4.html +318 -0
  232. data/website/static/1.13/tutorial/step_5.html +265 -0
  233. data/website/static/1.13/tutorial/step_6.html +276 -0
  234. data/website/static/1.13/tutorial/step_7.html +390 -0
  235. data/website/static/1.13/tutorial/step_8.html +316 -0
  236. data/website/static/1.13/tutorial/step_9.html +365 -0
  237. data/website/static/assets/img/error_payload.png +0 -0
  238. data/website/static/assets/img/legacy/legacy-0378a3bb39.png +0 -0
  239. data/website/static/assets/img/legacy/legacy-05bbd3e5fd.png +0 -0
  240. data/website/static/assets/img/legacy/legacy-07aa104495.png +0 -0
  241. data/website/static/assets/img/legacy/legacy-0c75a16b3a.gif +0 -0
  242. data/website/static/assets/img/legacy/legacy-3076df6209.png +0 -0
  243. data/website/static/assets/img/legacy/legacy-7f6889bc89.png +0 -0
  244. data/website/static/assets/img/legacy/legacy-a2cc4363c3.png +0 -0
  245. data/website/static/assets/img/legacy/legacy-f67cfa89ab.png +0 -0
  246. data/website/static/assets/img/meta_total_count.png +0 -0
  247. data/website/static/img/docusaurus-social-card.jpg +0 -0
  248. data/website/static/img/docusaurus.png +0 -0
  249. data/website/static/img/favicon.ico +0 -0
  250. data/website/static/img/logo.png +0 -0
  251. data/website/static/img/logo.svg +1 -0
  252. data/website/static/img/undraw_docusaurus_mountain.svg +171 -0
  253. data/website/static/img/undraw_docusaurus_react.svg +170 -0
  254. data/website/static/img/undraw_docusaurus_tree.svg +40 -0
  255. metadata +245 -46
  256. data/gemfiles/rails_6.gemfile +0 -18
  257. data/gemfiles/rails_6_graphiti_rails.gemfile +0 -19
  258. data/gemfiles/rails_7.gemfile +0 -18
  259. data/gemfiles/rails_7_1_graphiti_rails.gemfile +0 -19
  260. data/gemfiles/rails_7_graphiti_rails.gemfile +0 -19
  261. data/lib/graphiti/railtie.rb +0 -121
  262. /data/{deprecated_generators → lib/generators}/graphiti/resource_test_generator.rb +0 -0
  263. /data/{deprecated_generators → lib/generators}/graphiti/templates/application_resource.rb.erb +0 -0
  264. /data/{deprecated_generators → lib/generators}/graphiti/templates/controller.rb.erb +0 -0
  265. /data/{deprecated_generators → lib/generators}/graphiti/templates/create_request_spec.rb.erb +0 -0
  266. /data/{deprecated_generators → lib/generators}/graphiti/templates/destroy_request_spec.rb.erb +0 -0
  267. /data/{deprecated_generators → lib/generators}/graphiti/templates/resource.rb.erb +0 -0
  268. /data/{deprecated_generators → lib/generators}/graphiti/templates/resource_writes_spec.rb.erb +0 -0
  269. /data/{deprecated_generators → lib/generators}/graphiti/templates/update_request_spec.rb.erb +0 -0
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "website",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "scripts": {
6
+ "docusaurus": "docusaurus",
7
+ "start": "docusaurus start",
8
+ "build": "docusaurus build",
9
+ "swizzle": "docusaurus swizzle",
10
+ "deploy": "docusaurus deploy",
11
+ "clear": "docusaurus clear",
12
+ "serve": "docusaurus serve",
13
+ "write-translations": "docusaurus write-translations",
14
+ "write-heading-ids": "docusaurus write-heading-ids"
15
+ },
16
+ "dependencies": {
17
+ "@docusaurus/core": "3.10.2",
18
+ "@docusaurus/faster": "3.10.2",
19
+ "@docusaurus/plugin-client-redirects": "^3.10.2",
20
+ "@docusaurus/preset-classic": "3.10.2",
21
+ "@mdx-js/react": "^3.0.0",
22
+ "clsx": "^2.0.0",
23
+ "prism-react-renderer": "^2.3.0",
24
+ "react": "^19.0.0",
25
+ "react-dom": "^19.0.0"
26
+ },
27
+ "devDependencies": {
28
+ "@docusaurus/module-type-aliases": "3.10.2",
29
+ "@docusaurus/types": "3.10.2"
30
+ },
31
+ "browserslist": {
32
+ "production": [
33
+ ">0.5%",
34
+ "not dead",
35
+ "not op_mini all"
36
+ ],
37
+ "development": [
38
+ "last 3 chrome version",
39
+ "last 3 firefox version",
40
+ "last 5 safari version"
41
+ ]
42
+ },
43
+ "engines": {
44
+ "node": ">=20.0"
45
+ }
46
+ }
@@ -0,0 +1,82 @@
1
+ /** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
2
+ module.exports = {
3
+ docs: [
4
+ 'intro',
5
+ 'getting-started/installation',
6
+ 'upgrading',
7
+ 'concepts/overview',
8
+ {
9
+ type: 'category',
10
+ label: 'API Reference',
11
+ collapsed: false,
12
+ items: [
13
+ 'concepts/resources',
14
+ 'concepts/relationships',
15
+ 'concepts/persisting',
16
+ 'concepts/endpoints',
17
+ 'concepts/links',
18
+ ],
19
+ },
20
+ {
21
+ type: 'category',
22
+ label: 'Topics',
23
+ items: [
24
+ 'topics/authorization',
25
+ 'topics/error-handling',
26
+ 'topics/testing',
27
+ 'topics/debugging',
28
+ 'topics/caching',
29
+ 'topics/etags',
30
+ 'topics/json-attributes',
31
+ 'topics/remote-resources',
32
+ 'concepts/backends-and-models',
33
+ 'topics/without-activerecord',
34
+ 'topics/openstruct-models',
35
+ 'topics/customizing-sideloads',
36
+ 'topics/hopping-relationships',
37
+ ],
38
+ },
39
+ {
40
+ type: 'category',
41
+ label: 'JavaScript Client',
42
+ items: [
43
+ 'js/index',
44
+ 'js/installation',
45
+ 'js/models',
46
+ 'js/reads',
47
+ 'js/writes',
48
+ 'js/middleware',
49
+ 'js/authentication',
50
+ 'js/state-syncing',
51
+ 'js/ddau',
52
+ 'js/extra-params',
53
+ ],
54
+ },
55
+ {
56
+ type: 'category',
57
+ label: 'Tutorial',
58
+ link: {type: 'doc', id: 'tutorial/index'},
59
+ items: [
60
+ 'getting-started/first-api',
61
+ 'tutorial/step_0',
62
+ 'tutorial/step_1',
63
+ 'tutorial/step_2',
64
+ 'tutorial/step_3',
65
+ 'tutorial/step_4',
66
+ 'tutorial/step_5',
67
+ 'tutorial/step_6',
68
+ 'tutorial/step_7',
69
+ 'tutorial/step_8',
70
+ 'tutorial/step_9',
71
+ ],
72
+ },
73
+ {
74
+ type: 'category',
75
+ label: 'More',
76
+ items: [
77
+ 'reference/vandal',
78
+ 'reference/why',
79
+ ],
80
+ },
81
+ ],
82
+ };
@@ -0,0 +1,58 @@
1
+ /* Palette ported from the Jekyll site so this still reads as Graphiti. */
2
+ @import url('https://fonts.googleapis.com/css2?family=Bungee&family=Roboto:wght@400;500;900&family=Roboto+Mono:wght@400;500&display=swap');
3
+
4
+ :root {
5
+ --ifm-color-primary: #e0289d;
6
+ --ifm-color-primary-dark: #ca248d;
7
+ --ifm-color-primary-darker: #bf2289;
8
+ --ifm-color-primary-darkest: #9d1c71;
9
+ --ifm-color-primary-light: #ff66d9;
10
+ --ifm-color-primary-lighter: #ff7cdf;
11
+ --ifm-color-primary-lightest: #ffa3e9;
12
+
13
+ --ifm-font-family-base: 'Roboto', system-ui, -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif;
14
+ --ifm-heading-font-family: 'Roboto', system-ui, -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif;
15
+ --ifm-font-family-monospace: 'Roboto Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
16
+
17
+ /* Roboto Black */
18
+ --ifm-heading-font-weight: 900;
19
+
20
+ --ifm-code-font-size: 95%;
21
+ --docusaurus-highlighted-code-line-bg: rgba(255, 102, 217, 0.12);
22
+ }
23
+
24
+ [data-theme='dark'] {
25
+ --ifm-color-primary: #ff66d9;
26
+ --ifm-color-primary-dark: #ff45d1;
27
+ --ifm-color-primary-darker: #ff34cd;
28
+ --ifm-color-primary-darkest: #f800bd;
29
+ --ifm-color-primary-light: #ff87e1;
30
+ --ifm-color-primary-lighter: #ff98e5;
31
+ --ifm-color-primary-lightest: #ffcbf1;
32
+
33
+ --ifm-background-color: #292e33;
34
+ --ifm-navbar-background-color: #292e33;
35
+ --ifm-footer-background-color: #21252a;
36
+ --docusaurus-highlighted-code-line-bg: rgba(255, 102, 217, 0.2);
37
+ }
38
+
39
+ .navbar__title { font-family: 'Bungee', cursive; font-weight: 400; font-size: 1.35rem; }
40
+
41
+ /* Black sets tight at display sizes and needs more room above it than a
42
+ lighter face would. The smallest headings drop to Bold so a dense
43
+ reference page doesn't turn into a wall of Black. */
44
+ .markdown h1 { letter-spacing: -0.015em; }
45
+ .markdown h2,
46
+ .markdown h3 { letter-spacing: -0.01em; margin-top: 2rem; }
47
+ .markdown h4,
48
+ .markdown h5,
49
+ .markdown h6 { font-weight: 700; }
50
+
51
+ /* Infima aligns inline code to `middle`, which centres the padded box on the
52
+ parent's x-height rather than matching baselines. Roboto Mono's descenders
53
+ then push the glyphs visibly below the surrounding prose. Baseline puts the
54
+ letters back on the line and lets the padding grow around them. */
55
+ .markdown code:not([class*='language-']) {
56
+ vertical-align: baseline;
57
+ padding: 0.15em 0.3em;
58
+ }
@@ -0,0 +1,7 @@
1
+ ---
2
+ title: Markdown page example
3
+ ---
4
+
5
+ # Markdown page example
6
+
7
+ You don't need React to write simple standalone pages.
File without changes
@@ -0,0 +1,205 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="utf-8">
6
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
7
+ <meta name="viewport" content="width=device-width, initial-scale=1">
8
+ <link href="https://fonts.googleapis.com/css?family=Roboto+Mono" rel="stylesheet">
9
+ <link href="https://fonts.googleapis.com/css?family=Boogaloo" rel="stylesheet">
10
+
11
+ <link rel="apple-touch-icon" sizes="180x180" href="/1.13/assets/favicons/apple-touch-icon.png">
12
+ <link rel="icon" type="image/png" sizes="32x32" href="/1.13/assets/favicons/favicon-32x32.png">
13
+ <link rel="icon" type="image/png" sizes="16x16" href="/1.13/assets/favicons/favicon-16x16.png">
14
+ <link rel="manifest" href="/1.13/assets/favicons/site.webmanifest">
15
+ <link rel="mask-icon" href="/1.13/assets/favicons/safari-pinned-tab.svg" color="#F86DA7">
16
+ <link rel="shortcut icon" href="/1.13/assets/favicons/favicon.ico">
17
+ <meta name="msapplication-TileColor" content="#F86DA7">
18
+ <meta name="msapplication-config" content="/1.13/assets/favicons/browserconfig.xml">
19
+ <meta name="theme-color" content="#F86DA7">
20
+
21
+ <title>Graphiti 1.0 Released 🎉</title>
22
+ <meta name="description" content="This project has gone through a number of iterations over the past three years. I’m happy to say we’ve now released 1.0, committing to semantic versioning. G...">
23
+
24
+ <link rel="stylesheet" href="/1.13/assets/main.css?ref=wh4t3v45">
25
+ <link rel="alternate" type="application/rss+xml" title="Graphiti" href="/1.13/feed.xml">
26
+
27
+ <!-- Global site tag (gtag.js) - Google Analytics -->
28
+ <script async src="https://www.googletagmanager.com/gtag/js?id=UA-127904727-1"></script>
29
+ <script>
30
+ window.dataLayer = window.dataLayer || [];
31
+ function gtag(){dataLayer.push(arguments);}
32
+ gtag('js', new Date());
33
+
34
+ gtag('config', 'UA-127904727-1');
35
+ </script>
36
+
37
+ <!-- javascript -->
38
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
39
+ <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
40
+
41
+
42
+ </head>
43
+
44
+
45
+ <body>
46
+ <main class="page-content" aria-label="Content">
47
+ <div class="wrapper">
48
+ <header class="navbar navbar-inverse normal" role="banner">
49
+ <div class="container">
50
+ <div class="navbar-header">
51
+ <a href="/1.13/1.13" class="navbar-brand">
52
+ <img alt="logo" src="/1.13/assets/img/logo.png">
53
+ </a>
54
+ </div>
55
+ <nav class="" role="navigation">
56
+ <ul class="nav navbar-nav nav-links">
57
+ <li>
58
+ <a class="quickstart nav-link" href="/1.13/quickstart">Quickstart</a>
59
+ </li>
60
+ <li>
61
+ <a class="guides nav-link" href="/1.13/guides">Guides</a>
62
+ </li>
63
+ <li>
64
+ <a class="tutorial nav-link" href="/1.13/tutorial">Tutorial</a>
65
+ </li>
66
+ <li>
67
+ <a class="spraypaint nav-link" href="/1.13/js">Spraypaint</a>
68
+ </li>
69
+ </ul>
70
+ <ul class="nav gh navbar-nav navbar-right visible-lg visible-md">
71
+ <li>
72
+ <span class="star">⭐</span>
73
+ <a href="https://github.com/graphiti-api/graphiti">
74
+ <img alt="github-star" style="margin-right: 65px;margin-top: -20px" src="/1.13/assets/img/gh.png">
75
+ </a>
76
+ </li>
77
+ </ul>
78
+ </nav>
79
+ </div>
80
+ </header>
81
+
82
+ <div class="container">
83
+ <h1>Graphiti 1.0 Released 🎉</h1>
84
+ <p>This project has gone through a number of iterations over the past three years. I’m happy to say we’ve now released 1.0, committing to semantic versioning. Graphiti has now seen enough use, across a wide variety of scenarios, that we can commit to no backwards-incompatible changes for a long while, and a changelog for future releases.</p>
85
+
86
+ <p>We’ll be writing more in this blog about our future roadmap. Stay tuned!</p>
87
+
88
+ <p><br />
89
+ <br />
90
+ <br />
91
+ <br />
92
+ <br />
93
+ <br />
94
+ <br />
95
+ <br />
96
+ <br />
97
+ <br />
98
+ <br />
99
+ <br />
100
+ <br />
101
+ <br />
102
+ <br />
103
+ <br />
104
+ <br />
105
+ <br />
106
+ <br />
107
+ <br />
108
+ <br /></p>
109
+
110
+ </div>
111
+ </div>
112
+ </main>
113
+ <div class="main-footer main-footer--dark">
114
+ <div class="container">
115
+ <div class="row">
116
+ <div class="col-sm-4 menu">
117
+ <h3>Overview</h3>
118
+ <ul>
119
+ <li>
120
+ <a href="/1.13/quickstart">Quickstart</a>
121
+ </li>
122
+ <li>
123
+ <a href="/1.13/tutorial">Tutorial</a>
124
+ </li>
125
+ <li>
126
+ <a href="/1.13/guides">Guides</a>
127
+ </li>
128
+ </ul>
129
+ </div>
130
+ <div class="col-sm-4 menu">
131
+ <h3>Contact</h3>
132
+ <ul>
133
+ <li>
134
+ <a target="_blank" href="https://discord.gg/wgqkMBsSRV">Discord Chat</a>
135
+ </li>
136
+ <li>
137
+ <a href="mailto:richmolj@gmail.com">Email</a>
138
+ </li>
139
+ </ul>
140
+ </div>
141
+ <div class="col-sm-4 menu">
142
+ <h3>Related</h3>
143
+ <ul>
144
+ <li>
145
+ <a target="_blank" href="http://jsonapi.org">JSONAPI Spec</a>
146
+ </li>
147
+ <li>
148
+ <a target="_blank" href="http://jsonapi-rb.org">jsonapi-rb</a>
149
+ </li>
150
+ <li>
151
+ <a target="_blank" href="https://vuejs.org/">VueJS</a>
152
+ </li>
153
+ </ul>
154
+ </div>
155
+ </div>
156
+ </div>
157
+ </div>
158
+
159
+ <script type="text/javascript">
160
+ $(function () {
161
+
162
+ var flipTabs = function() {
163
+ var isTS = true;
164
+ if (localStorage.getItem('js-lang') === 'javascript') {
165
+ isTS = false;
166
+ }
167
+
168
+ $('.code-tabs').each(function(index, el) {
169
+ if (isTS) {
170
+ console.log('hiding js');
171
+ $($(el).children()[1]).hide();
172
+ $($(el).children()[0]).show();
173
+ } else {
174
+ console.log('hiding ts');
175
+ $($(el).children()[0]).hide();
176
+ $($(el).children()[1]).show();
177
+ }
178
+ });
179
+
180
+ if (isTS) {
181
+ $('.tab.typescript').addClass('active');
182
+ $('.tab.javascript').removeClass('active');
183
+ } else {
184
+ $('.tab.typescript').removeClass('active');
185
+ $('.tab.javascript').addClass('active');
186
+ }
187
+ }
188
+
189
+ $('.tab').click(function() {
190
+ if ($(this).hasClass('typescript')) {
191
+ localStorage.setItem('js-lang', 'typescript');
192
+ } else {
193
+ localStorage.setItem('js-lang', 'javascript');
194
+ }
195
+
196
+ flipTabs();
197
+ });
198
+
199
+ flipTabs();
200
+ })
201
+ </script>
202
+
203
+ </body>
204
+ </html>
205
+
@@ -0,0 +1,212 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="utf-8">
6
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
7
+ <meta name="viewport" content="width=device-width, initial-scale=1">
8
+ <link href="https://fonts.googleapis.com/css?family=Roboto+Mono" rel="stylesheet">
9
+ <link href="https://fonts.googleapis.com/css?family=Boogaloo" rel="stylesheet">
10
+
11
+ <link rel="apple-touch-icon" sizes="180x180" href="/1.13/assets/favicons/apple-touch-icon.png">
12
+ <link rel="icon" type="image/png" sizes="32x32" href="/1.13/assets/favicons/favicon-32x32.png">
13
+ <link rel="icon" type="image/png" sizes="16x16" href="/1.13/assets/favicons/favicon-16x16.png">
14
+ <link rel="manifest" href="/1.13/assets/favicons/site.webmanifest">
15
+ <link rel="mask-icon" href="/1.13/assets/favicons/safari-pinned-tab.svg" color="#F86DA7">
16
+ <link rel="shortcut icon" href="/1.13/assets/favicons/favicon.ico">
17
+ <meta name="msapplication-TileColor" content="#F86DA7">
18
+ <meta name="msapplication-config" content="/1.13/assets/favicons/browserconfig.xml">
19
+ <meta name="theme-color" content="#F86DA7">
20
+
21
+ <title>Graphiti 1.1 Released</title>
22
+ <meta name="description" content="Our first minor version bump centers around an important update: better errors for clients. This is the first phase of work to allow us to provide more actio...">
23
+
24
+ <link rel="stylesheet" href="/1.13/assets/main.css?ref=wh4t3v45">
25
+ <link rel="alternate" type="application/rss+xml" title="Graphiti" href="/1.13/feed.xml">
26
+
27
+ <!-- Global site tag (gtag.js) - Google Analytics -->
28
+ <script async src="https://www.googletagmanager.com/gtag/js?id=UA-127904727-1"></script>
29
+ <script>
30
+ window.dataLayer = window.dataLayer || [];
31
+ function gtag(){dataLayer.push(arguments);}
32
+ gtag('js', new Date());
33
+
34
+ gtag('config', 'UA-127904727-1');
35
+ </script>
36
+
37
+ <!-- javascript -->
38
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
39
+ <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
40
+
41
+
42
+ </head>
43
+
44
+
45
+ <body>
46
+ <main class="page-content" aria-label="Content">
47
+ <div class="wrapper">
48
+ <header class="navbar navbar-inverse normal" role="banner">
49
+ <div class="container">
50
+ <div class="navbar-header">
51
+ <a href="/1.13/1.13" class="navbar-brand">
52
+ <img alt="logo" src="/1.13/assets/img/logo.png">
53
+ </a>
54
+ </div>
55
+ <nav class="" role="navigation">
56
+ <ul class="nav navbar-nav nav-links">
57
+ <li>
58
+ <a class="quickstart nav-link" href="/1.13/quickstart">Quickstart</a>
59
+ </li>
60
+ <li>
61
+ <a class="guides nav-link" href="/1.13/guides">Guides</a>
62
+ </li>
63
+ <li>
64
+ <a class="tutorial nav-link" href="/1.13/tutorial">Tutorial</a>
65
+ </li>
66
+ <li>
67
+ <a class="spraypaint nav-link" href="/1.13/js">Spraypaint</a>
68
+ </li>
69
+ </ul>
70
+ <ul class="nav gh navbar-nav navbar-right visible-lg visible-md">
71
+ <li>
72
+ <span class="star">⭐</span>
73
+ <a href="https://github.com/graphiti-api/graphiti">
74
+ <img alt="github-star" style="margin-right: 65px;margin-top: -20px" src="/1.13/assets/img/gh.png">
75
+ </a>
76
+ </li>
77
+ </ul>
78
+ </nav>
79
+ </div>
80
+ </header>
81
+
82
+ <div class="container">
83
+ <h1>Graphiti 1.1 Released</h1>
84
+ <p>Our first minor version bump centers around an important update:
85
+ <strong>better errors for clients</strong>. This is the first phase of work to allow us to provide more actionable errors to API users who might not also be developers of the API itself. This was brought to us by Graphiti maintainer <a href="https://github.com/wadetandy">Wade Tandy</a>.</p>
86
+
87
+ <p>Previously, when a client sent a bad write request to the server -
88
+ unwritable attributes/relationships, or bad types - we would render the
89
+ same generic 500 error JSON. We now render helpful error messages, so
90
+ third-party clients know how to correct their requests.</p>
91
+
92
+ <p>This is currently only affecting invalid writes, but the foundation laid
93
+ will be extendable to reads as well.</p>
94
+
95
+ <p><br />
96
+ <br />
97
+ <br />
98
+ <br />
99
+ <br />
100
+ <br />
101
+ <br />
102
+ <br />
103
+ <br />
104
+ <br />
105
+ <br />
106
+ <br />
107
+ <br />
108
+ <br />
109
+ <br />
110
+ <br />
111
+ <br />
112
+ <br />
113
+ <br />
114
+ <br />
115
+ <br /></p>
116
+
117
+ </div>
118
+ </div>
119
+ </main>
120
+ <div class="main-footer main-footer--dark">
121
+ <div class="container">
122
+ <div class="row">
123
+ <div class="col-sm-4 menu">
124
+ <h3>Overview</h3>
125
+ <ul>
126
+ <li>
127
+ <a href="/1.13/quickstart">Quickstart</a>
128
+ </li>
129
+ <li>
130
+ <a href="/1.13/tutorial">Tutorial</a>
131
+ </li>
132
+ <li>
133
+ <a href="/1.13/guides">Guides</a>
134
+ </li>
135
+ </ul>
136
+ </div>
137
+ <div class="col-sm-4 menu">
138
+ <h3>Contact</h3>
139
+ <ul>
140
+ <li>
141
+ <a target="_blank" href="https://discord.gg/wgqkMBsSRV">Discord Chat</a>
142
+ </li>
143
+ <li>
144
+ <a href="mailto:richmolj@gmail.com">Email</a>
145
+ </li>
146
+ </ul>
147
+ </div>
148
+ <div class="col-sm-4 menu">
149
+ <h3>Related</h3>
150
+ <ul>
151
+ <li>
152
+ <a target="_blank" href="http://jsonapi.org">JSONAPI Spec</a>
153
+ </li>
154
+ <li>
155
+ <a target="_blank" href="http://jsonapi-rb.org">jsonapi-rb</a>
156
+ </li>
157
+ <li>
158
+ <a target="_blank" href="https://vuejs.org/">VueJS</a>
159
+ </li>
160
+ </ul>
161
+ </div>
162
+ </div>
163
+ </div>
164
+ </div>
165
+
166
+ <script type="text/javascript">
167
+ $(function () {
168
+
169
+ var flipTabs = function() {
170
+ var isTS = true;
171
+ if (localStorage.getItem('js-lang') === 'javascript') {
172
+ isTS = false;
173
+ }
174
+
175
+ $('.code-tabs').each(function(index, el) {
176
+ if (isTS) {
177
+ console.log('hiding js');
178
+ $($(el).children()[1]).hide();
179
+ $($(el).children()[0]).show();
180
+ } else {
181
+ console.log('hiding ts');
182
+ $($(el).children()[0]).hide();
183
+ $($(el).children()[1]).show();
184
+ }
185
+ });
186
+
187
+ if (isTS) {
188
+ $('.tab.typescript').addClass('active');
189
+ $('.tab.javascript').removeClass('active');
190
+ } else {
191
+ $('.tab.typescript').removeClass('active');
192
+ $('.tab.javascript').addClass('active');
193
+ }
194
+ }
195
+
196
+ $('.tab').click(function() {
197
+ if ($(this).hasClass('typescript')) {
198
+ localStorage.setItem('js-lang', 'typescript');
199
+ } else {
200
+ localStorage.setItem('js-lang', 'javascript');
201
+ }
202
+
203
+ flipTabs();
204
+ });
205
+
206
+ flipTabs();
207
+ })
208
+ </script>
209
+
210
+ </body>
211
+ </html>
212
+