graphql 1.9.0 → 2.1.1

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.

Potentially problematic release.


This version of graphql might be problematic. Click here for more details.

Files changed (723) hide show
  1. checksums.yaml +5 -5
  2. data/lib/generators/graphql/core.rb +21 -9
  3. data/lib/generators/graphql/enum_generator.rb +4 -10
  4. data/lib/generators/graphql/field_extractor.rb +31 -0
  5. data/lib/generators/graphql/input_generator.rb +50 -0
  6. data/lib/generators/graphql/install/mutation_root_generator.rb +34 -0
  7. data/lib/generators/graphql/install/templates/base_mutation.erb +12 -0
  8. data/lib/generators/graphql/{templates → install/templates}/mutation_type.erb +4 -0
  9. data/lib/generators/graphql/install_generator.rb +49 -9
  10. data/lib/generators/graphql/interface_generator.rb +7 -7
  11. data/lib/generators/graphql/loader_generator.rb +1 -0
  12. data/lib/generators/graphql/mutation_create_generator.rb +22 -0
  13. data/lib/generators/graphql/mutation_delete_generator.rb +22 -0
  14. data/lib/generators/graphql/mutation_generator.rb +6 -30
  15. data/lib/generators/graphql/mutation_update_generator.rb +22 -0
  16. data/lib/generators/graphql/object_generator.rb +28 -12
  17. data/lib/generators/graphql/orm_mutations_base.rb +40 -0
  18. data/lib/generators/graphql/relay.rb +66 -0
  19. data/lib/generators/graphql/relay_generator.rb +21 -0
  20. data/lib/generators/graphql/scalar_generator.rb +4 -2
  21. data/lib/generators/graphql/templates/base_argument.erb +8 -0
  22. data/lib/generators/graphql/templates/base_connection.erb +10 -0
  23. data/lib/generators/graphql/templates/base_edge.erb +10 -0
  24. data/lib/generators/graphql/templates/base_enum.erb +4 -0
  25. data/lib/generators/graphql/templates/base_field.erb +9 -0
  26. data/lib/generators/graphql/templates/base_input_object.erb +5 -0
  27. data/lib/generators/graphql/templates/base_interface.erb +6 -0
  28. data/lib/generators/graphql/templates/base_object.erb +5 -0
  29. data/lib/generators/graphql/templates/base_scalar.erb +4 -0
  30. data/lib/generators/graphql/templates/base_union.erb +4 -0
  31. data/lib/generators/graphql/templates/enum.erb +7 -1
  32. data/lib/generators/graphql/templates/graphql_controller.erb +23 -12
  33. data/lib/generators/graphql/templates/input.erb +9 -0
  34. data/lib/generators/graphql/templates/interface.erb +6 -2
  35. data/lib/generators/graphql/templates/loader.erb +4 -0
  36. data/lib/generators/graphql/templates/mutation.erb +5 -1
  37. data/lib/generators/graphql/templates/mutation_create.erb +20 -0
  38. data/lib/generators/graphql/templates/mutation_delete.erb +20 -0
  39. data/lib/generators/graphql/templates/mutation_update.erb +21 -0
  40. data/lib/generators/graphql/templates/node_type.erb +11 -0
  41. data/lib/generators/graphql/templates/object.erb +7 -3
  42. data/lib/generators/graphql/templates/query_type.erb +5 -3
  43. data/lib/generators/graphql/templates/scalar.erb +5 -1
  44. data/lib/generators/graphql/templates/schema.erb +27 -27
  45. data/lib/generators/graphql/templates/union.erb +6 -2
  46. data/lib/generators/graphql/type_generator.rb +47 -10
  47. data/lib/generators/graphql/union_generator.rb +5 -5
  48. data/lib/graphql/analysis/ast/analyzer.rb +41 -12
  49. data/lib/graphql/analysis/ast/field_usage.rb +32 -3
  50. data/lib/graphql/analysis/ast/max_query_complexity.rb +4 -5
  51. data/lib/graphql/analysis/ast/max_query_depth.rb +7 -3
  52. data/lib/graphql/analysis/ast/query_complexity.rb +182 -66
  53. data/lib/graphql/analysis/ast/query_depth.rb +15 -26
  54. data/lib/graphql/analysis/ast/visitor.rb +83 -62
  55. data/lib/graphql/analysis/ast.rb +23 -20
  56. data/lib/graphql/analysis.rb +0 -7
  57. data/lib/graphql/backtrace/inspect_result.rb +0 -1
  58. data/lib/graphql/backtrace/table.rb +37 -16
  59. data/lib/graphql/backtrace/trace.rb +96 -0
  60. data/lib/graphql/backtrace/traced_error.rb +0 -1
  61. data/lib/graphql/backtrace/tracer.rb +39 -9
  62. data/lib/graphql/backtrace.rb +22 -18
  63. data/lib/graphql/coercion_error.rb +8 -0
  64. data/lib/graphql/dataloader/null_dataloader.rb +24 -0
  65. data/lib/graphql/dataloader/request.rb +19 -0
  66. data/lib/graphql/dataloader/request_all.rb +19 -0
  67. data/lib/graphql/dataloader/source.rb +195 -0
  68. data/lib/graphql/dataloader.rb +320 -0
  69. data/lib/graphql/date_encoding_error.rb +16 -0
  70. data/lib/graphql/deprecation.rb +9 -0
  71. data/lib/graphql/dig.rb +1 -1
  72. data/lib/graphql/execution/directive_checks.rb +2 -2
  73. data/lib/graphql/execution/errors.rb +93 -0
  74. data/lib/graphql/execution/interpreter/argument_value.rb +28 -0
  75. data/lib/graphql/execution/interpreter/arguments.rb +88 -0
  76. data/lib/graphql/execution/interpreter/arguments_cache.rb +105 -0
  77. data/lib/graphql/execution/interpreter/handles_raw_value.rb +18 -0
  78. data/lib/graphql/execution/interpreter/resolve.rb +62 -24
  79. data/lib/graphql/execution/interpreter/runtime/graphql_result.rb +170 -0
  80. data/lib/graphql/execution/interpreter/runtime.rb +695 -392
  81. data/lib/graphql/execution/interpreter.rb +199 -74
  82. data/lib/graphql/execution/lazy/lazy_method_map.rb +4 -0
  83. data/lib/graphql/execution/lazy.rb +11 -21
  84. data/lib/graphql/execution/lookahead.rb +110 -150
  85. data/lib/graphql/execution/multiplex.rb +6 -148
  86. data/lib/graphql/execution.rb +12 -4
  87. data/lib/graphql/execution_error.rb +3 -2
  88. data/lib/graphql/integer_decoding_error.rb +17 -0
  89. data/lib/graphql/integer_encoding_error.rb +26 -2
  90. data/lib/graphql/introspection/base_object.rb +2 -5
  91. data/lib/graphql/introspection/directive_location_enum.rb +2 -2
  92. data/lib/graphql/introspection/directive_type.rb +12 -6
  93. data/lib/graphql/introspection/dynamic_fields.rb +3 -8
  94. data/lib/graphql/introspection/entry_points.rb +6 -18
  95. data/lib/graphql/introspection/enum_value_type.rb +2 -2
  96. data/lib/graphql/introspection/field_type.rb +9 -5
  97. data/lib/graphql/introspection/input_value_type.rb +41 -7
  98. data/lib/graphql/introspection/introspection_query.rb +6 -92
  99. data/lib/graphql/introspection/schema_type.rb +13 -12
  100. data/lib/graphql/introspection/type_type.rb +34 -17
  101. data/lib/graphql/introspection.rb +100 -0
  102. data/lib/graphql/invalid_null_error.rb +18 -0
  103. data/lib/graphql/language/block_string.rb +50 -23
  104. data/lib/graphql/language/cache.rb +37 -0
  105. data/lib/graphql/language/definition_slice.rb +21 -10
  106. data/lib/graphql/language/document_from_schema_definition.rb +153 -87
  107. data/lib/graphql/language/lexer.rb +249 -1450
  108. data/lib/graphql/language/nodes.rb +152 -142
  109. data/lib/graphql/language/parser.rb +1036 -953
  110. data/lib/graphql/language/parser.y +159 -120
  111. data/lib/graphql/language/printer.rb +342 -154
  112. data/lib/graphql/language/sanitized_printer.rb +220 -0
  113. data/lib/graphql/language/static_visitor.rb +167 -0
  114. data/lib/graphql/language/token.rb +2 -2
  115. data/lib/graphql/language/visitor.rb +196 -140
  116. data/lib/graphql/language.rb +4 -1
  117. data/lib/graphql/load_application_object_failed_error.rb +22 -0
  118. data/lib/graphql/name_validator.rb +2 -7
  119. data/lib/graphql/pagination/active_record_relation_connection.rb +77 -0
  120. data/lib/graphql/pagination/array_connection.rb +79 -0
  121. data/lib/graphql/pagination/connection.rb +275 -0
  122. data/lib/graphql/pagination/connections.rb +135 -0
  123. data/lib/graphql/pagination/mongoid_relation_connection.rb +25 -0
  124. data/lib/graphql/pagination/relation_connection.rb +228 -0
  125. data/lib/graphql/pagination/sequel_dataset_connection.rb +28 -0
  126. data/lib/graphql/pagination.rb +6 -0
  127. data/lib/graphql/parse_error.rb +0 -1
  128. data/lib/graphql/query/context/scoped_context.rb +101 -0
  129. data/lib/graphql/query/context.rb +157 -187
  130. data/lib/graphql/query/fingerprint.rb +26 -0
  131. data/lib/graphql/query/input_validation_result.rb +33 -7
  132. data/lib/graphql/query/null_context.rb +21 -14
  133. data/lib/graphql/query/validation_pipeline.rb +17 -38
  134. data/lib/graphql/query/variable_validation_error.rb +17 -3
  135. data/lib/graphql/query/variables.rb +49 -14
  136. data/lib/graphql/query.rb +142 -61
  137. data/lib/graphql/railtie.rb +6 -102
  138. data/lib/graphql/rake_task/validate.rb +5 -2
  139. data/lib/graphql/rake_task.rb +42 -20
  140. data/lib/graphql/relay/range_add.rb +17 -10
  141. data/lib/graphql/relay.rb +0 -15
  142. data/lib/graphql/rubocop/graphql/base_cop.rb +36 -0
  143. data/lib/graphql/rubocop/graphql/default_null_true.rb +43 -0
  144. data/lib/graphql/rubocop/graphql/default_required_true.rb +43 -0
  145. data/lib/graphql/rubocop.rb +4 -0
  146. data/lib/graphql/schema/addition.rb +271 -0
  147. data/lib/graphql/schema/always_visible.rb +10 -0
  148. data/lib/graphql/schema/argument.rb +301 -32
  149. data/lib/graphql/schema/base_64_bp.rb +3 -2
  150. data/lib/graphql/schema/base_64_encoder.rb +2 -0
  151. data/lib/graphql/schema/build_from_definition/resolve_map/default_resolve.rb +1 -1
  152. data/lib/graphql/schema/build_from_definition/resolve_map.rb +13 -5
  153. data/lib/graphql/schema/build_from_definition.rb +349 -203
  154. data/lib/graphql/schema/built_in_types.rb +5 -5
  155. data/lib/graphql/schema/directive/deprecated.rb +18 -0
  156. data/lib/graphql/schema/directive/feature.rb +2 -2
  157. data/lib/graphql/schema/directive/flagged.rb +57 -0
  158. data/lib/graphql/schema/directive/include.rb +2 -2
  159. data/lib/graphql/schema/directive/one_of.rb +12 -0
  160. data/lib/graphql/schema/directive/skip.rb +2 -2
  161. data/lib/graphql/schema/directive/specified_by.rb +14 -0
  162. data/lib/graphql/schema/directive/transform.rb +14 -2
  163. data/lib/graphql/schema/directive.rb +134 -15
  164. data/lib/graphql/schema/enum.rb +137 -39
  165. data/lib/graphql/schema/enum_value.rb +17 -23
  166. data/lib/graphql/schema/field/connection_extension.rb +36 -20
  167. data/lib/graphql/schema/field/scope_extension.rb +15 -5
  168. data/lib/graphql/schema/field.rb +570 -334
  169. data/lib/graphql/schema/field_extension.rb +88 -4
  170. data/lib/graphql/schema/find_inherited_value.rb +31 -0
  171. data/lib/graphql/schema/finder.rb +16 -14
  172. data/lib/graphql/schema/has_single_input_argument.rb +156 -0
  173. data/lib/graphql/schema/input_object.rb +190 -48
  174. data/lib/graphql/schema/interface.rb +24 -49
  175. data/lib/graphql/schema/introspection_system.rb +109 -36
  176. data/lib/graphql/schema/late_bound_type.rb +9 -2
  177. data/lib/graphql/schema/list.rb +61 -3
  178. data/lib/graphql/schema/loader.rb +146 -97
  179. data/lib/graphql/schema/member/base_dsl_methods.rb +45 -51
  180. data/lib/graphql/schema/member/build_type.rb +34 -17
  181. data/lib/graphql/schema/member/has_arguments.rb +385 -10
  182. data/lib/graphql/schema/member/has_ast_node.rb +32 -0
  183. data/lib/graphql/schema/member/has_deprecation_reason.rb +24 -0
  184. data/lib/graphql/schema/member/has_directives.rb +118 -0
  185. data/lib/graphql/schema/member/has_fields.rb +180 -35
  186. data/lib/graphql/schema/member/has_interfaces.rb +143 -0
  187. data/lib/graphql/schema/member/has_unresolved_type_error.rb +15 -0
  188. data/lib/graphql/schema/member/has_validators.rb +57 -0
  189. data/lib/graphql/schema/member/relay_shortcuts.rb +47 -2
  190. data/lib/graphql/schema/member/scoped.rb +19 -0
  191. data/lib/graphql/schema/member/type_system_helpers.rb +20 -3
  192. data/lib/graphql/schema/member/validates_input.rb +33 -0
  193. data/lib/graphql/schema/member.rb +11 -6
  194. data/lib/graphql/schema/mutation.rb +4 -9
  195. data/lib/graphql/schema/non_null.rb +34 -4
  196. data/lib/graphql/schema/object.rb +55 -64
  197. data/lib/graphql/schema/printer.rb +26 -40
  198. data/lib/graphql/schema/relay_classic_mutation.rb +13 -80
  199. data/lib/graphql/schema/resolver/has_payload_type.rb +53 -12
  200. data/lib/graphql/schema/resolver.rb +182 -162
  201. data/lib/graphql/schema/scalar.rb +40 -15
  202. data/lib/graphql/schema/subscription.rb +85 -27
  203. data/lib/graphql/schema/timeout.rb +119 -0
  204. data/lib/graphql/schema/type_expression.rb +21 -13
  205. data/lib/graphql/schema/type_membership.rb +51 -0
  206. data/lib/graphql/schema/union.rb +69 -15
  207. data/lib/graphql/schema/unique_within_type.rb +1 -2
  208. data/lib/graphql/schema/validator/allow_blank_validator.rb +29 -0
  209. data/lib/graphql/schema/validator/allow_null_validator.rb +26 -0
  210. data/lib/graphql/schema/validator/exclusion_validator.rb +33 -0
  211. data/lib/graphql/schema/validator/format_validator.rb +48 -0
  212. data/lib/graphql/schema/validator/inclusion_validator.rb +35 -0
  213. data/lib/graphql/schema/validator/length_validator.rb +59 -0
  214. data/lib/graphql/schema/validator/numericality_validator.rb +82 -0
  215. data/lib/graphql/schema/validator/required_validator.rb +82 -0
  216. data/lib/graphql/schema/validator.rb +171 -0
  217. data/lib/graphql/schema/warden.rb +330 -59
  218. data/lib/graphql/schema/wrapper.rb +0 -5
  219. data/lib/graphql/schema.rb +985 -858
  220. data/lib/graphql/static_validation/all_rules.rb +4 -1
  221. data/lib/graphql/static_validation/base_visitor.rb +33 -32
  222. data/lib/graphql/static_validation/definition_dependencies.rb +28 -14
  223. data/lib/graphql/static_validation/error.rb +3 -1
  224. data/lib/graphql/static_validation/literal_validator.rb +71 -28
  225. data/lib/graphql/static_validation/rules/argument_literals_are_compatible.rb +46 -79
  226. data/lib/graphql/static_validation/rules/argument_literals_are_compatible_error.rb +23 -6
  227. data/lib/graphql/static_validation/rules/arguments_are_defined.rb +35 -26
  228. data/lib/graphql/static_validation/rules/arguments_are_defined_error.rb +4 -2
  229. data/lib/graphql/static_validation/rules/directives_are_defined.rb +12 -6
  230. data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +14 -14
  231. data/lib/graphql/static_validation/rules/fields_are_defined_on_type.rb +4 -4
  232. data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +15 -7
  233. data/lib/graphql/static_validation/rules/fields_will_merge.rb +107 -57
  234. data/lib/graphql/static_validation/rules/fields_will_merge_error.rb +25 -4
  235. data/lib/graphql/static_validation/rules/fragment_spreads_are_possible.rb +3 -3
  236. data/lib/graphql/static_validation/rules/fragments_are_finite.rb +2 -2
  237. data/lib/graphql/static_validation/rules/input_object_names_are_unique.rb +30 -0
  238. data/lib/graphql/static_validation/rules/input_object_names_are_unique_error.rb +30 -0
  239. data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid.rb +66 -0
  240. data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid_error.rb +29 -0
  241. data/lib/graphql/static_validation/rules/query_root_exists.rb +17 -0
  242. data/lib/graphql/static_validation/rules/query_root_exists_error.rb +26 -0
  243. data/lib/graphql/static_validation/rules/required_arguments_are_present.rb +6 -4
  244. data/lib/graphql/static_validation/rules/required_input_object_attributes_are_present.rb +22 -10
  245. data/lib/graphql/static_validation/rules/unique_directives_per_location.rb +13 -7
  246. data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed.rb +12 -13
  247. data/lib/graphql/static_validation/rules/variable_usages_are_allowed.rb +19 -14
  248. data/lib/graphql/static_validation/rules/variables_are_input_types.rb +1 -1
  249. data/lib/graphql/static_validation/rules/variables_are_used_and_defined.rb +5 -3
  250. data/lib/graphql/static_validation/validation_context.rb +17 -7
  251. data/lib/graphql/static_validation/validation_timeout_error.rb +25 -0
  252. data/lib/graphql/static_validation/validator.rb +32 -20
  253. data/lib/graphql/static_validation.rb +1 -3
  254. data/lib/graphql/string_encoding_error.rb +13 -3
  255. data/lib/graphql/subscriptions/action_cable_subscriptions.rb +134 -24
  256. data/lib/graphql/subscriptions/broadcast_analyzer.rb +81 -0
  257. data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +58 -0
  258. data/lib/graphql/subscriptions/event.rb +90 -27
  259. data/lib/graphql/subscriptions/instrumentation.rb +0 -47
  260. data/lib/graphql/subscriptions/serialize.rb +53 -6
  261. data/lib/graphql/subscriptions.rb +147 -62
  262. data/lib/graphql/tracing/active_support_notifications_trace.rb +16 -0
  263. data/lib/graphql/tracing/active_support_notifications_tracing.rb +8 -17
  264. data/lib/graphql/tracing/appoptics_trace.rb +251 -0
  265. data/lib/graphql/tracing/appoptics_tracing.rb +173 -0
  266. data/lib/graphql/tracing/appsignal_trace.rb +77 -0
  267. data/lib/graphql/tracing/appsignal_tracing.rb +23 -0
  268. data/lib/graphql/tracing/data_dog_trace.rb +196 -0
  269. data/lib/graphql/tracing/data_dog_tracing.rb +53 -2
  270. data/lib/graphql/tracing/legacy_trace.rb +69 -0
  271. data/lib/graphql/tracing/new_relic_trace.rb +75 -0
  272. data/lib/graphql/tracing/new_relic_tracing.rb +9 -12
  273. data/lib/graphql/tracing/notifications_trace.rb +45 -0
  274. data/lib/graphql/tracing/notifications_tracing.rb +59 -0
  275. data/lib/graphql/tracing/platform_trace.rb +118 -0
  276. data/lib/graphql/tracing/platform_tracing.rb +77 -31
  277. data/lib/graphql/tracing/prometheus_trace.rb +89 -0
  278. data/lib/graphql/tracing/prometheus_tracing/graphql_collector.rb +5 -2
  279. data/lib/graphql/tracing/prometheus_tracing.rb +11 -3
  280. data/lib/graphql/tracing/scout_trace.rb +72 -0
  281. data/lib/graphql/tracing/scout_tracing.rb +19 -0
  282. data/lib/graphql/tracing/statsd_trace.rb +56 -0
  283. data/lib/graphql/tracing/statsd_tracing.rb +42 -0
  284. data/lib/graphql/tracing/trace.rb +75 -0
  285. data/lib/graphql/tracing.rb +24 -67
  286. data/lib/graphql/type_kinds.rb +6 -3
  287. data/lib/graphql/types/big_int.rb +23 -0
  288. data/lib/graphql/types/int.rb +11 -3
  289. data/lib/graphql/types/iso_8601_date.rb +45 -0
  290. data/lib/graphql/types/iso_8601_date_time.rb +36 -8
  291. data/lib/graphql/types/json.rb +25 -0
  292. data/lib/graphql/types/relay/base_connection.rb +18 -90
  293. data/lib/graphql/types/relay/base_edge.rb +2 -36
  294. data/lib/graphql/types/relay/connection_behaviors.rb +193 -0
  295. data/lib/graphql/types/relay/edge_behaviors.rb +82 -0
  296. data/lib/graphql/types/relay/has_node_field.rb +41 -0
  297. data/lib/graphql/types/relay/has_nodes_field.rb +41 -0
  298. data/lib/graphql/types/relay/node.rb +2 -4
  299. data/lib/graphql/types/relay/node_behaviors.rb +25 -0
  300. data/lib/graphql/types/relay/page_info.rb +2 -14
  301. data/lib/graphql/types/relay/page_info_behaviors.rb +30 -0
  302. data/lib/graphql/types/relay.rb +10 -5
  303. data/lib/graphql/types/string.rb +8 -2
  304. data/lib/graphql/types.rb +3 -0
  305. data/lib/graphql/unauthorized_error.rb +3 -3
  306. data/lib/graphql/unauthorized_field_error.rb +1 -1
  307. data/lib/graphql/unresolved_type_error.rb +2 -2
  308. data/lib/graphql/version.rb +1 -1
  309. data/lib/graphql.rb +68 -54
  310. data/readme.md +4 -7
  311. metadata +150 -822
  312. data/lib/graphql/analysis/analyze_query.rb +0 -91
  313. data/lib/graphql/analysis/field_usage.rb +0 -45
  314. data/lib/graphql/analysis/max_query_complexity.rb +0 -26
  315. data/lib/graphql/analysis/max_query_depth.rb +0 -26
  316. data/lib/graphql/analysis/query_complexity.rb +0 -88
  317. data/lib/graphql/analysis/query_depth.rb +0 -56
  318. data/lib/graphql/analysis/reducer_state.rb +0 -48
  319. data/lib/graphql/argument.rb +0 -153
  320. data/lib/graphql/authorization.rb +0 -82
  321. data/lib/graphql/backwards_compatibility.rb +0 -60
  322. data/lib/graphql/base_type.rb +0 -226
  323. data/lib/graphql/boolean_type.rb +0 -2
  324. data/lib/graphql/compatibility/execution_specification/counter_schema.rb +0 -53
  325. data/lib/graphql/compatibility/execution_specification/specification_schema.rb +0 -200
  326. data/lib/graphql/compatibility/execution_specification.rb +0 -435
  327. data/lib/graphql/compatibility/lazy_execution_specification/lazy_schema.rb +0 -111
  328. data/lib/graphql/compatibility/lazy_execution_specification.rb +0 -213
  329. data/lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb +0 -91
  330. data/lib/graphql/compatibility/query_parser_specification/query_assertions.rb +0 -79
  331. data/lib/graphql/compatibility/query_parser_specification.rb +0 -264
  332. data/lib/graphql/compatibility/schema_parser_specification.rb +0 -680
  333. data/lib/graphql/compatibility.rb +0 -5
  334. data/lib/graphql/define/assign_argument.rb +0 -12
  335. data/lib/graphql/define/assign_connection.rb +0 -13
  336. data/lib/graphql/define/assign_enum_value.rb +0 -18
  337. data/lib/graphql/define/assign_global_id_field.rb +0 -11
  338. data/lib/graphql/define/assign_mutation_function.rb +0 -34
  339. data/lib/graphql/define/assign_object_field.rb +0 -42
  340. data/lib/graphql/define/defined_object_proxy.rb +0 -50
  341. data/lib/graphql/define/instance_definable.rb +0 -300
  342. data/lib/graphql/define/no_definition_error.rb +0 -7
  343. data/lib/graphql/define/non_null_with_bang.rb +0 -16
  344. data/lib/graphql/define/type_definer.rb +0 -31
  345. data/lib/graphql/define.rb +0 -31
  346. data/lib/graphql/deprecated_dsl.rb +0 -42
  347. data/lib/graphql/directive/deprecated_directive.rb +0 -13
  348. data/lib/graphql/directive/include_directive.rb +0 -2
  349. data/lib/graphql/directive/skip_directive.rb +0 -2
  350. data/lib/graphql/directive.rb +0 -104
  351. data/lib/graphql/enum_type.rb +0 -193
  352. data/lib/graphql/execution/execute.rb +0 -319
  353. data/lib/graphql/execution/flatten.rb +0 -40
  354. data/lib/graphql/execution/instrumentation.rb +0 -92
  355. data/lib/graphql/execution/interpreter/hash_response.rb +0 -46
  356. data/lib/graphql/execution/lazy/resolve.rb +0 -91
  357. data/lib/graphql/execution/typecast.rb +0 -50
  358. data/lib/graphql/field/resolve.rb +0 -59
  359. data/lib/graphql/field.rb +0 -330
  360. data/lib/graphql/filter.rb +0 -53
  361. data/lib/graphql/float_type.rb +0 -2
  362. data/lib/graphql/function.rb +0 -153
  363. data/lib/graphql/id_type.rb +0 -2
  364. data/lib/graphql/input_object_type.rb +0 -153
  365. data/lib/graphql/int_type.rb +0 -2
  366. data/lib/graphql/interface_type.rb +0 -86
  367. data/lib/graphql/internal_representation/document.rb +0 -27
  368. data/lib/graphql/internal_representation/node.rb +0 -206
  369. data/lib/graphql/internal_representation/print.rb +0 -51
  370. data/lib/graphql/internal_representation/rewrite.rb +0 -184
  371. data/lib/graphql/internal_representation/scope.rb +0 -88
  372. data/lib/graphql/internal_representation/visit.rb +0 -36
  373. data/lib/graphql/internal_representation.rb +0 -7
  374. data/lib/graphql/language/lexer.rl +0 -236
  375. data/lib/graphql/list_type.rb +0 -80
  376. data/lib/graphql/literal_validation_error.rb +0 -6
  377. data/lib/graphql/non_null_type.rb +0 -81
  378. data/lib/graphql/object_type.rb +0 -141
  379. data/lib/graphql/query/arguments.rb +0 -179
  380. data/lib/graphql/query/arguments_cache.rb +0 -25
  381. data/lib/graphql/query/executor.rb +0 -53
  382. data/lib/graphql/query/literal_input.rb +0 -115
  383. data/lib/graphql/query/serial_execution/field_resolution.rb +0 -92
  384. data/lib/graphql/query/serial_execution/operation_resolution.rb +0 -19
  385. data/lib/graphql/query/serial_execution/selection_resolution.rb +0 -23
  386. data/lib/graphql/query/serial_execution/value_resolution.rb +0 -87
  387. data/lib/graphql/query/serial_execution.rb +0 -39
  388. data/lib/graphql/relay/array_connection.rb +0 -85
  389. data/lib/graphql/relay/base_connection.rb +0 -172
  390. data/lib/graphql/relay/connection_instrumentation.rb +0 -54
  391. data/lib/graphql/relay/connection_resolve.rb +0 -43
  392. data/lib/graphql/relay/connection_type.rb +0 -40
  393. data/lib/graphql/relay/edge.rb +0 -27
  394. data/lib/graphql/relay/edge_type.rb +0 -18
  395. data/lib/graphql/relay/edges_instrumentation.rb +0 -40
  396. data/lib/graphql/relay/global_id_resolve.rb +0 -18
  397. data/lib/graphql/relay/mongo_relation_connection.rb +0 -50
  398. data/lib/graphql/relay/mutation/instrumentation.rb +0 -23
  399. data/lib/graphql/relay/mutation/resolve.rb +0 -56
  400. data/lib/graphql/relay/mutation/result.rb +0 -38
  401. data/lib/graphql/relay/mutation.rb +0 -190
  402. data/lib/graphql/relay/node.rb +0 -36
  403. data/lib/graphql/relay/page_info.rb +0 -7
  404. data/lib/graphql/relay/relation_connection.rb +0 -186
  405. data/lib/graphql/relay/type_extensions.rb +0 -30
  406. data/lib/graphql/scalar_type.rb +0 -135
  407. data/lib/graphql/schema/catchall_middleware.rb +0 -35
  408. data/lib/graphql/schema/default_parse_error.rb +0 -10
  409. data/lib/graphql/schema/default_type_error.rb +0 -15
  410. data/lib/graphql/schema/member/accepts_definition.rb +0 -152
  411. data/lib/graphql/schema/member/cached_graphql_definition.rb +0 -26
  412. data/lib/graphql/schema/member/instrumentation.rb +0 -121
  413. data/lib/graphql/schema/middleware_chain.rb +0 -82
  414. data/lib/graphql/schema/possible_types.rb +0 -39
  415. data/lib/graphql/schema/rescue_middleware.rb +0 -55
  416. data/lib/graphql/schema/timeout_middleware.rb +0 -85
  417. data/lib/graphql/schema/traversal.rb +0 -228
  418. data/lib/graphql/schema/validation.rb +0 -286
  419. data/lib/graphql/static_validation/default_visitor.rb +0 -15
  420. data/lib/graphql/static_validation/no_validate_visitor.rb +0 -10
  421. data/lib/graphql/static_validation/type_stack.rb +0 -216
  422. data/lib/graphql/string_type.rb +0 -2
  423. data/lib/graphql/subscriptions/subscription_root.rb +0 -66
  424. data/lib/graphql/tracing/skylight_tracing.rb +0 -61
  425. data/lib/graphql/types/relay/base_field.rb +0 -22
  426. data/lib/graphql/types/relay/base_interface.rb +0 -29
  427. data/lib/graphql/types/relay/base_object.rb +0 -26
  428. data/lib/graphql/types/relay/node_field.rb +0 -43
  429. data/lib/graphql/types/relay/nodes_field.rb +0 -45
  430. data/lib/graphql/union_type.rb +0 -100
  431. data/lib/graphql/upgrader/member.rb +0 -899
  432. data/lib/graphql/upgrader/schema.rb +0 -37
  433. data/spec/dummy/Gemfile +0 -12
  434. data/spec/dummy/Gemfile.lock +0 -157
  435. data/spec/dummy/README.md +0 -24
  436. data/spec/dummy/Rakefile +0 -7
  437. data/spec/dummy/app/assets/config/manifest.js +0 -1
  438. data/spec/dummy/app/assets/javascripts/application.js +0 -66
  439. data/spec/dummy/app/channels/application_cable/channel.rb +0 -5
  440. data/spec/dummy/app/channels/application_cable/connection.rb +0 -5
  441. data/spec/dummy/app/channels/graphql_channel.rb +0 -116
  442. data/spec/dummy/app/controllers/application_controller.rb +0 -4
  443. data/spec/dummy/app/controllers/pages_controller.rb +0 -5
  444. data/spec/dummy/app/helpers/application_helper.rb +0 -3
  445. data/spec/dummy/app/jobs/application_job.rb +0 -3
  446. data/spec/dummy/app/views/layouts/application.html.erb +0 -12
  447. data/spec/dummy/app/views/pages/show.html +0 -16
  448. data/spec/dummy/bin/bundle +0 -4
  449. data/spec/dummy/bin/rails +0 -5
  450. data/spec/dummy/bin/rake +0 -5
  451. data/spec/dummy/bin/setup +0 -31
  452. data/spec/dummy/bin/update +0 -27
  453. data/spec/dummy/bin/yarn +0 -12
  454. data/spec/dummy/config/application.rb +0 -30
  455. data/spec/dummy/config/boot.rb +0 -4
  456. data/spec/dummy/config/cable.yml +0 -10
  457. data/spec/dummy/config/environment.rb +0 -6
  458. data/spec/dummy/config/environments/development.rb +0 -40
  459. data/spec/dummy/config/environments/production.rb +0 -76
  460. data/spec/dummy/config/environments/test.rb +0 -37
  461. data/spec/dummy/config/initializers/application_controller_renderer.rb +0 -9
  462. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -8
  463. data/spec/dummy/config/initializers/cookies_serializer.rb +0 -6
  464. data/spec/dummy/config/initializers/filter_parameter_logging.rb +0 -5
  465. data/spec/dummy/config/initializers/inflections.rb +0 -17
  466. data/spec/dummy/config/initializers/mime_types.rb +0 -5
  467. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -10
  468. data/spec/dummy/config/locales/en.yml +0 -33
  469. data/spec/dummy/config/puma.rb +0 -57
  470. data/spec/dummy/config/routes.rb +0 -4
  471. data/spec/dummy/config/secrets.yml +0 -32
  472. data/spec/dummy/config.ru +0 -6
  473. data/spec/dummy/log/test.log +0 -199
  474. data/spec/dummy/package.json +0 -5
  475. data/spec/dummy/public/404.html +0 -67
  476. data/spec/dummy/public/422.html +0 -67
  477. data/spec/dummy/public/500.html +0 -66
  478. data/spec/dummy/public/apple-touch-icon-precomposed.png +0 -0
  479. data/spec/dummy/public/apple-touch-icon.png +0 -0
  480. data/spec/dummy/public/favicon.ico +0 -0
  481. data/spec/dummy/public/robots.txt +0 -1
  482. data/spec/dummy/test/application_system_test_case.rb +0 -6
  483. data/spec/dummy/test/system/action_cable_subscription_test.rb +0 -45
  484. data/spec/dummy/test/test_helper.rb +0 -4
  485. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4w/4wzXRZrAkwKdgYaSE0pid5eB-fer8vSfSku_NPg4rMA.cache +0 -0
  486. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7I/7IHVBiJT06QSpgLpLoJIxboQ0B-D_tMTxsvoezBTV3Q.cache +0 -1
  487. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8w/8wY_SKagj8wHuwGNAAf6JnQ8joMbC6cEYpHrTAI8Urc.cache +0 -1
  488. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AK/AKzz1u6bGb4auXcrObA_g5LL-oV0ejNGa448AgAi_WQ.cache +0 -1
  489. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ET/ETW4uxvaYpruL8y6_ZptUH82ZowMaHIqvg5WexBFdEM.cache +0 -3
  490. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/F1/F1TWpjjyA56k9Z90n5B3xRn7DUdGjX73QCkYC6k07JQ.cache +0 -0
  491. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/F8/F8MUNRzORGFgr329fNM0xLaoWCXdv3BIalT7dsvLfjs.cache +0 -2
  492. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KB/KB07ZaKNC5uXJ7TjLi-WqnY6g7dq8wWp_8N3HNjBNxg.cache +0 -2
  493. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ms/MsKSimH_UCB-H1tLvDABDHuvGciuoW6kVqQWDrXU5FQ.cache +0 -0
  494. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Mt/Mtci-Kim50aPOmeClD4AIicKn1d1WJ0n454IjSd94sk.cache +0 -0
  495. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QH/QHt3Tc1Y6M66Oo_pDuMyWrQNs4Pp3SMeZR5K1wJj2Ts.cache +0 -1
  496. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XU/XU4k1OXnfMils5SrirorPvDSyDSqiOWLZNtmAH1HH8k.cache +0 -0
  497. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZI/ZIof7mZxWWCnraIFOCuV6a8QRWzKJXJnx2Xd7C0ZyX0.cache +0 -1
  498. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cG/cGc_puuPS5pZKgUcy1Y_i1L6jl5UtsiIrMH59rTzR6c.cache +0 -3
  499. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/df/dfro_B6bx3KP1Go-7jEOqqZ2j4hVRseXIc3es9PKQno.cache +0 -1
  500. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jO/jO1DfbqnG0mTULsjJJANc3fefrG2zt7DIMmcptMT628.cache +0 -1
  501. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pE/pE7gO6pQ-z187Swb4hT554wmqsq-cNzgPWLrCz-LQQQ.cache +0 -0
  502. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/r9/r9iU1l58a6rxkZSW5RSC52_tD-_UQuHxoMVnkfJ7Mhs.cache +0 -1
  503. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xi/xitPPFfPIyDMpaznV0sBBcw8eSCV8PJcLLWin78sCgE.cache +0 -0
  504. data/spec/dummy/tmp/screenshots/failures_test_it_handles_subscriptions.png +0 -0
  505. data/spec/fixtures/upgrader/account.original.rb +0 -19
  506. data/spec/fixtures/upgrader/account.transformed.rb +0 -20
  507. data/spec/fixtures/upgrader/blame_range.original.rb +0 -43
  508. data/spec/fixtures/upgrader/blame_range.transformed.rb +0 -30
  509. data/spec/fixtures/upgrader/date_time.original.rb +0 -24
  510. data/spec/fixtures/upgrader/date_time.transformed.rb +0 -23
  511. data/spec/fixtures/upgrader/delete_project.original.rb +0 -28
  512. data/spec/fixtures/upgrader/delete_project.transformed.rb +0 -27
  513. data/spec/fixtures/upgrader/gist_order_field.original.rb +0 -14
  514. data/spec/fixtures/upgrader/gist_order_field.transformed.rb +0 -13
  515. data/spec/fixtures/upgrader/increment_count.original.rb +0 -59
  516. data/spec/fixtures/upgrader/increment_count.transformed.rb +0 -50
  517. data/spec/fixtures/upgrader/photo.original.rb +0 -10
  518. data/spec/fixtures/upgrader/photo.transformed.rb +0 -12
  519. data/spec/fixtures/upgrader/release_order.original.rb +0 -15
  520. data/spec/fixtures/upgrader/release_order.transformed.rb +0 -14
  521. data/spec/fixtures/upgrader/starrable.original.rb +0 -49
  522. data/spec/fixtures/upgrader/starrable.transformed.rb +0 -46
  523. data/spec/fixtures/upgrader/subscribable.original.rb +0 -55
  524. data/spec/fixtures/upgrader/subscribable.transformed.rb +0 -51
  525. data/spec/fixtures/upgrader/type_x.original.rb +0 -65
  526. data/spec/fixtures/upgrader/type_x.transformed.rb +0 -56
  527. data/spec/graphql/analysis/analyze_query_spec.rb +0 -272
  528. data/spec/graphql/analysis/ast/field_usage_spec.rb +0 -51
  529. data/spec/graphql/analysis/ast/max_query_complexity_spec.rb +0 -120
  530. data/spec/graphql/analysis/ast/max_query_depth_spec.rb +0 -114
  531. data/spec/graphql/analysis/ast/query_complexity_spec.rb +0 -299
  532. data/spec/graphql/analysis/ast/query_depth_spec.rb +0 -108
  533. data/spec/graphql/analysis/ast_spec.rb +0 -269
  534. data/spec/graphql/analysis/field_usage_spec.rb +0 -62
  535. data/spec/graphql/analysis/max_query_complexity_spec.rb +0 -102
  536. data/spec/graphql/analysis/max_query_depth_spec.rb +0 -101
  537. data/spec/graphql/analysis/query_complexity_spec.rb +0 -301
  538. data/spec/graphql/analysis/query_depth_spec.rb +0 -81
  539. data/spec/graphql/argument_spec.rb +0 -159
  540. data/spec/graphql/authorization_spec.rb +0 -901
  541. data/spec/graphql/backtrace_spec.rb +0 -206
  542. data/spec/graphql/base_type_spec.rb +0 -171
  543. data/spec/graphql/boolean_type_spec.rb +0 -21
  544. data/spec/graphql/compatibility/execution_specification_spec.rb +0 -4
  545. data/spec/graphql/compatibility/lazy_execution_specification_spec.rb +0 -4
  546. data/spec/graphql/compatibility/query_parser_specification_spec.rb +0 -6
  547. data/spec/graphql/compatibility/schema_parser_specification_spec.rb +0 -6
  548. data/spec/graphql/define/assign_argument_spec.rb +0 -61
  549. data/spec/graphql/define/instance_definable_spec.rb +0 -203
  550. data/spec/graphql/directive/skip_directive_spec.rb +0 -9
  551. data/spec/graphql/directive_spec.rb +0 -295
  552. data/spec/graphql/enum_type_spec.rb +0 -158
  553. data/spec/graphql/execution/execute_spec.rb +0 -303
  554. data/spec/graphql/execution/instrumentation_spec.rb +0 -184
  555. data/spec/graphql/execution/interpreter_spec.rb +0 -485
  556. data/spec/graphql/execution/lazy/lazy_method_map_spec.rb +0 -57
  557. data/spec/graphql/execution/lazy_spec.rb +0 -240
  558. data/spec/graphql/execution/lookahead_spec.rb +0 -363
  559. data/spec/graphql/execution/multiplex_spec.rb +0 -211
  560. data/spec/graphql/execution/typecast_spec.rb +0 -47
  561. data/spec/graphql/execution_error_spec.rb +0 -325
  562. data/spec/graphql/field_spec.rb +0 -246
  563. data/spec/graphql/float_type_spec.rb +0 -16
  564. data/spec/graphql/function_spec.rb +0 -129
  565. data/spec/graphql/id_type_spec.rb +0 -33
  566. data/spec/graphql/input_object_type_spec.rb +0 -25
  567. data/spec/graphql/int_type_spec.rb +0 -35
  568. data/spec/graphql/interface_type_spec.rb +0 -196
  569. data/spec/graphql/internal_representation/print_spec.rb +0 -41
  570. data/spec/graphql/internal_representation/rewrite_spec.rb +0 -376
  571. data/spec/graphql/introspection/directive_type_spec.rb +0 -61
  572. data/spec/graphql/introspection/input_value_type_spec.rb +0 -105
  573. data/spec/graphql/introspection/introspection_query_spec.rb +0 -59
  574. data/spec/graphql/introspection/schema_type_spec.rb +0 -56
  575. data/spec/graphql/introspection/type_type_spec.rb +0 -155
  576. data/spec/graphql/language/block_string_spec.rb +0 -70
  577. data/spec/graphql/language/definition_slice_spec.rb +0 -226
  578. data/spec/graphql/language/document_from_schema_definition_spec.rb +0 -770
  579. data/spec/graphql/language/equality_spec.rb +0 -84
  580. data/spec/graphql/language/generation_spec.rb +0 -38
  581. data/spec/graphql/language/lexer_spec.rb +0 -135
  582. data/spec/graphql/language/nodes_spec.rb +0 -67
  583. data/spec/graphql/language/parser_spec.rb +0 -175
  584. data/spec/graphql/language/printer_spec.rb +0 -215
  585. data/spec/graphql/language/visitor_spec.rb +0 -400
  586. data/spec/graphql/list_type_spec.rb +0 -57
  587. data/spec/graphql/non_null_type_spec.rb +0 -48
  588. data/spec/graphql/object_type_spec.rb +0 -197
  589. data/spec/graphql/query/arguments_spec.rb +0 -346
  590. data/spec/graphql/query/context_spec.rb +0 -292
  591. data/spec/graphql/query/executor_spec.rb +0 -314
  592. data/spec/graphql/query/literal_input_spec.rb +0 -91
  593. data/spec/graphql/query/result_spec.rb +0 -29
  594. data/spec/graphql/query/serial_execution/value_resolution_spec.rb +0 -109
  595. data/spec/graphql/query_spec.rb +0 -800
  596. data/spec/graphql/rake_task_spec.rb +0 -59
  597. data/spec/graphql/scalar_type_spec.rb +0 -66
  598. data/spec/graphql/schema/argument_spec.rb +0 -127
  599. data/spec/graphql/schema/build_from_definition_spec.rb +0 -1187
  600. data/spec/graphql/schema/catchall_middleware_spec.rb +0 -35
  601. data/spec/graphql/schema/directive/feature_spec.rb +0 -81
  602. data/spec/graphql/schema/directive/transform_spec.rb +0 -39
  603. data/spec/graphql/schema/enum_spec.rb +0 -83
  604. data/spec/graphql/schema/enum_value_spec.rb +0 -24
  605. data/spec/graphql/schema/field_extension_spec.rb +0 -115
  606. data/spec/graphql/schema/field_spec.rb +0 -301
  607. data/spec/graphql/schema/finder_spec.rb +0 -135
  608. data/spec/graphql/schema/input_object_spec.rb +0 -238
  609. data/spec/graphql/schema/instrumentation_spec.rb +0 -43
  610. data/spec/graphql/schema/interface_spec.rb +0 -215
  611. data/spec/graphql/schema/introspection_system_spec.rb +0 -47
  612. data/spec/graphql/schema/list_spec.rb +0 -46
  613. data/spec/graphql/schema/loader_spec.rb +0 -286
  614. data/spec/graphql/schema/member/accepts_definition_spec.rb +0 -115
  615. data/spec/graphql/schema/member/build_type_spec.rb +0 -63
  616. data/spec/graphql/schema/member/scoped_spec.rb +0 -177
  617. data/spec/graphql/schema/member/type_system_helpers_spec.rb +0 -63
  618. data/spec/graphql/schema/middleware_chain_spec.rb +0 -57
  619. data/spec/graphql/schema/mutation_spec.rb +0 -150
  620. data/spec/graphql/schema/non_null_spec.rb +0 -46
  621. data/spec/graphql/schema/object_spec.rb +0 -244
  622. data/spec/graphql/schema/printer_spec.rb +0 -869
  623. data/spec/graphql/schema/relay_classic_mutation_spec.rb +0 -234
  624. data/spec/graphql/schema/rescue_middleware_spec.rb +0 -74
  625. data/spec/graphql/schema/resolver_spec.rb +0 -640
  626. data/spec/graphql/schema/scalar_spec.rb +0 -101
  627. data/spec/graphql/schema/subscription_spec.rb +0 -416
  628. data/spec/graphql/schema/timeout_middleware_spec.rb +0 -188
  629. data/spec/graphql/schema/traversal_spec.rb +0 -222
  630. data/spec/graphql/schema/type_expression_spec.rb +0 -39
  631. data/spec/graphql/schema/union_spec.rb +0 -72
  632. data/spec/graphql/schema/unique_within_type_spec.rb +0 -44
  633. data/spec/graphql/schema/validation_spec.rb +0 -355
  634. data/spec/graphql/schema/warden_spec.rb +0 -926
  635. data/spec/graphql/static_validation/rules/argument_literals_are_compatible_spec.rb +0 -413
  636. data/spec/graphql/static_validation/rules/argument_names_are_unique_spec.rb +0 -44
  637. data/spec/graphql/static_validation/rules/arguments_are_defined_spec.rb +0 -112
  638. data/spec/graphql/static_validation/rules/directives_are_defined_spec.rb +0 -35
  639. data/spec/graphql/static_validation/rules/directives_are_in_valid_locations_spec.rb +0 -42
  640. data/spec/graphql/static_validation/rules/fields_are_defined_on_type_spec.rb +0 -167
  641. data/spec/graphql/static_validation/rules/fields_have_appropriate_selections_spec.rb +0 -66
  642. data/spec/graphql/static_validation/rules/fields_will_merge_spec.rb +0 -740
  643. data/spec/graphql/static_validation/rules/fragment_names_are_unique_spec.rb +0 -28
  644. data/spec/graphql/static_validation/rules/fragment_spreads_are_possible_spec.rb +0 -52
  645. data/spec/graphql/static_validation/rules/fragment_types_exist_spec.rb +0 -42
  646. data/spec/graphql/static_validation/rules/fragments_are_finite_spec.rb +0 -123
  647. data/spec/graphql/static_validation/rules/fragments_are_named_spec.rb +0 -24
  648. data/spec/graphql/static_validation/rules/fragments_are_on_composite_types_spec.rb +0 -56
  649. data/spec/graphql/static_validation/rules/fragments_are_used_spec.rb +0 -61
  650. data/spec/graphql/static_validation/rules/mutation_root_exists_spec.rb +0 -39
  651. data/spec/graphql/static_validation/rules/no_definitions_are_present_spec.rb +0 -62
  652. data/spec/graphql/static_validation/rules/operation_names_are_valid_spec.rb +0 -82
  653. data/spec/graphql/static_validation/rules/required_arguments_are_present_spec.rb +0 -73
  654. data/spec/graphql/static_validation/rules/required_input_object_attributes_are_present_spec.rb +0 -58
  655. data/spec/graphql/static_validation/rules/subscription_root_exists_spec.rb +0 -34
  656. data/spec/graphql/static_validation/rules/unique_directives_per_location_spec.rb +0 -188
  657. data/spec/graphql/static_validation/rules/variable_default_values_are_correctly_typed_spec.rb +0 -196
  658. data/spec/graphql/static_validation/rules/variable_names_are_unique_spec.rb +0 -23
  659. data/spec/graphql/static_validation/rules/variable_usages_are_allowed_spec.rb +0 -236
  660. data/spec/graphql/static_validation/rules/variables_are_input_types_spec.rb +0 -78
  661. data/spec/graphql/static_validation/rules/variables_are_used_and_defined_spec.rb +0 -81
  662. data/spec/graphql/static_validation/type_stack_spec.rb +0 -29
  663. data/spec/graphql/static_validation/validator_spec.rb +0 -204
  664. data/spec/graphql/string_type_spec.rb +0 -80
  665. data/spec/graphql/subscriptions/serialize_spec.rb +0 -49
  666. data/spec/graphql/subscriptions_spec.rb +0 -502
  667. data/spec/graphql/tracing/new_relic_tracing_spec.rb +0 -63
  668. data/spec/graphql/tracing/platform_tracing_spec.rb +0 -137
  669. data/spec/graphql/tracing/prometheus_tracing_spec.rb +0 -42
  670. data/spec/graphql/tracing/scout_tracing_spec.rb +0 -17
  671. data/spec/graphql/tracing/skylight_tracing_spec.rb +0 -63
  672. data/spec/graphql/tracing_spec.rb +0 -52
  673. data/spec/graphql/types/iso_8601_date_time_spec.rb +0 -137
  674. data/spec/graphql/union_type_spec.rb +0 -211
  675. data/spec/graphql/upgrader/member_spec.rb +0 -583
  676. data/spec/graphql/upgrader/schema_spec.rb +0 -82
  677. data/spec/integration/mongoid/graphql/relay/mongo_relation_connection_spec.rb +0 -528
  678. data/spec/integration/mongoid/spec_helper.rb +0 -2
  679. data/spec/integration/mongoid/star_trek/data.rb +0 -126
  680. data/spec/integration/mongoid/star_trek/schema.rb +0 -425
  681. data/spec/integration/rails/data.rb +0 -110
  682. data/spec/integration/rails/generators/base_generator_test.rb +0 -7
  683. data/spec/integration/rails/generators/graphql/enum_generator_spec.rb +0 -30
  684. data/spec/integration/rails/generators/graphql/install_generator_spec.rb +0 -218
  685. data/spec/integration/rails/generators/graphql/interface_generator_spec.rb +0 -34
  686. data/spec/integration/rails/generators/graphql/loader_generator_spec.rb +0 -59
  687. data/spec/integration/rails/generators/graphql/mutation_generator_spec.rb +0 -71
  688. data/spec/integration/rails/generators/graphql/object_generator_spec.rb +0 -54
  689. data/spec/integration/rails/generators/graphql/scalar_generator_spec.rb +0 -28
  690. data/spec/integration/rails/generators/graphql/union_generator_spec.rb +0 -67
  691. data/spec/integration/rails/graphql/input_object_type_spec.rb +0 -364
  692. data/spec/integration/rails/graphql/query/variables_spec.rb +0 -375
  693. data/spec/integration/rails/graphql/relay/array_connection_spec.rb +0 -290
  694. data/spec/integration/rails/graphql/relay/base_connection_spec.rb +0 -101
  695. data/spec/integration/rails/graphql/relay/connection_instrumentation_spec.rb +0 -80
  696. data/spec/integration/rails/graphql/relay/connection_resolve_spec.rb +0 -79
  697. data/spec/integration/rails/graphql/relay/connection_type_spec.rb +0 -106
  698. data/spec/integration/rails/graphql/relay/edge_spec.rb +0 -10
  699. data/spec/integration/rails/graphql/relay/mutation_spec.rb +0 -387
  700. data/spec/integration/rails/graphql/relay/node_spec.rb +0 -263
  701. data/spec/integration/rails/graphql/relay/page_info_spec.rb +0 -111
  702. data/spec/integration/rails/graphql/relay/range_add_spec.rb +0 -117
  703. data/spec/integration/rails/graphql/relay/relation_connection_spec.rb +0 -837
  704. data/spec/integration/rails/graphql/schema_spec.rb +0 -476
  705. data/spec/integration/rails/graphql/tracing/active_support_notifications_tracing_spec.rb +0 -62
  706. data/spec/integration/rails/spec_helper.rb +0 -25
  707. data/spec/integration/tmp/app/graphql/types/family_type.rb +0 -9
  708. data/spec/spec_helper.rb +0 -116
  709. data/spec/support/dummy/data.rb +0 -45
  710. data/spec/support/dummy/schema.rb +0 -492
  711. data/spec/support/error_bubbling_helpers.rb +0 -23
  712. data/spec/support/global_id.rb +0 -23
  713. data/spec/support/jazz.rb +0 -759
  714. data/spec/support/lazy_helpers.rb +0 -192
  715. data/spec/support/magic_cards/schema.graphql +0 -33
  716. data/spec/support/minimum_input_object.rb +0 -21
  717. data/spec/support/new_relic.rb +0 -27
  718. data/spec/support/parser/filename_example.graphql +0 -5
  719. data/spec/support/parser/filename_example_error_1.graphql +0 -4
  720. data/spec/support/parser/filename_example_error_2.graphql +0 -5
  721. data/spec/support/skylight.rb +0 -39
  722. data/spec/support/star_wars/schema.rb +0 -465
  723. data/spec/support/static_validation_helpers.rb +0 -32
