kinetic_sdk 5.0.18 → 5.0.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (667) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +15 -1
  3. data/README.md +1 -1
  4. data/gems/{mime-types-3.1/Code-of-Conduct.rdoc → mime-types-3.4.1/Code-of-Conduct.md} +29 -30
  5. data/gems/mime-types-3.4.1/Contributing.md +132 -0
  6. data/gems/mime-types-3.4.1/History.md +269 -0
  7. data/gems/{mime-types-3.1/Licence.rdoc → mime-types-3.4.1/Licence.md} +3 -3
  8. data/gems/{mime-types-3.1 → mime-types-3.4.1}/Manifest.txt +4 -4
  9. data/gems/{mime-types-3.1 → mime-types-3.4.1}/README.rdoc +6 -14
  10. data/gems/mime-types-3.4.1/Rakefile +270 -0
  11. data/gems/{mime-types-3.1 → mime-types-3.4.1}/lib/mime/type/columnar.rb +6 -4
  12. data/gems/{mime-types-3.1 → mime-types-3.4.1}/lib/mime/type.rb +162 -101
  13. data/gems/{mime-types-3.1 → mime-types-3.4.1}/lib/mime/types/_columnar.rb +22 -20
  14. data/gems/{mime-types-3.1 → mime-types-3.4.1}/lib/mime/types/cache.rb +13 -11
  15. data/gems/mime-types-3.4.1/lib/mime/types/columnar.rb +3 -0
  16. data/gems/mime-types-3.4.1/lib/mime/types/container.rb +96 -0
  17. data/gems/{mime-types-3.1 → mime-types-3.4.1}/lib/mime/types/deprecations.rb +17 -13
  18. data/gems/{mime-types-3.1 → mime-types-3.4.1}/lib/mime/types/full.rb +4 -2
  19. data/gems/{mime-types-3.1 → mime-types-3.4.1}/lib/mime/types/loader.rb +29 -18
  20. data/gems/{mime-types-3.1 → mime-types-3.4.1}/lib/mime/types/logger.rb +5 -5
  21. data/gems/{mime-types-3.1 → mime-types-3.4.1}/lib/mime/types/registry.rb +14 -5
  22. data/gems/{mime-types-3.1 → mime-types-3.4.1}/lib/mime/types.rb +26 -21
  23. data/gems/mime-types-3.4.1/lib/mime-types.rb +3 -0
  24. data/gems/{mime-types-3.1 → mime-types-3.4.1}/test/bad-fixtures/malformed +0 -0
  25. data/gems/{mime-types-3.1 → mime-types-3.4.1}/test/fixture/json.json +0 -0
  26. data/gems/{mime-types-3.1 → mime-types-3.4.1}/test/fixture/old-data +0 -0
  27. data/gems/{mime-types-3.1 → mime-types-3.4.1}/test/fixture/yaml.yaml +0 -0
  28. data/gems/mime-types-3.4.1/test/minitest_helper.rb +11 -0
  29. data/gems/mime-types-3.4.1/test/test_mime_type.rb +621 -0
  30. data/gems/mime-types-3.4.1/test/test_mime_types.rb +169 -0
  31. data/gems/mime-types-3.4.1/test/test_mime_types_cache.rb +118 -0
  32. data/gems/mime-types-3.4.1/test/test_mime_types_class.rb +159 -0
  33. data/gems/mime-types-3.4.1/test/test_mime_types_lazy.rb +49 -0
  34. data/gems/mime-types-3.4.1/test/test_mime_types_loader.rb +32 -0
  35. data/gems/{mime-types-data-3.2016.0521 → mime-types-data-3.2022.0105}/Code-of-Conduct.md +22 -22
  36. data/gems/mime-types-data-3.2022.0105/Contributing.md +241 -0
  37. data/gems/mime-types-data-3.2022.0105/History.md +502 -0
  38. data/gems/{websocket-driver-0.6.5-java/LICENSE.md → mime-types-data-3.2022.0105/Licence.md} +7 -5
  39. data/gems/{mime-types-data-3.2016.0521 → mime-types-data-3.2022.0105}/Manifest.txt +16 -0
  40. data/gems/mime-types-data-3.2022.0105/README.md +73 -0
  41. data/gems/mime-types-data-3.2022.0105/Rakefile +155 -0
  42. data/gems/mime-types-data-3.2022.0105/data/content_type_mime.db +878 -0
  43. data/gems/mime-types-data-3.2022.0105/data/ext_mime.db +1198 -0
  44. data/gems/mime-types-data-3.2022.0105/data/mime-types.json +1 -0
  45. data/gems/{mime-types-data-3.2016.0521 → mime-types-data-3.2022.0105}/data/mime.content_type.column +432 -13
  46. data/gems/{mime-types-data-3.2016.0521 → mime-types-data-3.2022.0105}/data/mime.docs.column +419 -0
  47. data/gems/{mime-types-data-3.2016.0521 → mime-types-data-3.2022.0105}/data/mime.encoding.column +419 -0
  48. data/gems/mime-types-data-3.2022.0105/data/mime.flags.column +2383 -0
  49. data/gems/{mime-types-data-3.2016.0521 → mime-types-data-3.2022.0105}/data/mime.friendly.column +419 -0
  50. data/gems/{mime-types-data-3.2016.0521 → mime-types-data-3.2022.0105}/data/mime.pext.column +419 -0
  51. data/gems/{mime-types-data-3.2016.0521 → mime-types-data-3.2022.0105}/data/mime.use_instead.column +420 -1
  52. data/gems/{mime-types-data-3.2016.0521 → mime-types-data-3.2022.0105}/data/mime.xrefs.column +567 -148
  53. data/gems/{mime-types-data-3.2016.0521 → mime-types-data-3.2022.0105}/lib/mime/types/data.rb +2 -2
  54. data/gems/{mime-types-data-3.2016.0521 → mime-types-data-3.2022.0105}/lib/mime-types-data.rb +1 -1
  55. data/gems/mime-types-data-3.2022.0105/types/application.yaml +17299 -0
  56. data/gems/mime-types-data-3.2022.0105/types/audio.yaml +1716 -0
  57. data/gems/mime-types-data-3.2022.0105/types/chemical.yaml +71 -0
  58. data/gems/mime-types-data-3.2022.0105/types/conference.yaml +9 -0
  59. data/gems/mime-types-data-3.2022.0105/types/drawing.yaml +15 -0
  60. data/gems/mime-types-data-3.2022.0105/types/font.yaml +65 -0
  61. data/gems/mime-types-data-3.2022.0105/types/image.yaml +1252 -0
  62. data/gems/mime-types-data-3.2022.0105/types/message.yaml +205 -0
  63. data/gems/mime-types-data-3.2022.0105/types/model.yaml +390 -0
  64. data/gems/mime-types-data-3.2022.0105/types/multipart.yaml +179 -0
  65. data/gems/mime-types-data-3.2022.0105/types/provisional-standard-types.yaml +145 -0
  66. data/gems/mime-types-data-3.2022.0105/types/text.yaml +1166 -0
  67. data/gems/mime-types-data-3.2022.0105/types/video.yaml +1121 -0
  68. data/gems/mime-types-data-3.2022.0105/types/world.yaml +8 -0
  69. data/gems/rake-13.0.1/CONTRIBUTING.rdoc +43 -0
  70. data/gems/rake-13.0.1/Gemfile +10 -0
  71. data/gems/rake-13.0.1/History.rdoc +2368 -0
  72. data/gems/{parallel-1.12.1/MIT-LICENSE.txt → rake-13.0.1/MIT-LICENSE} +2 -1
  73. data/gems/rake-13.0.1/README.rdoc +155 -0
  74. data/gems/rake-13.0.1/Rakefile +41 -0
  75. data/gems/rake-13.0.1/bin/bundle +105 -0
  76. data/gems/rake-13.0.1/bin/console +7 -0
  77. data/gems/rake-13.0.1/bin/rake +29 -0
  78. data/gems/rake-13.0.1/bin/rdoc +29 -0
  79. data/gems/rake-13.0.1/bin/rubocop +29 -0
  80. data/gems/rake-13.0.1/bin/setup +6 -0
  81. data/gems/rake-13.0.1/doc/command_line_usage.rdoc +158 -0
  82. data/gems/rake-13.0.1/doc/example/Rakefile1 +38 -0
  83. data/gems/rake-13.0.1/doc/example/Rakefile2 +35 -0
  84. data/gems/rake-13.0.1/doc/example/a.c +6 -0
  85. data/gems/rake-13.0.1/doc/example/b.c +6 -0
  86. data/gems/rake-13.0.1/doc/example/main.c +11 -0
  87. data/gems/rake-13.0.1/doc/glossary.rdoc +42 -0
  88. data/gems/rake-13.0.1/doc/jamis.rb +592 -0
  89. data/gems/rake-13.0.1/doc/proto_rake.rdoc +127 -0
  90. data/gems/rake-13.0.1/doc/rake.1 +156 -0
  91. data/gems/rake-13.0.1/doc/rakefile.rdoc +622 -0
  92. data/gems/rake-13.0.1/doc/rational.rdoc +151 -0
  93. data/gems/rake-13.0.1/exe/rake +27 -0
  94. data/gems/rake-13.0.1/lib/rake/application.rb +824 -0
  95. data/gems/rake-13.0.1/lib/rake/backtrace.rb +24 -0
  96. data/gems/rake-13.0.1/lib/rake/clean.rb +78 -0
  97. data/gems/rake-13.0.1/lib/rake/cloneable.rb +17 -0
  98. data/gems/rake-13.0.1/lib/rake/cpu_counter.rb +107 -0
  99. data/gems/rake-13.0.1/lib/rake/default_loader.rb +15 -0
  100. data/gems/rake-13.0.1/lib/rake/dsl_definition.rb +195 -0
  101. data/gems/rake-13.0.1/lib/rake/early_time.rb +22 -0
  102. data/gems/rake-13.0.1/lib/rake/ext/core.rb +26 -0
  103. data/gems/rake-13.0.1/lib/rake/ext/string.rb +176 -0
  104. data/gems/rake-13.0.1/lib/rake/file_creation_task.rb +25 -0
  105. data/gems/rake-13.0.1/lib/rake/file_list.rb +435 -0
  106. data/gems/rake-13.0.1/lib/rake/file_task.rb +54 -0
  107. data/gems/rake-13.0.1/lib/rake/file_utils.rb +134 -0
  108. data/gems/rake-13.0.1/lib/rake/file_utils_ext.rb +134 -0
  109. data/gems/rake-13.0.1/lib/rake/invocation_chain.rb +57 -0
  110. data/gems/rake-13.0.1/lib/rake/invocation_exception_mixin.rb +17 -0
  111. data/gems/rake-13.0.1/lib/rake/late_time.rb +18 -0
  112. data/gems/rake-13.0.1/lib/rake/linked_list.rb +112 -0
  113. data/gems/rake-13.0.1/lib/rake/loaders/makefile.rb +54 -0
  114. data/gems/rake-13.0.1/lib/rake/multi_task.rb +14 -0
  115. data/gems/rake-13.0.1/lib/rake/name_space.rb +38 -0
  116. data/gems/rake-13.0.1/lib/rake/packagetask.rb +222 -0
  117. data/gems/rake-13.0.1/lib/rake/phony.rb +16 -0
  118. data/gems/rake-13.0.1/lib/rake/private_reader.rb +21 -0
  119. data/gems/rake-13.0.1/lib/rake/promise.rb +100 -0
  120. data/gems/rake-13.0.1/lib/rake/pseudo_status.rb +30 -0
  121. data/gems/rake-13.0.1/lib/rake/rake_module.rb +67 -0
  122. data/gems/rake-13.0.1/lib/rake/rake_test_loader.rb +27 -0
  123. data/gems/rake-13.0.1/lib/rake/rule_recursion_overflow_error.rb +20 -0
  124. data/gems/rake-13.0.1/lib/rake/scope.rb +43 -0
  125. data/gems/rake-13.0.1/lib/rake/task.rb +434 -0
  126. data/gems/rake-13.0.1/lib/rake/task_argument_error.rb +8 -0
  127. data/gems/rake-13.0.1/lib/rake/task_arguments.rb +109 -0
  128. data/gems/rake-13.0.1/lib/rake/task_manager.rb +331 -0
  129. data/gems/rake-13.0.1/lib/rake/tasklib.rb +12 -0
  130. data/gems/rake-13.0.1/lib/rake/testtask.rb +224 -0
  131. data/gems/rake-13.0.1/lib/rake/thread_history_display.rb +49 -0
  132. data/gems/rake-13.0.1/lib/rake/thread_pool.rb +163 -0
  133. data/gems/rake-13.0.1/lib/rake/trace_output.rb +23 -0
  134. data/gems/rake-13.0.1/lib/rake/version.rb +10 -0
  135. data/gems/rake-13.0.1/lib/rake/win32.rb +51 -0
  136. data/gems/rake-13.0.1/lib/rake.rb +71 -0
  137. data/gems/rake-13.0.1/rake.gemspec +43 -0
  138. data/gems/yard-0.9.25/CHANGELOG.md +804 -0
  139. data/gems/yard-0.9.25/CODE_OF_CONDUCT.md +15 -0
  140. data/gems/yard-0.9.25/CONTRIBUTING.md +140 -0
  141. data/gems/yard-0.9.25/Dockerfile.samus +28 -0
  142. data/gems/yard-0.9.25/Gemfile +32 -0
  143. data/gems/yard-0.9.25/LEGAL +66 -0
  144. data/gems/yard-0.9.25/LICENSE +22 -0
  145. data/gems/yard-0.9.25/README.md +325 -0
  146. data/gems/yard-0.9.25/Rakefile +39 -0
  147. data/gems/yard-0.9.25/SECURITY.md +26 -0
  148. data/gems/yard-0.9.25/benchmarks/builtins_vs_eval.rb +24 -0
  149. data/gems/yard-0.9.25/benchmarks/concat_vs_join.rb +13 -0
  150. data/gems/yard-0.9.25/benchmarks/erb_vs_erubis.rb +54 -0
  151. data/gems/yard-0.9.25/benchmarks/format_args.rb +47 -0
  152. data/gems/yard-0.9.25/benchmarks/generation.rb +38 -0
  153. data/gems/yard-0.9.25/benchmarks/marshal_vs_dbm.rb +64 -0
  154. data/gems/yard-0.9.25/benchmarks/parsing.rb +46 -0
  155. data/gems/yard-0.9.25/benchmarks/pathname_vs_string.rb +51 -0
  156. data/gems/yard-0.9.25/benchmarks/rdoc_vs_yardoc.rb +11 -0
  157. data/gems/yard-0.9.25/benchmarks/registry_store_types.rb +49 -0
  158. data/gems/yard-0.9.25/benchmarks/ri_vs_yri.rb +19 -0
  159. data/gems/yard-0.9.25/benchmarks/ripper_parser.rb +13 -0
  160. data/gems/yard-0.9.25/benchmarks/splat_vs_flatten.rb +13 -0
  161. data/gems/yard-0.9.25/benchmarks/template_erb.rb +23 -0
  162. data/gems/yard-0.9.25/benchmarks/template_format.rb +7 -0
  163. data/gems/yard-0.9.25/benchmarks/template_profile.rb +18 -0
  164. data/gems/yard-0.9.25/benchmarks/yri_cache.rb +20 -0
  165. data/gems/yard-0.9.25/bin/yard +13 -0
  166. data/gems/yard-0.9.25/bin/yardoc +13 -0
  167. data/gems/yard-0.9.25/bin/yri +13 -0
  168. data/gems/yard-0.9.25/docs/CodeObjects.md +115 -0
  169. data/gems/yard-0.9.25/docs/GettingStarted.md +679 -0
  170. data/gems/yard-0.9.25/docs/Handlers.md +152 -0
  171. data/gems/yard-0.9.25/docs/Overview.md +61 -0
  172. data/gems/yard-0.9.25/docs/Parser.md +191 -0
  173. data/gems/yard-0.9.25/docs/Tags.md +283 -0
  174. data/gems/yard-0.9.25/docs/TagsArch.md +123 -0
  175. data/gems/yard-0.9.25/docs/Templates.md +496 -0
  176. data/gems/yard-0.9.25/docs/WhatsNew.md +1245 -0
  177. data/gems/yard-0.9.25/docs/images/code-objects-class-diagram.png +0 -0
  178. data/gems/yard-0.9.25/docs/images/handlers-class-diagram.png +0 -0
  179. data/gems/yard-0.9.25/docs/images/overview-class-diagram.png +0 -0
  180. data/gems/yard-0.9.25/docs/images/parser-class-diagram.png +0 -0
  181. data/gems/yard-0.9.25/docs/images/tags-class-diagram.png +0 -0
  182. data/gems/yard-0.9.25/docs/templates/default/fulldoc/html/full_list_tag.erb +9 -0
  183. data/gems/yard-0.9.25/docs/templates/default/fulldoc/html/setup.rb +6 -0
  184. data/gems/yard-0.9.25/docs/templates/default/layout/html/setup.rb +9 -0
  185. data/gems/yard-0.9.25/docs/templates/default/layout/html/tag_list.erb +11 -0
  186. data/gems/yard-0.9.25/docs/templates/default/yard_tags/html/list.erb +18 -0
  187. data/gems/yard-0.9.25/docs/templates/default/yard_tags/html/setup.rb +26 -0
  188. data/gems/yard-0.9.25/docs/templates/plugin.rb +70 -0
  189. data/gems/yard-0.9.25/lib/rubygems_plugin.rb +9 -0
  190. data/gems/yard-0.9.25/lib/yard/autoload.rb +308 -0
  191. data/gems/yard-0.9.25/lib/yard/cli/command.rb +85 -0
  192. data/gems/yard-0.9.25/lib/yard/cli/command_parser.rb +93 -0
  193. data/gems/yard-0.9.25/lib/yard/cli/config.rb +198 -0
  194. data/gems/yard-0.9.25/lib/yard/cli/diff.rb +273 -0
  195. data/gems/yard-0.9.25/lib/yard/cli/display.rb +69 -0
  196. data/gems/yard-0.9.25/lib/yard/cli/gems.rb +84 -0
  197. data/gems/yard-0.9.25/lib/yard/cli/graph.rb +125 -0
  198. data/gems/yard-0.9.25/lib/yard/cli/help.rb +20 -0
  199. data/gems/yard-0.9.25/lib/yard/cli/i18n.rb +70 -0
  200. data/gems/yard-0.9.25/lib/yard/cli/list.rb +23 -0
  201. data/gems/yard-0.9.25/lib/yard/cli/markup_types.rb +32 -0
  202. data/gems/yard-0.9.25/lib/yard/cli/server.rb +266 -0
  203. data/gems/yard-0.9.25/lib/yard/cli/stats.rb +231 -0
  204. data/gems/yard-0.9.25/lib/yard/cli/yardoc.rb +789 -0
  205. data/gems/yard-0.9.25/lib/yard/cli/yardopts_command.rb +110 -0
  206. data/gems/yard-0.9.25/lib/yard/cli/yri.rb +215 -0
  207. data/gems/yard-0.9.25/lib/yard/code_objects/base.rb +622 -0
  208. data/gems/yard-0.9.25/lib/yard/code_objects/class_object.rb +146 -0
  209. data/gems/yard-0.9.25/lib/yard/code_objects/class_variable_object.rb +11 -0
  210. data/gems/yard-0.9.25/lib/yard/code_objects/constant_object.rb +16 -0
  211. data/gems/yard-0.9.25/lib/yard/code_objects/extended_method_object.rb +24 -0
  212. data/gems/yard-0.9.25/lib/yard/code_objects/extra_file_object.rb +134 -0
  213. data/gems/yard-0.9.25/lib/yard/code_objects/macro_object.rb +172 -0
  214. data/gems/yard-0.9.25/lib/yard/code_objects/method_object.rb +196 -0
  215. data/gems/yard-0.9.25/lib/yard/code_objects/module_object.rb +21 -0
  216. data/gems/yard-0.9.25/lib/yard/code_objects/namespace_mapper.rb +141 -0
  217. data/gems/yard-0.9.25/lib/yard/code_objects/namespace_object.rb +200 -0
  218. data/gems/yard-0.9.25/lib/yard/code_objects/proxy.rb +245 -0
  219. data/gems/yard-0.9.25/lib/yard/code_objects/root_object.rb +19 -0
  220. data/gems/yard-0.9.25/lib/yard/config.rb +270 -0
  221. data/gems/yard-0.9.25/lib/yard/core_ext/array.rb +16 -0
  222. data/gems/yard-0.9.25/lib/yard/core_ext/file.rb +69 -0
  223. data/gems/yard-0.9.25/lib/yard/core_ext/hash.rb +16 -0
  224. data/gems/yard-0.9.25/lib/yard/core_ext/insertion.rb +63 -0
  225. data/gems/yard-0.9.25/lib/yard/core_ext/module.rb +11 -0
  226. data/gems/yard-0.9.25/lib/yard/core_ext/string.rb +68 -0
  227. data/gems/yard-0.9.25/lib/yard/core_ext/symbol_hash.rb +75 -0
  228. data/gems/yard-0.9.25/lib/yard/docstring.rb +386 -0
  229. data/gems/yard-0.9.25/lib/yard/docstring_parser.rb +345 -0
  230. data/gems/yard-0.9.25/lib/yard/gem_index.rb +29 -0
  231. data/gems/yard-0.9.25/lib/yard/globals.rb +22 -0
  232. data/gems/yard-0.9.25/lib/yard/handlers/base.rb +595 -0
  233. data/gems/yard-0.9.25/lib/yard/handlers/c/alias_handler.rb +16 -0
  234. data/gems/yard-0.9.25/lib/yard/handlers/c/attribute_handler.rb +13 -0
  235. data/gems/yard-0.9.25/lib/yard/handlers/c/base.rb +164 -0
  236. data/gems/yard-0.9.25/lib/yard/handlers/c/class_handler.rb +27 -0
  237. data/gems/yard-0.9.25/lib/yard/handlers/c/constant_handler.rb +13 -0
  238. data/gems/yard-0.9.25/lib/yard/handlers/c/handler_methods.rb +212 -0
  239. data/gems/yard-0.9.25/lib/yard/handlers/c/init_handler.rb +20 -0
  240. data/gems/yard-0.9.25/lib/yard/handlers/c/method_handler.rb +45 -0
  241. data/gems/yard-0.9.25/lib/yard/handlers/c/mixin_handler.rb +21 -0
  242. data/gems/yard-0.9.25/lib/yard/handlers/c/module_handler.rb +17 -0
  243. data/gems/yard-0.9.25/lib/yard/handlers/c/override_comment_handler.rb +31 -0
  244. data/gems/yard-0.9.25/lib/yard/handlers/c/path_handler.rb +11 -0
  245. data/gems/yard-0.9.25/lib/yard/handlers/c/struct_handler.rb +13 -0
  246. data/gems/yard-0.9.25/lib/yard/handlers/c/symbol_handler.rb +8 -0
  247. data/gems/yard-0.9.25/lib/yard/handlers/common/method_handler.rb +19 -0
  248. data/gems/yard-0.9.25/lib/yard/handlers/processor.rb +200 -0
  249. data/gems/yard-0.9.25/lib/yard/handlers/ruby/alias_handler.rb +45 -0
  250. data/gems/yard-0.9.25/lib/yard/handlers/ruby/attribute_handler.rb +87 -0
  251. data/gems/yard-0.9.25/lib/yard/handlers/ruby/base.rb +165 -0
  252. data/gems/yard-0.9.25/lib/yard/handlers/ruby/class_condition_handler.rb +92 -0
  253. data/gems/yard-0.9.25/lib/yard/handlers/ruby/class_handler.rb +119 -0
  254. data/gems/yard-0.9.25/lib/yard/handlers/ruby/class_variable_handler.rb +17 -0
  255. data/gems/yard-0.9.25/lib/yard/handlers/ruby/comment_handler.rb +10 -0
  256. data/gems/yard-0.9.25/lib/yard/handlers/ruby/constant_handler.rb +55 -0
  257. data/gems/yard-0.9.25/lib/yard/handlers/ruby/decorator_handler_methods.rb +123 -0
  258. data/gems/yard-0.9.25/lib/yard/handlers/ruby/dsl_handler.rb +15 -0
  259. data/gems/yard-0.9.25/lib/yard/handlers/ruby/dsl_handler_methods.rb +96 -0
  260. data/gems/yard-0.9.25/lib/yard/handlers/ruby/exception_handler.rb +27 -0
  261. data/gems/yard-0.9.25/lib/yard/handlers/ruby/extend_handler.rb +22 -0
  262. data/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/alias_handler.rb +37 -0
  263. data/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/attribute_handler.rb +65 -0
  264. data/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/base.rb +245 -0
  265. data/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +83 -0
  266. data/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/class_handler.rb +113 -0
  267. data/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +15 -0
  268. data/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/comment_handler.rb +10 -0
  269. data/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/constant_handler.rb +29 -0
  270. data/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/dsl_handler.rb +17 -0
  271. data/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/exception_handler.rb +13 -0
  272. data/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/extend_handler.rb +21 -0
  273. data/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/method_handler.rb +90 -0
  274. data/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/mixin_handler.rb +39 -0
  275. data/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/module_function_handler.rb +19 -0
  276. data/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/module_handler.rb +12 -0
  277. data/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/private_class_method_handler.rb +22 -0
  278. data/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/private_constant_handler.rb +22 -0
  279. data/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/visibility_handler.rb +17 -0
  280. data/gems/yard-0.9.25/lib/yard/handlers/ruby/legacy/yield_handler.rb +29 -0
  281. data/gems/yard-0.9.25/lib/yard/handlers/ruby/method_condition_handler.rb +9 -0
  282. data/gems/yard-0.9.25/lib/yard/handlers/ruby/method_handler.rb +104 -0
  283. data/gems/yard-0.9.25/lib/yard/handlers/ruby/mixin_handler.rb +49 -0
  284. data/gems/yard-0.9.25/lib/yard/handlers/ruby/module_function_handler.rb +27 -0
  285. data/gems/yard-0.9.25/lib/yard/handlers/ruby/module_handler.rb +12 -0
  286. data/gems/yard-0.9.25/lib/yard/handlers/ruby/private_class_method_handler.rb +14 -0
  287. data/gems/yard-0.9.25/lib/yard/handlers/ruby/private_constant_handler.rb +43 -0
  288. data/gems/yard-0.9.25/lib/yard/handlers/ruby/public_class_method_handler.rb +14 -0
  289. data/gems/yard-0.9.25/lib/yard/handlers/ruby/struct_handler_methods.rb +143 -0
  290. data/gems/yard-0.9.25/lib/yard/handlers/ruby/visibility_handler.rb +22 -0
  291. data/gems/yard-0.9.25/lib/yard/handlers/ruby/yield_handler.rb +31 -0
  292. data/gems/yard-0.9.25/lib/yard/i18n/locale.rb +67 -0
  293. data/gems/yard-0.9.25/lib/yard/i18n/message.rb +57 -0
  294. data/gems/yard-0.9.25/lib/yard/i18n/messages.rb +56 -0
  295. data/gems/yard-0.9.25/lib/yard/i18n/po_parser.rb +61 -0
  296. data/gems/yard-0.9.25/lib/yard/i18n/pot_generator.rb +290 -0
  297. data/gems/yard-0.9.25/lib/yard/i18n/text.rb +173 -0
  298. data/gems/yard-0.9.25/lib/yard/logging.rb +205 -0
  299. data/gems/yard-0.9.25/lib/yard/options.rb +217 -0
  300. data/gems/yard-0.9.25/lib/yard/parser/base.rb +57 -0
  301. data/gems/yard-0.9.25/lib/yard/parser/c/c_parser.rb +235 -0
  302. data/gems/yard-0.9.25/lib/yard/parser/c/comment_parser.rb +134 -0
  303. data/gems/yard-0.9.25/lib/yard/parser/c/statement.rb +66 -0
  304. data/gems/yard-0.9.25/lib/yard/parser/ruby/ast_node.rb +551 -0
  305. data/gems/yard-0.9.25/lib/yard/parser/ruby/legacy/irb/slex.rb +276 -0
  306. data/gems/yard-0.9.25/lib/yard/parser/ruby/legacy/ruby_lex.rb +1345 -0
  307. data/gems/yard-0.9.25/lib/yard/parser/ruby/legacy/ruby_parser.rb +32 -0
  308. data/gems/yard-0.9.25/lib/yard/parser/ruby/legacy/statement.rb +68 -0
  309. data/gems/yard-0.9.25/lib/yard/parser/ruby/legacy/statement_list.rb +394 -0
  310. data/gems/yard-0.9.25/lib/yard/parser/ruby/legacy/token_list.rb +74 -0
  311. data/gems/yard-0.9.25/lib/yard/parser/ruby/ruby_parser.rb +701 -0
  312. data/gems/yard-0.9.25/lib/yard/parser/ruby/token_resolver.rb +158 -0
  313. data/gems/yard-0.9.25/lib/yard/parser/source_parser.rb +526 -0
  314. data/gems/yard-0.9.25/lib/yard/rake/yardoc_task.rb +81 -0
  315. data/gems/yard-0.9.25/lib/yard/registry.rb +439 -0
  316. data/gems/yard-0.9.25/lib/yard/registry_resolver.rb +217 -0
  317. data/gems/yard-0.9.25/lib/yard/registry_store.rb +342 -0
  318. data/gems/yard-0.9.25/lib/yard/rubygems/backports/LICENSE.txt +57 -0
  319. data/gems/yard-0.9.25/lib/yard/rubygems/backports/MIT.txt +20 -0
  320. data/gems/yard-0.9.25/lib/yard/rubygems/backports/gem.rb +10 -0
  321. data/gems/yard-0.9.25/lib/yard/rubygems/backports/source_index.rb +365 -0
  322. data/gems/yard-0.9.25/lib/yard/rubygems/backports.rb +10 -0
  323. data/gems/yard-0.9.25/lib/yard/rubygems/doc_manager.rb +90 -0
  324. data/gems/yard-0.9.25/lib/yard/rubygems/hook.rb +197 -0
  325. data/gems/yard-0.9.25/lib/yard/rubygems/specification.rb +50 -0
  326. data/gems/yard-0.9.25/lib/yard/serializers/base.rb +83 -0
  327. data/gems/yard-0.9.25/lib/yard/serializers/file_system_serializer.rb +123 -0
  328. data/gems/yard-0.9.25/lib/yard/serializers/process_serializer.rb +24 -0
  329. data/gems/yard-0.9.25/lib/yard/serializers/stdout_serializer.rb +34 -0
  330. data/gems/yard-0.9.25/lib/yard/serializers/yardoc_serializer.rb +152 -0
  331. data/gems/yard-0.9.25/lib/yard/server/adapter.rb +100 -0
  332. data/gems/yard-0.9.25/lib/yard/server/commands/base.rb +209 -0
  333. data/gems/yard-0.9.25/lib/yard/server/commands/display_file_command.rb +29 -0
  334. data/gems/yard-0.9.25/lib/yard/server/commands/display_object_command.rb +65 -0
  335. data/gems/yard-0.9.25/lib/yard/server/commands/frames_command.rb +16 -0
  336. data/gems/yard-0.9.25/lib/yard/server/commands/library_command.rb +187 -0
  337. data/gems/yard-0.9.25/lib/yard/server/commands/library_index_command.rb +28 -0
  338. data/gems/yard-0.9.25/lib/yard/server/commands/list_command.rb +25 -0
  339. data/gems/yard-0.9.25/lib/yard/server/commands/root_request_command.rb +15 -0
  340. data/gems/yard-0.9.25/lib/yard/server/commands/search_command.rb +79 -0
  341. data/gems/yard-0.9.25/lib/yard/server/commands/static_file_command.rb +23 -0
  342. data/gems/yard-0.9.25/lib/yard/server/commands/static_file_helpers.rb +61 -0
  343. data/gems/yard-0.9.25/lib/yard/server/doc_server_helper.rb +91 -0
  344. data/gems/yard-0.9.25/lib/yard/server/doc_server_serializer.rb +39 -0
  345. data/gems/yard-0.9.25/lib/yard/server/library_version.rb +277 -0
  346. data/gems/yard-0.9.25/lib/yard/server/rack_adapter.rb +89 -0
  347. data/gems/yard-0.9.25/lib/yard/server/router.rb +187 -0
  348. data/gems/yard-0.9.25/lib/yard/server/static_caching.rb +46 -0
  349. data/gems/yard-0.9.25/lib/yard/server/templates/default/fulldoc/html/css/custom.css +127 -0
  350. data/gems/yard-0.9.25/lib/yard/server/templates/default/fulldoc/html/images/processing.gif +0 -0
  351. data/gems/yard-0.9.25/lib/yard/server/templates/default/fulldoc/html/js/autocomplete.js +12 -0
  352. data/gems/yard-0.9.25/lib/yard/server/templates/default/layout/html/breadcrumb.erb +37 -0
  353. data/gems/yard-0.9.25/lib/yard/server/templates/default/layout/html/script_setup.erb +7 -0
  354. data/gems/yard-0.9.25/lib/yard/server/templates/default/layout/html/setup.rb +8 -0
  355. data/gems/yard-0.9.25/lib/yard/server/templates/default/method_details/html/permalink.erb +4 -0
  356. data/gems/yard-0.9.25/lib/yard/server/templates/default/method_details/html/setup.rb +5 -0
  357. data/gems/yard-0.9.25/lib/yard/server/templates/doc_server/library_list/html/headers.erb +8 -0
  358. data/gems/yard-0.9.25/lib/yard/server/templates/doc_server/library_list/html/library_list.erb +14 -0
  359. data/gems/yard-0.9.25/lib/yard/server/templates/doc_server/library_list/html/listing.erb +13 -0
  360. data/gems/yard-0.9.25/lib/yard/server/templates/doc_server/library_list/html/setup.rb +6 -0
  361. data/gems/yard-0.9.25/lib/yard/server/templates/doc_server/library_list/html/title.erb +2 -0
  362. data/gems/yard-0.9.25/lib/yard/server/templates/doc_server/processing/html/processing.erb +52 -0
  363. data/gems/yard-0.9.25/lib/yard/server/templates/doc_server/processing/html/setup.rb +4 -0
  364. data/gems/yard-0.9.25/lib/yard/server/templates/doc_server/search/html/search.erb +18 -0
  365. data/gems/yard-0.9.25/lib/yard/server/templates/doc_server/search/html/setup.rb +9 -0
  366. data/gems/yard-0.9.25/lib/yard/server/webrick_adapter.rb +45 -0
  367. data/gems/yard-0.9.25/lib/yard/server.rb +13 -0
  368. data/gems/yard-0.9.25/lib/yard/tags/default_factory.rb +191 -0
  369. data/gems/yard-0.9.25/lib/yard/tags/default_tag.rb +13 -0
  370. data/gems/yard-0.9.25/lib/yard/tags/directives.rb +616 -0
  371. data/gems/yard-0.9.25/lib/yard/tags/library.rb +633 -0
  372. data/gems/yard-0.9.25/lib/yard/tags/option_tag.rb +13 -0
  373. data/gems/yard-0.9.25/lib/yard/tags/overload_tag.rb +71 -0
  374. data/gems/yard-0.9.25/lib/yard/tags/ref_tag.rb +8 -0
  375. data/gems/yard-0.9.25/lib/yard/tags/ref_tag_list.rb +28 -0
  376. data/gems/yard-0.9.25/lib/yard/tags/tag.rb +71 -0
  377. data/gems/yard-0.9.25/lib/yard/tags/tag_format_error.rb +7 -0
  378. data/gems/yard-0.9.25/lib/yard/tags/types_explainer.rb +162 -0
  379. data/gems/yard-0.9.25/lib/yard/templates/engine.rb +186 -0
  380. data/gems/yard-0.9.25/lib/yard/templates/erb_cache.rb +23 -0
  381. data/gems/yard-0.9.25/lib/yard/templates/helpers/base_helper.rb +215 -0
  382. data/gems/yard-0.9.25/lib/yard/templates/helpers/filter_helper.rb +27 -0
  383. data/gems/yard-0.9.25/lib/yard/templates/helpers/html_helper.rb +670 -0
  384. data/gems/yard-0.9.25/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +78 -0
  385. data/gems/yard-0.9.25/lib/yard/templates/helpers/markup/rdoc_markdown.rb +23 -0
  386. data/gems/yard-0.9.25/lib/yard/templates/helpers/markup/rdoc_markup.rb +110 -0
  387. data/gems/yard-0.9.25/lib/yard/templates/helpers/markup_helper.rb +172 -0
  388. data/gems/yard-0.9.25/lib/yard/templates/helpers/method_helper.rb +75 -0
  389. data/gems/yard-0.9.25/lib/yard/templates/helpers/module_helper.rb +21 -0
  390. data/gems/yard-0.9.25/lib/yard/templates/helpers/text_helper.rb +112 -0
  391. data/gems/yard-0.9.25/lib/yard/templates/helpers/uml_helper.rb +47 -0
  392. data/gems/yard-0.9.25/lib/yard/templates/section.rb +105 -0
  393. data/gems/yard-0.9.25/lib/yard/templates/template.rb +418 -0
  394. data/gems/yard-0.9.25/lib/yard/templates/template_options.rb +92 -0
  395. data/gems/yard-0.9.25/lib/yard/verifier.rb +151 -0
  396. data/gems/yard-0.9.25/lib/yard/version.rb +6 -0
  397. data/gems/yard-0.9.25/lib/yard.rb +69 -0
  398. data/gems/yard-0.9.25/po/ja.po +31108 -0
  399. data/gems/yard-0.9.25/samus.json +80 -0
  400. data/gems/yard-0.9.25/tasks/update_error_map.rake +53 -0
  401. data/gems/yard-0.9.25/templates/default/class/dot/setup.rb +7 -0
  402. data/gems/yard-0.9.25/templates/default/class/dot/superklass.erb +3 -0
  403. data/gems/yard-0.9.25/templates/default/class/html/constructor_details.erb +8 -0
  404. data/gems/yard-0.9.25/templates/default/class/html/setup.rb +2 -0
  405. data/gems/yard-0.9.25/templates/default/class/html/subclasses.erb +4 -0
  406. data/gems/yard-0.9.25/templates/default/class/setup.rb +36 -0
  407. data/gems/yard-0.9.25/templates/default/class/text/setup.rb +12 -0
  408. data/gems/yard-0.9.25/templates/default/class/text/subclasses.erb +5 -0
  409. data/gems/yard-0.9.25/templates/default/constant/text/header.erb +11 -0
  410. data/gems/yard-0.9.25/templates/default/constant/text/setup.rb +4 -0
  411. data/gems/yard-0.9.25/templates/default/docstring/html/abstract.erb +4 -0
  412. data/gems/yard-0.9.25/templates/default/docstring/html/deprecated.erb +1 -0
  413. data/gems/yard-0.9.25/templates/default/docstring/html/index.erb +5 -0
  414. data/gems/yard-0.9.25/templates/default/docstring/html/note.erb +6 -0
  415. data/gems/yard-0.9.25/templates/default/docstring/html/private.erb +4 -0
  416. data/gems/yard-0.9.25/templates/default/docstring/html/returns_void.erb +1 -0
  417. data/gems/yard-0.9.25/templates/default/docstring/html/text.erb +1 -0
  418. data/gems/yard-0.9.25/templates/default/docstring/html/todo.erb +6 -0
  419. data/gems/yard-0.9.25/templates/default/docstring/setup.rb +52 -0
  420. data/gems/yard-0.9.25/templates/default/docstring/text/abstract.erb +2 -0
  421. data/gems/yard-0.9.25/templates/default/docstring/text/deprecated.erb +2 -0
  422. data/gems/yard-0.9.25/templates/default/docstring/text/index.erb +2 -0
  423. data/gems/yard-0.9.25/templates/default/docstring/text/note.erb +4 -0
  424. data/gems/yard-0.9.25/templates/default/docstring/text/private.erb +2 -0
  425. data/gems/yard-0.9.25/templates/default/docstring/text/returns_void.erb +1 -0
  426. data/gems/yard-0.9.25/templates/default/docstring/text/text.erb +1 -0
  427. data/gems/yard-0.9.25/templates/default/docstring/text/todo.erb +4 -0
  428. data/gems/yard-0.9.25/templates/default/fulldoc/html/css/common.css +1 -0
  429. data/gems/yard-0.9.25/templates/default/fulldoc/html/css/full_list.css +58 -0
  430. data/gems/yard-0.9.25/templates/default/fulldoc/html/css/style.css +496 -0
  431. data/gems/yard-0.9.25/templates/default/fulldoc/html/frames.erb +17 -0
  432. data/gems/yard-0.9.25/templates/default/fulldoc/html/full_list.erb +37 -0
  433. data/gems/yard-0.9.25/templates/default/fulldoc/html/full_list_class.erb +2 -0
  434. data/gems/yard-0.9.25/templates/default/fulldoc/html/full_list_file.erb +7 -0
  435. data/gems/yard-0.9.25/templates/default/fulldoc/html/full_list_method.erb +10 -0
  436. data/gems/yard-0.9.25/templates/default/fulldoc/html/js/app.js +314 -0
  437. data/gems/yard-0.9.25/templates/default/fulldoc/html/js/full_list.js +216 -0
  438. data/gems/yard-0.9.25/templates/default/fulldoc/html/js/jquery.js +4 -0
  439. data/gems/yard-0.9.25/templates/default/fulldoc/html/setup.rb +241 -0
  440. data/gems/yard-0.9.25/templates/default/layout/dot/header.erb +6 -0
  441. data/gems/yard-0.9.25/templates/default/layout/dot/setup.rb +15 -0
  442. data/gems/yard-0.9.25/templates/default/layout/html/breadcrumb.erb +11 -0
  443. data/gems/yard-0.9.25/templates/default/layout/html/files.erb +11 -0
  444. data/gems/yard-0.9.25/templates/default/layout/html/footer.erb +5 -0
  445. data/gems/yard-0.9.25/templates/default/layout/html/headers.erb +15 -0
  446. data/gems/yard-0.9.25/templates/default/layout/html/index.erb +2 -0
  447. data/gems/yard-0.9.25/templates/default/layout/html/layout.erb +24 -0
  448. data/gems/yard-0.9.25/templates/default/layout/html/listing.erb +4 -0
  449. data/gems/yard-0.9.25/templates/default/layout/html/objects.erb +32 -0
  450. data/gems/yard-0.9.25/templates/default/layout/html/script_setup.erb +4 -0
  451. data/gems/yard-0.9.25/templates/default/layout/html/search.erb +13 -0
  452. data/gems/yard-0.9.25/templates/default/layout/html/setup.rb +89 -0
  453. data/gems/yard-0.9.25/templates/default/method/html/header.erb +17 -0
  454. data/gems/yard-0.9.25/templates/default/method/setup.rb +4 -0
  455. data/gems/yard-0.9.25/templates/default/method/text/header.erb +1 -0
  456. data/gems/yard-0.9.25/templates/default/method_details/html/header.erb +3 -0
  457. data/gems/yard-0.9.25/templates/default/method_details/html/method_signature.erb +25 -0
  458. data/gems/yard-0.9.25/templates/default/method_details/html/source.erb +10 -0
  459. data/gems/yard-0.9.25/templates/default/method_details/setup.rb +11 -0
  460. data/gems/yard-0.9.25/templates/default/method_details/text/header.erb +10 -0
  461. data/gems/yard-0.9.25/templates/default/method_details/text/method_signature.erb +12 -0
  462. data/gems/yard-0.9.25/templates/default/method_details/text/setup.rb +11 -0
  463. data/gems/yard-0.9.25/templates/default/module/dot/child.erb +1 -0
  464. data/gems/yard-0.9.25/templates/default/module/dot/dependencies.erb +3 -0
  465. data/gems/yard-0.9.25/templates/default/module/dot/header.erb +6 -0
  466. data/gems/yard-0.9.25/templates/default/module/dot/info.erb +14 -0
  467. data/gems/yard-0.9.25/templates/default/module/dot/setup.rb +15 -0
  468. data/gems/yard-0.9.25/templates/default/module/html/attribute_details.erb +10 -0
  469. data/gems/yard-0.9.25/templates/default/module/html/attribute_summary.erb +8 -0
  470. data/gems/yard-0.9.25/templates/default/module/html/box_info.erb +43 -0
  471. data/gems/yard-0.9.25/templates/default/module/html/children.erb +8 -0
  472. data/gems/yard-0.9.25/templates/default/module/html/constant_summary.erb +17 -0
  473. data/gems/yard-0.9.25/templates/default/module/html/defines.erb +3 -0
  474. data/gems/yard-0.9.25/templates/default/module/html/header.erb +5 -0
  475. data/gems/yard-0.9.25/templates/default/module/html/inherited_attributes.erb +14 -0
  476. data/gems/yard-0.9.25/templates/default/module/html/inherited_constants.erb +8 -0
  477. data/gems/yard-0.9.25/templates/default/module/html/inherited_methods.erb +19 -0
  478. data/gems/yard-0.9.25/templates/default/module/html/item_summary.erb +40 -0
  479. data/gems/yard-0.9.25/templates/default/module/html/method_details_list.erb +9 -0
  480. data/gems/yard-0.9.25/templates/default/module/html/method_summary.erb +14 -0
  481. data/gems/yard-0.9.25/templates/default/module/html/methodmissing.erb +12 -0
  482. data/gems/yard-0.9.25/templates/default/module/html/pre_docstring.erb +1 -0
  483. data/gems/yard-0.9.25/templates/default/module/setup.rb +167 -0
  484. data/gems/yard-0.9.25/templates/default/module/text/children.erb +10 -0
  485. data/gems/yard-0.9.25/templates/default/module/text/class_meths_list.erb +8 -0
  486. data/gems/yard-0.9.25/templates/default/module/text/extends.erb +8 -0
  487. data/gems/yard-0.9.25/templates/default/module/text/header.erb +7 -0
  488. data/gems/yard-0.9.25/templates/default/module/text/includes.erb +8 -0
  489. data/gems/yard-0.9.25/templates/default/module/text/instance_meths_list.erb +8 -0
  490. data/gems/yard-0.9.25/templates/default/module/text/setup.rb +13 -0
  491. data/gems/yard-0.9.25/templates/default/onefile/html/files.erb +5 -0
  492. data/gems/yard-0.9.25/templates/default/onefile/html/headers.erb +6 -0
  493. data/gems/yard-0.9.25/templates/default/onefile/html/layout.erb +17 -0
  494. data/gems/yard-0.9.25/templates/default/onefile/html/readme.erb +3 -0
  495. data/gems/yard-0.9.25/templates/default/onefile/html/setup.rb +62 -0
  496. data/gems/yard-0.9.25/templates/default/root/dot/child.erb +3 -0
  497. data/gems/yard-0.9.25/templates/default/root/dot/setup.rb +6 -0
  498. data/gems/yard-0.9.25/templates/default/root/html/setup.rb +2 -0
  499. data/gems/yard-0.9.25/templates/default/tags/html/example.erb +11 -0
  500. data/gems/yard-0.9.25/templates/default/tags/html/index.erb +3 -0
  501. data/gems/yard-0.9.25/templates/default/tags/html/option.erb +24 -0
  502. data/gems/yard-0.9.25/templates/default/tags/html/overload.erb +14 -0
  503. data/gems/yard-0.9.25/templates/default/tags/html/see.erb +8 -0
  504. data/gems/yard-0.9.25/templates/default/tags/html/tag.erb +20 -0
  505. data/gems/yard-0.9.25/templates/default/tags/setup.rb +57 -0
  506. data/gems/yard-0.9.25/templates/default/tags/text/example.erb +12 -0
  507. data/gems/yard-0.9.25/templates/default/tags/text/index.erb +1 -0
  508. data/gems/yard-0.9.25/templates/default/tags/text/option.erb +20 -0
  509. data/gems/yard-0.9.25/templates/default/tags/text/overload.erb +19 -0
  510. data/gems/yard-0.9.25/templates/default/tags/text/see.erb +11 -0
  511. data/gems/yard-0.9.25/templates/default/tags/text/tag.erb +13 -0
  512. data/gems/yard-0.9.25/templates/guide/class/html/setup.rb +2 -0
  513. data/gems/yard-0.9.25/templates/guide/docstring/html/setup.rb +2 -0
  514. data/gems/yard-0.9.25/templates/guide/fulldoc/html/css/style.css +108 -0
  515. data/gems/yard-0.9.25/templates/guide/fulldoc/html/js/app.js +33 -0
  516. data/gems/yard-0.9.25/templates/guide/fulldoc/html/setup.rb +74 -0
  517. data/gems/yard-0.9.25/templates/guide/layout/html/layout.erb +81 -0
  518. data/gems/yard-0.9.25/templates/guide/layout/html/setup.rb +25 -0
  519. data/gems/yard-0.9.25/templates/guide/method/html/header.erb +18 -0
  520. data/gems/yard-0.9.25/templates/guide/method/html/setup.rb +22 -0
  521. data/gems/yard-0.9.25/templates/guide/module/html/header.erb +7 -0
  522. data/gems/yard-0.9.25/templates/guide/module/html/method_list.erb +5 -0
  523. data/gems/yard-0.9.25/templates/guide/module/html/setup.rb +27 -0
  524. data/gems/yard-0.9.25/templates/guide/onefile/html/files.erb +4 -0
  525. data/gems/yard-0.9.25/templates/guide/onefile/html/setup.rb +6 -0
  526. data/gems/yard-0.9.25/templates/guide/onefile/html/toc.erb +3 -0
  527. data/gems/yard-0.9.25/templates/guide/tags/html/setup.rb +9 -0
  528. data/gems/yard-0.9.25/yard.gemspec +24 -0
  529. data/kinetic_sdk.gemspec +3 -7
  530. data/lib/kinetic_sdk/core/lib/form.rb +55 -0
  531. data/lib/kinetic_sdk/core/lib/kapp.rb +52 -0
  532. data/lib/kinetic_sdk/core/lib/space.rb +51 -0
  533. data/lib/kinetic_sdk/task/lib/export.rb +22 -2
  534. data/lib/kinetic_sdk/task/lib/trees.rb +11 -0
  535. data/lib/kinetic_sdk/version.rb +1 -1
  536. data/lib/kinetic_sdk.rb +2 -22
  537. metadata +551 -229
  538. data/gems/kontena-websocket-client-0.1.1/Gemfile +0 -4
  539. data/gems/kontena-websocket-client-0.1.1/LICENSE +0 -190
  540. data/gems/kontena-websocket-client-0.1.1/README.md +0 -138
  541. data/gems/kontena-websocket-client-0.1.1/Rakefile +0 -6
  542. data/gems/kontena-websocket-client-0.1.1/benchmark/benchmark-client.rb +0 -45
  543. data/gems/kontena-websocket-client-0.1.1/benchmark/benchmark-em.rb +0 -66
  544. data/gems/kontena-websocket-client-0.1.1/benchmark/benchmark.rb +0 -161
  545. data/gems/kontena-websocket-client-0.1.1/benchmark/benchmark.sh +0 -17
  546. data/gems/kontena-websocket-client-0.1.1/benchmark/websocket-echo-server.go +0 -207
  547. data/gems/kontena-websocket-client-0.1.1/examples/websocket-echo-client.rb +0 -80
  548. data/gems/kontena-websocket-client-0.1.1/kontena-websocket-client.gemspec +0 -24
  549. data/gems/kontena-websocket-client-0.1.1/lib/kontena/websocket/client/connection.rb +0 -119
  550. data/gems/kontena-websocket-client-0.1.1/lib/kontena/websocket/client/version.rb +0 -13
  551. data/gems/kontena-websocket-client-0.1.1/lib/kontena/websocket/client.rb +0 -848
  552. data/gems/kontena-websocket-client-0.1.1/lib/kontena/websocket/error.rb +0 -81
  553. data/gems/kontena-websocket-client-0.1.1/lib/kontena/websocket/logging.rb +0 -55
  554. data/gems/kontena-websocket-client-0.1.1/lib/kontena/websocket/openssl_patch.rb +0 -10
  555. data/gems/kontena-websocket-client-0.1.1/lib/kontena-websocket-client.rb +0 -15
  556. data/gems/mime-types-3.1/Contributing.rdoc +0 -130
  557. data/gems/mime-types-3.1/History.rdoc +0 -658
  558. data/gems/mime-types-3.1/Rakefile +0 -254
  559. data/gems/mime-types-3.1/lib/mime/types/columnar.rb +0 -1
  560. data/gems/mime-types-3.1/lib/mime/types/container.rb +0 -30
  561. data/gems/mime-types-3.1/lib/mime-types.rb +0 -1
  562. data/gems/mime-types-3.1/test/minitest_helper.rb +0 -13
  563. data/gems/mime-types-3.1/test/test_mime_type.rb +0 -603
  564. data/gems/mime-types-3.1/test/test_mime_types.rb +0 -161
  565. data/gems/mime-types-3.1/test/test_mime_types_cache.rb +0 -109
  566. data/gems/mime-types-3.1/test/test_mime_types_class.rb +0 -155
  567. data/gems/mime-types-3.1/test/test_mime_types_lazy.rb +0 -43
  568. data/gems/mime-types-3.1/test/test_mime_types_loader.rb +0 -32
  569. data/gems/mime-types-data-3.2016.0521/Contributing.md +0 -157
  570. data/gems/mime-types-data-3.2016.0521/History.md +0 -351
  571. data/gems/mime-types-data-3.2016.0521/Licence.md +0 -25
  572. data/gems/mime-types-data-3.2016.0521/README.md +0 -61
  573. data/gems/mime-types-data-3.2016.0521/Rakefile +0 -80
  574. data/gems/mime-types-data-3.2016.0521/data/mime-types.json +0 -1
  575. data/gems/mime-types-data-3.2016.0521/data/mime.flags.column +0 -1964
  576. data/gems/parallel-1.12.1/lib/parallel/processor_count.rb +0 -93
  577. data/gems/parallel-1.12.1/lib/parallel/version.rb +0 -3
  578. data/gems/parallel-1.12.1/lib/parallel.rb +0 -500
  579. data/gems/ruby-progressbar-1.9.0/LICENSE.txt +0 -19
  580. data/gems/ruby-progressbar-1.9.0/README.md +0 -38
  581. data/gems/ruby-progressbar-1.9.0/Rakefile +0 -2
  582. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/base.rb +0 -183
  583. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/calculators/length.rb +0 -99
  584. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/calculators/running_average.rb +0 -9
  585. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/components/bar.rb +0 -96
  586. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/components/percentage.rb +0 -29
  587. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/components/rate.rb +0 -43
  588. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/components/time.rb +0 -107
  589. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/components/title.rb +0 -13
  590. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/components.rb +0 -5
  591. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/errors/invalid_progress_error.rb +0 -4
  592. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/format/formatter.rb +0 -27
  593. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/format/molecule.rb +0 -59
  594. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/format/string.rb +0 -36
  595. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/format.rb +0 -3
  596. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/output.rb +0 -68
  597. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/outputs/non_tty.rb +0 -47
  598. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/outputs/null.rb +0 -33
  599. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/outputs/tty.rb +0 -32
  600. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/progress.rb +0 -118
  601. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/refinements/enumerator.rb +0 -25
  602. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/refinements.rb +0 -1
  603. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/throttle.rb +0 -25
  604. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/time.rb +0 -30
  605. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/timer.rb +0 -72
  606. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar/version.rb +0 -3
  607. data/gems/ruby-progressbar-1.9.0/lib/ruby-progressbar.rb +0 -18
  608. data/gems/websocket-driver-0.6.5/CHANGELOG.md +0 -123
  609. data/gems/websocket-driver-0.6.5/LICENSE.md +0 -22
  610. data/gems/websocket-driver-0.6.5/README.md +0 -369
  611. data/gems/websocket-driver-0.6.5/examples/tcp_server.rb +0 -28
  612. data/gems/websocket-driver-0.6.5/ext/websocket-driver/Makefile +0 -264
  613. data/gems/websocket-driver-0.6.5/ext/websocket-driver/WebsocketMaskService.java +0 -55
  614. data/gems/websocket-driver-0.6.5/ext/websocket-driver/extconf.rb +0 -4
  615. data/gems/websocket-driver-0.6.5/ext/websocket-driver/websocket_mask.bundle +0 -0
  616. data/gems/websocket-driver-0.6.5/ext/websocket-driver/websocket_mask.c +0 -41
  617. data/gems/websocket-driver-0.6.5/ext/websocket-driver/websocket_mask.o +0 -0
  618. data/gems/websocket-driver-0.6.5/lib/websocket/driver/client.rb +0 -140
  619. data/gems/websocket-driver-0.6.5/lib/websocket/driver/draft75.rb +0 -102
  620. data/gems/websocket-driver-0.6.5/lib/websocket/driver/draft76.rb +0 -96
  621. data/gems/websocket-driver-0.6.5/lib/websocket/driver/event_emitter.rb +0 -54
  622. data/gems/websocket-driver-0.6.5/lib/websocket/driver/headers.rb +0 -45
  623. data/gems/websocket-driver-0.6.5/lib/websocket/driver/hybi/frame.rb +0 -20
  624. data/gems/websocket-driver-0.6.5/lib/websocket/driver/hybi/message.rb +0 -31
  625. data/gems/websocket-driver-0.6.5/lib/websocket/driver/hybi.rb +0 -406
  626. data/gems/websocket-driver-0.6.5/lib/websocket/driver/proxy.rb +0 -68
  627. data/gems/websocket-driver-0.6.5/lib/websocket/driver/server.rb +0 -80
  628. data/gems/websocket-driver-0.6.5/lib/websocket/driver/stream_reader.rb +0 -55
  629. data/gems/websocket-driver-0.6.5/lib/websocket/driver.rb +0 -199
  630. data/gems/websocket-driver-0.6.5/lib/websocket/http/headers.rb +0 -112
  631. data/gems/websocket-driver-0.6.5/lib/websocket/http/request.rb +0 -45
  632. data/gems/websocket-driver-0.6.5/lib/websocket/http/response.rb +0 -29
  633. data/gems/websocket-driver-0.6.5/lib/websocket/http.rb +0 -15
  634. data/gems/websocket-driver-0.6.5/lib/websocket/mask.rb +0 -14
  635. data/gems/websocket-driver-0.6.5/lib/websocket/websocket_mask.rb +0 -2
  636. data/gems/websocket-driver-0.6.5/lib/websocket_mask.bundle +0 -0
  637. data/gems/websocket-driver-0.6.5-java/CHANGELOG.md +0 -123
  638. data/gems/websocket-driver-0.6.5-java/README.md +0 -369
  639. data/gems/websocket-driver-0.6.5-java/examples/tcp_server.rb +0 -28
  640. data/gems/websocket-driver-0.6.5-java/ext/websocket-driver/WebsocketMaskService.java +0 -55
  641. data/gems/websocket-driver-0.6.5-java/ext/websocket-driver/extconf.rb +0 -4
  642. data/gems/websocket-driver-0.6.5-java/ext/websocket-driver/websocket_mask.c +0 -41
  643. data/gems/websocket-driver-0.6.5-java/lib/websocket/driver/client.rb +0 -140
  644. data/gems/websocket-driver-0.6.5-java/lib/websocket/driver/draft75.rb +0 -102
  645. data/gems/websocket-driver-0.6.5-java/lib/websocket/driver/draft76.rb +0 -96
  646. data/gems/websocket-driver-0.6.5-java/lib/websocket/driver/event_emitter.rb +0 -54
  647. data/gems/websocket-driver-0.6.5-java/lib/websocket/driver/headers.rb +0 -45
  648. data/gems/websocket-driver-0.6.5-java/lib/websocket/driver/hybi/frame.rb +0 -20
  649. data/gems/websocket-driver-0.6.5-java/lib/websocket/driver/hybi/message.rb +0 -31
  650. data/gems/websocket-driver-0.6.5-java/lib/websocket/driver/hybi.rb +0 -406
  651. data/gems/websocket-driver-0.6.5-java/lib/websocket/driver/proxy.rb +0 -68
  652. data/gems/websocket-driver-0.6.5-java/lib/websocket/driver/server.rb +0 -80
  653. data/gems/websocket-driver-0.6.5-java/lib/websocket/driver/stream_reader.rb +0 -55
  654. data/gems/websocket-driver-0.6.5-java/lib/websocket/driver.rb +0 -199
  655. data/gems/websocket-driver-0.6.5-java/lib/websocket/http/headers.rb +0 -112
  656. data/gems/websocket-driver-0.6.5-java/lib/websocket/http/request.rb +0 -45
  657. data/gems/websocket-driver-0.6.5-java/lib/websocket/http/response.rb +0 -29
  658. data/gems/websocket-driver-0.6.5-java/lib/websocket/http.rb +0 -15
  659. data/gems/websocket-driver-0.6.5-java/lib/websocket/mask.rb +0 -14
  660. data/gems/websocket-driver-0.6.5-java/lib/websocket/websocket_mask.rb +0 -2
  661. data/gems/websocket-driver-0.6.5-java/lib/websocket_mask.jar +0 -0
  662. data/gems/websocket-extensions-0.1.3/CHANGELOG.md +0 -15
  663. data/gems/websocket-extensions-0.1.3/LICENSE.md +0 -20
  664. data/gems/websocket-extensions-0.1.3/README.md +0 -313
  665. data/gems/websocket-extensions-0.1.3/lib/websocket/extensions/parser.rb +0 -111
  666. data/gems/websocket-extensions-0.1.3/lib/websocket/extensions.rb +0 -181
  667. data/lib/kinetic_sdk/discussions/lib/websockets.rb +0 -96
