graphql 1.12.12 → 2.4.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (428) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/graphql/core.rb +3 -8
  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/{templates → install/templates}/base_mutation.erb +2 -0
  8. data/lib/generators/graphql/{templates → install/templates}/mutation_type.erb +2 -0
  9. data/lib/generators/graphql/install_generator.rb +60 -4
  10. data/lib/generators/graphql/interface_generator.rb +7 -7
  11. data/lib/generators/graphql/mutation_create_generator.rb +22 -0
  12. data/lib/generators/graphql/mutation_delete_generator.rb +22 -0
  13. data/lib/generators/graphql/mutation_generator.rb +5 -30
  14. data/lib/generators/graphql/mutation_update_generator.rb +22 -0
  15. data/lib/generators/graphql/object_generator.rb +10 -38
  16. data/lib/generators/graphql/orm_mutations_base.rb +40 -0
  17. data/lib/generators/graphql/relay.rb +23 -12
  18. data/lib/generators/graphql/scalar_generator.rb +4 -2
  19. data/lib/generators/graphql/templates/base_argument.erb +2 -0
  20. data/lib/generators/graphql/templates/base_connection.erb +2 -0
  21. data/lib/generators/graphql/templates/base_edge.erb +2 -0
  22. data/lib/generators/graphql/templates/base_enum.erb +2 -0
  23. data/lib/generators/graphql/templates/base_field.erb +2 -0
  24. data/lib/generators/graphql/templates/base_input_object.erb +2 -0
  25. data/lib/generators/graphql/templates/base_interface.erb +2 -0
  26. data/lib/generators/graphql/templates/base_object.erb +2 -0
  27. data/lib/generators/graphql/templates/base_resolver.erb +8 -0
  28. data/lib/generators/graphql/templates/base_scalar.erb +2 -0
  29. data/lib/generators/graphql/templates/base_union.erb +2 -0
  30. data/lib/generators/graphql/templates/enum.erb +5 -1
  31. data/lib/generators/graphql/templates/graphql_controller.erb +2 -0
  32. data/lib/generators/graphql/templates/input.erb +9 -0
  33. data/lib/generators/graphql/templates/interface.erb +4 -2
  34. data/lib/generators/graphql/templates/loader.erb +2 -0
  35. data/lib/generators/graphql/templates/mutation.erb +3 -1
  36. data/lib/generators/graphql/templates/mutation_create.erb +20 -0
  37. data/lib/generators/graphql/templates/mutation_delete.erb +20 -0
  38. data/lib/generators/graphql/templates/mutation_update.erb +21 -0
  39. data/lib/generators/graphql/templates/node_type.erb +2 -0
  40. data/lib/generators/graphql/templates/object.erb +4 -2
  41. data/lib/generators/graphql/templates/query_type.erb +2 -0
  42. data/lib/generators/graphql/templates/scalar.erb +3 -1
  43. data/lib/generators/graphql/templates/schema.erb +22 -2
  44. data/lib/generators/graphql/templates/union.erb +4 -2
  45. data/lib/generators/graphql/type_generator.rb +46 -10
  46. data/lib/generators/graphql/union_generator.rb +5 -5
  47. data/lib/graphql/analysis/analyzer.rb +89 -0
  48. data/lib/graphql/analysis/field_usage.rb +65 -28
  49. data/lib/graphql/analysis/max_query_complexity.rb +11 -17
  50. data/lib/graphql/analysis/max_query_depth.rb +13 -19
  51. data/lib/graphql/analysis/query_complexity.rb +156 -61
  52. data/lib/graphql/analysis/query_depth.rb +38 -23
  53. data/lib/graphql/analysis/visitor.rb +283 -0
  54. data/lib/graphql/analysis.rb +90 -6
  55. data/lib/graphql/autoload.rb +38 -0
  56. data/lib/graphql/backtrace/inspect_result.rb +0 -12
  57. data/lib/graphql/backtrace/table.rb +4 -22
  58. data/lib/graphql/backtrace/trace.rb +93 -0
  59. data/lib/graphql/backtrace/tracer.rb +8 -6
  60. data/lib/graphql/backtrace.rb +3 -8
  61. data/lib/graphql/coercion_error.rb +1 -9
  62. data/lib/graphql/current.rb +52 -0
  63. data/lib/graphql/dataloader/async_dataloader.rb +89 -0
  64. data/lib/graphql/dataloader/null_dataloader.rb +4 -2
  65. data/lib/graphql/dataloader/request.rb +5 -0
  66. data/lib/graphql/dataloader/source.rb +125 -33
  67. data/lib/graphql/dataloader.rb +193 -143
  68. data/lib/graphql/date_encoding_error.rb +16 -0
  69. data/lib/graphql/dig.rb +1 -1
  70. data/lib/graphql/duration_encoding_error.rb +16 -0
  71. data/lib/graphql/execution/errors.rb +12 -81
  72. data/lib/graphql/execution/interpreter/argument_value.rb +5 -1
  73. data/lib/graphql/execution/interpreter/arguments.rb +2 -2
  74. data/lib/graphql/execution/interpreter/arguments_cache.rb +33 -36
  75. data/lib/graphql/execution/interpreter/resolve.rb +38 -4
  76. data/lib/graphql/execution/interpreter/runtime/graphql_result.rb +175 -0
  77. data/lib/graphql/execution/interpreter/runtime.rb +447 -403
  78. data/lib/graphql/execution/interpreter.rb +126 -80
  79. data/lib/graphql/execution/lazy.rb +11 -21
  80. data/lib/graphql/execution/lookahead.rb +133 -55
  81. data/lib/graphql/execution/multiplex.rb +4 -172
  82. data/lib/graphql/execution.rb +11 -4
  83. data/lib/graphql/integer_encoding_error.rb +18 -2
  84. data/lib/graphql/introspection/directive_location_enum.rb +2 -2
  85. data/lib/graphql/introspection/directive_type.rb +6 -4
  86. data/lib/graphql/introspection/dynamic_fields.rb +3 -8
  87. data/lib/graphql/introspection/entry_points.rb +11 -18
  88. data/lib/graphql/introspection/enum_value_type.rb +2 -2
  89. data/lib/graphql/introspection/field_type.rb +4 -4
  90. data/lib/graphql/introspection/input_value_type.rb +10 -4
  91. data/lib/graphql/introspection/schema_type.rb +17 -15
  92. data/lib/graphql/introspection/type_type.rb +29 -16
  93. data/lib/graphql/introspection.rb +6 -2
  94. data/lib/graphql/invalid_null_error.rb +1 -1
  95. data/lib/graphql/language/block_string.rb +37 -25
  96. data/lib/graphql/language/cache.rb +13 -0
  97. data/lib/graphql/language/comment.rb +18 -0
  98. data/lib/graphql/language/definition_slice.rb +1 -1
  99. data/lib/graphql/language/document_from_schema_definition.rb +122 -81
  100. data/lib/graphql/language/lexer.rb +364 -1467
  101. data/lib/graphql/language/nodes.rb +197 -106
  102. data/lib/graphql/language/parser.rb +799 -1920
  103. data/lib/graphql/language/printer.rb +372 -160
  104. data/lib/graphql/language/sanitized_printer.rb +25 -27
  105. data/lib/graphql/language/static_visitor.rb +167 -0
  106. data/lib/graphql/language/visitor.rb +188 -141
  107. data/lib/graphql/language.rb +62 -1
  108. data/lib/graphql/load_application_object_failed_error.rb +5 -1
  109. data/lib/graphql/name_validator.rb +0 -4
  110. data/lib/graphql/pagination/active_record_relation_connection.rb +37 -8
  111. data/lib/graphql/pagination/array_connection.rb +8 -6
  112. data/lib/graphql/pagination/connection.rb +61 -7
  113. data/lib/graphql/pagination/connections.rb +22 -23
  114. data/lib/graphql/pagination/mongoid_relation_connection.rb +1 -2
  115. data/lib/graphql/pagination/relation_connection.rb +60 -28
  116. data/lib/graphql/query/context/scoped_context.rb +101 -0
  117. data/lib/graphql/query/context.rb +146 -222
  118. data/lib/graphql/query/input_validation_result.rb +10 -1
  119. data/lib/graphql/query/null_context.rb +15 -32
  120. data/lib/graphql/query/validation_pipeline.rb +15 -39
  121. data/lib/graphql/query/variable_validation_error.rb +3 -3
  122. data/lib/graphql/query/variables.rb +35 -17
  123. data/lib/graphql/query.rb +149 -82
  124. data/lib/graphql/railtie.rb +15 -109
  125. data/lib/graphql/rake_task/validate.rb +1 -1
  126. data/lib/graphql/rake_task.rb +30 -11
  127. data/lib/graphql/relay/range_add.rb +9 -16
  128. data/lib/graphql/relay.rb +0 -15
  129. data/lib/graphql/rubocop/graphql/base_cop.rb +36 -0
  130. data/lib/graphql/rubocop/graphql/default_null_true.rb +43 -0
  131. data/lib/graphql/rubocop/graphql/default_required_true.rb +43 -0
  132. data/lib/graphql/rubocop/graphql/field_type_in_block.rb +144 -0
  133. data/lib/graphql/rubocop/graphql/root_types_in_block.rb +38 -0
  134. data/lib/graphql/rubocop.rb +6 -0
  135. data/lib/graphql/schema/addition.rb +98 -54
  136. data/lib/graphql/schema/always_visible.rb +14 -0
  137. data/lib/graphql/schema/argument.rb +179 -82
  138. data/lib/graphql/schema/base_64_encoder.rb +3 -5
  139. data/lib/graphql/schema/build_from_definition.rb +77 -39
  140. data/lib/graphql/schema/directive/feature.rb +1 -1
  141. data/lib/graphql/schema/directive/flagged.rb +4 -4
  142. data/lib/graphql/schema/directive/include.rb +1 -1
  143. data/lib/graphql/schema/directive/one_of.rb +24 -0
  144. data/lib/graphql/schema/directive/skip.rb +1 -1
  145. data/lib/graphql/schema/directive/specified_by.rb +14 -0
  146. data/lib/graphql/schema/directive/transform.rb +2 -2
  147. data/lib/graphql/schema/directive.rb +36 -22
  148. data/lib/graphql/schema/enum.rb +158 -63
  149. data/lib/graphql/schema/enum_value.rb +12 -21
  150. data/lib/graphql/schema/field/connection_extension.rb +7 -17
  151. data/lib/graphql/schema/field/scope_extension.rb +8 -1
  152. data/lib/graphql/schema/field.rb +521 -359
  153. data/lib/graphql/schema/field_extension.rb +86 -2
  154. data/lib/graphql/schema/find_inherited_value.rb +3 -7
  155. data/lib/graphql/schema/finder.rb +5 -5
  156. data/lib/graphql/schema/has_single_input_argument.rb +160 -0
  157. data/lib/graphql/schema/input_object.rb +148 -99
  158. data/lib/graphql/schema/interface.rb +41 -64
  159. data/lib/graphql/schema/introspection_system.rb +12 -26
  160. data/lib/graphql/schema/late_bound_type.rb +12 -2
  161. data/lib/graphql/schema/list.rb +18 -7
  162. data/lib/graphql/schema/loader.rb +6 -5
  163. data/lib/graphql/schema/member/base_dsl_methods.rb +32 -18
  164. data/lib/graphql/schema/member/build_type.rb +16 -13
  165. data/lib/graphql/schema/member/has_arguments.rb +270 -86
  166. data/lib/graphql/schema/member/has_ast_node.rb +12 -0
  167. data/lib/graphql/schema/member/has_deprecation_reason.rb +3 -4
  168. data/lib/graphql/schema/member/has_directives.rb +81 -61
  169. data/lib/graphql/schema/member/has_fields.rb +169 -31
  170. data/lib/graphql/schema/member/has_interfaces.rb +143 -0
  171. data/lib/graphql/schema/member/has_unresolved_type_error.rb +5 -1
  172. data/lib/graphql/schema/member/has_validators.rb +32 -6
  173. data/lib/graphql/schema/member/relay_shortcuts.rb +47 -2
  174. data/lib/graphql/schema/member/scoped.rb +19 -0
  175. data/lib/graphql/schema/member/type_system_helpers.rb +16 -0
  176. data/lib/graphql/schema/member/validates_input.rb +6 -6
  177. data/lib/graphql/schema/member.rb +1 -6
  178. data/lib/graphql/schema/mutation.rb +7 -9
  179. data/lib/graphql/schema/non_null.rb +7 -7
  180. data/lib/graphql/schema/object.rb +38 -119
  181. data/lib/graphql/schema/printer.rb +24 -25
  182. data/lib/graphql/schema/relay_classic_mutation.rb +13 -91
  183. data/lib/graphql/schema/resolver/has_payload_type.rb +46 -11
  184. data/lib/graphql/schema/resolver.rb +118 -115
  185. data/lib/graphql/schema/scalar.rb +20 -21
  186. data/lib/graphql/schema/subscription.rb +95 -21
  187. data/lib/graphql/schema/timeout.rb +25 -29
  188. data/lib/graphql/schema/type_expression.rb +2 -2
  189. data/lib/graphql/schema/type_membership.rb +21 -4
  190. data/lib/graphql/schema/union.rb +16 -16
  191. data/lib/graphql/schema/unique_within_type.rb +1 -1
  192. data/lib/graphql/schema/validator/all_validator.rb +62 -0
  193. data/lib/graphql/schema/validator/allow_blank_validator.rb +29 -0
  194. data/lib/graphql/schema/validator/allow_null_validator.rb +26 -0
  195. data/lib/graphql/schema/validator/exclusion_validator.rb +3 -1
  196. data/lib/graphql/schema/validator/format_validator.rb +4 -5
  197. data/lib/graphql/schema/validator/inclusion_validator.rb +3 -1
  198. data/lib/graphql/schema/validator/length_validator.rb +5 -3
  199. data/lib/graphql/schema/validator/numericality_validator.rb +13 -2
  200. data/lib/graphql/schema/validator/required_validator.rb +56 -18
  201. data/lib/graphql/schema/validator.rb +38 -28
  202. data/lib/graphql/schema/visibility/migration.rb +188 -0
  203. data/lib/graphql/schema/visibility/profile.rb +359 -0
  204. data/lib/graphql/schema/visibility/visit.rb +190 -0
  205. data/lib/graphql/schema/visibility.rb +294 -0
  206. data/lib/graphql/schema/warden.rb +423 -134
  207. data/lib/graphql/schema/wrapper.rb +0 -5
  208. data/lib/graphql/schema.rb +1015 -1057
  209. data/lib/graphql/static_validation/all_rules.rb +3 -1
  210. data/lib/graphql/static_validation/base_visitor.rb +15 -28
  211. data/lib/graphql/static_validation/definition_dependencies.rb +7 -2
  212. data/lib/graphql/static_validation/error.rb +3 -1
  213. data/lib/graphql/static_validation/literal_validator.rb +24 -7
  214. data/lib/graphql/static_validation/rules/argument_literals_are_compatible.rb +1 -1
  215. data/lib/graphql/static_validation/rules/argument_names_are_unique.rb +1 -1
  216. data/lib/graphql/static_validation/rules/arguments_are_defined.rb +4 -3
  217. data/lib/graphql/static_validation/rules/directives_are_defined.rb +13 -7
  218. data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +15 -13
  219. data/lib/graphql/static_validation/rules/fields_are_defined_on_type.rb +12 -2
  220. data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +13 -5
  221. data/lib/graphql/static_validation/rules/fields_will_merge.rb +62 -35
  222. data/lib/graphql/static_validation/rules/fields_will_merge_error.rb +25 -4
  223. data/lib/graphql/static_validation/rules/fragment_spreads_are_possible.rb +3 -3
  224. data/lib/graphql/static_validation/rules/fragment_types_exist.rb +12 -2
  225. data/lib/graphql/static_validation/rules/fragments_are_finite.rb +2 -2
  226. data/lib/graphql/static_validation/rules/fragments_are_on_composite_types.rb +1 -1
  227. data/lib/graphql/static_validation/rules/mutation_root_exists.rb +1 -1
  228. data/lib/graphql/static_validation/rules/no_definitions_are_present.rb +1 -1
  229. data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid.rb +66 -0
  230. data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid_error.rb +29 -0
  231. data/lib/graphql/static_validation/rules/query_root_exists.rb +17 -0
  232. data/lib/graphql/static_validation/rules/query_root_exists_error.rb +26 -0
  233. data/lib/graphql/static_validation/rules/required_arguments_are_present.rb +7 -5
  234. data/lib/graphql/static_validation/rules/required_input_object_attributes_are_present.rb +5 -5
  235. data/lib/graphql/static_validation/rules/subscription_root_exists.rb +1 -1
  236. data/lib/graphql/static_validation/rules/unique_directives_per_location.rb +14 -8
  237. data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed.rb +18 -27
  238. data/lib/graphql/static_validation/rules/variable_names_are_unique.rb +1 -1
  239. data/lib/graphql/static_validation/rules/variable_usages_are_allowed.rb +14 -8
  240. data/lib/graphql/static_validation/rules/variables_are_input_types.rb +11 -2
  241. data/lib/graphql/static_validation/validation_context.rb +32 -6
  242. data/lib/graphql/static_validation/validator.rb +11 -27
  243. data/lib/graphql/static_validation.rb +0 -3
  244. data/lib/graphql/string_encoding_error.rb +13 -3
  245. data/lib/graphql/subscriptions/action_cable_subscriptions.rb +49 -11
  246. data/lib/graphql/subscriptions/broadcast_analyzer.rb +11 -5
  247. data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +40 -1
  248. data/lib/graphql/subscriptions/event.rb +87 -38
  249. data/lib/graphql/subscriptions/serialize.rb +27 -3
  250. data/lib/graphql/subscriptions.rb +63 -49
  251. data/lib/graphql/testing/helpers.rb +155 -0
  252. data/lib/graphql/testing.rb +2 -0
  253. data/lib/graphql/tracing/active_support_notifications_trace.rb +16 -0
  254. data/lib/graphql/tracing/active_support_notifications_tracing.rb +6 -20
  255. data/lib/graphql/tracing/appoptics_trace.rb +253 -0
  256. data/lib/graphql/tracing/appoptics_tracing.rb +4 -2
  257. data/lib/graphql/tracing/appsignal_trace.rb +79 -0
  258. data/lib/graphql/tracing/appsignal_tracing.rb +17 -0
  259. data/lib/graphql/tracing/call_legacy_tracers.rb +66 -0
  260. data/lib/graphql/tracing/data_dog_trace.rb +185 -0
  261. data/lib/graphql/tracing/data_dog_tracing.rb +27 -15
  262. data/lib/graphql/{execution/instrumentation.rb → tracing/legacy_hooks_trace.rb} +11 -28
  263. data/lib/graphql/tracing/legacy_trace.rb +12 -0
  264. data/lib/graphql/tracing/new_relic_trace.rb +77 -0
  265. data/lib/graphql/tracing/new_relic_tracing.rb +2 -0
  266. data/lib/graphql/tracing/notifications_trace.rb +45 -0
  267. data/lib/graphql/tracing/notifications_tracing.rb +61 -0
  268. data/lib/graphql/tracing/null_trace.rb +9 -0
  269. data/lib/graphql/tracing/platform_trace.rb +118 -0
  270. data/lib/graphql/tracing/platform_tracing.rb +46 -49
  271. data/lib/graphql/tracing/{prometheus_tracing → prometheus_trace}/graphql_collector.rb +6 -2
  272. data/lib/graphql/tracing/prometheus_trace.rb +94 -0
  273. data/lib/graphql/tracing/prometheus_tracing.rb +5 -3
  274. data/lib/graphql/tracing/scout_trace.rb +74 -0
  275. data/lib/graphql/tracing/scout_tracing.rb +2 -0
  276. data/lib/graphql/tracing/sentry_trace.rb +114 -0
  277. data/lib/graphql/tracing/statsd_trace.rb +58 -0
  278. data/lib/graphql/tracing/statsd_tracing.rb +2 -0
  279. data/lib/graphql/tracing/trace.rb +79 -0
  280. data/lib/graphql/tracing.rb +29 -52
  281. data/lib/graphql/type_kinds.rb +7 -4
  282. data/lib/graphql/types/big_int.rb +5 -1
  283. data/lib/graphql/types/int.rb +1 -1
  284. data/lib/graphql/types/iso_8601_date.rb +17 -6
  285. data/lib/graphql/types/iso_8601_date_time.rb +12 -1
  286. data/lib/graphql/types/iso_8601_duration.rb +77 -0
  287. data/lib/graphql/types/relay/base_connection.rb +16 -6
  288. data/lib/graphql/types/relay/connection_behaviors.rb +92 -32
  289. data/lib/graphql/types/relay/edge_behaviors.rb +46 -7
  290. data/lib/graphql/types/relay/has_node_field.rb +2 -2
  291. data/lib/graphql/types/relay/has_nodes_field.rb +2 -2
  292. data/lib/graphql/types/relay/node_behaviors.rb +12 -2
  293. data/lib/graphql/types/relay/page_info_behaviors.rb +11 -2
  294. data/lib/graphql/types/relay.rb +0 -3
  295. data/lib/graphql/types/string.rb +2 -2
  296. data/lib/graphql/types.rb +18 -10
  297. data/lib/graphql/unauthorized_enum_value_error.rb +13 -0
  298. data/lib/graphql/unauthorized_error.rb +1 -1
  299. data/lib/graphql/version.rb +1 -1
  300. data/lib/graphql.rb +82 -137
  301. data/readme.md +13 -6
  302. metadata +127 -186
  303. data/lib/graphql/analysis/analyze_query.rb +0 -98
  304. data/lib/graphql/analysis/ast/analyzer.rb +0 -84
  305. data/lib/graphql/analysis/ast/field_usage.rb +0 -28
  306. data/lib/graphql/analysis/ast/max_query_complexity.rb +0 -23
  307. data/lib/graphql/analysis/ast/max_query_depth.rb +0 -22
  308. data/lib/graphql/analysis/ast/query_complexity.rb +0 -234
  309. data/lib/graphql/analysis/ast/query_depth.rb +0 -56
  310. data/lib/graphql/analysis/ast/visitor.rb +0 -268
  311. data/lib/graphql/analysis/ast.rb +0 -91
  312. data/lib/graphql/analysis/reducer_state.rb +0 -48
  313. data/lib/graphql/argument.rb +0 -131
  314. data/lib/graphql/authorization.rb +0 -82
  315. data/lib/graphql/backtrace/legacy_tracer.rb +0 -56
  316. data/lib/graphql/backwards_compatibility.rb +0 -61
  317. data/lib/graphql/base_type.rb +0 -230
  318. data/lib/graphql/boolean_type.rb +0 -2
  319. data/lib/graphql/compatibility/execution_specification/counter_schema.rb +0 -53
  320. data/lib/graphql/compatibility/execution_specification/specification_schema.rb +0 -200
  321. data/lib/graphql/compatibility/execution_specification.rb +0 -436
  322. data/lib/graphql/compatibility/lazy_execution_specification/lazy_schema.rb +0 -111
  323. data/lib/graphql/compatibility/lazy_execution_specification.rb +0 -215
  324. data/lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb +0 -87
  325. data/lib/graphql/compatibility/query_parser_specification/query_assertions.rb +0 -79
  326. data/lib/graphql/compatibility/query_parser_specification.rb +0 -266
  327. data/lib/graphql/compatibility/schema_parser_specification.rb +0 -682
  328. data/lib/graphql/compatibility.rb +0 -5
  329. data/lib/graphql/define/assign_argument.rb +0 -12
  330. data/lib/graphql/define/assign_connection.rb +0 -13
  331. data/lib/graphql/define/assign_enum_value.rb +0 -18
  332. data/lib/graphql/define/assign_global_id_field.rb +0 -11
  333. data/lib/graphql/define/assign_mutation_function.rb +0 -34
  334. data/lib/graphql/define/assign_object_field.rb +0 -42
  335. data/lib/graphql/define/defined_object_proxy.rb +0 -53
  336. data/lib/graphql/define/instance_definable.rb +0 -240
  337. data/lib/graphql/define/no_definition_error.rb +0 -7
  338. data/lib/graphql/define/non_null_with_bang.rb +0 -16
  339. data/lib/graphql/define/type_definer.rb +0 -31
  340. data/lib/graphql/define.rb +0 -31
  341. data/lib/graphql/deprecated_dsl.rb +0 -47
  342. data/lib/graphql/deprecation.rb +0 -13
  343. data/lib/graphql/directive/deprecated_directive.rb +0 -2
  344. data/lib/graphql/directive/include_directive.rb +0 -2
  345. data/lib/graphql/directive/skip_directive.rb +0 -2
  346. data/lib/graphql/directive.rb +0 -111
  347. data/lib/graphql/enum_type.rb +0 -129
  348. data/lib/graphql/execution/execute.rb +0 -333
  349. data/lib/graphql/execution/flatten.rb +0 -40
  350. data/lib/graphql/execution/lazy/resolve.rb +0 -91
  351. data/lib/graphql/execution/typecast.rb +0 -50
  352. data/lib/graphql/field/resolve.rb +0 -59
  353. data/lib/graphql/field.rb +0 -226
  354. data/lib/graphql/filter.rb +0 -53
  355. data/lib/graphql/float_type.rb +0 -2
  356. data/lib/graphql/function.rb +0 -128
  357. data/lib/graphql/id_type.rb +0 -2
  358. data/lib/graphql/input_object_type.rb +0 -138
  359. data/lib/graphql/int_type.rb +0 -2
  360. data/lib/graphql/interface_type.rb +0 -72
  361. data/lib/graphql/internal_representation/document.rb +0 -27
  362. data/lib/graphql/internal_representation/node.rb +0 -206
  363. data/lib/graphql/internal_representation/print.rb +0 -51
  364. data/lib/graphql/internal_representation/rewrite.rb +0 -184
  365. data/lib/graphql/internal_representation/scope.rb +0 -88
  366. data/lib/graphql/internal_representation/visit.rb +0 -36
  367. data/lib/graphql/internal_representation.rb +0 -7
  368. data/lib/graphql/language/lexer.rl +0 -262
  369. data/lib/graphql/language/parser.y +0 -543
  370. data/lib/graphql/language/token.rb +0 -38
  371. data/lib/graphql/list_type.rb +0 -80
  372. data/lib/graphql/non_null_type.rb +0 -71
  373. data/lib/graphql/object_type.rb +0 -130
  374. data/lib/graphql/query/arguments.rb +0 -189
  375. data/lib/graphql/query/arguments_cache.rb +0 -24
  376. data/lib/graphql/query/executor.rb +0 -52
  377. data/lib/graphql/query/literal_input.rb +0 -136
  378. data/lib/graphql/query/serial_execution/field_resolution.rb +0 -92
  379. data/lib/graphql/query/serial_execution/operation_resolution.rb +0 -19
  380. data/lib/graphql/query/serial_execution/selection_resolution.rb +0 -23
  381. data/lib/graphql/query/serial_execution/value_resolution.rb +0 -87
  382. data/lib/graphql/query/serial_execution.rb +0 -40
  383. data/lib/graphql/relay/array_connection.rb +0 -83
  384. data/lib/graphql/relay/base_connection.rb +0 -189
  385. data/lib/graphql/relay/connection_instrumentation.rb +0 -54
  386. data/lib/graphql/relay/connection_resolve.rb +0 -43
  387. data/lib/graphql/relay/connection_type.rb +0 -41
  388. data/lib/graphql/relay/edge.rb +0 -27
  389. data/lib/graphql/relay/edge_type.rb +0 -19
  390. data/lib/graphql/relay/edges_instrumentation.rb +0 -40
  391. data/lib/graphql/relay/global_id_resolve.rb +0 -18
  392. data/lib/graphql/relay/mongo_relation_connection.rb +0 -50
  393. data/lib/graphql/relay/mutation/instrumentation.rb +0 -23
  394. data/lib/graphql/relay/mutation/resolve.rb +0 -56
  395. data/lib/graphql/relay/mutation/result.rb +0 -38
  396. data/lib/graphql/relay/mutation.rb +0 -106
  397. data/lib/graphql/relay/node.rb +0 -39
  398. data/lib/graphql/relay/page_info.rb +0 -7
  399. data/lib/graphql/relay/relation_connection.rb +0 -188
  400. data/lib/graphql/relay/type_extensions.rb +0 -32
  401. data/lib/graphql/scalar_type.rb +0 -91
  402. data/lib/graphql/schema/base_64_bp.rb +0 -26
  403. data/lib/graphql/schema/catchall_middleware.rb +0 -35
  404. data/lib/graphql/schema/default_parse_error.rb +0 -10
  405. data/lib/graphql/schema/default_type_error.rb +0 -17
  406. data/lib/graphql/schema/invalid_type_error.rb +0 -7
  407. data/lib/graphql/schema/member/accepts_definition.rb +0 -152
  408. data/lib/graphql/schema/member/cached_graphql_definition.rb +0 -31
  409. data/lib/graphql/schema/member/instrumentation.rb +0 -131
  410. data/lib/graphql/schema/middleware_chain.rb +0 -82
  411. data/lib/graphql/schema/possible_types.rb +0 -44
  412. data/lib/graphql/schema/rescue_middleware.rb +0 -60
  413. data/lib/graphql/schema/timeout_middleware.rb +0 -88
  414. data/lib/graphql/schema/traversal.rb +0 -228
  415. data/lib/graphql/schema/validation.rb +0 -313
  416. data/lib/graphql/static_validation/default_visitor.rb +0 -15
  417. data/lib/graphql/static_validation/no_validate_visitor.rb +0 -10
  418. data/lib/graphql/static_validation/type_stack.rb +0 -216
  419. data/lib/graphql/string_type.rb +0 -2
  420. data/lib/graphql/subscriptions/instrumentation.rb +0 -79
  421. data/lib/graphql/subscriptions/subscription_root.rb +0 -76
  422. data/lib/graphql/tracing/skylight_tracing.rb +0 -70
  423. data/lib/graphql/types/relay/default_relay.rb +0 -27
  424. data/lib/graphql/types/relay/node_field.rb +0 -25
  425. data/lib/graphql/types/relay/nodes_field.rb +0 -27
  426. data/lib/graphql/union_type.rb +0 -115
  427. data/lib/graphql/upgrader/member.rb +0 -937
  428. data/lib/graphql/upgrader/schema.rb +0 -38