@@ -1,1453 +1,252 @@
1
- module GraphQL
2
- module Language
3
- module Lexer
4
- def self.tokenize(query_string)
5
- run_lexer(query_string)
6
- end
7
-
8
- # Replace any escaped unicode or whitespace with the _actual_ characters
9
- # To avoid allocating more strings, this modifies the string passed into it
10
- def self.replace_escaped_characters_in_place(raw_string)
11
- raw_string.gsub!(ESCAPES, ESCAPES_REPLACE)
12
- raw_string.gsub!(UTF_8, &UTF_8_REPLACE)
13
- nil
14
- end
15
-
16
- private
17
-
18
- class << self
19
- attr_accessor :_graphql_lexer_trans_keys
20
- private :_graphql_lexer_trans_keys, :_graphql_lexer_trans_keys=
21
- end
22
- self._graphql_lexer_trans_keys = [
23
- 4, 21, 4, 21, 4, 21, 4, 4, 4, 4, 4, 21, 4, 4, 4, 4, 13, 14, 13, 14, 10, 14, 12, 12, 0, 47, 0, 0, 4, 21, 4, 21, 4, 4, 4, 4, 4, 4, 4, 21, 4, 4, 4, 4, 1, 1, 13, 14, 10, 27, 13, 14, 10, 27, 10, 27, 12, 12, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 13, 44, 0 ,
24
- ]
25
-
26
- class << self
27
- attr_accessor :_graphql_lexer_char_class
28
- private :_graphql_lexer_char_class, :_graphql_lexer_char_class=
29
- end
30
- self._graphql_lexer_char_class = [
31
- 0, 1, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 4, 5, 6, 2, 7, 2, 8, 9, 2, 10, 0, 11, 12, 2, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 2, 2, 16, 2, 2, 17, 18, 18, 18, 18, 19, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 20, 21, 22, 2, 18, 2, 23, 24, 25, 26, 27, 28, 29, 30, 31, 18, 18, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 18, 43, 44, 18, 45, 46, 47, 0 ,
32
- ]
1
+ # frozen_string_literal: true
33
2
 