@@ -1,848 +0,0 @@
1
- # Threadsafe: while the #run method is reading/parsing incoming websocket frames, the #send/#ping/#close methods
2
- # can be called by other threads.
3
- # The #run (on_open), #on_message and #on_pong blocks will be called from the #run thread.
4
- #
5
- #
6
- =begin example
7
- def websocket_connect
8
- Kontena::Websocket::Client.connect(url, ...) do |client|
9
- on_open(client)
10
-
11
- client.read do |message|
12
- on_message(message)
13
- end
14
-
15
- on_close(client.close_code, client.close_reason) # client closed connection
16
- end
17
- rescue Kontena::Websocket::CloseError => exc
18
- on_close(exc.code, exc.reason) # server closed connection
19
- rescue Kontena::Websocket::Error => exc
20
- on_error(exc)
21
- ensure
22
- # disconnected
23
- end
24
- end
25
- =end
26
- class Kontena::Websocket::Client
27
- require_relative './client/connection'
28
-
29
- include Kontena::Websocket::Logging
30
-
31
- attr_reader :uri
32
-
33
- FRAME_SIZE = 4 * 1024
34
- CONNECT_TIMEOUT = 60.0
35
- OPEN_TIMEOUT = 60.0
36
- PING_INTERVAL = 60.0
37
- PING_TIMEOUT = 10.0
38
- PING_STRFTIME = '%FT%T.%NZ' # high-percision RFC 3339
39
- CLOSE_TIMEOUT = 60.0
40
- WRITE_TIMEOUT = 60.0
41
-
42
- # Connect, send websocket handshake, and loop reading responses.
43
- #
44
- # Passed block is called once websocket is open.
45
- # Raises on errors.
46
- # Returns once websocket is closed by server.
47
- #
48
- # Intended to be called using a dedicated per-websocket thread.
49
- # Other threads can then call the other threadsafe methods:
50
- # * send
51
- # * close
52
- #
53
- # @yield [client] websocket open
54
- # @raise [Kontena::Websocket::ConnectError]
55
- # @raise [Kontena::Websocket::ProtocolError]
56
- # @raise [Kontena::Websocket::TimeoutError]
57
- # @return websocket closed by server, @see #close_code #close_reason
58
- def self.connect(url, **options, &block)
59
- client = new(url, **options)
60
-
61
- client.connect
62
-
63
- begin
64
- yield client
65
- ensure
66
- # ensure socket is closed and client disconnected on any of:
67
- # * connect error
68
- # * open error
69
- # * read error
70
- # * close
71
- client.disconnect
72
- end
73
- end
74
-
75
- # @param [String] url
76
- # @param headers [Hash{String => String}]
77
- # @param ssl_params [Hash] @see OpenSSL::SSL::SSLContext
78
- # The DEFAULT_PARAMS includes verify_mode: OpenSSL::SSL::VERIFY_PEER.
79
- # Use { verify_mode: OpenSSL::SSL::VERIFY_NONE } to disable Kontena::Websocket::SSLVerifyError on connect.
80
- # @param ssl_hostname [String] override hostname for SSL SNI, certificate identity matching
81
- # @param connect_timeout [Float] timeout for TCP handshake; XXX: each phase of the SSL handshake
82
- # @param open_timeout [Float] expect open frame after #start
83
- # @param ping_interval [Float] send pings every interval seconds after previous ping
84
- # @param ping_timeout [Float] expect pong frame after #ping
85
- # @param close_timeout [Float] expect close frame after #close
86
- # @param write_timeout [Float] block #send when sending faster than the server is able to receive, fail if no progress is made
87
- # @raise [ArgumentError] Invalid websocket URI
88
- def initialize(url,
89
- headers: {},
90
- ssl_params: {},
91
- ssl_hostname: nil,
92
- connect_timeout: CONNECT_TIMEOUT,
93
- open_timeout: OPEN_TIMEOUT,
94
- ping_interval: PING_INTERVAL,
95
- ping_timeout: PING_TIMEOUT,
96
- close_timeout: CLOSE_TIMEOUT,
97
- write_timeout: WRITE_TIMEOUT
98
- )
99
- @uri = URI.parse(url)
100
- @headers = headers
101
- @ssl_params = ssl_params
102
- @ssl_hostname = ssl_hostname
103
-
104
- @connect_timeout = connect_timeout
105
- @open_timeout = open_timeout
106
- @ping_interval = ping_interval
107
- @ping_timeout = ping_timeout
108
- @close_timeout = close_timeout
109
- @write_timeout = write_timeout
110
-
111
- unless @uri.scheme == 'ws' || @uri.scheme == 'wss'
112
- raise ArgumentError, "Invalid websocket URL: #{@uri}"
113
- end
114
-
115
- @mutex = Mutex.new # for @driver
116
-
117
- # written by #enqueue from @driver callbacks with the @mutex held
118
- # drained by #read without the @mutex held
119
- @message_queue = []
120
-
121
- # sequential ping-pongs
122
- @ping_at = Time.now # fake for first ping_interval
123
- end
124
-
125
- # @return [String]
126
- def url
127
- @uri.to_s
128
- end
129
-
130
- # @return [String] ws or wss
131
- def scheme
132
- @uri.scheme
133
- end
134
-
135
- # @return [Boolean]
136
- def ssl?
137
- @uri.scheme == 'wss'
138
- end
139
-
140
- # Connecting with SSL cert/host verification?
141
- #
142
- # @return [Boolean]
143
- def ssl_verify?
144
- ssl? && ssl_context.verify_mode != OpenSSL::SSL::VERIFY_NONE
145
- end
146
-
147
- # @return [String]
148
- def ssl_hostname
149
- @ssl_hostname || @uri.host
150
- end
151
-
152
- # @return [String]
153
- def host
154
- @uri.host
155
- end
156
-
157
- # @return [Integer]
158
- def port
159
- @uri.port || (@uri.scheme == "ws" ? 80 : 443)
160
- end
161
-
162
- # Connected to server. Not necessarily open yet.
163
- #
164
- # @return [Boolean]
165
- def connected?
166
- !!@socket && !!@connection && !!@driver
167
- end
168
-
169
- # Client has started websocket handshake, but is not yet open.
170
- #
171
- # @return [Boolean]
172
- def opening?
173
- # XXX: also true after disconnect
174
- !!@opening_at && !@opened
175
- end
176
-
177
- # Server has accepted websocket connection.
178
- #
179
- # @return [Boolean]
180
- def open?
181
- !!@open
182
- end
183
-
184
- # Client has sent close frame, but socket is not yet closed.
185
- #
186
- # @return [Boolean]
187
- def closing?
188
- !!@closing && !@closed
189
- end
190
-
191
- # Server has closed websocket connection.
192
- #
193
- # @return [Boolean]
194
- def closed?
195
- !!@closed
196
- end
197
-
198
- # Valid once #run returns, when closed? or closing?
199
- #
200
- # @return [Integer]
201
- def close_code
202
- @closed_code || @closing_code
203
- end
204
-
205
- # Valid once #run returns, when closed?
206
- #
207
- # @return [String]
208
- def close_reason
209
- @closed_reason
210
- end
211
-
212
- # Create @socket, @connection and open @driver.
213
- #
214
- # Blocks until open. Disconnects if fails.
215
- #
216
- # @raise [Kontena::Websocket::ConnectError]
217
- # @raise [Kontena::Websocket::TimeoutError]
218
- # @return once websocket is open
219
- def connect
220
- @connection = self.socket_connect
221
-
222
- @driver = self.websocket_open(@connection)
223
-
224
- # blocks
225
- self.websocket_read until @opened
226
-
227
- rescue
228
- disconnect
229
- raise
230
- end
231
-
232
- # @raise [RuntimeError] not connected
233
- # @return [nil] not an ssl connection, or no peer cert
234
- # @return [OpenSSL::X509::Certificate]
235
- def ssl_cert
236
- fail "not connected" unless @socket
237
- return nil unless ssl?
238
-
239
- return @socket.peer_cert
240
- end
241
-
242
- # Verify and return SSL cert. Validates even if not ssl_verify.
243
- #
244
- # @raise [RuntimeError] not connected
245
- # @raise [Kontena::Websocket::SSLVerifyError]
246
- # @return [nil] not an ssl connection
247
- # @return [OpenSSL::X509::Certificate]
248
- def ssl_cert!
249
- fail "not connected" unless @socket
250
- return nil unless ssl?
251
-
252
- # raises Kontena::Websocket::SSLVerifyError
253
- self.ssl_verify_cert! @socket.peer_cert, @socket.peer_cert_chain
254
-
255
- return @socket.peer_cert
256
- end
257
-
258
- # Valid once open
259
- #
260
- # @raise [RuntimeError] not connected
261
- # @return [Integer]
262
- def http_status
263
- with_driver do |driver|
264
- driver.status
265
- end
266
- end
267
-
268
- # Valid once open
269
- #
270
- # @raise [RuntimeError] not connected
271
- # @return [Websocket::Driver::Headers]
272
- def http_headers
273
- with_driver do |driver|
274
- driver.headers
275
- end
276
- end
277
-
278
- # Read messages from websocket.
279
- #
280
- # If a block is given, then this loops and yields messages until closed.
281
- # Otherwise, returns the next message, or nil if closed.
282
- #
283
- # @raise [Kontena::Websocket::CloseError]
284
- def read(&block)
285
- if block
286
- read_yield(&block)
287
- else
288
- read_return
289
- end
290
- end
291
-
292
- # Send message frame, either text or binary.
293
- #
294
- # @param message [String, Array<Integer>]
295
- # @raise [ArgumentError] invalid type
296
- # @raise [RuntimeError] unable to send (socket closed?)
297
- def send(message)
298
- case message
299
- when String
300
- with_driver do |driver|
301
- fail unless driver.text(message)
302
- end
303
- when Array
304
- with_driver do |driver|
305
- fail unless driver.binary(message)
306
- end
307
- else
308
- raise ArgumentError, "Invalid type: #{message.class}"
309
- end
310
- end
311
-
312
- # Register pong handler.
313
- # Called from the #read thread every ping_interval after received pong.
314
- # XXX: called with driver @mutex locked
315
- #
316
- # The ping interval should be longer than the ping timeout.
317
- # If new pings are sent before old pings get any response, then the older pings do not yield on pong.
318
- #
319
- # @yield [delay] received pong
320
- # @yieldparam delay [Float] ping-pong delay in seconds
321
- def on_pong(&block)
322
- @on_pong = block
323
- end
324
-
325
- # Send ping message.
326
- #
327
- # This is intended to be automatically called from #run per @ping_interval.
328
- # Calling it from the #run callbacks also works, but calling it from a different thread
329
- # while #run is blocked on read() will ignore the @ping_timeout, unless the server happens
330
- # to send something else.
331
- #
332
- # @raise [RuntimeError] not connected
333
- def ping
334
- with_driver do |driver|
335
- # start ping timeout for next read
336
- ping_at = pinging!
337
-
338
- debug "pinging at #{ping_at}"
339
-
340
- fail unless driver.ping(ping_at.utc.strftime(PING_STRFTIME)) do
341
- # called from read -> @driver.parse with @mutex held!
342
- debug "pong for #{ping_at}"
343
-
344
- # resolve ping timeout, unless this pong is late and we already sent a new one
345
- if ping_at == @ping_at
346
- ping_delay = pinged!
347
-
348
- debug "ping-pong at #{ping_at} in #{ping_delay}s"
349
-
350
- # XXX: defer call without mutex?
351
- @on_pong.call(ping_delay) if @on_pong # TODO: also pass ping_at
352
- end
353
- end
354
- end
355
- end
356
-
357
- # Waiting for pong from ping
358
- #
359
- # @return [Boolean]
360
- def pinging?
361
- !!@pinging
362
- end
363
-
364
- # Measured ping-pong delay from previous ping
365
- #
366
- # nil if not pinged yet
367
- #
368
- # @return [Float, nil]
369
- def ping_delay
370
- @ping_delay
371
- end
372
-
373
- # Send close frame. Does not disconnect, but allows #read to return once server completes close handshake.
374
- #
375
- # Imposes a close timeout when called from #run blocks (run/on_message/on_pong do ...). If called from
376
- # a different thread, then #run should eventually return, once either:
377
- # * server sends close frame
378
- # * server sends any other frame after the close timeout expires
379
- # * the ping interval expires
380
- #
381
- # XXX: prevent #send after close?
382
- #
383
- # @param close [Integer]
384
- # @param reason [String]
385
- def close(code = 1000, reason = nil)
386
- debug "close code=#{code}: #{reason}"
387
-
388
- with_driver do |driver|
389
- fail unless driver.close(reason, code) # swapped argument order
390
-
391
- closing! code
392
- end
393
- end
394
-
395
- # Clear connection state, close socket.
396
- # Does not send websocket close frame, or wait for server to close.
397
- def disconnect
398
- debug "disconnect"
399
-
400
- @open = false
401
- @driver = nil
402
- @connection = nil
403
-
404
- # TODO: errors and timeout? SSLSocket.close in particular is bidirectional?
405
- @socket.close if @socket
406
- @socket = nil
407
- end
408
-
409
- #protected XXX: called by specs TODO: refactor out to separate TCP/SSL client classes
410
-
411
- # Call into driver with locked Mutex
412
- #
413
- # @raise [RuntimeError] not connected
414
- # @yield [driver]
415
- # @yieldparam driver [Websocket::Driver]
416
- def with_driver
417
- @mutex.synchronize {
418
- fail "not connected" unless @driver
419
-
420
- yield @driver
421
- }
422
- end
423
-
424
- # Connect to TCP server.
425
- #
426
- # @raise [Kontena::Websocket::TimeoutError] Errno::ETIMEDOUT
427
- # @raise [Kontena::Websocket::ConnectError] Errno::*
428
- # @raise [Kontena::Websocket::ConnectError] SocketError
429
- # @return [TCPSocket]
430
- def connect_tcp
431
- debug "connect_tcp: timeout=#{@connect_timeout}"
432
-
433
- Socket.tcp(self.host, self.port, connect_timeout: @connect_timeout)
434
- rescue Errno::ETIMEDOUT => exc
435
- raise Kontena::Websocket::TimeoutError, "Connect timeout after #{@connect_timeout}s" # XXX: actual delay
436
- rescue SocketError => exc
437
- raise Kontena::Websocket::ConnectError, exc
438
- rescue SystemCallError => exc
439
- raise Kontena::Websocket::ConnectError, exc
440
- end
441
-
442
- # @raise [ArgumentError] Failed adding cert store file/path: ...
443
- # @return [OpenSSL::X509::Store]
444
- def ssl_cert_store
445
- @ssl_cert_store ||= OpenSSL::X509::Store.new.tap do |ssl_cert_store|
446
- ca_file = @ssl_params[:ca_file] || ENV['SSL_CERT_FILE']
447
- ca_path = @ssl_params[:ca_path] || ENV['SSL_CERT_PATH']
448
-
449
- if ca_file || ca_path
450
- if ca_file
451
- debug "add cert store file: #{ca_file}"
452
-
453
- begin
454
- ssl_cert_store.add_file ca_file
455
- rescue OpenSSL::X509::StoreError
456
- raise ArgumentError, "Failed adding cert store file: #{ca_file}"
457
- end
458
- end
459
-
460
- if ca_path
461
- debug "add cert store path: #{ca_path}"
462
-
463
- begin
464
- # XXX: does not actually raise
465
- ssl_cert_store.add_path ca_path
466
- rescue OpenSSL::X509::StoreError
467
- raise ArgumentError, "Failed adding cert store path: #{ca_path}"
468
- end
469
- end
470
- else
471
- debug "use default cert store paths"
472
-
473
- ssl_cert_store.set_default_paths
474
- end
475
- end
476
- end
477
-
478
- # @param ssl_cert [OpenSSL::X509::Certificate]
479
- # @raise [Kontena::Websocket::SSLVerifyError]
480
- def ssl_verify_cert!(ssl_cert, ssl_cert_chain)
481
- unless ssl_cert
482
- raise Kontena::Websocket::SSLVerifyError.new(OpenSSL::X509::V_OK, ssl_cert, ssl_cert_chain), "No certificate"
483
- end
484
-
485
- ssl_verify_context = OpenSSL::X509::StoreContext.new(ssl_cert_store, ssl_cert, ssl_cert_chain)
486
-
487
- unless ssl_verify_context.verify
488
- raise Kontena::Websocket::SSLVerifyError.new(ssl_verify_context.error, ssl_cert, ssl_cert_chain), ssl_verify_context.error_string
489
- end
490
-
491
- unless OpenSSL::SSL.verify_certificate_identity(ssl_cert, self.ssl_hostname)
492
- raise Kontena::Websocket::SSLVerifyError.new(OpenSSL::X509::V_OK, ssl_cert, ssl_cert_chain), "Subject does not match hostname #{self.ssl_hostname}: #{ssl_cert.subject}"
493
- end
494
- end
495
-
496
- # @param verify_result [Integer] OpenSSL::SSL::SSLSocket#verify_result
497
- # @return [Kontena::Websocket::SSLVerifyError]
498
- def ssl_verify_error(verify_result, ssl_cert = nil, ssl_cert_chain = nil)
499
- ssl_verify_context = OpenSSL::X509::StoreContext.new(ssl_cert_store)
500
- ssl_verify_context.error = verify_result
501
-
502
- Kontena::Websocket::SSLVerifyError.new(ssl_verify_context.error, ssl_cert, ssl_cert_chain, ssl_verify_context.error_string)
503
- end
504
-
505
- # @return [OpenSSL::SSL::SSLContext]
506
- def ssl_context
507
- @ssl_context ||= OpenSSL::SSL::SSLContext.new().tap do |ssl_context|
508
- params = {
509
- cert_store: self.ssl_cert_store,
510
- **@ssl_params
511
- }
512
-
513
- if Kontena::Websocket::Client.ruby_version? '2.4'
514
- # prefer our own ssl_verify_cert! logic
515
- params[:verify_hostname] = false
516
- end
517
-
518
- ssl_context.set_params(params)
519
- end
520
- end
521
-
522
- # TODO: connect_deadline to impose a single deadline on the entire process
523
- # XXX: specs
524
- #
525
- # @param ssl_socket [OpenSSL::SSL::SSLSocket]
526
- # @raise [OpenSSL::SSL::SSLError]
527
- # @raise [Kontena::Websocket::TimeoutError]
528
- def ssl_connect(ssl_socket)
529
- debug "ssl_connect..."
530
- ret = ssl_socket.connect_nonblock
531
- rescue IO::WaitReadable
532
- debug "ssl_connect wait read: timeout=#{@connect_timeout}"
533
- ssl_socket.wait_readable(@connect_timeout) or raise Kontena::Websocket::TimeoutError, "SSL connect read timeout after #{@connect_timeout}s"
534
- retry
535
- rescue IO::WaitWritable
536
- debug "ssl_connect wait write: timeout=#{@connect_timeout}"
537
- ssl_socket.wait_writable(@connect_timeout) or raise Kontena::Websocket::TimeoutError, "SSL connect write timeout after #{@connect_timeout}s"
538
- retry
539
- else
540
- debug "ssl_connect: #{ret}"
541
- end
542
-
543
- # Connect to TCP server, perform SSL handshake, verify if required.
544
- #
545
- # @raise [Kontena::Websocket::ConnectError] from connect_tcp
546
- # @raise [Kontena::Websocket::SSLConnectError]
547
- # @raise [Kontena::Websocket::SSLVerifyError] errors that only happen with ssl_verify: true
548
- # @return [OpenSSL::SSL::SSLSocket]
549
- def connect_ssl
550
- tcp_socket = self.connect_tcp
551
- ssl_context = self.ssl_context
552
-
553
- debug "connect_ssl: #{ssl_context.inspect} hostname=#{self.ssl_hostname}"
554
-
555
- ssl_socket = OpenSSL::SSL::SSLSocket.new(tcp_socket, ssl_context)
556
- ssl_socket.sync_close = true # close TCPSocket after SSL shutdown
557
- ssl_socket.hostname = self.ssl_hostname # SNI
558
-
559
- begin
560
- self.ssl_connect(ssl_socket)
561
- rescue OpenSSL::SSL::SSLError => exc
562
- # SSL_connect returned=1 errno=0 state=error: certificate verify failed
563
- if exc.message.end_with? 'certificate verify failed'
564
- # ssl_socket.peer_cert is not set on errors :(
565
- raise ssl_verify_error(ssl_socket.verify_result)
566
- else
567
- raise Kontena::Websocket::SSLConnectError, exc
568
- end
569
- end
570
-
571
- # raises Kontena::Websocket::SSLVerifyError
572
- self.ssl_verify_cert!(ssl_socket.peer_cert, ssl_socket.peer_cert_chain) if ssl_verify?
573
-
574
- ssl_socket
575
- end
576
-
577
- # @return [Connection]
578
- def socket_connect
579
- if ssl?
580
- @socket = self.connect_ssl
581
- else
582
- @socket = self.connect_tcp
583
- end
584
-
585
- return Connection.new(@uri, @socket,
586
- write_timeout: @write_timeout,
587
- )
588
- end
589
-
590
- # Create websocket driver using connection, and send websocket handshake.
591
- # Registers driver handlers to set @open, @closed states, enqueue messages, or raise errors.
592
- #
593
- # @param connection [Kontena::Websocket::Client::Connection]
594
- # @raise [RuntimeError] already started?
595
- # @return [WebSocket::Driver::Client]
596
- def websocket_open(connection)
597
- debug "websocket open..."
598
-
599
- driver = ::WebSocket::Driver.client(connection)
600
-
601
- @headers.each do |k, v|
602
- driver.set_header(k, v)
603
- end
604
-
605
- # these are called from read_loop -> with_driver { driver.parse } with the @mutex held
606
- # do not recurse back into with_driver!
607
- driver.on :error do |event|
608
- self.on_driver_error(event)
609
- end
610
-
611
- driver.on :open do |event|
612
- self.on_driver_open(event)
613
- end
614
-
615
- driver.on :message do |event|
616
- self.on_driver_message(event)
617
- end
618
-
619
- driver.on :close do |event|
620
- self.on_driver_close(event)
621
- end
622
-
623
- # not expected to emit anything, not even :error
624
- fail unless driver.start
625
-
626
- debug "opening"
627
-
628
- opening!
629
-
630
- return driver
631
- end
632
-
633
- # @param exc [WebSocket::Driver::ProtocolError]
634
- def on_driver_error(exc)
635
- # this will presumably propagate up out of #recv_loop, not this function
636
- raise exc
637
-
638
- rescue WebSocket::Driver::ProtocolError => exc
639
- raise Kontena::Websocket::ProtocolError, exc
640
- end
641
-
642
- # Mark client as opened, calling the block passed to #run.
643
- #
644
- # @param event [WebSocket::Driver::OpenEvent] no attrs
645
- def on_driver_open(event)
646
- debug "opened"
647
-
648
- opened!
649
- end
650
-
651
- # Queue up received messages
652
- # Causes #read to return/yield once websocket_read returns with the driver mutex unlocked.
653
- #
654
- # @param event [WebSocket::Driver::MessageEvent] data
655
- def on_driver_message(event)
656
- @message_queue << event.data
657
- end
658
-
659
- # Mark client as closed, allowing #run to return (and disconnect from the server).
660
- #
661
- # @param event [WebSocket::Driver::CloseEvent] code, reason
662
- def on_driver_close(event)
663
- debug "closed code=#{event.code}: #{event.reason}"
664
-
665
- closed! event.code, event.reason
666
- end
667
-
668
- # Start read deadline for @open_timeout
669
- def opening!
670
- @opening_at = Time.now
671
- end
672
-
673
- # Server completed open handshake.
674
- def opened!
675
- @opened = true
676
- @open = true
677
- end
678
-
679
- # Start read deadline for @ping_timeout
680
- #
681
- # @return [Time] ping at
682
- def pinging!
683
- @pinging = true
684
- @ping_at = Time.now
685
- @pong_at = nil
686
-
687
- @ping_at
688
- end
689
-
690
- # Stop read deadline for @ping_timeout
691
- # @return [Float] ping delay
692
- def pinged!
693
- @pinging = false
694
- @pong_at = Time.now
695
- @ping_delay = @pong_at - @ping_at
696
-
697
- @ping_delay
698
- end
699
-
700
- # Client closing connection with code.
701
- #
702
- # Start read deadline for @open_timeout
703
- #
704
- # @param code [Integer] expecting close frame from server with matching code
705
- def closing!(code)
706
- @open = false # fail any further sends after close
707
- @closing = true
708
- @closing_at = Time.now
709
- @closing_code = code # cheked by #read_closed
710
- end
711
-
712
- # Server closed, completing close handshake if closing.
713
- #
714
- # @param code [Integer]
715
- # @param reason [String]
716
- def closed!(code, reason)
717
- @open = false
718
- @closed = true
719
- @closed_code = code
720
- @closed_reason = reason
721
- end
722
-
723
- # @raise [Kontena::Websocket::CloseError] server closed connection without client closing
724
- # @return [Boolean] connection was closed
725
- def read_closed
726
- if !@closed
727
- return false
728
- elsif @closing && @closing_code == @closed_code
729
- # client sent close, server responded with close
730
- return true
731
- else
732
- raise Kontena::Websocket::CloseError.new(@closed_code, @closed_reason)
733
- end
734
- end
735
-
736
- # @raise [Kontena::Websocket::CloseError]
737
- # @return [String, Array<Integer>] nil when websocket closed
738
- def read_return
739
- # important to first drain message queue before failing on read_closed!
740
- while @message_queue.empty? && !self.read_closed
741
- self.websocket_read
742
- end
743
-
744
- # returns nil if @closed, once the message queue is empty
745
- return @message_queue.shift
746
- end
747
-
748
- # @raise [Kontena::Websocket::CloseError]
749
- # @yield [message] received websocket message payload
750
- # @yieldparam message [String, Array<integer>] text or binary
751
- # @return websocket closed
752
- def read_yield
753
- loop do
754
- while msg = @message_queue.shift
755
- yield msg
756
- end
757
-
758
- # drain queue before returning on close
759
- return if self.read_closed
760
-
761
- self.websocket_read
762
- end
763
- end
764
-
765
- # Return read deadline for current read state
766
- #
767
- # @return [Symbol, Float, Float] state, at, timeout
768
- def read_state_timeout
769
- case
770
- when opening? && @open_timeout
771
- [:open, @opening_at, @open_timeout]
772
- when pinging? && @ping_timeout
773
- [:pong, @ping_at, @ping_timeout]
774
- when closing? && @close_timeout
775
- [:close, @closing_at, @close_timeout]
776
- when @ping_interval
777
- [:ping, @ping_at, @ping_interval]
778
- else
779
- [nil, nil, nil]
780
- end
781
- end
782
-
783
- # Read socket with timeout, parse websocket frames via @driver, emitting on-driver_* to enqueue messages.
784
- # Sends ping on interval timeout.
785
- def websocket_read
786
- read_state, state_start, state_timeout = self.read_state_timeout
787
-
788
- if state_timeout
789
- read_deadline = state_start + state_timeout
790
- read_timeout = read_deadline - Time.now
791
- else
792
- read_timeout = nil
793
- end
794
-
795
- debug "read (#{read_state})"
796
-
797
- begin
798
- # read from socket
799
- data = self.socket_read(read_timeout)
800
- rescue Kontena::Websocket::TimeoutError => exc
801
- if read_state == :ping
802
- debug "ping on #{exc}"
803
- self.ping
804
- elsif read_state
805
- raise exc.class.new("#{exc} while waiting #{state_timeout}s for #{read_state}")
806
- else
807
- raise
808
- end
809
- else
810
- # parse data with @driver @mutex held
811
- with_driver do |driver|
812
- # call into the driver, causing it to emit the events registered in #start
813
- driver.parse(data)
814
- end
815
- end
816
- end
817
-
818
- # Read from socket with timeout, parse websocket frames.
819
- # Invokes on_driver_*, which enqueues messages.
820
- # The websocket must be connected.
821
- #
822
- # @param timeout [Flaot] seconds
823
- # @raise [Kontena::Websocket::TimeoutError] read deadline expired
824
- # @raise [Kontena::Websocket::TimeoutError] read timeout after X.Ys
825
- # @raise [Kontena::Websocket::SocketError]
826
- def socket_read(timeout = nil)
827
- if timeout && timeout <= 0.0
828
- raise Kontena::Websocket::TimeoutError, "read deadline expired"
829
- end
830
-
831
- begin
832
- data = @connection.read(FRAME_SIZE, timeout: timeout)
833
-
834
- rescue EOFError => exc
835
- debug "read EOF"
836
-
837
- raise Kontena::Websocket::EOFError, 'Server closed connection without sending close frame'
838
-
839
- rescue IOError => exc
840
- # socket was closed => IOError: closed stream
841
- debug "read IOError: #{exc}"
842
-
843
- raise Kontena::Websocket::SocketError, exc
844
-
845
- # TODO: Errno::ECONNRESET etc
846
- end
847
- end
848
- end