@@ -1,1470 +1,367 @@
1
1
  # frozen_string_literal: true
2
-
3
2
  module GraphQL
4
- module Language
5
- module Lexer
6
- if !String.method_defined?(:match?)
7
- using GraphQL::StringMatchBackport
8
- end
9
-
10
- def self.tokenize(query_string)
11
- run_lexer(query_string)
12
- end
13
-
14
- # Replace any escaped unicode or whitespace with the _actual_ characters
15
- # To avoid allocating more strings, this modifies the string passed into it
16
- def self.replace_escaped_characters_in_place(raw_string)
17
- raw_string.gsub!(ESCAPES, ESCAPES_REPLACE)
18
- raw_string.gsub!(UTF_8, &UTF_8_REPLACE)
19
- nil
20
- end
21
-
22
- private
23
-
24
- class << self
25
- attr_accessor :_graphql_lexer_trans_keys
26
- private :_graphql_lexer_trans_keys, :_graphql_lexer_trans_keys=
27
- end
28
- self._graphql_lexer_trans_keys = [
29
- 1, 0, 4, 22, 4, 43, 14, 46, 14, 46, 14, 46, 14, 46, 4, 22, 4, 4, 4, 4, 4, 22, 4, 4, 4, 4, 14, 15, 14, 15, 10, 15, 12, 12, 4, 22, 4, 43, 14, 46, 14, 46, 14, 46, 14, 46, 0, 49, 0, 0, 4, 22, 4, 4, 4, 4, 4, 4, 4, 22, 4, 4, 4, 4, 1, 1, 14, 15, 10, 29, 14, 15, 10, 29, 10, 29, 12, 12, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 14, 46, 4, 4, 0 ,
30
- ]
31
-
32
- class << self
33
- attr_accessor :_graphql_lexer_char_class
34
- private :_graphql_lexer_char_class, :_graphql_lexer_char_class=
35
- end
36
- self._graphql_lexer_char_class = [
37
- 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, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 2, 2, 17, 2, 2, 18, 19, 19, 19, 19, 20, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 21, 22, 23, 2, 24, 2, 25, 26, 27, 28, 29, 30, 31, 32, 33, 19, 19, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 19, 45, 46, 19, 47, 48, 49, 0 ,
38
- ]
39
-
40
- class << self
41
- attr_accessor :_graphql_lexer_index_offsets
42
- private :_graphql_lexer_index_offsets, :_graphql_lexer_index_offsets=
43
- end
44
- self._graphql_lexer_index_offsets = [
45
- 0, 0, 19, 59, 92, 125, 158, 191, 210, 211, 212, 231, 232, 233, 235, 237, 243, 244, 263, 303, 336, 369, 402, 435, 485, 486, 505, 506, 507, 508, 527, 528, 529, 530, 532, 552, 554, 574, 594, 595, 628, 661, 694, 727, 760, 793, 826, 859, 892, 925, 958, 991, 1024, 1057, 1090, 1123, 1156, 1189, 1222, 1255, 1288, 1321, 1354, 1387, 1420, 1453, 1486, 1519, 1552, 1585, 1618, 1651, 1684, 1717, 1750, 1783, 1816, 1849, 1882, 1915, 1948, 1981, 2014, 2047, 2080, 2113, 2146, 2179, 2212, 2245, 2278, 2311, 2344, 2377, 2410, 2443, 2476, 2509, 2542, 2575, 2608, 2641, 2674, 2707, 2740, 2773, 2806, 2839, 2872, 2905, 2938, 2971, 3004, 3037, 3070, 3103, 3136, 3169, 3202, 3235, 3268, 3301, 3334, 3367, 3400, 3433, 0 ,
46
- ]
47
-
48
- class << self
49
- attr_accessor :_graphql_lexer_indicies
50
- private :_graphql_lexer_indicies, :_graphql_lexer_indicies=
51
- end
52
- self._graphql_lexer_indicies = [
53
- 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 4, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 0, 0, 0, 6, 6, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 11, 12, 13, 14, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 11, 15, 16, 17, 17, 19, 19, 20, 20, 8, 8, 17, 17, 21, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 24, 22, 25, 25, 25, 25, 25, 25, 25, 25, 22, 25, 25, 25, 25, 25, 25, 25, 25, 22, 25, 25, 25, 22, 25, 25, 25, 22, 25, 25, 25, 25, 25, 22, 25, 25, 25, 22, 25, 22, 26, 27, 27, 25, 25, 25, 27, 27, 25, 25, 25, 25, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 25, 25, 25, 28, 28, 25, 25, 25, 25, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 25, 25, 25, 29, 29, 25, 25, 25, 25, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 22, 22, 25, 25, 25, 22, 22, 25, 25, 25, 25, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 31, 32, 30, 33, 34, 35, 36, 37, 38, 39, 30, 40, 41, 30, 42, 43, 44, 45, 46, 47, 47, 48, 30, 49, 47, 47, 47, 47, 50, 51, 52, 47, 47, 53, 47, 54, 55, 56, 47, 57, 47, 58, 59, 60, 47, 47, 47, 61, 62, 63, 31, 66, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 9, 69, 70, 71, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 11, 72, 13, 73, 42, 43, 20, 20, 75, 74, 17, 17, 74, 74, 74, 74, 76, 74, 74, 74, 74, 74, 74, 74, 74, 76, 17, 17, 20, 20, 77, 77, 19, 19, 77, 77, 77, 77, 76, 77, 77, 77, 77, 77, 77, 77, 77, 76, 20, 20, 75, 74, 43, 43, 74, 74, 74, 74, 76, 74, 74, 74, 74, 74, 74, 74, 74, 76, 78, 47, 47, 8, 8, 8, 47, 47, 8, 8, 8, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 80, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 81, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 82, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 83, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 84, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 85, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 86, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 87, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 88, 47, 47, 47, 47, 47, 47, 47, 47, 89, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 90, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 91, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 92, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 93, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 94, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 95, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 96, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 97, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 98, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 99, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 100, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 101, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 102, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 103, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 104, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 105, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 106, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 107, 108, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 109, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 110, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 111, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 112, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 113, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 114, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 115, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 116, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 117, 47, 47, 47, 118, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 119, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 120, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 121, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 122, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 123, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 124, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 125, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 126, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 127, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 128, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 129, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 130, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 131, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 132, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 133, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 134, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 135, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 136, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 137, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 138, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 139, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 140, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 141, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 142, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 143, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 144, 47, 47, 47, 47, 47, 47, 145, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 146, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 147, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 148, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 149, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 150, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 151, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 152, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 153, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 154, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 155, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 156, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 157, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 158, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 159, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 160, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 161, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 163, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 164, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 165, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 166, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 167, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 168, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 169, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 170, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 47, 79, 79, 79, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 171, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 22, 0 ,
54
- ]
55
-
56
- class << self
57
- attr_accessor :_graphql_lexer_index_defaults
58
- private :_graphql_lexer_index_defaults, :_graphql_lexer_index_defaults=
59
- end
60
- self._graphql_lexer_index_defaults = [
61
- 0, 1, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 8, 18, 8, 0, 22, 25, 25, 25, 25, 25, 30, 64, 1, 67, 68, 68, 9, 9, 9, 35, 65, 74, 77, 77, 74, 65, 8, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 25, 0 ,
62
- ]
63
-
64
- class << self
65
- attr_accessor :_graphql_lexer_trans_cond_spaces
66
- private :_graphql_lexer_trans_cond_spaces, :_graphql_lexer_trans_cond_spaces=
67
- end
68
- self._graphql_lexer_trans_cond_spaces = [
69
- -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0 ,
70
- ]
71
-
72
- class << self
73
- attr_accessor :_graphql_lexer_cond_targs
74
- private :_graphql_lexer_cond_targs, :_graphql_lexer_cond_targs=
75
- end
76
- self._graphql_lexer_cond_targs = [
77
- 23, 1, 23, 2, 3, 4, 5, 6, 23, 7, 8, 10, 9, 27, 11, 12, 29, 35, 23, 36, 13, 23, 17, 125, 18, 0, 19, 20, 21, 22, 23, 24, 23, 23, 25, 32, 23, 23, 23, 23, 33, 38, 34, 37, 23, 23, 23, 39, 23, 23, 40, 48, 55, 65, 83, 90, 93, 94, 98, 116, 121, 23, 23, 23, 23, 23, 26, 23, 23, 28, 23, 30, 31, 23, 23, 14, 15, 23, 16, 23, 41, 42, 43, 44, 45, 46, 47, 39, 49, 51, 50, 39, 52, 53, 54, 39, 56, 59, 57, 58, 39, 60, 61, 62, 63, 64, 39, 66, 74, 67, 68, 69, 70, 71, 72, 73, 39, 75, 77, 76, 39, 78, 79, 80, 81, 82, 39, 84, 85, 86, 87, 88, 89, 39, 91, 92, 39, 39, 95, 96, 97, 39, 99, 106, 100, 103, 101, 102, 39, 104, 105, 39, 107, 108, 109, 110, 111, 112, 113, 114, 115, 39, 117, 119, 118, 39, 120, 39, 122, 123, 124, 39, 0 ,
78
- ]
79
-
80
- class << self
81
- attr_accessor :_graphql_lexer_cond_actions
82
- private :_graphql_lexer_cond_actions, :_graphql_lexer_cond_actions=
83
- end
84
- self._graphql_lexer_cond_actions = [
85
- 1, 0, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 5, 6, 0, 7, 0, 8, 0, 0, 0, 0, 0, 0, 11, 0, 12, 13, 14, 0, 15, 16, 17, 18, 0, 14, 19, 19, 20, 21, 22, 23, 24, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 28, 29, 30, 31, 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 ,
86
- ]
87
-
88
- class << self
89
- attr_accessor :_graphql_lexer_to_state_actions
90
- private :_graphql_lexer_to_state_actions, :_graphql_lexer_to_state_actions=
91
- end
92
- self._graphql_lexer_to_state_actions = [
93
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 9, 0 ,
94
- ]
95
-
96
- class << self
97
- attr_accessor :_graphql_lexer_from_state_actions
98
- private :_graphql_lexer_from_state_actions, :_graphql_lexer_from_state_actions=
99
- end
100
- self._graphql_lexer_from_state_actions = [
101
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 10, 0 ,
102
- ]
103
-
104
- class << self
105
- attr_accessor :_graphql_lexer_eof_trans
106
- private :_graphql_lexer_eof_trans, :_graphql_lexer_eof_trans=
107
- end
108
- self._graphql_lexer_eof_trans = [
109
- 0, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 19, 9, 1, 0, 0, 0, 0, 0, 0, 0, 65, 66, 68, 69, 69, 69, 69, 69, 74, 66, 75, 78, 78, 75, 66, 9, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 0, 0 ,
110
- ]
111
-
112
- class << self
113
- attr_accessor :_graphql_lexer_nfa_targs
114
- private :_graphql_lexer_nfa_targs, :_graphql_lexer_nfa_targs=
115
- end
116
- self._graphql_lexer_nfa_targs = [
117
- 0, 0 ,
118
- ]
119
-
120
- class << self
121
- attr_accessor :_graphql_lexer_nfa_offsets
122
- private :_graphql_lexer_nfa_offsets, :_graphql_lexer_nfa_offsets=
123
- end
124
- self._graphql_lexer_nfa_offsets = [
125
- 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,
126
- ]
127
-
128
- class << self
129
- attr_accessor :_graphql_lexer_nfa_push_actions
130
- private :_graphql_lexer_nfa_push_actions, :_graphql_lexer_nfa_push_actions=
131
- end
132
- self._graphql_lexer_nfa_push_actions = [
133
- 0, 0 ,
134
- ]
135
-
136
- class << self
137
- attr_accessor :_graphql_lexer_nfa_pop_trans
138
- private :_graphql_lexer_nfa_pop_trans, :_graphql_lexer_nfa_pop_trans=
139
- end
140
- self._graphql_lexer_nfa_pop_trans = [
141
- 0, 0 ,
142
- ]
143
-
144
- class << self
145
- attr_accessor :graphql_lexer_start
146
- end
147
- self.graphql_lexer_start = 23;
148
-
149
- class << self
150
- attr_accessor :graphql_lexer_first_final
151
- end
152
- self.graphql_lexer_first_final = 23;
153
-
154
- class << self
155
- attr_accessor :graphql_lexer_error
156
- end
157
- self.graphql_lexer_error = 0;
158
-
159
- class << self
160
- attr_accessor :graphql_lexer_en_str
161
- end
162
- self.graphql_lexer_en_str = 125;
163
-
164
- class << self
165
- attr_accessor :graphql_lexer_en_main
166
- end
167
- self.graphql_lexer_en_main = 23;
168
-
169
- def self.run_lexer(query_string)
170
- data = query_string.unpack(PACK_DIRECTIVE)
171
- eof = data.length
172
-
173
- # Since `Lexer` is a module, store all lexer state
174
- # in this local variable:
175
- meta = {
176
- line: 1,
177
- col: 1,
178
- data: data,
179
- tokens: [],
180
- previous_token: nil,
181
- }
182
-
183
- p ||= 0
184
- pe ||= data.length
185
-
186
- begin
187
- cs = graphql_lexer_start;
188
- ts = 0;
189
- te = 0;
190
- act = 0;
191
-
192
- end
193
- begin
194
- _trans = 0;
195
- _have = 0;
196
- _cont = 1;
197
- _keys = 0;
198
- _inds = 0;
199
- while ( _cont == 1 )
200
- begin
201
- if ( cs == 0 )
202
- _cont = 0;
203
-
204
- end
205
- _have = 0;
206
- if ( p == pe )
207
- begin
208
- if ( p == eof )
209
- begin
210
- if ( _graphql_lexer_eof_trans[cs] > 0 )
211
- begin
212
- _trans = _graphql_lexer_eof_trans[cs] - 1;
213
- _have = 1;
214
-
215
- end
216
-
217
- end
218
- if ( _have == 0 )
219
- begin
220
-
221
- end
222
-
223
- end
224
-
225
- end
226
-
227
- end
228
- if ( _have == 0 )
229
- _cont = 0;
230
-
231
- end
232
-
233
- end
234
-
235
- end
236
- if ( _cont == 1 )
237
- begin
238
- if ( _have == 0 )
239
- begin
240
- case _graphql_lexer_from_state_actions[cs]
241
- when -2 then
242
- begin
243
- end
244
- when 10 then
245
- begin
246
- begin
247
- begin
248
- ts = p;
249
-
250
- end
251
-
252
- end
253
-
254
-
255
- end
256
- end
257
- _keys = (cs<<1) ;
258
- _inds = _graphql_lexer_index_offsets[cs] ;
259
- if ( ( data[p ].ord) <= 125 && ( data[p ].ord) >= 9 )
260
- begin
261
- _ic = _graphql_lexer_char_class[( data[p ].ord) - 9];
262
- if ( _ic <= _graphql_lexer_trans_keys[_keys+1 ]&& _ic >= _graphql_lexer_trans_keys[_keys ] )
263
- _trans = _graphql_lexer_indicies[_inds + ( _ic - _graphql_lexer_trans_keys[_keys ]) ];
264
-
265
- else
266
- _trans = _graphql_lexer_index_defaults[cs];
267
-
268
- end
269
-
270
- end
271
-
272
- else
273
- begin
274
- _trans = _graphql_lexer_index_defaults[cs];
275
-
276
- end
277
-
278
- end
279
-
280
- end
281
-
282
- end
283
- if ( _cont == 1 )
284
- begin
285
- cs = _graphql_lexer_cond_targs[_trans];
286
- case _graphql_lexer_cond_actions[_trans]
287
- when -2 then
288
- begin
289
- end
290
- when 14 then
291
- begin
292
- begin
293
- begin
294
- te = p+1;
295
-
296
- end
297
-
298
- end
299
-
300
- end
301
- when 8 then
302
- begin
303
- begin
304
- begin
305
- te = p+1;
306
- begin
307
- emit_string(ts, te, meta, block: false)
308
- end
309
-
310
- end
311
-
312
- end
313
-
314
- end
315
- when 28 then
316
- begin
317
- begin
318
- begin
319
- te = p+1;
320
- begin
321
- emit(:RCURLY, ts, te, meta, "}")
322
- end
323
-
324
- end
325
-
326
- end
327
-
328
- end
329
- when 26 then
330
- begin
331
- begin
332
- begin
333
- te = p+1;
334
- begin
335
- emit(:LCURLY, ts, te, meta, "{")
336
- end
337
-
338
- end
339
-
340
- end
341
-
342
- end
343
- when 18 then
344
- begin
345
- begin
346
- begin
347
- te = p+1;
348
- begin
349
- emit(:RPAREN, ts, te, meta, ")")
350
- end
351
-
352
- end
353
-
354
- end
355
-
356
- end
357
- when 17 then
358
- begin
359
- begin
360
- begin
361
- te = p+1;
362
- begin
363
- emit(:LPAREN, ts, te, meta, "(")
364
- end
365
-
366
- end
367
-
368
- end
369
-
370
- end
371
- when 25 then
372
- begin
373
- begin
374
- begin
375
- te = p+1;
376
- begin
377
- emit(:RBRACKET, ts, te, meta, "]")
378
- end
379
-
380
- end
381
-
382
- end
383
-
384
- end
385
- when 24 then
386
- begin
387
- begin
388
- begin
389
- te = p+1;
390
- begin
391
- emit(:LBRACKET, ts, te, meta, "[")
392
- end
393
-
394
- end
395
-
396
- end
397
-
398
- end
399
- when 20 then
400
- begin
401
- begin
402
- begin
403
- te = p+1;
404
- begin
405
- emit(:COLON, ts, te, meta, ":")
406
- end
407
-
408
- end
409
-
410
- end
411
-
412
- end
413
- when 2 then
414
- begin
415
- begin
416
- begin
417
- te = p+1;
418
- begin
419
- emit_string(ts, te, meta, block: false)
420
- end
421
-
422
- end
423
-
424
- end
425
-
426
- end
427
- when 34 then
428
- begin
429
- begin
430
- begin
431
- te = p+1;
432
- begin
433
- emit_string(ts, te, meta, block: true)
434
- end
435
-
436
- end
437
-
438
- end
439
-
440
- end
441
- when 15 then
442
- begin
443
- begin
444
- begin
445
- te = p+1;
446
- begin
447
- emit(:VAR_SIGN, ts, te, meta, "$")
448
- end
449
-
450
- end
451
-
452
- end
453
-
454
- end
455
- when 22 then
456
- begin
457
- begin
458
- begin
459
- te = p+1;
460
- begin
461
- emit(:DIR_SIGN, ts, te, meta, "@")
462
- end
463
-
464
- end
465
-
466
- end
467
-
468
- end
469
- when 7 then
470
- begin
471
- begin
472
- begin
473
- te = p+1;
474
- begin
475
- emit(:ELLIPSIS, ts, te, meta, "...")
476
- end
477
-
478
- end
479
-
480
- end
481
-
482
- end
483
- when 21 then
484
- begin
485
- begin
486
- begin
487
- te = p+1;
488
- begin
489
- emit(:EQUALS, ts, te, meta, "=")
490
- end
491
-
492
- end
493
-
494
- end
495
-
496
- end
497
- when 13 then
498
- begin
499
- begin
500
- begin
501
- te = p+1;
502
- begin
503
- emit(:BANG, ts, te, meta, "!")
504
- end
505
-
506
- end
507
-
508
- end
509
-
510
- end
511
- when 27 then
512
- begin
513
- begin
514
- begin
515
- te = p+1;
516
- begin
517
- emit(:PIPE, ts, te, meta, "|")
518
- end
519
-
520
- end
521
-
522
- end
523
-
524
- end
525
- when 16 then
526
- begin
527
- begin
528
- begin
529
- te = p+1;
530
- begin
531
- emit(:AMP, ts, te, meta, "&")
532
- end
533
-
534
- end
535
-
536
- end
537
-
538
- end
539
- when 12 then
540
- begin
541
- begin
542
- begin
543
- te = p+1;
544
- begin
545
- meta[:line] += 1
546
- meta[:col] = 1
547
-
548
- end
549
-
550
- end
551
-
552
- end
553
-
554
- end
555
- when 11 then
556
- begin
557
- begin
558
- begin
559
- te = p+1;
560
- begin
561
- emit(:UNKNOWN_CHAR, ts, te, meta)
562
- end
563
-
564
- end
565
-
566
- end
567
-
568
- end
569
- when 36 then
570
- begin
571
- begin
572
- begin
573
- te = p;
574
- p = p - 1;
575
- begin
576
- emit(:INT, ts, te, meta)
577
- end
578
-
579
- end
580
-
581
- end
582
-
583
- end
584
- when 37 then
585
- begin
586
- begin
587
- begin
588
- te = p;
589
- p = p - 1;
590
- begin
591
- emit(:FLOAT, ts, te, meta)
592
- end
593
-
594
- end
595
-
596
- end
597
-
598
- end
599
- when 32 then
600
- begin
601
- begin
602
- begin
603
- te = p;
604
- p = p - 1;
605
- begin
606
- emit_string(ts, te, meta, block: false)
607
- end
608
-
609
- end
610
-
611
- end
612
-
613
- end
614
- when 33 then
615
- begin
616
- begin
617
- begin
618
- te = p;
619
- p = p - 1;
620
- begin
621
- emit_string(ts, te, meta, block: true)
622
- end
623
-
624
- end
625
-
626
- end
627
-
628
- end
629
- when 38 then
630
- begin
631
- begin
632
- begin
633
- te = p;
634
- p = p - 1;
635
- begin
636
- emit(:IDENTIFIER, ts, te, meta)
637
- end
638
-
639
- end
640
-
641
- end
642
-
643
- end
644
- when 35 then
645
- begin
646
- begin
647
- begin
648
- te = p;
649
- p = p - 1;
650
- begin
651
- record_comment(ts, te, meta)
652
- end
653
-
654
- end
655
-
656
- end
657
-
658
- end
659
- when 29 then
660
- begin
661
- begin
662
- begin
663
- te = p;
664
- p = p - 1;
665
- begin
666
- meta[:col] += te - ts
667
- end
668
-
669
- end
670
-
671
- end
672
-
673
- end
674
- when 30 then
675
- begin
676
- begin
677
- begin
678
- te = p;
679
- p = p - 1;
680
- begin
681
- emit(:UNKNOWN_CHAR, ts, te, meta)
682
- end
683
-
684
- end
685
-
686
- end
687
-
688
- end
689
- when 5 then
690
- begin
691
- begin
692
- begin
693
- p = ((te))-1;
694
- begin
695
- emit(:INT, ts, te, meta)
696
- end
697
-
698
- end
699
-
700
- end
701
-
702
- end
703
- when 1 then
704
- begin
705
- begin
706
- begin
707
- p = ((te))-1;
708
- begin
709
- emit(:UNKNOWN_CHAR, ts, te, meta)
710
- end
711
-
712
- end
713
-
714
- end
715
-
716
- end
717
- when 3 then
718
- begin
719
- begin
720
- begin
721
- case act
722
- when -2 then
723
- begin
724
- end
725
- when 2 then
726
- begin
727
- p = ((te))-1;
728
- begin
729
- emit(:INT, ts, te, meta)
730
- end
731
-
732
- end
733
- when 3 then
734
- begin
735
- p = ((te))-1;
736
- begin
737
- emit(:FLOAT, ts, te, meta)
738
- end
739
-
740
- end
741
- when 4 then
742
- begin
743
- p = ((te))-1;
744
- begin
745
- emit(:ON, ts, te, meta, "on")
746
- end
747
-
748
- end
749
- when 5 then
750
- begin
751
- p = ((te))-1;
752
- begin
753
- emit(:FRAGMENT, ts, te, meta, "fragment")
754
- end
755
-
756
- end
757
- when 6 then
758
- begin
759
- p = ((te))-1;
760
- begin
761
- emit(:TRUE, ts, te, meta, "true")
762
- end
763
-
764
- end
765
- when 7 then
766
- begin
767
- p = ((te))-1;
768
- begin
769
- emit(:FALSE, ts, te, meta, "false")
770
- end
771
-
772
- end
773
- when 8 then
774
- begin
775
- p = ((te))-1;
776
- begin
777
- emit(:NULL, ts, te, meta, "null")
778
- end
779
-
780
- end
781
- when 9 then
782
- begin
783
- p = ((te))-1;
784
- begin
785
- emit(:QUERY, ts, te, meta, "query")
786
- end
787
-
788
- end
789
- when 10 then
790
- begin
791
- p = ((te))-1;
792
- begin
793
- emit(:MUTATION, ts, te, meta, "mutation")
794
- end
795
-
796
- end
797
- when 11 then
798
- begin
799
- p = ((te))-1;
800
- begin
801
- emit(:SUBSCRIPTION, ts, te, meta, "subscription")
802
- end
803
-
804
- end
805
- when 12 then
806
- begin
807
- p = ((te))-1;
808
- begin
809
- emit(:SCHEMA, ts, te, meta)
810
- end
811
-
812
- end
813
- when 13 then
814
- begin
815
- p = ((te))-1;
816
- begin
817
- emit(:SCALAR, ts, te, meta)
818
- end
819
-
820
- end
821
- when 14 then
822
- begin
823
- p = ((te))-1;
824
- begin
825
- emit(:TYPE, ts, te, meta)
826
- end
827
-
828
- end
829
- when 15 then
830
- begin
831
- p = ((te))-1;
832
- begin
833
- emit(:EXTEND, ts, te, meta)
834
- end
835
-
836
- end
837
- when 16 then
838
- begin
839
- p = ((te))-1;
840
- begin
841
- emit(:IMPLEMENTS, ts, te, meta)
842
- end
843
-
844
- end
845
- when 17 then
846
- begin
847
- p = ((te))-1;
848
- begin
849
- emit(:INTERFACE, ts, te, meta)
850
- end
851
-
852
- end
853
- when 18 then
854
- begin
855
- p = ((te))-1;
856
- begin
857
- emit(:UNION, ts, te, meta)
858
- end
859
-
860
- end
861
- when 19 then
862
- begin
863
- p = ((te))-1;
864
- begin
865
- emit(:ENUM, ts, te, meta)
866
- end
867
-
868
- end
869
- when 20 then
870
- begin
871
- p = ((te))-1;
872
- begin
873
- emit(:INPUT, ts, te, meta)
874
- end
875
-
876
- end
877
- when 21 then
878
- begin
879
- p = ((te))-1;
880
- begin
881
- emit(:DIRECTIVE, ts, te, meta)
882
- end
883
-
884
- end
885
- when 29 then
886
- begin
887
- p = ((te))-1;
888
- begin
889
- emit_string(ts, te, meta, block: false)
890
- end
891
-
892
- end
893
- when 30 then
894
- begin
895
- p = ((te))-1;
896
- begin
897
- emit_string(ts, te, meta, block: true)
898
- end
899
-
900
- end
901
- when 38 then
902
- begin
903
- p = ((te))-1;
904
- begin
905
- emit(:IDENTIFIER, ts, te, meta)
906
- end
907
-
908
-
909
- end
910
- end
911
-
912
- end
913
-
914
-
915
- end
916
-
917
- end
918
- when 19 then
919
- begin
920
- begin
921
- begin
922
- te = p+1;
923
-
924
- end
925
-
926
- end
927
- begin
928
- begin
929
- act = 2;
930
-
931
- end
932
-
933
- end
934
-
935
- end
936
- when 6 then
937
- begin
938
- begin
939
- begin
940
- te = p+1;
941
-
942
- end
943
-
944
- end
945
- begin
946
- begin
947
- act = 3;
948
-
949
- end
950
-
951
- end
952
-
953
- end
954
- when 49 then
955
- begin
956
- begin
957
- begin
958
- te = p+1;
959
-
960
- end
961
-
962
- end
963
- begin
964
- begin
965
- act = 4;
966
-
967
- end
968
-
969
- end
970
-
971
- end
972
- when 43 then
973
- begin
974
- begin
975
- begin
976
- te = p+1;
977
-
978
- end
979
-
980
- end
981
- begin
982
- begin
983
- act = 5;
984
-
985
- end
986
-
987
- end
988
-
989
- end
990
- when 54 then
991
- begin
992
- begin
993
- begin
994
- te = p+1;
995
-
996
- end
997
-
998
- end
999
- begin
1000
- begin
1001
- act = 6;
1002
-
1003
- end
1004
-
1005
- end
1006
-
1007
- end
1008
- when 42 then
1009
- begin
1010
- begin
1011
- begin
1012
- te = p+1;
1013
-
1014
- end
1015
-
1016
- end
1017
- begin
1018
- begin
1019
- act = 7;
1020
-
1021
- end
1022
-
1023
- end
1024
-
1025
- end
1026
- when 48 then
1027
- begin
1028
- begin
1029
- begin
1030
- te = p+1;
1031
-
1032
- end
1033
-
1034
- end
1035
- begin
1036
- begin
1037
- act = 8;
1038
-
1039
- end
1040
-
1041
- end
1042
-
1043
- end
1044
- when 50 then
1045
- begin
1046
- begin
1047
- begin
1048
- te = p+1;
1049
-
1050
- end
1051
-
1052
- end
1053
- begin
1054
- begin
1055
- act = 9;
1056
-
1057
- end
1058
-
1059
- end
1060
-
1061
- end
1062
- when 47 then
1063
- begin
1064
- begin
1065
- begin
1066
- te = p+1;
1067
-
1068
- end
1069
-
1070
- end
1071
- begin
1072
- begin
1073
- act = 10;
1074
-
1075
- end
1076
-
1077
- end
1078
-
1079
- end
1080
- when 53 then
1081
- begin
1082
- begin
1083
- begin
1084
- te = p+1;
1085
-
1086
- end
1087
-
1088
- end
1089
- begin
1090
- begin
1091
- act = 11;
1092
-
1093
- end
1094
-
1095
- end
1096
-
1097
- end
1098
- when 52 then
1099
- begin
1100
- begin
1101
- begin
1102
- te = p+1;
1103
-
1104
- end
1105
-
1106
- end
1107
- begin
1108
- begin
1109
- act = 12;
1110
-
1111
- end
1112
-
1113
- end
1114
-
1115
- end
1116
- when 51 then
1117
- begin
1118
- begin
1119
- begin
1120
- te = p+1;
1121
-
1122
- end
1123
-
1124
- end
1125
- begin
1126
- begin
1127
- act = 13;
1128
-
1129
- end
1130
-
1131
- end
1132
-
1133
- end
1134
- when 55 then
1135
- begin
1136
- begin
1137
- begin
1138
- te = p+1;
1139
-
1140
- end
1141
-
1142
- end
1143
- begin
1144
- begin
1145
- act = 14;
1146
-
1147
- end
1148
-
1149
- end
1150
-
1151
- end
1152
- when 41 then
1153
- begin
1154
- begin
1155
- begin
1156
- te = p+1;
1157
-
1158
- end
1159
-
1160
- end
1161
- begin
1162
- begin
1163
- act = 15;
1164
-
1165
- end
1166
-
1167
- end
1168
-
1169
- end
1170
- when 44 then
1171
- begin
1172
- begin
1173
- begin
1174
- te = p+1;
1175
-
1176
- end
1177
-
1178
- end
1179
- begin
1180
- begin
1181
- act = 16;
1182
-
1183
- end
1184
-
1185
- end
1186
-
1187
- end
1188
- when 46 then
1189
- begin
1190
- begin
1191
- begin
1192
- te = p+1;
1193
-
1194
- end
1195
-
1196
- end
1197
- begin
1198
- begin
1199
- act = 17;
1200
-
1201
- end
1202
-
1203
- end
1204
-
1205
- end
1206
- when 56 then
1207
- begin
1208
- begin
1209
- begin
1210
- te = p+1;
1211
-
1212
- end
1213
-
1214
- end
1215
- begin
1216
- begin
1217
- act = 18;
1218
-
1219
- end
1220
-
1221
- end
1222
-
1223
- end
1224
- when 40 then
1225
- begin
1226
- begin
1227
- begin
1228
- te = p+1;
1229
-
1230
- end
1231
-
1232
- end
1233
- begin
1234
- begin
1235
- act = 19;
1236
-
1237
- end
1238
-
1239
- end
1240
-
1241
- end
1242
- when 45 then
1243
- begin
1244
- begin
1245
- begin
1246
- te = p+1;
1247
-
1248
- end
1249
-
1250
- end
1251
- begin
1252
- begin
1253
- act = 20;
1254
-
1255
- end
1256
-
1257
- end
1258
-
1259
- end
1260
- when 39 then
1261
- begin
1262
- begin
1263
- begin
1264
- te = p+1;
1265
-
1266
- end
1267
-
1268
- end
1269
- begin
1270
- begin
1271
- act = 21;
1272
-
1273
- end
1274
-
1275
- end
1276
-
1277
- end
1278
- when 31 then
1279
- begin
1280
- begin
1281
- begin
1282
- te = p+1;
1283
-
1284
- end
1285
-
1286
- end
1287
- begin
1288
- begin
1289
- act = 29;
1290
-
1291
- end
1292
-
1293
- end
1294
-
1295
- end
1296
- when 4 then
1297
- begin
1298
- begin
1299
- begin
1300
- te = p+1;
1301
-
1302
- end
1303
-
1304
- end
1305
- begin
1306
- begin
1307
- act = 30;
1308
-
1309
- end
1310
-
1311
- end
1312
-
1313
- end
1314
- when 23 then
1315
- begin
1316
- begin
1317
- begin
1318
- te = p+1;
1319
-
1320
- end
1321
-
1322
- end
1323
- begin
1324
- begin
1325
- act = 38;
1326
-
1327
- end
1328
-
1329
- end
1330
-
1331
-
1332
- end
1333
- end
1334
- case _graphql_lexer_to_state_actions[cs]
1335
- when -2 then
1336
- begin
1337
- end
1338
- when 9 then
1339
- begin
1340
- begin
1341
- begin
1342
- ts = 0;
1343
-
1344
- end
1345
-
1346
- end
1347
-
1348
-
1349
- end
1350
- end
1351
- if ( cs == 0 )
1352
- _cont = 0;
1353
-
1354
- end
1355
- if ( _cont == 1 )
1356
- p += 1;
1357
-
1358
- end
1359
-
1360
- end
1361
-
1362
- end
1363
-
1364
- end
1365
-
1366
- end
1367
-
1368
- end
1369
-
1370
- end
1371
-
1372
- end
1373
- meta[:tokens]
1374
- end
1375
-
1376
- def self.record_comment(ts, te, meta)
1377
- token = GraphQL::Language::Token.new(
1378
- :COMMENT,
1379
- meta[:data][ts, te - ts].pack(PACK_DIRECTIVE).force_encoding(UTF_8_ENCODING),
1380
- meta[:line],
1381
- meta[:col],
1382
- meta[:previous_token],
1383
- )
1384
-
1385
- meta[:previous_token] = token
1386
-
1387
- meta[:col] += te - ts
1388
- end
1389
-
1390
- def self.emit(token_name, ts, te, meta, token_value = nil)
1391
- token_value ||= meta[:data][ts, te - ts].pack(PACK_DIRECTIVE).force_encoding(UTF_8_ENCODING)
1392
- meta[:tokens] << token = GraphQL::Language::Token.new(
1393
- token_name,
1394
- token_value,
1395
- meta[:line],
1396
- meta[:col],
1397
- meta[:previous_token],
1398
- )
1399
- meta[:previous_token] = token
1400
- # Bump the column counter for the next token
1401
- meta[:col] += te - ts
1402
- end
1403
-
1404
- ESCAPES = /\\["\\\/bfnrt]/
1405
- ESCAPES_REPLACE = {
1406
- '\\"' => '"',
1407
- "\\\\" => "\\",
1408
- "\\/" => '/',
1409
- "\\b" => "\b",
1410
- "\\f" => "\f",
1411
- "\\n" => "\n",
1412
- "\\r" => "\r",
1413
- "\\t" => "\t",
1414
- }
1415
-
1416
- UTF_8 = /\\u[\dAa-f]{4}/i
1417
- UTF_8_REPLACE = ->(m) { [m[-4..-1].to_i(16)].pack('U'.freeze) }
1418
-
1419
- VALID_STRING = /\A(?:[^\\]|#{ESCAPES}|#{UTF_8})*\z/o
1420
-
1421
- PACK_DIRECTIVE = "c*"
1422
- UTF_8_ENCODING = "UTF-8"
1423
-
1424
- def self.emit_string(ts, te, meta, block:)
1425
- quotes_length = block ? 3 : 1
1426
- value = meta[:data][ts + quotes_length, te - ts - 2 * quotes_length].pack(PACK_DIRECTIVE).force_encoding(UTF_8_ENCODING) || ''
1427
- line_incr = 0
1428
- if block && !value.empty?
1429
- line_incr = value.count("\n")
1430
- value = GraphQL::Language::BlockString.trim_whitespace(value)
1431
- end
1432
- # TODO: replace with `String#match?` when we support only Ruby 2.4+
1433
- # (It's faster: https://bugs.ruby-lang.org/issues/8110)
1434
- if !value.valid_encoding? || !value.match?(VALID_STRING)
1435
- meta[:tokens] << token = GraphQL::Language::Token.new(
1436
- :BAD_UNICODE_ESCAPE,
1437
- value,
1438
- meta[:line],
1439
- meta[:col],
1440
- meta[:previous_token],
1441
- )
1442
- else
1443
- replace_escaped_characters_in_place(value)
1444
-
1445
- if !value.valid_encoding?
1446
- meta[:tokens] << token = GraphQL::Language::Token.new(
1447
- :BAD_UNICODE_ESCAPE,
1448
- value,
1449
- meta[:line],
1450
- meta[:col],
1451
- meta[:previous_token],
1452
- )
1453
- else
1454
- meta[:tokens] << token = GraphQL::Language::Token.new(
1455
- :STRING,
1456
- value,
1457
- meta[:line],
1458
- meta[:col],
1459
- meta[:previous_token],
1460
- )
1461
- end
1462
- end
1463
-
1464
- meta[:previous_token] = token
1465
- meta[:col] += te - ts
1466
- meta[:line] += line_incr
1467
- end
1468
- end
1469
- end
3
+ module Language
4
+
5
+ class Lexer
6
+ def initialize(graphql_str, filename: nil, max_tokens: nil)
7
+ if !(graphql_str.encoding == Encoding::UTF_8 || graphql_str.ascii_only?)
8
+ graphql_str = graphql_str.dup.force_encoding(Encoding::UTF_8)
9
+ end
10
+ @string = graphql_str
11
+ @filename = filename
12
+ @scanner = StringScanner.new(graphql_str)
13
+ @pos = nil
14
+ @max_tokens = max_tokens || Float::INFINITY
15
+ @tokens_count = 0
16
+ end
17
+
18
+ def eos?
19
+ @scanner.eos?
20
+ end
21
+
22
+ attr_reader :pos, :tokens_count
23
+
24
+ def advance
25
+ @scanner.skip(IGNORE_REGEXP)
26
+ return false if @scanner.eos?
27
+ @tokens_count += 1
28
+ if @tokens_count > @max_tokens
29
+ raise_parse_error("This query is too large to execute.")
30
+ end
31
+ @pos = @scanner.pos
32
+ next_byte = @string.getbyte(@pos)
33
+ next_byte_is_for = FIRST_BYTES[next_byte]
34
+ case next_byte_is_for
35
+ when ByteFor::PUNCTUATION
36
+ @scanner.pos += 1
37
+ PUNCTUATION_NAME_FOR_BYTE[next_byte]
38
+ when ByteFor::NAME
39
+ if len = @scanner.skip(KEYWORD_REGEXP)
40
+ case len
41
+ when 2
42
+ :ON
43
+ when 12
44
+ :SUBSCRIPTION
45
+ else
46
+ pos = @pos
47
+
48
+ # Use bytes 2 and 3 as a unique identifier for this keyword
49
+ bytes = (@string.getbyte(pos + 2) << 8) | @string.getbyte(pos + 1)
50
+ KEYWORD_BY_TWO_BYTES[_hash(bytes)]
51
+ end
52
+ else
53
+ @scanner.skip(IDENTIFIER_REGEXP)
54
+ :IDENTIFIER
55
+ end
56
+ when ByteFor::IDENTIFIER
57
+ @scanner.skip(IDENTIFIER_REGEXP)
58
+ :IDENTIFIER
59
+ when ByteFor::NUMBER
60
+ if len = @scanner.skip(NUMERIC_REGEXP)
61
+
62
+ if GraphQL.reject_numbers_followed_by_names
63
+ new_pos = @scanner.pos
64
+ peek_byte = @string.getbyte(new_pos)
65
+ next_first_byte = FIRST_BYTES[peek_byte]
66
+ if next_first_byte == ByteFor::NAME || next_first_byte == ByteFor::IDENTIFIER
67
+ number_part = token_value
68
+ name_part = @scanner.scan(IDENTIFIER_REGEXP)
69
+ raise_parse_error("Name after number is not allowed (in `#{number_part}#{name_part}`)")
70
+ end
71
+ end
72
+ # Check for a matched decimal:
73
+ @scanner[1] ? :FLOAT : :INT
74
+ else
75
+ # Attempt to find the part after the `-`
76
+ value = @scanner.scan(/-\s?[a-z0-9]*/i)
77
+ invalid_byte_for_number_error_message = "Expected type 'number', but it was malformed#{value.nil? ? "" : ": #{value.inspect}"}."
78
+ raise_parse_error(invalid_byte_for_number_error_message)
79
+ end
80
+ when ByteFor::ELLIPSIS
81
+ if @string.getbyte(@pos + 1) != 46 || @string.getbyte(@pos + 2) != 46
82
+ raise_parse_error("Expected `...`, actual: #{@string[@pos..@pos + 2].inspect}")
83
+ end
84
+ @scanner.pos += 3
85
+ :ELLIPSIS
86
+ when ByteFor::STRING
87
+ if @scanner.skip(BLOCK_STRING_REGEXP) || @scanner.skip(QUOTED_STRING_REGEXP)
88
+ :STRING
89
+ else
90
+ raise_parse_error("Expected string or block string, but it was malformed")
91
+ end
92
+ else
93
+ @scanner.pos += 1
94
+ :UNKNOWN_CHAR
95
+ end
96
+ rescue ArgumentError => err
97
+ if err.message == "invalid byte sequence in UTF-8"
98
+ raise_parse_error("Parse error on bad Unicode escape sequence", nil, nil)
99
+ end
100
+ end
101
+
102
+ def token_value
103
+ @string.byteslice(@scanner.pos - @scanner.matched_size, @scanner.matched_size)
104
+ rescue StandardError => err
105
+ raise GraphQL::Error, "(token_value failed: #{err.class}: #{err.message})"
106
+ end
107
+
108
+ def debug_token_value(token_name)
109
+ if token_name && Lexer::Punctuation.const_defined?(token_name)
110
+ Lexer::Punctuation.const_get(token_name)
111
+ elsif token_name == :ELLIPSIS
112
+ "..."
113
+ elsif token_name == :STRING
114
+ string_value
115
+ elsif @scanner.matched_size.nil?
116
+ @scanner.peek(1)
117
+ else
118
+ token_value
119
+ end
120
+ end
121
+
122
+ ESCAPES = /\\["\\\/bfnrt]/
123
+ ESCAPES_REPLACE = {
124
+ '\\"' => '"',
125
+ "\\\\" => "\\",
126
+ "\\/" => '/',
127
+ "\\b" => "\b",
128
+ "\\f" => "\f",
129
+ "\\n" => "\n",
130
+ "\\r" => "\r",
131
+ "\\t" => "\t",
132
+ }
133
+ UTF_8 = /\\u(?:([\dAa-f]{4})|\{([\da-f]{4,})\})(?:\\u([\dAa-f]{4}))?/i
134
+ VALID_STRING = /\A(?:[^\\]|#{ESCAPES}|#{UTF_8})*\z/o
135
+ ESCAPED = /(?:#{ESCAPES}|#{UTF_8})/o
136
+
137
+ def string_value
138
+ str = token_value
139
+ is_block = str.start_with?('"""')
140
+ if is_block
141
+ str.gsub!(/\A"""|"""\z/, '')
142
+ return Language::BlockString.trim_whitespace(str)
143
+ else
144
+ str.gsub!(/\A"|"\z/, '')
145
+
146
+ if !str.valid_encoding? || !str.match?(VALID_STRING)
147
+ raise_parse_error("Bad unicode escape in #{str.inspect}")
148
+ else
149
+ Lexer.replace_escaped_characters_in_place(str)
150
+
151
+ if !str.valid_encoding?
152
+ raise_parse_error("Bad unicode escape in #{str.inspect}")
153
+ else
154
+ str
155
+ end
156
+ end
157
+ end
158
+ end
159
+
160
+ def line_number
161
+ @scanner.string[0..@pos].count("\n") + 1
162
+ end
163
+
164
+ def column_number
165
+ @scanner.string[0..@pos].split("\n").last.length
166
+ end
167
+
168
+ def raise_parse_error(message, line = line_number, col = column_number)
169
+ raise GraphQL::ParseError.new(message, line, col, @string, filename: @filename)
170
+ end
171
+
172
+ IGNORE_REGEXP = %r{
173
+ (?:
174
+ [, \c\r\n\t]+ |
175
+ \#.*$
176
+ )*
177
+ }x
178
+ IDENTIFIER_REGEXP = /[_A-Za-z][_0-9A-Za-z]*/
179
+ INT_REGEXP = /-?(?:[0]|[1-9][0-9]*)/
180
+ FLOAT_DECIMAL_REGEXP = /[.][0-9]+/
181
+ FLOAT_EXP_REGEXP = /[eE][+-]?[0-9]+/
182
+ # TODO: FLOAT_EXP_REGEXP should not be allowed to follow INT_REGEXP, integers are not allowed to have exponent parts.
183
+ NUMERIC_REGEXP = /#{INT_REGEXP}(#{FLOAT_DECIMAL_REGEXP}#{FLOAT_EXP_REGEXP}|#{FLOAT_DECIMAL_REGEXP}|#{FLOAT_EXP_REGEXP})?/
184
+
185
+ KEYWORDS = [
186
+ "on",
187
+ "fragment",
188
+ "true",
189
+ "false",
190
+ "null",
191
+ "query",
192
+ "mutation",
193
+ "subscription",
194
+ "schema",
195
+ "scalar",
196
+ "type",
197
+ "extend",
198
+ "implements",
199
+ "interface",
200
+ "union",
201
+ "enum",
202
+ "input",
203
+ "directive",
204
+ "repeatable"
205
+ ].freeze
206
+
207
+ KEYWORD_REGEXP = /#{Regexp.union(KEYWORDS.sort)}\b/
208
+ KEYWORD_BY_TWO_BYTES = [
209
+ :INTERFACE,
210
+ :MUTATION,
211
+ :EXTEND,
212
+ :FALSE,
213
+ :ENUM,
214
+ :TRUE,
215
+ :NULL,
216
+ nil,
217
+ nil,
218
+ nil,
219
+ nil,
220
+ nil,
221
+ nil,
222
+ nil,
223
+ :QUERY,
224
+ nil,
225
+ nil,
226
+ :REPEATABLE,
227
+ :IMPLEMENTS,
228
+ :INPUT,
229
+ :TYPE,
230
+ :SCHEMA,
231
+ nil,
232
+ nil,
233
+ nil,
234
+ :DIRECTIVE,
235
+ :UNION,
236
+ nil,
237
+ nil,
238
+ :SCALAR,
239
+ nil,
240
+ :FRAGMENT
241
+ ]
242
+
243
+ # This produces a unique integer for bytes 2 and 3 of each keyword string
244
+ # See https://tenderlovemaking.com/2023/09/02/fast-tokenizers-with-stringscanner.html
245
+ def _hash key
246
+ (key * 18592990) >> 27 & 0x1f
247
+ end
248
+
249
+ module Punctuation
250
+ LCURLY = '{'
251
+ RCURLY = '}'
252
+ LPAREN = '('
253
+ RPAREN = ')'
254
+ LBRACKET = '['
255
+ RBRACKET = ']'
256
+ COLON = ':'
257
+ VAR_SIGN = '$'
258
+ DIR_SIGN = '@'
259
+ EQUALS = '='
260
+ BANG = '!'
261
+ PIPE = '|'
262
+ AMP = '&'
263
+ end
264
+
265
+ # A sparse array mapping the bytes for each punctuation
266
+ # to a symbol name for that punctuation
267
+ PUNCTUATION_NAME_FOR_BYTE = Punctuation.constants.each_with_object([]) { |name, arr|
268
+ punct = Punctuation.const_get(name)
269
+ arr[punct.ord] = name
270
+ }
271
+
272
+ QUOTE = '"'
273
+ UNICODE_DIGIT = /[0-9A-Za-z]/
274
+ FOUR_DIGIT_UNICODE = /#{UNICODE_DIGIT}{4}/
275
+ N_DIGIT_UNICODE = %r{#{Punctuation::LCURLY}#{UNICODE_DIGIT}{4,}#{Punctuation::RCURLY}}x
276
+ UNICODE_ESCAPE = %r{\\u(?:#{FOUR_DIGIT_UNICODE}|#{N_DIGIT_UNICODE})}
277
+ STRING_ESCAPE = %r{[\\][\\/bfnrt]}
278
+ BLOCK_QUOTE = '"""'
279
+ ESCAPED_QUOTE = /\\"/;
280
+ STRING_CHAR = /#{ESCAPED_QUOTE}|[^"\\\n\r]|#{UNICODE_ESCAPE}|#{STRING_ESCAPE}/
281
+ QUOTED_STRING_REGEXP = %r{#{QUOTE} (?:#{STRING_CHAR})* #{QUOTE}}x
282
+ BLOCK_STRING_REGEXP = %r{
283
+ #{BLOCK_QUOTE}
284
+ (?: [^"\\] | # Any characters that aren't a quote or slash
285
+ (?<!") ["]{1,2} (?!") | # Any quotes that don't have quotes next to them
286
+ \\"{0,3}(?!") | # A slash followed by <= 3 quotes that aren't followed by a quote
287
+ \\ | # A slash
288
+ "{1,2}(?!") # 1 or 2 " followed by something that isn't a quote
289
+ )*
290
+ (?:"")?
291
+ #{BLOCK_QUOTE}
292
+ }xm
293
+
294
+ # Use this array to check, for a given byte that will start a token,
295
+ # what kind of token might it start?
296
+ FIRST_BYTES = Array.new(255)
297
+
298
+ module ByteFor
299
+ NUMBER = 0 # int or float
300
+ NAME = 1 # identifier or keyword
301
+ STRING = 2
302
+ ELLIPSIS = 3
303
+ IDENTIFIER = 4 # identifier, *not* a keyword
304
+ PUNCTUATION = 5
305
+ end
306
+
307
+ (0..9).each { |i| FIRST_BYTES[i.to_s.ord] = ByteFor::NUMBER }
308
+ FIRST_BYTES["-".ord] = ByteFor::NUMBER
309
+ # Some of these may be overwritten below, if keywords start with the same character
310
+ ("A".."Z").each { |char| FIRST_BYTES[char.ord] = ByteFor::IDENTIFIER }
311
+ ("a".."z").each { |char| FIRST_BYTES[char.ord] = ByteFor::IDENTIFIER }
312
+ FIRST_BYTES['_'.ord] = ByteFor::IDENTIFIER
313
+ FIRST_BYTES['.'.ord] = ByteFor::ELLIPSIS
314
+ FIRST_BYTES['"'.ord] = ByteFor::STRING
315
+ KEYWORDS.each { |kw| FIRST_BYTES[kw.getbyte(0)] = ByteFor::NAME }
316
+ Punctuation.constants.each do |punct_name|
317
+ punct = Punctuation.const_get(punct_name)
318
+ FIRST_BYTES[punct.ord] = ByteFor::PUNCTUATION
319
+ end
320
+
321
+
322
+ # Replace any escaped unicode or whitespace with the _actual_ characters
323
+ # To avoid allocating more strings, this modifies the string passed into it
324
+ def self.replace_escaped_characters_in_place(raw_string)
325
+ raw_string.gsub!(ESCAPED) do |matched_str|
326
+ if (point_str_1 = $1 || $2)
327
+ codepoint_1 = point_str_1.to_i(16)
328
+ if (codepoint_2 = $3)
329
+ codepoint_2 = codepoint_2.to_i(16)
330
+ if (codepoint_1 >= 0xD800 && codepoint_1 <= 0xDBFF) && # leading surrogate
331
+ (codepoint_2 >= 0xDC00 && codepoint_2 <= 0xDFFF) # trailing surrogate
332
+ # A surrogate pair
333
+ combined = ((codepoint_1 - 0xD800) * 0x400) + (codepoint_2 - 0xDC00) + 0x10000
334
+ [combined].pack('U'.freeze)
335
+ else
336
+ # Two separate code points
337
+ [codepoint_1].pack('U'.freeze) + [codepoint_2].pack('U'.freeze)
338
+ end
339
+ else
340
+ [codepoint_1].pack('U'.freeze)
341
+ end
342
+ else
343
+ ESCAPES_REPLACE[matched_str]
344
+ end
345
+ end
346
+ nil
347
+ end
348
+
349
+ # This is not used during parsing because the parser
350
+ # doesn't actually need tokens.
351
+ def self.tokenize(string)
352
+ lexer = GraphQL::Language::Lexer.new(string)
353
+ tokens = []
354
+ while (token_name = lexer.advance)
355
+ new_token = [
356
+ token_name,
357
+ lexer.line_number,
358
+ lexer.column_number,
359
+ lexer.debug_token_value(token_name),
360
+ ]
361
+ tokens << new_token
362
+ end
363
+ tokens
364
+ end
365
+ end
366
+ end
1470
367
  end