34
- class << self
35
- attr_accessor :_graphql_lexer_index_offsets
36
- private :_graphql_lexer_index_offsets, :_graphql_lexer_index_offsets=
37
- end
38
- self._graphql_lexer_index_offsets = [
39
- 0, 18, 36, 54, 55, 56, 74, 75, 76, 78, 80, 85, 86, 134, 135, 153, 171, 172, 173, 174, 192, 193, 194, 195, 197, 215, 217, 235, 253, 254, 286, 318, 350, 382, 414, 446, 478, 510, 542, 574, 606, 638, 670, 702, 734, 766, 798, 830, 862, 894, 926, 958, 990, 1022, 1054, 1086, 1118, 1150, 1182, 1214, 1246, 1278, 1310, 1342, 1374, 1406, 1438, 1470, 1502, 1534, 1566, 1598, 1630, 1662, 1694, 1726, 1758, 1790, 1822, 1854, 1886, 1918, 1950, 1982, 2014, 2046, 2078, 2110, 2142, 2174, 2206, 2238, 2270, 2302, 2334, 2366, 2398, 2430, 2462, 2494, 2526, 2558, 2590, 2622, 2654, 2686, 2718, 2750, 2782, 2814, 2846, 2878, 2910, 2942, 2974, 0 ,
40
- ]
41
-
42
- class << self
43
- attr_accessor :_graphql_lexer_indicies
44
- private :_graphql_lexer_indicies, :_graphql_lexer_indicies=
45
- end
46
- self._graphql_lexer_indicies = [
47
- 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 8, 9, 10, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 11, 12, 13, 13, 15, 15, 16, 16, 0, 13, 13, 18, 20, 21, 19, 22, 23, 24, 25, 26, 27, 28, 19, 29, 30, 31, 32, 33, 34, 35, 36, 36, 37, 19, 38, 36, 36, 36, 39, 40, 41, 36, 36, 42, 36, 43, 44, 45, 36, 46, 36, 47, 48, 49, 36, 36, 36, 50, 51, 52, 20, 55, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 58, 59, 60, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 61, 9, 62, 31, 32, 16, 16, 64, 13, 13, 63, 63, 63, 63, 65, 63, 63, 63, 63, 63, 63, 63, 65, 13, 13, 16, 16, 66, 15, 15, 66, 66, 66, 66, 65, 66, 66, 66, 66, 66, 66, 66, 65, 16, 16, 64, 32, 32, 63, 63, 63, 63, 65, 63, 63, 63, 63, 63, 63, 63, 65, 67, 36, 36, 0, 0, 0, 36, 36, 0, 0, 0, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 69, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 70, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 71, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 72, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 73, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 74, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 75, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 76, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 77, 36, 36, 36, 36, 36, 36, 36, 36, 78, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 79, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 80, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 81, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 82, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 83, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 84, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 85, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 86, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 87, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 88, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 89, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 90, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 91, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 92, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 93, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 94, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 95, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 96, 97, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 98, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 99, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 100, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 101, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 102, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 103, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 104, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 105, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 106, 36, 36, 36, 107, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 108, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 109, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 110, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 111, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 112, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 113, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 114, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 115, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 116, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 117, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 118, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 119, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 120, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 121, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 122, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 123, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 124, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 125, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 126, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 127, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 128, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 129, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 130, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 131, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 132, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 133, 36, 36, 36, 36, 36, 36, 134, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 135, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 136, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 137, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 138, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 139, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 140, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 141, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 142, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 143, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 144, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 145, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 146, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 147, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 148, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 149, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 150, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 151, 36, 36, 36, 36, 36, 152, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 153, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 154, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 155, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 156, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 157, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 158, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 159, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 160, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 0 ,
48
- ]
49
-
50
- class << self
51
- attr_accessor :_graphql_lexer_index_defaults
52
- private :_graphql_lexer_index_defaults, :_graphql_lexer_index_defaults=
53
- end
54
- self._graphql_lexer_index_defaults = [
55
- 1, 1, 5, 5, 5, 5, 5, 5, 0, 14, 0, 17, 19, 53, 1, 1, 56, 57, 57, 5, 5, 5, 24, 54, 63, 66, 66, 63, 54, 0, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 0 ,
56
- ]
57
-
58
- class << self
59
- attr_accessor :_graphql_lexer_trans_cond_spaces
60
- private :_graphql_lexer_trans_cond_spaces, :_graphql_lexer_trans_cond_spaces=
61
- end
62
- self._graphql_lexer_trans_cond_spaces = [
63
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0 ,
64
- ]
65
-
66
- class << self
67
- attr_accessor :_graphql_lexer_cond_targs
68
- private :_graphql_lexer_cond_targs, :_graphql_lexer_cond_targs=
69
- end
70
- self._graphql_lexer_cond_targs = [
71
- 12, 0, 12, 1, 15, 2, 3, 5, 4, 17, 6, 7, 19, 25, 12, 26, 8, 12, 12, 12, 13, 12, 12, 14, 22, 12, 12, 12, 12, 23, 28, 24, 27, 12, 12, 12, 29, 12, 12, 30, 38, 45, 55, 73, 80, 83, 84, 88, 106, 111, 12, 12, 12, 12, 12, 16, 12, 12, 18, 12, 20, 21, 12, 12, 9, 10, 12, 11, 12, 31, 32, 33, 34, 35, 36, 37, 29, 39, 41, 40, 29, 42, 43, 44, 29, 46, 49, 47, 48, 29, 50, 51, 52, 53, 54, 29, 56, 64, 57, 58, 59, 60, 61, 62, 63, 29, 65, 67, 66, 29, 68, 69, 70, 71, 72, 29, 74, 75, 76, 77, 78, 79, 29, 81, 82, 29, 29, 85, 86, 87, 29, 89, 96, 90, 93, 91, 92, 29, 94, 95, 29, 97, 98, 99, 100, 101, 102, 103, 104, 105, 29, 107, 109, 108, 29, 110, 29, 112, 113, 114, 29, 0 ,
72
- ]
3
+ require "strscan"
73
4
 
74
- class << self
75
- attr_accessor :_graphql_lexer_cond_actions
76
- private :_graphql_lexer_cond_actions, :_graphql_lexer_cond_actions=
77
- end
78
- self._graphql_lexer_cond_actions = [
79
- 1, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 5, 6, 0, 7, 8, 11, 0, 12, 13, 14, 0, 15, 16, 17, 18, 0, 19, 20, 20, 21, 22, 23, 24, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, 3, 32, 33, 0, 34, 4, 4, 35, 36, 0, 0, 37, 0, 38, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 48, 49, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 54, 0, 55, 0, 0, 0, 56, 0 ,
80
- ]
81
-
82
- class << self
83
- attr_accessor :_graphql_lexer_to_state_actions
84
- private :_graphql_lexer_to_state_actions, :_graphql_lexer_to_state_actions=
85
- end
86
- self._graphql_lexer_to_state_actions = [
87
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,
88
- ]
89
-
90
- class << self
91
- attr_accessor :_graphql_lexer_from_state_actions
92
- private :_graphql_lexer_from_state_actions, :_graphql_lexer_from_state_actions=
93
- end
94
- self._graphql_lexer_from_state_actions = [
95
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,
96
- ]
97
-
98
- class << self
99
- attr_accessor :_graphql_lexer_eof_trans
100
- private :_graphql_lexer_eof_trans, :_graphql_lexer_eof_trans=
101
- end
102
- self._graphql_lexer_eof_trans = [
103
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 15, 1, 18, 0, 54, 55, 57, 57, 58, 58, 58, 58, 58, 63, 55, 64, 67, 67, 64, 55, 1, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 0 ,
104
- ]
105
-
106
- class << self
107
- attr_accessor :_graphql_lexer_nfa_targs
108
- private :_graphql_lexer_nfa_targs, :_graphql_lexer_nfa_targs=
109
- end
110
- self._graphql_lexer_nfa_targs = [
111
- 0, 0 ,
112
- ]
113
-
114
- class << self
115
- attr_accessor :_graphql_lexer_nfa_offsets
116
- private :_graphql_lexer_nfa_offsets, :_graphql_lexer_nfa_offsets=
117
- end
118
- self._graphql_lexer_nfa_offsets = [
119
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,
120
- ]
121
-
122
- class << self
123
- attr_accessor :_graphql_lexer_nfa_push_actions
124
- private :_graphql_lexer_nfa_push_actions, :_graphql_lexer_nfa_push_actions=
125
- end
126
- self._graphql_lexer_nfa_push_actions = [
127
- 0, 0 ,
128
- ]
129
-
130
- class << self
131
- attr_accessor :_graphql_lexer_nfa_pop_trans
132
- private :_graphql_lexer_nfa_pop_trans, :_graphql_lexer_nfa_pop_trans=
133
- end
134
- self._graphql_lexer_nfa_pop_trans = [
135
- 0, 0 ,
136
- ]
137
-
138
- class << self
139
- attr_accessor :graphql_lexer_start
140
- end
141
- self.graphql_lexer_start = 12;
142
-
143
- class << self
144
- attr_accessor :graphql_lexer_first_final
145
- end
146
- self.graphql_lexer_first_final = 12;
147
-
148
- class << self
149
- attr_accessor :graphql_lexer_error
150
- end
151
- self.graphql_lexer_error = -1;
152
-
153
- class << self
154
- attr_accessor :graphql_lexer_en_main
155
- end
156
- self.graphql_lexer_en_main = 12;
157
-
158
- def self.run_lexer(query_string)
159
- data = query_string.unpack("c*")
160
- eof = data.length
161
-
162
- # Since `Lexer` is a module, store all lexer state
163
- # in this local variable:
164
- meta = {
165
- line: 1,
166
- col: 1,
167
- data: data,
168
- tokens: [],
169
- previous_token: nil,
170
- }
171
-
172
- p ||= 0
173
- pe ||= data.length
174
-
175
- begin
176
- cs = graphql_lexer_start;
177
- ts = 0;
178
- te = 0;
179
- act = 0;
180
-
181
- end
182
- begin
183
- _trans = 0;
184
- _have = 0;
185
- _cont = 1;
186
- _keys = 0;
187
- _inds = 0;
188
- while ( _cont == 1 )
189
- begin
190
- _have = 0;
191
- if ( p == pe )
192
- begin
193
- if ( p == eof )
194
- begin
195
- if ( _graphql_lexer_eof_trans[cs] > 0 )
196
- begin
197
- _trans = _graphql_lexer_eof_trans[cs] - 1;
198
- _have = 1;
199
-
200
- end
201
-
202
- end
203
- if ( _have == 0 )
204
- begin
205
-
206
- end
207
-
208
- end
209
-
210
- end
211
-
212
- end
213
- if ( _have == 0 )
214
- _cont = 0;
215
-
216
- end
217
-
218
- end
219
-
220
- end
221
- if ( _cont == 1 )
222
- begin
223
- if ( _have == 0 )
224
- begin
225
- case _graphql_lexer_from_state_actions[cs]
226
- when -2 then
227
- begin
228
- end
229
- when 10 then
230
- begin
231
- begin
232
- begin
233
- ts = p;
234
-
235
- end
236
-
237
- end
238
-
239
-
240
- end
241
- end
242
- _keys = (cs<<1) ;
243
- _inds = _graphql_lexer_index_offsets[cs] ;
244
- if ( ( data[p ].ord) <= 125 && ( data[p ].ord) >= 9 )
245
- begin
246
- _ic = _graphql_lexer_char_class[( data[p ].ord) - 9];
247
- if ( _ic <= _graphql_lexer_trans_keys[_keys+1 ]&& _ic >= _graphql_lexer_trans_keys[_keys ] )
248
- _trans = _graphql_lexer_indicies[_inds + ( _ic - _graphql_lexer_trans_keys[_keys ]) ];
249
-
250
- else
251
- _trans = _graphql_lexer_index_defaults[cs];
252
-
253
- end
254
-
255
- end
256
-
257
- else
258
- begin
259
- _trans = _graphql_lexer_index_defaults[cs];
260
-
261
- end
262
-
263
- end
264
-
265
- end
266
-
267
- end
268
- if ( _cont == 1 )
269
- begin
270
- cs = _graphql_lexer_cond_targs[_trans];
271
- case _graphql_lexer_cond_actions[_trans]
272
- when -2 then
273
- begin
274
- end
275
- when 19 then
276
- begin
277
- begin
278
- begin
279
- te = p+1;
280
-
281
- end
282
-
283
- end
284
-
285
- end
286
- when 29 then
287
- begin
288
- begin
289
- begin
290
- te = p+1;
291
- begin
292
- emit(:RCURLY, ts, te, meta)
293
- end
294
-
295
- end
296
-
297
- end
298
-
299
- end
300
- when 27 then
301
- begin
302
- begin
303
- begin
304
- te = p+1;
305
- begin
306
- emit(:LCURLY, ts, te, meta)
307
- end
308
-
309
- end
310
-
311
- end
312
-
313
- end
314
- when 18 then
315
- begin
316
- begin
317
- begin
318
- te = p+1;
319
- begin
320
- emit(:RPAREN, ts, te, meta)
321
- end
322
-
323
- end
324
-
325
- end
326
-
327
- end
328
- when 17 then
329
- begin
330
- begin
331
- begin
332
- te = p+1;
333
- begin
334
- emit(:LPAREN, ts, te, meta)
335
- end
336
-
337
- end
338
-
339
- end
340
-
341
- end
342
- when 26 then
343
- begin
344
- begin
345
- begin
346
- te = p+1;
347
- begin
348
- emit(:RBRACKET, ts, te, meta)
349
- end
350
-
351
- end
352
-
353
- end
354
-
355
- end
356
- when 25 then
357
- begin
358
- begin
359
- begin
360
- te = p+1;
361
- begin
362
- emit(:LBRACKET, ts, te, meta)
363
- end
364
-
365
- end
366
-
367
- end
368
-
369
- end
370
- when 21 then
371
- begin
372
- begin
373
- begin
374
- te = p+1;
375
- begin
376
- emit(:COLON, ts, te, meta)
377
- end
378
-
379
- end
380
-
381
- end
382
-
383
- end
384
- when 2 then
385
- begin
386
- begin
387
- begin
388
- te = p+1;
389
- begin
390
- emit_string(ts, te, meta, block: false)
391
- end
392
-
393
- end
394
-
395
- end
396
-
397
- end
398
- when 34 then
399
- begin
400
- begin
401
- begin
402
- te = p+1;
403
- begin
404
- emit_string(ts, te, meta, block: true)
405
- end
406
-
407
- end
408
-
409
- end
410
-
411
- end
412
- when 15 then
413
- begin
414
- begin
415
- begin
416
- te = p+1;
417
- begin
418
- emit(:VAR_SIGN, ts, te, meta)
419
- end
420
-
421
- end
422
-
423
- end
424
-
425
- end
426
- when 23 then
427
- begin
428
- begin
429
- begin
430
- te = p+1;
431
- begin
432
- emit(:DIR_SIGN, ts, te, meta)
433
- end
434
-
435
- end
436
-
437
- end
438
-
439
- end
440
- when 8 then
441
- begin
442
- begin
443
- begin
444
- te = p+1;
445
- begin
446
- emit(:ELLIPSIS, ts, te, meta)
447
- end
448
-
449
- end
450
-
451
- end
452
-
453
- end
454
- when 22 then
455
- begin
456
- begin
457
- begin
458
- te = p+1;
459
- begin
460
- emit(:EQUALS, ts, te, meta)
461
- end
462
-
463
- end
464
-
465
- end
466
-
467
- end
468
- when 13 then
469
- begin
470
- begin
471
- begin
472
- te = p+1;
473
- begin
474
- emit(:BANG, ts, te, meta)
475
- end
476
-
477
- end
478
-
479
- end
480
-
481
- end
482
- when 28 then
483
- begin
484
- begin
485
- begin
486
- te = p+1;
487
- begin
488
- emit(:PIPE, ts, te, meta)
489
- end
490
-
491
- end
492
-
493
- end
494
-
495
- end
496
- when 16 then
497
- begin
498
- begin
499
- begin
500
- te = p+1;
501
- begin
502
- emit(:AMP, ts, te, meta)
503
- end
504
-
505
- end
506
-
507
- end
508
-
509
- end
510
- when 12 then
511
- begin
512
- begin
513
- begin
514
- te = p+1;
515
- begin
516
- meta[:line] += 1
517
- meta[:col] = 1
518
-
519
- end
520
-
521
- end
522
-
523
- end
524
-
525
- end
526
- when 11 then
527
- begin
528
- begin
529
- begin
530
- te = p+1;
531
- begin
532
- emit(:UNKNOWN_CHAR, ts, te, meta)
533
- end
534
-
535
- end
536
-
537
- end
538
-
539
- end
540
- when 36 then
541
- begin
542
- begin
543
- begin
544
- te = p;
545
- p = p - 1;
546
- begin
547
- emit(:INT, ts, te, meta)
548
- end
549
-
550
- end
551
-
552
- end
553
-
554
- end
555
- when 37 then
556
- begin
557
- begin
558
- begin
559
- te = p;
560
- p = p - 1;
561
- begin
562
- emit(:FLOAT, ts, te, meta)
563
- end
564
-
565
- end
566
-
567
- end
568
-
569
- end
570
- when 32 then
571
- begin
572
- begin
573
- begin
574
- te = p;
575
- p = p - 1;
576
- begin
577
- emit_string(ts, te, meta, block: false)
578
- end
579
-
580
- end
581
-
582
- end
583
-
584
- end
585
- when 33 then
586
- begin
587
- begin
588
- begin
589
- te = p;
590
- p = p - 1;
591
- begin
592
- emit_string(ts, te, meta, block: true)
593
- end
594
-
595
- end
596
-
597
- end
598
-
599
- end
600
- when 38 then
601
- begin
602
- begin
603
- begin
604
- te = p;
605
- p = p - 1;
606
- begin
607
- emit(:IDENTIFIER, ts, te, meta)
608
- end
609
-
610
- end
611
-
612
- end
613
-
614
- end
615
- when 35 then
616
- begin
617
- begin
618
- begin
619
- te = p;
620
- p = p - 1;
621
- begin
622
- record_comment(ts, te, meta)
623
- end
624
-
625
- end
626
-
627
- end
628
-
629
- end
630
- when 30 then
631
- begin
632
- begin
633
- begin
634
- te = p;
635
- p = p - 1;
636
- begin
637
- meta[:col] += te - ts
638
- end
639
-
640
- end
641
-
642
- end
643
-
644
- end
645
- when 31 then
646
- begin
647
- begin
648
- begin
649
- te = p;
650
- p = p - 1;
651
- begin
652
- emit(:UNKNOWN_CHAR, ts, te, meta)
653
- end
654
-
655
- end
656
-
657
- end
658
-
659
- end
660
- when 5 then
661
- begin
662
- begin
663
- begin
664
- p = ((te))-1;
665
- begin
666
- emit(:INT, ts, te, meta)
667
- end
668
-
669
- end
670
-
671
- end
672
-
673
- end
674
- when 7 then
675
- begin
676
- begin
677
- begin
678
- p = ((te))-1;
679
- begin
680
- emit(:UNKNOWN_CHAR, ts, te, meta)
681
- end
682
-
683
- end
684
-
685
- end
686
-
687
- end
688
- when 1 then
689
- begin
690
- begin
691
- begin
692
- case act
693
- when -2 then
694
- begin
695
- end
696
- when 1 then
697
- begin
698
- p = ((te))-1;
699
- begin
700
- emit(:INT, ts, te, meta)
701
- end
702
-
703
- end
704
- when 2 then
705
- begin
706
- p = ((te))-1;
707
- begin
708
- emit(:FLOAT, ts, te, meta)
709
- end
710
-
711
- end
712
- when 3 then
713
- begin
714
- p = ((te))-1;
715
- begin
716
- emit(:ON, ts, te, meta)
717
- end
718
-
719
- end
720
- when 4 then
721
- begin
722
- p = ((te))-1;
723
- begin
724
- emit(:FRAGMENT, ts, te, meta)
725
- end
726
-
727
- end
728
- when 5 then
729
- begin
730
- p = ((te))-1;
731
- begin
732
- emit(:TRUE, ts, te, meta)
733
- end
734
-
735
- end
736
- when 6 then
737
- begin
738
- p = ((te))-1;
739
- begin
740
- emit(:FALSE, ts, te, meta)
741
- end
742
-
743
- end
744
- when 7 then
745
- begin
746
- p = ((te))-1;
747
- begin
748
- emit(:NULL, ts, te, meta)
749
- end
750
-
751
- end
752
- when 8 then
753
- begin
754
- p = ((te))-1;
755
- begin
756
- emit(:QUERY, ts, te, meta)
757
- end
758
-
759
- end
760
- when 9 then
761
- begin
762
- p = ((te))-1;
763
- begin
764
- emit(:MUTATION, ts, te, meta)
765
- end
766
-
767
- end
768
- when 10 then
769
- begin
770
- p = ((te))-1;
771
- begin
772
- emit(:SUBSCRIPTION, ts, te, meta)
773
- end
774
-
775
- end
776
- when 11 then
777
- begin
778
- p = ((te))-1;
779
- begin
780
- emit(:SCHEMA, ts, te, meta)
781
- end
782
-
783
- end
784
- when 12 then
785
- begin
786
- p = ((te))-1;
787
- begin
788
- emit(:SCALAR, ts, te, meta)
789
- end
790
-
791
- end
792
- when 13 then
793
- begin
794
- p = ((te))-1;
795
- begin
796
- emit(:TYPE, ts, te, meta)
797
- end
798
-
799
- end
800
- when 14 then
801
- begin
802
- p = ((te))-1;
803
- begin
804
- emit(:EXTEND, ts, te, meta)
805
- end
806
-
807
- end
808
- when 15 then
809
- begin
810
- p = ((te))-1;
811
- begin
812
- emit(:IMPLEMENTS, ts, te, meta)
813
- end
814
-
815
- end
816
- when 16 then
817
- begin
818
- p = ((te))-1;
819
- begin
820
- emit(:INTERFACE, ts, te, meta)
821
- end
822
-
823
- end
824
- when 17 then
825
- begin
826
- p = ((te))-1;
827
- begin
828
- emit(:UNION, ts, te, meta)
829
- end
830
-
831
- end
832
- when 18 then
833
- begin
834
- p = ((te))-1;
835
- begin
836
- emit(:ENUM, ts, te, meta)
837
- end
838
-
839
- end
840
- when 19 then
841
- begin
842
- p = ((te))-1;
843
- begin
844
- emit(:INPUT, ts, te, meta)
845
- end
846
-
847
- end
848
- when 20 then
849
- begin
850
- p = ((te))-1;
851
- begin
852
- emit(:DIRECTIVE, ts, te, meta)
853
- end
854
-
855
- end
856
- when 28 then
857
- begin
858
- p = ((te))-1;
859
- begin
860
- emit_string(ts, te, meta, block: false)
861
- end
862
-
863
- end
864
- when 29 then
865
- begin
866
- p = ((te))-1;
867
- begin
868
- emit_string(ts, te, meta, block: true)
869
- end
870
-
871
- end
872
- when 37 then
873
- begin
874
- p = ((te))-1;
875
- begin
876
- emit(:IDENTIFIER, ts, te, meta)
877
- end
878
-
879
- end
880
- when 41 then
881
- begin
882
- p = ((te))-1;
883
- begin
884
- emit(:UNKNOWN_CHAR, ts, te, meta)
885
- end
886
-
887
-
888
- end
889
- end
890
-
891
- end
892
-
893
-
894
- end
895
-
896
- end
897
- when 20 then
898
- begin
899
- begin
900
- begin
901
- te = p+1;
902
-
903
- end
904
-
905
- end
906
- begin
907
- begin
908
- act = 1;
909
-
910
- end
911
-
912
- end
913
-
914
- end
915
- when 6 then
916
- begin
917
- begin
918
- begin
919
- te = p+1;
920
-
921
- end
922
-
923
- end
924
- begin
925
- begin
926
- act = 2;
927
-
928
- end
929
-
930
- end
931
-
932
- end
933
- when 49 then
934
- begin
935
- begin
936
- begin
937
- te = p+1;
938
-
939
- end
940
-
941
- end
942
- begin
943
- begin
944
- act = 3;
945
-
946
- end
947
-
948
- end
949
-
950
- end
951
- when 43 then
952
- begin
953
- begin
954
- begin
955
- te = p+1;
956
-
957
- end
958
-
959
- end
960
- begin
961
- begin
962
- act = 4;
963
-
964
- end
965
-
966
- end
967
-
968
- end
969
- when 54 then
970
- begin
971
- begin
972
- begin
973
- te = p+1;
974
-
975
- end
976
-
977
- end
978
- begin
979
- begin
980
- act = 5;
981
-
982
- end
983
-
984
- end
985
-
986
- end
987
- when 42 then
988
- begin
989
- begin
990
- begin
991
- te = p+1;
992
-
993
- end
994
-
995
- end
996
- begin
997
- begin
998
- act = 6;
999
-
1000
- end
1001
-
1002
- end
1003
-
1004
- end
1005
- when 48 then
1006
- begin
1007
- begin
1008
- begin
1009
- te = p+1;
1010
-
1011
- end
1012
-
1013
- end
1014
- begin
1015
- begin
1016
- act = 7;
1017
-
1018
- end
1019
-
1020
- end
1021
-
1022
- end
1023
- when 50 then
1024
- begin
1025
- begin
1026
- begin
1027
- te = p+1;
1028
-
1029
- end
1030
-
1031
- end
1032
- begin
1033
- begin
1034
- act = 8;
1035
-
1036
- end
1037
-
1038
- end
1039
-
1040
- end
1041
- when 47 then
1042
- begin
1043
- begin
1044
- begin
1045
- te = p+1;
1046
-
1047
- end
1048
-
1049
- end
1050
- begin
1051
- begin
1052
- act = 9;
1053
-
1054
- end
1055
-
1056
- end
1057
-
1058
- end
1059
- when 53 then
1060
- begin
1061
- begin
1062
- begin
1063
- te = p+1;
1064
-
1065
- end
1066
-
1067
- end
1068
- begin
1069
- begin
1070
- act = 10;
1071
-
1072
- end
1073
-
1074
- end
1075
-
1076
- end
1077
- when 52 then
1078
- begin
1079
- begin
1080
- begin
1081
- te = p+1;
1082
-
1083
- end
1084
-
1085
- end
1086
- begin
1087
- begin
1088
- act = 11;
1089
-
1090
- end
1091
-
1092
- end
1093
-
1094
- end
1095
- when 51 then
1096
- begin
1097
- begin
1098
- begin
1099
- te = p+1;
1100
-
1101
- end
1102
-
1103
- end
1104
- begin
1105
- begin
1106
- act = 12;
1107
-
1108
- end
1109
-
1110
- end
1111
-
1112
- end
1113
- when 55 then
1114
- begin
1115
- begin
1116
- begin
1117
- te = p+1;
1118
-
1119
- end
1120
-
1121
- end
1122
- begin
1123
- begin
1124
- act = 13;
1125
-
1126
- end
1127
-
1128
- end
1129
-
1130
- end
1131
- when 41 then
1132
- begin
1133
- begin
1134
- begin
1135
- te = p+1;
1136
-
1137
- end
1138
-
1139
- end
1140
- begin
1141
- begin
1142
- act = 14;
1143
-
1144
- end
1145
-
1146
- end
1147
-
1148
- end
1149
- when 44 then
1150
- begin
1151
- begin
1152
- begin
1153
- te = p+1;
1154
-
1155
- end
1156
-
1157
- end
1158
- begin
1159
- begin
1160
- act = 15;
1161
-
1162
- end
1163
-
1164
- end
1165
-
1166
- end
1167
- when 46 then
1168
- begin
1169
- begin
1170
- begin
1171
- te = p+1;
1172
-
1173
- end
1174
-
1175
- end
1176
- begin
1177
- begin
1178
- act = 16;
1179
-
1180
- end
1181
-
1182
- end
1183
-
1184
- end
1185
- when 56 then
1186
- begin
1187
- begin
1188
- begin
1189
- te = p+1;
1190
-
1191
- end
1192
-
1193
- end
1194
- begin
1195
- begin
1196
- act = 17;
1197
-
1198
- end
1199
-
1200
- end
1201
-
1202
- end
1203
- when 40 then
1204
- begin
1205
- begin
1206
- begin
1207
- te = p+1;
1208
-
1209
- end
1210
-
1211
- end
1212
- begin
1213
- begin
1214
- act = 18;
1215
-
1216
- end
1217
-
1218
- end
1219
-
1220
- end
1221
- when 45 then
1222
- begin
1223
- begin
1224
- begin
1225
- te = p+1;
1226
-
1227
- end
1228
-
1229
- end
1230
- begin
1231
- begin
1232
- act = 19;
1233
-
1234
- end
1235
-
1236
- end
1237
-
1238
- end
1239
- when 39 then
1240
- begin
1241
- begin
1242
- begin
1243
- te = p+1;
1244
-
1245
- end
1246
-
1247
- end
1248
- begin
1249
- begin
1250
- act = 20;
1251
-
1252
- end
1253
-
1254
- end
1255
-
1256
- end
1257
- when 3 then
1258
- begin
1259
- begin
1260
- begin
1261
- te = p+1;
1262
-
1263
- end
1264
-
1265
- end
1266
- begin
1267
- begin
1268
- act = 28;
1269
-
1270
- end
1271
-
1272
- end
1273
-
1274
- end
1275
- when 4 then
1276
- begin
1277
- begin
1278
- begin
1279
- te = p+1;
1280
-
1281
- end
1282
-
1283
- end
1284
- begin
1285
- begin
1286
- act = 29;
1287
-
1288
- end
1289
-
1290
- end
1291
-
1292
- end
1293
- when 24 then
1294
- begin
1295
- begin
1296
- begin
1297
- te = p+1;
1298
-
1299
- end
1300
-
1301
- end
1302
- begin
1303
- begin
1304
- act = 37;
1305
-
1306
- end
1307
-
1308
- end
1309
-
1310
- end
1311
- when 14 then
1312
- begin
1313
- begin
1314
- begin
1315
- te = p+1;
1316
-
1317
- end
1318
-
1319
- end
1320
- begin
1321
- begin
1322
- act = 41;
1323
-
1324
- end
1325
-
1326
- end
1327
-
1328
-
1329
- end
1330
- end
1331
- case _graphql_lexer_to_state_actions[cs]
1332
- when -2 then
1333
- begin
1334
- end
1335
- when 9 then
1336
- begin
1337
- begin
1338
- begin
1339
- ts = 0;
1340
-
1341
- end
1342
-
1343
- end
1344
-
1345
-
1346
- end
1347
- end
1348
- if ( _cont == 1 )
1349
- p += 1;
1350
-
1351
- end
1352
-
1353
- end
1354
-
1355
- end
1356
-
1357
- end
1358
-
1359
- end
1360
-
1361
- end
1362
-
1363
- end
1364
-
1365
- end
1366
- meta[:tokens]
1367
- end
1368
-
1369
- def self.record_comment(ts, te, meta)
1370
- token = GraphQL::Language::Token.new(
1371
- name: :COMMENT,
1372
- value: meta[:data][ts...te].pack(PACK_DIRECTIVE).force_encoding(UTF_8_ENCODING),
1373
- line: meta[:line],
1374
- col: meta[:col],
1375
- prev_token: meta[:previous_token],
1376
- )
1377
-
1378
- meta[:previous_token] = token
1379
-
1380
- meta[:col] += te - ts
1381
- end
1382
-
1383
- def self.emit(token_name, ts, te, meta)
1384
- meta[:tokens] << token = GraphQL::Language::Token.new(
1385
- name: token_name,
1386
- value: meta[:data][ts...te].pack(PACK_DIRECTIVE).force_encoding(UTF_8_ENCODING),
1387
- line: meta[:line],
1388
- col: meta[:col],
1389
- prev_token: meta[:previous_token],
1390
- )
1391
- meta[:previous_token] = token
1392
- # Bump the column counter for the next token
1393
- meta[:col] += te - ts
1394
- end
1395
-
1396
- ESCAPES = /\\["\\\/bfnrt]/
1397
- ESCAPES_REPLACE = {
1398
- '\\"' => '"',
1399
- "\\\\" => "\\",
1400
- "\\/" => '/',
1401
- "\\b" => "\b",
1402
- "\\f" => "\f",
1403
- "\\n" => "\n",
1404
- "\\r" => "\r",
1405
- "\\t" => "\t",
1406
- }
1407
-
1408
- UTF_8 = /\\u[\dAa-f]{4}/i
1409
- UTF_8_REPLACE = ->(m) { [m[-4..-1].to_i(16)].pack('U'.freeze) }
1410
-
1411
- VALID_STRING = /\A(?:[^\\]|#{ESCAPES}|#{UTF_8})*\z/o
1412
-
1413
- PACK_DIRECTIVE = "c*"
1414
- UTF_8_ENCODING = "UTF-8"
1415
-
1416
- def self.emit_string(ts, te, meta, block:)
1417
- quotes_length = block ? 3 : 1
1418
- ts += quotes_length
1419
- value = meta[:data][ts...te - quotes_length].pack(PACK_DIRECTIVE).force_encoding(UTF_8_ENCODING)
1420
- line_incr = 0
1421
- if block
1422
- line_incr = value.count("\n")
1423
- value = GraphQL::Language::BlockString.trim_whitespace(value)
1424
- end
1425
- # TODO: replace with `String#match?` when we support only Ruby 2.4+
1426
- # (It's faster: https://bugs.ruby-lang.org/issues/8110)
1427
- if value !~ VALID_STRING
1428
- meta[:tokens] << token = GraphQL::Language::Token.new(
1429
- name: :BAD_UNICODE_ESCAPE,
1430
- value: value,
1431
- line: meta[:line],
1432
- col: meta[:col],
1433
- prev_token: meta[:previous_token],
1434
- )
1435
- else
1436
- replace_escaped_characters_in_place(value)
1437
-
1438
- meta[:tokens] << token = GraphQL::Language::Token.new(
1439
- name: :STRING,
1440
- value: value,
1441
- line: meta[:line],
1442
- col: meta[:col],
1443
- prev_token: meta[:previous_token],
1444
- )
1445
- end
1446
-
1447
- meta[:previous_token] = token
1448
- meta[:col] += te - ts
1449
- meta[:line] += line_incr
1450
- end
1451
- end
1452
- end
5
+ module GraphQL
6
+ module Language
7
+ class Lexer
8
+ IDENTIFIER = /[_A-Za-z][_0-9A-Za-z]*/
9
+ NEWLINE = /[\c\r\n]/
10
+ BLANK = /[, \t]+/
11
+ COMMENT = /#[^\n\r]*/
12
+ INT = /[-]?(?:[0]|[1-9][0-9]*)/
13
+ FLOAT_DECIMAL = /[.][0-9]+/
14
+ FLOAT_EXP = /[eE][+-]?[0-9]+/
15
+ FLOAT = /#{INT}(#{FLOAT_DECIMAL}#{FLOAT_EXP}|#{FLOAT_DECIMAL}|#{FLOAT_EXP})/
16
+
17
+ module Literals
18
+ ON = /on\b/
19
+ FRAGMENT = /fragment\b/
20
+ TRUE = /true\b/
21
+ FALSE = /false\b/
22
+ NULL = /null\b/
23
+ QUERY = /query\b/
24
+ MUTATION = /mutation\b/
25
+ SUBSCRIPTION = /subscription\b/
26
+ SCHEMA = /schema\b/
27
+ SCALAR = /scalar\b/
28
+ TYPE = /type\b/
29
+ EXTEND = /extend\b/
30
+ IMPLEMENTS = /implements\b/
31
+ INTERFACE = /interface\b/
32
+ UNION = /union\b/
33
+ ENUM = /enum\b/
34
+ INPUT = /input\b/
35
+ DIRECTIVE = /directive\b/
36
+ REPEATABLE = /repeatable\b/
37
+ LCURLY = '{'
38
+ RCURLY = '}'
39
+ LPAREN = '('
40
+ RPAREN = ')'
41
+ LBRACKET = '['
42
+ RBRACKET = ']'
43
+ COLON = ':'
44
+ VAR_SIGN = '$'
45
+ DIR_SIGN = '@'
46
+ ELLIPSIS = '...'
47
+ EQUALS = '='
48
+ BANG = '!'
49
+ PIPE = '|'
50
+ AMP = '&'
51
+ end
52
+
53
+ include Literals
54
+
55
+ QUOTE = '"'
56
+ UNICODE_DIGIT = /[0-9A-Za-z]/
57
+ FOUR_DIGIT_UNICODE = /#{UNICODE_DIGIT}{4}/
58
+ N_DIGIT_UNICODE = %r{#{LCURLY}#{UNICODE_DIGIT}{4,}#{RCURLY}}x
59
+ UNICODE_ESCAPE = %r{\\u(?:#{FOUR_DIGIT_UNICODE}|#{N_DIGIT_UNICODE})}
60
+ # # https://graphql.github.io/graphql-spec/June2018/#sec-String-Value
61
+ STRING_ESCAPE = %r{[\\][\\/bfnrt]}
62
+ BLOCK_QUOTE = '"""'
63
+ ESCAPED_QUOTE = /\\"/;
64
+ STRING_CHAR = /#{ESCAPED_QUOTE}|[^"\\]|#{UNICODE_ESCAPE}|#{STRING_ESCAPE}/
65
+
66
+ LIT_NAME_LUT = Literals.constants.each_with_object({}) { |n, o|
67
+ key = Literals.const_get(n)
68
+ key = key.is_a?(Regexp) ? key.source.gsub(/(\\b|\\)/, '') : key
69
+ o[key] = n
70
+ }
71
+
72
+ LIT = Regexp.union(Literals.constants.map { |n| Literals.const_get(n) })
73
+
74
+ QUOTED_STRING = %r{#{QUOTE} (?:#{STRING_CHAR})* #{QUOTE}}x
75
+ BLOCK_STRING = %r{
76
+ #{BLOCK_QUOTE}
77
+ (?: [^"\\] | # Any characters that aren't a quote or slash
78
+ (?<!") ["]{1,2} (?!") | # Any quotes that don't have quotes next to them
79
+ \\"{0,3}(?!") | # A slash followed by <= 3 quotes that aren't followed by a quote
80
+ \\ | # A slash
81
+ "{1,2}(?!") # 1 or 2 " followed by something that isn't a quote
82
+ )*
83
+ (?:"")?
84
+ #{BLOCK_QUOTE}
85
+ }xm
86
+
87
+ # # catch-all for anything else. must be at the bottom for precedence.
88
+ UNKNOWN_CHAR = /./
89
+
90
+ def initialize(value)
91
+ @line = 1
92
+ @col = 1
93
+ @previous_token = nil
94
+
95
+ @scan = scanner value
96
+ end
97
+
98
+ class BadEncoding < Lexer # :nodoc:
99
+ def scanner(value)
100
+ [emit(:BAD_UNICODE_ESCAPE, 0, 0, value)]
101
+ end
102
+
103
+ def next_token
104
+ @scan.pop
105
+ end
106
+ end
107
+
108
+ def self.tokenize(string)
109
+ value = string.dup.force_encoding(Encoding::UTF_8)
110
+
111
+ scanner = if value.valid_encoding?
112
+ new value
113
+ else
114
+ BadEncoding.new value
115
+ end
116
+
117
+ toks = []
118
+
119
+ while tok = scanner.next_token
120
+ toks << tok
121
+ end
122
+
123
+ toks
124
+ end
125
+
126
+ def next_token
127
+ return if @scan.eos?
128
+
129
+ pos = @scan.pos
130
+
131
+ case
132
+ when str = @scan.scan(FLOAT) then emit(:FLOAT, pos, @scan.pos, str)
133
+ when str = @scan.scan(INT) then emit(:INT, pos, @scan.pos, str)
134
+ when str = @scan.scan(LIT) then emit(LIT_NAME_LUT[str], pos, @scan.pos, -str)
135
+ when str = @scan.scan(IDENTIFIER) then emit(:IDENTIFIER, pos, @scan.pos, str)
136
+ when str = @scan.scan(BLOCK_STRING) then emit_block(pos, @scan.pos, str.gsub(/\A#{BLOCK_QUOTE}|#{BLOCK_QUOTE}\z/, ''))
137
+ when str = @scan.scan(QUOTED_STRING) then emit_string(pos, @scan.pos, str.gsub(/^"|"$/, ''))
138
+ when str = @scan.scan(COMMENT) then record_comment(pos, @scan.pos, str)
139
+ when str = @scan.scan(NEWLINE)
140
+ @line += 1
141
+ @col = 1
142
+ next_token
143
+ when @scan.scan(BLANK)
144
+ @col += @scan.pos - pos
145
+ next_token
146
+ when str = @scan.scan(UNKNOWN_CHAR) then emit(:UNKNOWN_CHAR, pos, @scan.pos, str)
147
+ else
148
+ # This should never happen since `UNKNOWN_CHAR` ensures we make progress
149
+ raise "Unknown string?"
150
+ end
151
+ end
152
+
153
+ def emit(token_name, ts, te, token_value)
154
+ token = [
155
+ token_name,
156
+ @line,
157
+ @col,
158
+ token_value,
159
+ @previous_token,
160
+ ]
161
+ @previous_token = token
162
+ # Bump the column counter for the next token
163
+ @col += te - ts
164
+ token
165
+ end
166
+
167
+ # Replace any escaped unicode or whitespace with the _actual_ characters
168
+ # To avoid allocating more strings, this modifies the string passed into it
169
+ def self.replace_escaped_characters_in_place(raw_string)
170
+ raw_string.gsub!(ESCAPES, ESCAPES_REPLACE)
171
+ raw_string.gsub!(UTF_8) do |_matched_str|
172
+ codepoint_1 = ($1 || $2).to_i(16)
173
+ codepoint_2 = $3
174
+
175
+ if codepoint_2
176
+ codepoint_2 = codepoint_2.to_i(16)
177
+ if (codepoint_1 >= 0xD800 && codepoint_1 <= 0xDBFF) && # leading surrogate
178
+ (codepoint_2 >= 0xDC00 && codepoint_2 <= 0xDFFF) # trailing surrogate
179
+ # A surrogate pair
180
+ combined = ((codepoint_1 - 0xD800) * 0x400) + (codepoint_2 - 0xDC00) + 0x10000
181
+ [combined].pack('U'.freeze)
182
+ else
183
+ # Two separate code points
184
+ [codepoint_1].pack('U'.freeze) + [codepoint_2].pack('U'.freeze)
185
+ end
186
+ else
187
+ [codepoint_1].pack('U'.freeze)
188
+ end
189
+ end
190
+ nil
191
+ end
192
+
193
+ def record_comment(ts, te, str)
194
+ token = [
195
+ :COMMENT,
196
+ @line,
197
+ @col,
198
+ str,
199
+ @previous_token,
200
+ ]
201
+
202
+ @previous_token = token
203
+
204
+ @col += te - ts
205
+ next_token
206
+ end
207
+
208
+ ESCAPES = /\\["\\\/bfnrt]/
209
+ ESCAPES_REPLACE = {
210
+ '\\"' => '"',
211
+ "\\\\" => "\\",
212
+ "\\/" => '/',
213
+ "\\b" => "\b",
214
+ "\\f" => "\f",
215
+ "\\n" => "\n",
216
+ "\\r" => "\r",
217
+ "\\t" => "\t",
218
+ }
219
+ UTF_8 = /\\u(?:([\dAa-f]{4})|\{([\da-f]{4,})\})(?:\\u([\dAa-f]{4}))?/i
220
+ VALID_STRING = /\A(?:[^\\]|#{ESCAPES}|#{UTF_8})*\z/o
221
+
222
+ def emit_block(ts, te, value)
223
+ line_incr = value.count("\n")
224
+ value = GraphQL::Language::BlockString.trim_whitespace(value)
225
+ tok = emit_string(ts, te, value)
226
+ @line += line_incr
227
+ tok
228
+ end
229
+
230
+ def emit_string(ts, te, value)
231
+ if !value.valid_encoding? || !value.match?(VALID_STRING)
232
+ emit(:BAD_UNICODE_ESCAPE, ts, te, value)
233
+ else
234
+ self.class.replace_escaped_characters_in_place(value)
235
+
236
+ if !value.valid_encoding?
237
+ emit(:BAD_UNICODE_ESCAPE, ts, te, value)
238
+ else
239
+ emit(:STRING, ts, te, value)
240
+ end
241
+ end
242
+ end
243
+
244
+ private
245
+
246
+ def scanner(value)
247
+ StringScanner.new value
248
+ end
249
+
250
+ end
251
+ end
1453
252
  end