rbs 4.1.0.pre.2-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (574) hide show
  1. checksums.yaml +7 -0
  2. data/.clang-format +75 -0
  3. data/.clangd +2 -0
  4. data/.github/dependabot.yml +24 -0
  5. data/.github/workflows/bundle-update.yml +63 -0
  6. data/.github/workflows/c-check.yml +61 -0
  7. data/.github/workflows/comments.yml +37 -0
  8. data/.github/workflows/dependabot.yml +30 -0
  9. data/.github/workflows/jruby.yml +67 -0
  10. data/.github/workflows/milestone.yml +83 -0
  11. data/.github/workflows/ruby.yml +158 -0
  12. data/.github/workflows/rust.yml +184 -0
  13. data/.github/workflows/truffleruby.yml +54 -0
  14. data/.github/workflows/typecheck.yml +39 -0
  15. data/.github/workflows/wasm.yml +53 -0
  16. data/.github/workflows/windows.yml +49 -0
  17. data/.gitignore +38 -0
  18. data/.rubocop.yml +72 -0
  19. data/BSDL +22 -0
  20. data/CHANGELOG.md +2292 -0
  21. data/COPYING +56 -0
  22. data/README.md +240 -0
  23. data/Rakefile +869 -0
  24. data/Steepfile +53 -0
  25. data/config.yml +913 -0
  26. data/core/array.rbs +4142 -0
  27. data/core/basic_object.rbs +376 -0
  28. data/core/binding.rbs +148 -0
  29. data/core/builtin.rbs +278 -0
  30. data/core/class.rbs +223 -0
  31. data/core/comparable.rbs +192 -0
  32. data/core/complex.rbs +812 -0
  33. data/core/constants.rbs +96 -0
  34. data/core/data.rbs +415 -0
  35. data/core/dir.rbs +993 -0
  36. data/core/encoding.rbs +1368 -0
  37. data/core/enumerable.rbs +2506 -0
  38. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  39. data/core/enumerator/product.rbs +92 -0
  40. data/core/enumerator.rbs +705 -0
  41. data/core/env.rbs +6 -0
  42. data/core/errno.rbs +682 -0
  43. data/core/errors.rbs +789 -0
  44. data/core/exception.rbs +485 -0
  45. data/core/false_class.rbs +82 -0
  46. data/core/fiber.rbs +570 -0
  47. data/core/fiber_error.rbs +11 -0
  48. data/core/file.rbs +2045 -0
  49. data/core/file_constants.rbs +463 -0
  50. data/core/file_stat.rbs +534 -0
  51. data/core/file_test.rbs +331 -0
  52. data/core/float.rbs +1316 -0
  53. data/core/gc.rbs +788 -0
  54. data/core/global_variables.rbs +184 -0
  55. data/core/hash.rbs +2183 -0
  56. data/core/integer.rbs +1374 -0
  57. data/core/io/buffer.rbs +995 -0
  58. data/core/io/wait.rbs +48 -0
  59. data/core/io.rbs +3472 -0
  60. data/core/kernel.rbs +3172 -0
  61. data/core/marshal.rbs +207 -0
  62. data/core/match_data.rbs +637 -0
  63. data/core/math.rbs +770 -0
  64. data/core/method.rbs +422 -0
  65. data/core/module.rbs +1856 -0
  66. data/core/nil_class.rbs +210 -0
  67. data/core/numeric.rbs +832 -0
  68. data/core/object.rbs +108 -0
  69. data/core/object_space/weak_key_map.rbs +166 -0
  70. data/core/object_space.rbs +197 -0
  71. data/core/pathname.rbs +1322 -0
  72. data/core/proc.rbs +905 -0
  73. data/core/process.rbs +2316 -0
  74. data/core/ractor.rbs +924 -0
  75. data/core/random.rbs +255 -0
  76. data/core/range.rbs +1209 -0
  77. data/core/rational.rbs +502 -0
  78. data/core/rb_config.rbs +88 -0
  79. data/core/rbs/ops.rbs +154 -0
  80. data/core/rbs/unnamed/argf.rbs +1236 -0
  81. data/core/rbs/unnamed/env_class.rbs +1214 -0
  82. data/core/rbs/unnamed/main_class.rbs +123 -0
  83. data/core/rbs/unnamed/random.rbs +186 -0
  84. data/core/refinement.rbs +59 -0
  85. data/core/regexp.rbs +1974 -0
  86. data/core/ruby.rbs +53 -0
  87. data/core/ruby_vm.rbs +809 -0
  88. data/core/rubygems/basic_specification.rbs +6 -0
  89. data/core/rubygems/config_file.rbs +38 -0
  90. data/core/rubygems/dependency_installer.rbs +6 -0
  91. data/core/rubygems/errors.rbs +109 -0
  92. data/core/rubygems/installer.rbs +15 -0
  93. data/core/rubygems/path_support.rbs +6 -0
  94. data/core/rubygems/platform.rbs +7 -0
  95. data/core/rubygems/request_set.rbs +49 -0
  96. data/core/rubygems/requirement.rbs +148 -0
  97. data/core/rubygems/rubygems.rbs +1105 -0
  98. data/core/rubygems/source_list.rbs +15 -0
  99. data/core/rubygems/specification.rbs +23 -0
  100. data/core/rubygems/stream_ui.rbs +5 -0
  101. data/core/rubygems/uninstaller.rbs +10 -0
  102. data/core/rubygems/version.rbs +293 -0
  103. data/core/set.rbs +751 -0
  104. data/core/signal.rbs +110 -0
  105. data/core/string.rbs +5532 -0
  106. data/core/struct.rbs +668 -0
  107. data/core/symbol.rbs +482 -0
  108. data/core/thread.rbs +1826 -0
  109. data/core/thread_group.rbs +79 -0
  110. data/core/time.rbs +1793 -0
  111. data/core/trace_point.rbs +483 -0
  112. data/core/true_class.rbs +98 -0
  113. data/core/unbound_method.rbs +337 -0
  114. data/core/warning.rbs +87 -0
  115. data/docs/CONTRIBUTING.md +107 -0
  116. data/docs/aliases.md +79 -0
  117. data/docs/architecture.md +110 -0
  118. data/docs/collection.md +192 -0
  119. data/docs/config.md +171 -0
  120. data/docs/data_and_struct.md +86 -0
  121. data/docs/encoding.md +56 -0
  122. data/docs/gem.md +56 -0
  123. data/docs/inline.md +634 -0
  124. data/docs/rbs_by_example.md +309 -0
  125. data/docs/repo.md +125 -0
  126. data/docs/rust.md +96 -0
  127. data/docs/sigs.md +167 -0
  128. data/docs/stdlib.md +147 -0
  129. data/docs/syntax.md +940 -0
  130. data/docs/tools.md +17 -0
  131. data/docs/type_fingerprint.md +21 -0
  132. data/docs/wasm_serialization.md +80 -0
  133. data/exe/rbs +7 -0
  134. data/ext/rbs_extension/ast_translation.c +1855 -0
  135. data/ext/rbs_extension/ast_translation.h +41 -0
  136. data/ext/rbs_extension/class_constants.c +187 -0
  137. data/ext/rbs_extension/class_constants.h +104 -0
  138. data/ext/rbs_extension/compat.h +10 -0
  139. data/ext/rbs_extension/extconf.rb +40 -0
  140. data/ext/rbs_extension/legacy_location.c +294 -0
  141. data/ext/rbs_extension/legacy_location.h +82 -0
  142. data/ext/rbs_extension/main.c +613 -0
  143. data/ext/rbs_extension/rbs_extension.h +16 -0
  144. data/ext/rbs_extension/rbs_string_bridging.c +9 -0
  145. data/ext/rbs_extension/rbs_string_bridging.h +24 -0
  146. data/goodcheck.yml +91 -0
  147. data/include/rbs/ast.h +1047 -0
  148. data/include/rbs/defines.h +99 -0
  149. data/include/rbs/lexer.h +207 -0
  150. data/include/rbs/location.h +40 -0
  151. data/include/rbs/parser.h +153 -0
  152. data/include/rbs/serialize.h +39 -0
  153. data/include/rbs/string.h +47 -0
  154. data/include/rbs/util/rbs_allocator.h +59 -0
  155. data/include/rbs/util/rbs_assert.h +20 -0
  156. data/include/rbs/util/rbs_buffer.h +83 -0
  157. data/include/rbs/util/rbs_constant_pool.h +155 -0
  158. data/include/rbs/util/rbs_encoding.h +282 -0
  159. data/include/rbs/util/rbs_unescape.h +24 -0
  160. data/include/rbs.h +14 -0
  161. data/lib/rbs/ancestor_graph.rb +92 -0
  162. data/lib/rbs/annotate/annotations.rb +199 -0
  163. data/lib/rbs/annotate/formatter.rb +82 -0
  164. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  165. data/lib/rbs/annotate/rdoc_source.rb +131 -0
  166. data/lib/rbs/annotate.rb +8 -0
  167. data/lib/rbs/ast/annotation.rb +29 -0
  168. data/lib/rbs/ast/comment.rb +29 -0
  169. data/lib/rbs/ast/declarations.rb +472 -0
  170. data/lib/rbs/ast/directives.rb +49 -0
  171. data/lib/rbs/ast/members.rb +451 -0
  172. data/lib/rbs/ast/ruby/annotations.rb +451 -0
  173. data/lib/rbs/ast/ruby/comment_block.rb +247 -0
  174. data/lib/rbs/ast/ruby/declarations.rb +291 -0
  175. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  176. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  177. data/lib/rbs/ast/ruby/members.rb +762 -0
  178. data/lib/rbs/ast/type_param.rb +235 -0
  179. data/lib/rbs/ast/visitor.rb +137 -0
  180. data/lib/rbs/buffer.rb +189 -0
  181. data/lib/rbs/builtin_names.rb +58 -0
  182. data/lib/rbs/cli/colored_io.rb +48 -0
  183. data/lib/rbs/cli/diff.rb +84 -0
  184. data/lib/rbs/cli/validate.rb +294 -0
  185. data/lib/rbs/cli.rb +1253 -0
  186. data/lib/rbs/collection/cleaner.rb +38 -0
  187. data/lib/rbs/collection/config/lockfile.rb +92 -0
  188. data/lib/rbs/collection/config/lockfile_generator.rb +269 -0
  189. data/lib/rbs/collection/config.rb +81 -0
  190. data/lib/rbs/collection/installer.rb +32 -0
  191. data/lib/rbs/collection/sources/base.rb +14 -0
  192. data/lib/rbs/collection/sources/git.rb +265 -0
  193. data/lib/rbs/collection/sources/local.rb +81 -0
  194. data/lib/rbs/collection/sources/rubygems.rb +48 -0
  195. data/lib/rbs/collection/sources/stdlib.rb +50 -0
  196. data/lib/rbs/collection/sources.rb +38 -0
  197. data/lib/rbs/collection.rb +16 -0
  198. data/lib/rbs/constant.rb +28 -0
  199. data/lib/rbs/definition.rb +415 -0
  200. data/lib/rbs/definition_builder/ancestor_builder.rb +678 -0
  201. data/lib/rbs/definition_builder/method_builder.rb +295 -0
  202. data/lib/rbs/definition_builder.rb +1054 -0
  203. data/lib/rbs/diff.rb +131 -0
  204. data/lib/rbs/environment/class_entry.rb +69 -0
  205. data/lib/rbs/environment/module_entry.rb +66 -0
  206. data/lib/rbs/environment/use_map.rb +77 -0
  207. data/lib/rbs/environment.rb +1028 -0
  208. data/lib/rbs/environment_loader.rb +167 -0
  209. data/lib/rbs/environment_walker.rb +155 -0
  210. data/lib/rbs/errors.rb +634 -0
  211. data/lib/rbs/factory.rb +18 -0
  212. data/lib/rbs/file_finder.rb +28 -0
  213. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  214. data/lib/rbs/inline_parser.rb +568 -0
  215. data/lib/rbs/location_aux.rb +170 -0
  216. data/lib/rbs/locator.rb +247 -0
  217. data/lib/rbs/method_type.rb +145 -0
  218. data/lib/rbs/namespace.rb +154 -0
  219. data/lib/rbs/parser/lex_result.rb +15 -0
  220. data/lib/rbs/parser/token.rb +23 -0
  221. data/lib/rbs/parser_aux.rb +142 -0
  222. data/lib/rbs/prototype/helpers.rb +197 -0
  223. data/lib/rbs/prototype/node_usage.rb +99 -0
  224. data/lib/rbs/prototype/rb.rb +816 -0
  225. data/lib/rbs/prototype/rbi.rb +625 -0
  226. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  227. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  228. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  229. data/lib/rbs/prototype/runtime.rb +680 -0
  230. data/lib/rbs/repository.rb +127 -0
  231. data/lib/rbs/resolver/constant_resolver.rb +219 -0
  232. data/lib/rbs/resolver/type_name_resolver.rb +167 -0
  233. data/lib/rbs/rewriter.rb +70 -0
  234. data/lib/rbs/sorter.rb +198 -0
  235. data/lib/rbs/source.rb +99 -0
  236. data/lib/rbs/substitution.rb +83 -0
  237. data/lib/rbs/subtractor.rb +204 -0
  238. data/lib/rbs/test/errors.rb +80 -0
  239. data/lib/rbs/test/guaranteed.rb +30 -0
  240. data/lib/rbs/test/hook.rb +212 -0
  241. data/lib/rbs/test/observer.rb +19 -0
  242. data/lib/rbs/test/setup.rb +84 -0
  243. data/lib/rbs/test/setup_helper.rb +50 -0
  244. data/lib/rbs/test/tester.rb +167 -0
  245. data/lib/rbs/test/type_check.rb +457 -0
  246. data/lib/rbs/test.rb +112 -0
  247. data/lib/rbs/type_alias_dependency.rb +100 -0
  248. data/lib/rbs/type_alias_regularity.rb +126 -0
  249. data/lib/rbs/type_name.rb +122 -0
  250. data/lib/rbs/types.rb +1604 -0
  251. data/lib/rbs/unit_test/convertibles.rb +177 -0
  252. data/lib/rbs/unit_test/spy.rb +138 -0
  253. data/lib/rbs/unit_test/type_assertions.rb +383 -0
  254. data/lib/rbs/unit_test/with_aliases.rb +145 -0
  255. data/lib/rbs/unit_test.rb +6 -0
  256. data/lib/rbs/validator.rb +186 -0
  257. data/lib/rbs/variance_calculator.rb +189 -0
  258. data/lib/rbs/vendorer.rb +71 -0
  259. data/lib/rbs/version.rb +5 -0
  260. data/lib/rbs/wasm/deserializer.rb +213 -0
  261. data/lib/rbs/wasm/jars/asm-analysis.jar +0 -0
  262. data/lib/rbs/wasm/jars/asm-commons.jar +0 -0
  263. data/lib/rbs/wasm/jars/asm-tree.jar +0 -0
  264. data/lib/rbs/wasm/jars/asm-util.jar +0 -0
  265. data/lib/rbs/wasm/jars/asm.jar +0 -0
  266. data/lib/rbs/wasm/jars/compiler.jar +0 -0
  267. data/lib/rbs/wasm/jars/log.jar +0 -0
  268. data/lib/rbs/wasm/jars/runtime.jar +0 -0
  269. data/lib/rbs/wasm/jars/wasi.jar +0 -0
  270. data/lib/rbs/wasm/jars/wasm.jar +0 -0
  271. data/lib/rbs/wasm/location.rb +61 -0
  272. data/lib/rbs/wasm/parser.rb +137 -0
  273. data/lib/rbs/wasm/rbs_parser.wasm +0 -0
  274. data/lib/rbs/wasm/runtime.rb +217 -0
  275. data/lib/rbs/wasm/serialization_schema.rb +110 -0
  276. data/lib/rbs/writer.rb +424 -0
  277. data/lib/rbs.rb +117 -0
  278. data/lib/rdoc/discover.rb +20 -0
  279. data/lib/rdoc_plugin/parser.rb +163 -0
  280. data/rbs.gemspec +68 -0
  281. data/schema/annotation.json +14 -0
  282. data/schema/comment.json +26 -0
  283. data/schema/decls.json +326 -0
  284. data/schema/function.json +87 -0
  285. data/schema/location.json +56 -0
  286. data/schema/members.json +266 -0
  287. data/schema/methodType.json +50 -0
  288. data/schema/typeParam.json +52 -0
  289. data/schema/types.json +317 -0
  290. data/sig/ancestor_builder.rbs +163 -0
  291. data/sig/ancestor_graph.rbs +60 -0
  292. data/sig/annotate/annotations.rbs +102 -0
  293. data/sig/annotate/formatter.rbs +24 -0
  294. data/sig/annotate/rdoc_annotater.rbs +85 -0
  295. data/sig/annotate/rdoc_source.rbs +32 -0
  296. data/sig/annotation.rbs +27 -0
  297. data/sig/ast/ruby/annotations.rbs +470 -0
  298. data/sig/ast/ruby/comment_block.rbs +127 -0
  299. data/sig/ast/ruby/declarations.rbs +158 -0
  300. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  301. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  302. data/sig/ast/ruby/members.rbs +198 -0
  303. data/sig/buffer.rbs +108 -0
  304. data/sig/builtin_names.rbs +44 -0
  305. data/sig/cli/colored_io.rbs +15 -0
  306. data/sig/cli/diff.rbs +15 -0
  307. data/sig/cli/validate.rbs +47 -0
  308. data/sig/cli.rbs +89 -0
  309. data/sig/collection/cleaner.rbs +13 -0
  310. data/sig/collection/config/lockfile.rbs +74 -0
  311. data/sig/collection/config/lockfile_generator.rbs +68 -0
  312. data/sig/collection/config.rbs +46 -0
  313. data/sig/collection/installer.rbs +17 -0
  314. data/sig/collection/sources.rbs +214 -0
  315. data/sig/collection.rbs +4 -0
  316. data/sig/comment.rbs +26 -0
  317. data/sig/constant.rbs +21 -0
  318. data/sig/declarations.rbs +274 -0
  319. data/sig/definition.rbs +232 -0
  320. data/sig/definition_builder.rbs +181 -0
  321. data/sig/diff.rbs +28 -0
  322. data/sig/directives.rbs +77 -0
  323. data/sig/environment/class_entry.rbs +50 -0
  324. data/sig/environment/module_entry.rbs +50 -0
  325. data/sig/environment.rbs +286 -0
  326. data/sig/environment_loader.rbs +111 -0
  327. data/sig/environment_walker.rbs +65 -0
  328. data/sig/errors.rbs +408 -0
  329. data/sig/factory.rbs +5 -0
  330. data/sig/file_finder.rbs +28 -0
  331. data/sig/inline_parser/comment_association.rbs +71 -0
  332. data/sig/inline_parser.rbs +126 -0
  333. data/sig/location.rbs +135 -0
  334. data/sig/locator.rbs +56 -0
  335. data/sig/manifest.yaml +5 -0
  336. data/sig/members.rbs +258 -0
  337. data/sig/method_builder.rbs +89 -0
  338. data/sig/method_types.rbs +58 -0
  339. data/sig/namespace.rbs +161 -0
  340. data/sig/parser.rbs +164 -0
  341. data/sig/prototype/helpers.rbs +29 -0
  342. data/sig/prototype/node_usage.rbs +20 -0
  343. data/sig/prototype/rb.rbs +96 -0
  344. data/sig/prototype/rbi.rbs +75 -0
  345. data/sig/prototype/runtime.rbs +182 -0
  346. data/sig/rbs.rbs +21 -0
  347. data/sig/rdoc/rbs.rbs +67 -0
  348. data/sig/repository.rbs +85 -0
  349. data/sig/resolver/constant_resolver.rbs +92 -0
  350. data/sig/resolver/context.rbs +34 -0
  351. data/sig/resolver/type_name_resolver.rbs +61 -0
  352. data/sig/rewriter.rbs +45 -0
  353. data/sig/shims/bundler.rbs +38 -0
  354. data/sig/shims/enumerable.rbs +5 -0
  355. data/sig/shims/rubygems.rbs +19 -0
  356. data/sig/sorter.rbs +41 -0
  357. data/sig/source.rbs +48 -0
  358. data/sig/substitution.rbs +48 -0
  359. data/sig/subtractor.rbs +37 -0
  360. data/sig/test/errors.rbs +52 -0
  361. data/sig/test/guranteed.rbs +9 -0
  362. data/sig/test/type_check.rbs +19 -0
  363. data/sig/test.rbs +82 -0
  364. data/sig/type_alias_dependency.rbs +53 -0
  365. data/sig/type_alias_regularity.rbs +98 -0
  366. data/sig/type_param.rbs +115 -0
  367. data/sig/typename.rbs +89 -0
  368. data/sig/types.rbs +578 -0
  369. data/sig/unit_test/convertibles.rbs +154 -0
  370. data/sig/unit_test/spy.rbs +22 -0
  371. data/sig/unit_test/type_assertions.rbs +211 -0
  372. data/sig/unit_test/with_aliases.rbs +136 -0
  373. data/sig/use_map.rbs +35 -0
  374. data/sig/util.rbs +9 -0
  375. data/sig/validator.rbs +63 -0
  376. data/sig/variance_calculator.rbs +87 -0
  377. data/sig/vendorer.rbs +51 -0
  378. data/sig/version.rbs +3 -0
  379. data/sig/visitor.rbs +47 -0
  380. data/sig/wasm/deserializer.rbs +66 -0
  381. data/sig/wasm/serialization_schema.rbs +13 -0
  382. data/sig/writer.rbs +127 -0
  383. data/src/ast.c +1628 -0
  384. data/src/lexer.c +3217 -0
  385. data/src/lexer.re +155 -0
  386. data/src/lexstate.c +217 -0
  387. data/src/location.c +31 -0
  388. data/src/parser.c +4255 -0
  389. data/src/serialize.c +958 -0
  390. data/src/string.c +41 -0
  391. data/src/util/rbs_allocator.c +162 -0
  392. data/src/util/rbs_assert.c +19 -0
  393. data/src/util/rbs_buffer.c +54 -0
  394. data/src/util/rbs_constant_pool.c +268 -0
  395. data/src/util/rbs_encoding.c +21308 -0
  396. data/src/util/rbs_unescape.c +167 -0
  397. data/stdlib/abbrev/0/abbrev.rbs +66 -0
  398. data/stdlib/abbrev/0/array.rbs +26 -0
  399. data/stdlib/base64/0/base64.rbs +355 -0
  400. data/stdlib/benchmark/0/benchmark.rbs +452 -0
  401. data/stdlib/bigdecimal/0/big_decimal.rbs +1647 -0
  402. data/stdlib/bigdecimal-math/0/big_math.rbs +280 -0
  403. data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
  404. data/stdlib/cgi/0/core.rbs +911 -0
  405. data/stdlib/cgi/0/manifest.yaml +4 -0
  406. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  407. data/stdlib/coverage/0/coverage.rbs +266 -0
  408. data/stdlib/csv/0/csv.rbs +3776 -0
  409. data/stdlib/csv/0/manifest.yaml +3 -0
  410. data/stdlib/date/0/date.rbs +1598 -0
  411. data/stdlib/date/0/date_time.rbs +617 -0
  412. data/stdlib/date/0/time.rbs +26 -0
  413. data/stdlib/dbm/0/dbm.rbs +421 -0
  414. data/stdlib/delegate/0/delegator.rbs +187 -0
  415. data/stdlib/delegate/0/kernel.rbs +47 -0
  416. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  417. data/stdlib/did_you_mean/0/did_you_mean.rbs +344 -0
  418. data/stdlib/digest/0/digest.rbs +687 -0
  419. data/stdlib/erb/0/erb.rbs +933 -0
  420. data/stdlib/etc/0/etc.rbs +884 -0
  421. data/stdlib/fileutils/0/fileutils.rbs +1753 -0
  422. data/stdlib/find/0/find.rbs +49 -0
  423. data/stdlib/forwardable/0/forwardable.rbs +271 -0
  424. data/stdlib/io-console/0/io-console.rbs +414 -0
  425. data/stdlib/ipaddr/0/ipaddr.rbs +436 -0
  426. data/stdlib/json/0/json.rbs +1963 -0
  427. data/stdlib/kconv/0/kconv.rbs +166 -0
  428. data/stdlib/logger/0/formatter.rbs +45 -0
  429. data/stdlib/logger/0/log_device.rbs +100 -0
  430. data/stdlib/logger/0/logger.rbs +796 -0
  431. data/stdlib/logger/0/manifest.yaml +2 -0
  432. data/stdlib/logger/0/period.rbs +17 -0
  433. data/stdlib/logger/0/severity.rbs +34 -0
  434. data/stdlib/minitest/0/kernel.rbs +42 -0
  435. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
  436. data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
  437. data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
  438. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
  439. data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
  440. data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
  441. data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
  442. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  443. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  444. data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
  445. data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
  446. data/stdlib/minitest/0/minitest/guard.rbs +64 -0
  447. data/stdlib/minitest/0/minitest/mock.rbs +64 -0
  448. data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
  449. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
  450. data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
  451. data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
  452. data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
  453. data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
  454. data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
  455. data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
  456. data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
  457. data/stdlib/minitest/0/minitest/result.rbs +28 -0
  458. data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
  459. data/stdlib/minitest/0/minitest/skip.rbs +6 -0
  460. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
  461. data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
  462. data/stdlib/minitest/0/minitest/spec.rbs +11 -0
  463. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
  464. data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
  465. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
  466. data/stdlib/minitest/0/minitest/test.rbs +69 -0
  467. data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
  468. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  469. data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
  470. data/stdlib/minitest/0/minitest/unit.rbs +4 -0
  471. data/stdlib/minitest/0/minitest.rbs +115 -0
  472. data/stdlib/monitor/0/monitor.rbs +363 -0
  473. data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
  474. data/stdlib/net-http/0/manifest.yaml +3 -0
  475. data/stdlib/net-http/0/net-http.rbs +5580 -0
  476. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  477. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  478. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  479. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  480. data/stdlib/nkf/0/nkf.rbs +402 -0
  481. data/stdlib/objspace/0/objspace.rbs +470 -0
  482. data/stdlib/observable/0/observable.rbs +217 -0
  483. data/stdlib/open-uri/0/manifest.yaml +4 -0
  484. data/stdlib/open-uri/0/open-uri.rbs +433 -0
  485. data/stdlib/open3/0/open3.rbs +606 -0
  486. data/stdlib/openssl/0/manifest.yaml +3 -0
  487. data/stdlib/openssl/0/openssl.rbs +12231 -0
  488. data/stdlib/optparse/0/optparse.rbs +1734 -0
  489. data/stdlib/pathname/0/pathname.rbs +36 -0
  490. data/stdlib/pp/0/manifest.yaml +2 -0
  491. data/stdlib/pp/0/pp.rbs +301 -0
  492. data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
  493. data/stdlib/pstore/0/pstore.rbs +608 -0
  494. data/stdlib/psych/0/core_ext.rbs +12 -0
  495. data/stdlib/psych/0/dbm.rbs +237 -0
  496. data/stdlib/psych/0/manifest.yaml +3 -0
  497. data/stdlib/psych/0/psych.rbs +455 -0
  498. data/stdlib/psych/0/store.rbs +57 -0
  499. data/stdlib/pty/0/pty.rbs +240 -0
  500. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  501. data/stdlib/rdoc/0/code_object.rbs +52 -0
  502. data/stdlib/rdoc/0/comment.rbs +61 -0
  503. data/stdlib/rdoc/0/context.rbs +153 -0
  504. data/stdlib/rdoc/0/markup.rbs +117 -0
  505. data/stdlib/rdoc/0/options.rbs +76 -0
  506. data/stdlib/rdoc/0/parser.rbs +56 -0
  507. data/stdlib/rdoc/0/rdoc.rbs +393 -0
  508. data/stdlib/rdoc/0/ri.rbs +17 -0
  509. data/stdlib/rdoc/0/store.rbs +48 -0
  510. data/stdlib/rdoc/0/top_level.rbs +97 -0
  511. data/stdlib/resolv/0/manifest.yaml +3 -0
  512. data/stdlib/resolv/0/resolv.rbs +1787 -0
  513. data/stdlib/ripper/0/ripper.rbs +1654 -0
  514. data/stdlib/securerandom/0/manifest.yaml +2 -0
  515. data/stdlib/securerandom/0/securerandom.rbs +49 -0
  516. data/stdlib/shellwords/0/shellwords.rbs +229 -0
  517. data/stdlib/singleton/0/singleton.rbs +134 -0
  518. data/stdlib/socket/0/addrinfo.rbs +666 -0
  519. data/stdlib/socket/0/basic_socket.rbs +590 -0
  520. data/stdlib/socket/0/constants.rbs +2295 -0
  521. data/stdlib/socket/0/ip_socket.rbs +94 -0
  522. data/stdlib/socket/0/socket.rbs +4170 -0
  523. data/stdlib/socket/0/socket_error.rbs +5 -0
  524. data/stdlib/socket/0/tcp_server.rbs +192 -0
  525. data/stdlib/socket/0/tcp_socket.rbs +87 -0
  526. data/stdlib/socket/0/udp_socket.rbs +133 -0
  527. data/stdlib/socket/0/unix_server.rbs +169 -0
  528. data/stdlib/socket/0/unix_socket.rbs +172 -0
  529. data/stdlib/stringio/0/stringio.rbs +1681 -0
  530. data/stdlib/strscan/0/string_scanner.rbs +1648 -0
  531. data/stdlib/tempfile/0/tempfile.rbs +483 -0
  532. data/stdlib/time/0/time.rbs +434 -0
  533. data/stdlib/timeout/0/timeout.rbs +137 -0
  534. data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
  535. data/stdlib/tsort/0/cyclic.rbs +8 -0
  536. data/stdlib/tsort/0/interfaces.rbs +20 -0
  537. data/stdlib/tsort/0/tsort.rbs +410 -0
  538. data/stdlib/uri/0/common.rbs +621 -0
  539. data/stdlib/uri/0/file.rbs +118 -0
  540. data/stdlib/uri/0/ftp.rbs +13 -0
  541. data/stdlib/uri/0/generic.rbs +1116 -0
  542. data/stdlib/uri/0/http.rbs +104 -0
  543. data/stdlib/uri/0/https.rbs +14 -0
  544. data/stdlib/uri/0/ldap.rbs +230 -0
  545. data/stdlib/uri/0/ldaps.rbs +14 -0
  546. data/stdlib/uri/0/mailto.rbs +92 -0
  547. data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
  548. data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
  549. data/stdlib/uri/0/ws.rbs +13 -0
  550. data/stdlib/uri/0/wss.rbs +9 -0
  551. data/stdlib/yaml/0/manifest.yaml +2 -0
  552. data/stdlib/yaml/0/yaml.rbs +1 -0
  553. data/stdlib/zlib/0/buf_error.rbs +10 -0
  554. data/stdlib/zlib/0/data_error.rbs +10 -0
  555. data/stdlib/zlib/0/deflate.rbs +211 -0
  556. data/stdlib/zlib/0/error.rbs +20 -0
  557. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  558. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  559. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  560. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  561. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  562. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  563. data/stdlib/zlib/0/gzip_writer.rbs +168 -0
  564. data/stdlib/zlib/0/inflate.rbs +180 -0
  565. data/stdlib/zlib/0/mem_error.rbs +10 -0
  566. data/stdlib/zlib/0/need_dict.rbs +13 -0
  567. data/stdlib/zlib/0/stream_end.rbs +11 -0
  568. data/stdlib/zlib/0/stream_error.rbs +11 -0
  569. data/stdlib/zlib/0/version_error.rbs +11 -0
  570. data/stdlib/zlib/0/zlib.rbs +449 -0
  571. data/stdlib/zlib/0/zstream.rbs +201 -0
  572. data/wasm/README.md +59 -0
  573. data/wasm/rbs_wasm.c +411 -0
  574. metadata +660 -0
@@ -0,0 +1,608 @@
1
+ # <!-- rdoc-file=lib/pstore.rb -->
2
+ # PStore implements a file based persistence mechanism based on a Hash. User
3
+ # code can store hierarchies of Ruby objects (values) into the data store by
4
+ # name (keys). An object hierarchy may be just a single object. User code may
5
+ # later read values back from the data store or even update data, as needed.
6
+ #
7
+ # The transactional behavior ensures that any changes succeed or fail together.
8
+ # This can be used to ensure that the data store is not left in a transitory
9
+ # state, where some values were updated but others were not.
10
+ #
11
+ # Behind the scenes, Ruby objects are stored to the data store file with
12
+ # Marshal. That carries the usual limitations. Proc objects cannot be
13
+ # marshalled, for example.
14
+ #
15
+ # There are three important concepts here (details at the links):
16
+ #
17
+ # * [Store](rdoc-ref:PStore@The+Store): a store is an instance of PStore.
18
+ # * [Entries](rdoc-ref:PStore@Entries): the store is hash-like; each entry is
19
+ # the key for a stored object.
20
+ # * [Transactions](rdoc-ref:PStore@Transactions): each transaction is a
21
+ # collection of prospective changes to the store; a transaction is defined
22
+ # in the block given with a call to PStore#transaction.
23
+ #
24
+ # ## About the Examples
25
+ #
26
+ # Examples on this page need a store that has known properties. They can get a
27
+ # new (and populated) store by calling thus:
28
+ #
29
+ # example_store do |store|
30
+ # # Example code using store goes here.
31
+ # end
32
+ #
33
+ # All we really need to know about `example_store` is that it yields a fresh
34
+ # store with a known population of entries; its implementation:
35
+ #
36
+ # require 'pstore'
37
+ # require 'tempfile'
38
+ # # Yield a pristine store for use in examples.
39
+ # def example_store
40
+ # # Create the store in a temporary file.
41
+ # Tempfile.create do |file|
42
+ # store = PStore.new(file)
43
+ # # Populate the store.
44
+ # store.transaction do
45
+ # store[:foo] = 0
46
+ # store[:bar] = 1
47
+ # store[:baz] = 2
48
+ # end
49
+ # yield store
50
+ # end
51
+ # end
52
+ #
53
+ # ## The Store
54
+ #
55
+ # The contents of the store are maintained in a file whose path is specified
56
+ # when the store is created (see PStore.new). The objects are stored and
57
+ # retrieved using module Marshal, which means that certain objects cannot be
58
+ # added to the store; see [Marshal::dump](rdoc-ref:Marshal.dump).
59
+ #
60
+ # ## Entries
61
+ #
62
+ # A store may have any number of entries. Each entry has a key and a value, just
63
+ # as in a hash:
64
+ #
65
+ # * Key: as in a hash, the key can be (almost) any object; see [Hash
66
+ # Keys](rdoc-ref:Hash@Hash+Keys). You may find it convenient to keep it
67
+ # simple by using only symbols or strings as keys.
68
+ # * Value: the value may be any object that can be marshalled by Marshal (see
69
+ # [Marshal::dump](rdoc-ref:Marshal.dump)) and in fact may be a collection
70
+ # (e.g., an array, a hash, a set, a range, etc). That collection may in turn
71
+ # contain nested objects, including collections, to any depth; those objects
72
+ # must also be Marshal-able. See [Hierarchical
73
+ # Values](rdoc-ref:PStore@Hierarchical+Values).
74
+ #
75
+ # ## Transactions
76
+ #
77
+ # ### The Transaction Block
78
+ #
79
+ # The block given with a call to method #transaction# contains a *transaction*,
80
+ # which consists of calls to PStore methods that read from or write to the store
81
+ # (that is, all PStore methods except #transaction itself, #path, and
82
+ # Pstore.new):
83
+ #
84
+ # example_store do |store|
85
+ # store.transaction do
86
+ # store.keys # => [:foo, :bar, :baz]
87
+ # store[:bat] = 3
88
+ # store.keys # => [:foo, :bar, :baz, :bat]
89
+ # end
90
+ # end
91
+ #
92
+ # Execution of the transaction is deferred until the block exits, and is
93
+ # executed *atomically* (all-or-nothing): either all transaction calls are
94
+ # executed, or none are. This maintains the integrity of the store.
95
+ #
96
+ # Other code in the block (including even calls to #path and PStore.new) is
97
+ # executed immediately, not deferred.
98
+ #
99
+ # The transaction block:
100
+ #
101
+ # * May not contain a nested call to #transaction.
102
+ # * Is the only context where methods that read from or write to the store are
103
+ # allowed.
104
+ #
105
+ # As seen above, changes in a transaction are made automatically when the block
106
+ # exits. The block may be exited early by calling method #commit or #abort.
107
+ #
108
+ # * Method #commit triggers the update to the store and exits the block:
109
+ #
110
+ # example_store do |store|
111
+ # store.transaction do
112
+ # store.keys # => [:foo, :bar, :baz]
113
+ # store[:bat] = 3
114
+ # store.commit
115
+ # fail 'Cannot get here'
116
+ # end
117
+ # store.transaction do
118
+ # # Update was completed.
119
+ # store.keys # => [:foo, :bar, :baz, :bat]
120
+ # end
121
+ # end
122
+ #
123
+ # * Method #abort discards the update to the store and exits the block:
124
+ #
125
+ # example_store do |store|
126
+ # store.transaction do
127
+ # store.keys # => [:foo, :bar, :baz]
128
+ # store[:bat] = 3
129
+ # store.abort
130
+ # fail 'Cannot get here'
131
+ # end
132
+ # store.transaction do
133
+ # # Update was not completed.
134
+ # store.keys # => [:foo, :bar, :baz]
135
+ # end
136
+ # end
137
+ #
138
+ # ### Read-Only Transactions
139
+ #
140
+ # By default, a transaction allows both reading from and writing to the store:
141
+ #
142
+ # store.transaction do
143
+ # # Read-write transaction.
144
+ # # Any code except a call to #transaction is allowed here.
145
+ # end
146
+ #
147
+ # If argument `read_only` is passed as `true`, only reading is allowed:
148
+ #
149
+ # store.transaction(true) do
150
+ # # Read-only transaction:
151
+ # # Calls to #transaction, #[]=, and #delete are not allowed here.
152
+ # end
153
+ #
154
+ # ## Hierarchical Values
155
+ #
156
+ # The value for an entry may be a simple object (as seen above). It may also be
157
+ # a hierarchy of objects nested to any depth:
158
+ #
159
+ # deep_store = PStore.new('deep.store')
160
+ # deep_store.transaction do
161
+ # array_of_hashes = [{}, {}, {}]
162
+ # deep_store[:array_of_hashes] = array_of_hashes
163
+ # deep_store[:array_of_hashes] # => [{}, {}, {}]
164
+ # hash_of_arrays = {foo: [], bar: [], baz: []}
165
+ # deep_store[:hash_of_arrays] = hash_of_arrays
166
+ # deep_store[:hash_of_arrays] # => {:foo=>[], :bar=>[], :baz=>[]}
167
+ # deep_store[:hash_of_arrays][:foo].push(:bat)
168
+ # deep_store[:hash_of_arrays] # => {:foo=>[:bat], :bar=>[], :baz=>[]}
169
+ # end
170
+ #
171
+ # And recall that you can use [dig methods](rdoc-ref:dig_methods.rdoc) in a
172
+ # returned hierarchy of objects.
173
+ #
174
+ # ## Working with the Store
175
+ #
176
+ # ### Creating a Store
177
+ #
178
+ # Use method PStore.new to create a store. The new store creates or opens its
179
+ # containing file:
180
+ #
181
+ # store = PStore.new('t.store')
182
+ #
183
+ # ### Modifying the Store
184
+ #
185
+ # Use method #[]= to update or create an entry:
186
+ #
187
+ # example_store do |store|
188
+ # store.transaction do
189
+ # store[:foo] = 1 # Update.
190
+ # store[:bam] = 1 # Create.
191
+ # end
192
+ # end
193
+ #
194
+ # Use method #delete to remove an entry:
195
+ #
196
+ # example_store do |store|
197
+ # store.transaction do
198
+ # store.delete(:foo)
199
+ # store[:foo] # => nil
200
+ # end
201
+ # end
202
+ #
203
+ # ### Retrieving Values
204
+ #
205
+ # Use method #fetch (allows default) or #[] (defaults to `nil`) to retrieve an
206
+ # entry:
207
+ #
208
+ # example_store do |store|
209
+ # store.transaction do
210
+ # store[:foo] # => 0
211
+ # store[:nope] # => nil
212
+ # store.fetch(:baz) # => 2
213
+ # store.fetch(:nope, nil) # => nil
214
+ # store.fetch(:nope) # Raises exception.
215
+ # end
216
+ # end
217
+ #
218
+ # ### Querying the Store
219
+ #
220
+ # Use method #key? to determine whether a given key exists:
221
+ #
222
+ # example_store do |store|
223
+ # store.transaction do
224
+ # store.key?(:foo) # => true
225
+ # end
226
+ # end
227
+ #
228
+ # Use method #keys to retrieve keys:
229
+ #
230
+ # example_store do |store|
231
+ # store.transaction do
232
+ # store.keys # => [:foo, :bar, :baz]
233
+ # end
234
+ # end
235
+ #
236
+ # Use method #path to retrieve the path to the store's underlying file; this
237
+ # method may be called from outside a transaction block:
238
+ #
239
+ # store = PStore.new('t.store')
240
+ # store.path # => "t.store"
241
+ #
242
+ # ## Transaction Safety
243
+ #
244
+ # For transaction safety, see:
245
+ #
246
+ # * Optional argument `thread_safe` at method PStore.new.
247
+ # * Attribute #ultra_safe.
248
+ #
249
+ # Needless to say, if you're storing valuable data with PStore, then you should
250
+ # backup the PStore file from time to time.
251
+ #
252
+ # ## An Example Store
253
+ #
254
+ # require "pstore"
255
+ #
256
+ # # A mock wiki object.
257
+ # class WikiPage
258
+ #
259
+ # attr_reader :page_name
260
+ #
261
+ # def initialize(page_name, author, contents)
262
+ # @page_name = page_name
263
+ # @revisions = Array.new
264
+ # add_revision(author, contents)
265
+ # end
266
+ #
267
+ # def add_revision(author, contents)
268
+ # @revisions << {created: Time.now,
269
+ # author: author,
270
+ # contents: contents}
271
+ # end
272
+ #
273
+ # def wiki_page_references
274
+ # [@page_name] + @revisions.last[:contents].scan(/\b(?:[A-Z]+[a-z]+){2,}/)
275
+ # end
276
+ #
277
+ # end
278
+ #
279
+ # # Create a new wiki page.
280
+ # home_page = WikiPage.new("HomePage", "James Edward Gray II",
281
+ # "A page about the JoysOfDocumentation..." )
282
+ #
283
+ # wiki = PStore.new("wiki_pages.pstore")
284
+ # # Update page data and the index together, or not at all.
285
+ # wiki.transaction do
286
+ # # Store page.
287
+ # wiki[home_page.page_name] = home_page
288
+ # # Create page index.
289
+ # wiki[:wiki_index] ||= Array.new
290
+ # # Update wiki index.
291
+ # wiki[:wiki_index].push(*home_page.wiki_page_references)
292
+ # end
293
+ #
294
+ # # Read wiki data, setting argument read_only to true.
295
+ # wiki.transaction(true) do
296
+ # wiki.keys.each do |key|
297
+ # puts key
298
+ # puts wiki[key]
299
+ # end
300
+ # end
301
+ #
302
+ class PStore[unchecked out K = untyped, unchecked out V = untyped]
303
+ # <!--
304
+ # rdoc-file=lib/pstore.rb
305
+ # - [](key)
306
+ # -->
307
+ # Returns the value for the given `key` if the key exists. `nil` otherwise; if
308
+ # not `nil`, the returned value is an object or a hierarchy of objects:
309
+ #
310
+ # example_store do |store|
311
+ # store.transaction do
312
+ # store[:foo] # => 0
313
+ # store[:nope] # => nil
314
+ # end
315
+ # end
316
+ #
317
+ # Returns `nil` if there is no such key.
318
+ #
319
+ # See also [Hierarchical Values](rdoc-ref:PStore@Hierarchical+Values).
320
+ #
321
+ # Raises an exception if called outside a transaction block.
322
+ #
323
+ def []: (K name) -> V?
324
+
325
+ # <!--
326
+ # rdoc-file=lib/pstore.rb
327
+ # - []=(key, value)
328
+ # -->
329
+ # Creates or replaces the value for the given `key`:
330
+ #
331
+ # example_store do |store|
332
+ # temp.transaction do
333
+ # temp[:bat] = 3
334
+ # end
335
+ # end
336
+ #
337
+ # See also [Hierarchical Values](rdoc-ref:PStore@Hierarchical+Values).
338
+ #
339
+ # Raises an exception if called outside a transaction block.
340
+ #
341
+ def []=: (K name, V value) -> V
342
+
343
+ # <!--
344
+ # rdoc-file=lib/pstore.rb
345
+ # - abort()
346
+ # -->
347
+ # Exits the current transaction block, discarding any changes specified in the
348
+ # [transaction block](rdoc-ref:PStore@The+Transaction+Block).
349
+ #
350
+ # Raises an exception if called outside a transaction block.
351
+ #
352
+ def abort: () -> void
353
+
354
+ # <!--
355
+ # rdoc-file=lib/pstore.rb
356
+ # - commit()
357
+ # -->
358
+ # Exits the current transaction block, committing any changes specified in the
359
+ # [transaction block](rdoc-ref:PStore@The+Transaction+Block).
360
+ #
361
+ # Raises an exception if called outside a transaction block.
362
+ #
363
+ def commit: () -> void
364
+
365
+ # <!--
366
+ # rdoc-file=lib/pstore.rb
367
+ # - delete(key)
368
+ # -->
369
+ # Removes and returns the value at `key` if it exists:
370
+ #
371
+ # example_store do |store|
372
+ # store.transaction do
373
+ # store[:bat] = 3
374
+ # store.delete(:bat)
375
+ # end
376
+ # end
377
+ #
378
+ # Returns `nil` if there is no such key.
379
+ #
380
+ # Raises an exception if called outside a transaction block.
381
+ #
382
+ def delete: (K name) -> V?
383
+
384
+ # <!--
385
+ # rdoc-file=lib/pstore.rb
386
+ # - fetch(key, default=PStore::Error)
387
+ # -->
388
+ # Like #[], except that it accepts a default value for the store. If the `key`
389
+ # does not exist:
390
+ #
391
+ # * Raises an exception if `default` is `PStore::Error`.
392
+ # * Returns the value of `default` otherwise:
393
+ #
394
+ # example_store do |store|
395
+ # store.transaction do
396
+ # store.fetch(:nope, nil) # => nil
397
+ # store.fetch(:nope) # Raises an exception.
398
+ # end
399
+ # end
400
+ #
401
+ # Raises an exception if called outside a transaction block.
402
+ #
403
+ def fetch: (K name, ?V default) -> V
404
+
405
+ # <!--
406
+ # rdoc-file=lib/pstore.rb
407
+ # - path()
408
+ # -->
409
+ # Returns the string file path used to create the store:
410
+ #
411
+ # store.path # => "flat.store"
412
+ #
413
+ def path: () -> String
414
+
415
+ # <!--
416
+ # rdoc-file=lib/pstore.rb
417
+ # - root?(key)
418
+ # -->
419
+ #
420
+ def key?: (K name) -> bool
421
+
422
+ alias root? key?
423
+
424
+ # <!--
425
+ # rdoc-file=lib/pstore.rb
426
+ # - roots()
427
+ # -->
428
+ #
429
+ def keys: () -> Array[K]
430
+
431
+ alias roots keys
432
+
433
+ # <!--
434
+ # rdoc-file=lib/pstore.rb
435
+ # - transaction(read_only = false) { |pstore| ... }
436
+ # -->
437
+ # Opens a transaction block for the store. See
438
+ # [Transactions](rdoc-ref:PStore@Transactions).
439
+ #
440
+ # With argument `read_only` as `false`, the block may both read from and write
441
+ # to the store.
442
+ #
443
+ # With argument `read_only` as `true`, the block may not include calls to
444
+ # #transaction, #[]=, or #delete.
445
+ #
446
+ # Raises an exception if called within a transaction block.
447
+ #
448
+ def transaction: [U] (?bool read_only) { (self) -> U } -> U
449
+
450
+ # <!-- rdoc-file=lib/pstore.rb -->
451
+ # Whether PStore should do its best to prevent file corruptions, even when an
452
+ # unlikely error (such as memory-error or filesystem error) occurs:
453
+ #
454
+ # * `true`: changes are posted by creating a temporary file, writing the
455
+ # updated data to it, then renaming the file to the given #path. File
456
+ # integrity is maintained. Note: has effect only if the filesystem has
457
+ # atomic file rename (as do POSIX platforms Linux, MacOS, FreeBSD and
458
+ # others).
459
+ #
460
+ # * `false` (the default): changes are posted by rewinding the open file and
461
+ # writing the updated data. File integrity is maintained if the filesystem
462
+ # raises no unexpected I/O error; if such an error occurs during a write to
463
+ # the store, the file may become corrupted.
464
+ #
465
+ def ultra_safe: () -> bool
466
+
467
+ # <!-- rdoc-file=lib/pstore.rb -->
468
+ # Whether PStore should do its best to prevent file corruptions, even when an
469
+ # unlikely error (such as memory-error or filesystem error) occurs:
470
+ #
471
+ # * `true`: changes are posted by creating a temporary file, writing the
472
+ # updated data to it, then renaming the file to the given #path. File
473
+ # integrity is maintained. Note: has effect only if the filesystem has
474
+ # atomic file rename (as do POSIX platforms Linux, MacOS, FreeBSD and
475
+ # others).
476
+ #
477
+ # * `false` (the default): changes are posted by rewinding the open file and
478
+ # writing the updated data. File integrity is maintained if the filesystem
479
+ # raises no unexpected I/O error; if such an error occurs during a write to
480
+ # the store, the file may become corrupted.
481
+ #
482
+ def ultra_safe=: (bool) -> bool
483
+
484
+ private
485
+
486
+ def dump: (untyped table) -> untyped
487
+
488
+ # <!--
489
+ # rdoc-file=lib/pstore.rb
490
+ # - empty_marshal_checksum()
491
+ # -->
492
+ #
493
+ def empty_marshal_checksum: () -> String
494
+
495
+ # <!--
496
+ # rdoc-file=lib/pstore.rb
497
+ # - empty_marshal_data()
498
+ # -->
499
+ #
500
+ def empty_marshal_data: () -> String
501
+
502
+ # <!--
503
+ # rdoc-file=lib/pstore.rb
504
+ # - in_transaction()
505
+ # -->
506
+ # Raises PStore::Error if the calling code is not in a PStore#transaction.
507
+ #
508
+ def in_transaction: () -> void
509
+
510
+ # <!--
511
+ # rdoc-file=lib/pstore.rb
512
+ # - in_transaction_wr()
513
+ # -->
514
+ # Raises PStore::Error if the calling code is not in a PStore#transaction or if
515
+ # the code is in a read-only PStore#transaction.
516
+ #
517
+ def in_transaction_wr: () -> void
518
+
519
+ # <!--
520
+ # rdoc-file=lib/pstore.rb
521
+ # - new(file, thread_safe = false)
522
+ # -->
523
+ # Returns a new PStore object.
524
+ #
525
+ # Argument `file` is the path to the file in which objects are to be stored; if
526
+ # the file exists, it should be one that was written by PStore.
527
+ #
528
+ # path = 't.store'
529
+ # store = PStore.new(path)
530
+ #
531
+ # A PStore object is
532
+ # [reentrant](https://en.wikipedia.org/wiki/Reentrancy_(computing)). If argument
533
+ # `thread_safe` is given as `true`, the object is also thread-safe (at the cost
534
+ # of a small performance penalty):
535
+ #
536
+ # store = PStore.new(path, true)
537
+ #
538
+ def initialize: (path file, ?boolish thread_safe) -> void
539
+
540
+ def load: (untyped content) -> untyped
541
+
542
+ # <!--
543
+ # rdoc-file=lib/pstore.rb
544
+ # - load_data(file, read_only)
545
+ # -->
546
+ # Load the given PStore file. If `read_only` is true, the unmarshalled Hash will
547
+ # be returned. If `read_only` is false, a 3-tuple will be returned: the
548
+ # unmarshalled Hash, a checksum of the data, and the size of the data.
549
+ #
550
+ def load_data: (path file, true read_only) -> Hash[untyped, untyped]
551
+ | (path file, false read_only) -> [Hash[untyped, untyped], String, Integer]
552
+
553
+ # <!--
554
+ # rdoc-file=lib/pstore.rb
555
+ # - on_windows?()
556
+ # -->
557
+ #
558
+ def on_windows?: () -> bool
559
+
560
+ # <!--
561
+ # rdoc-file=lib/pstore.rb
562
+ # - open_and_lock_file(filename, read_only)
563
+ # -->
564
+ # Open the specified filename (either in read-only mode or in read-write mode)
565
+ # and lock it for reading or writing.
566
+ #
567
+ # The opened File object will be returned. If *read_only* is true, and the file
568
+ # does not exist, then nil will be returned.
569
+ #
570
+ # All exceptions are propagated.
571
+ #
572
+ def open_and_lock_file: (string filename, bool read_only) -> File?
573
+
574
+ # <!--
575
+ # rdoc-file=lib/pstore.rb
576
+ # - save_data(original_checksum, original_file_size, file)
577
+ # -->
578
+ #
579
+ def save_data: (untyped original_checksum, untyped original_file_size, untyped file) -> untyped
580
+
581
+ # <!--
582
+ # rdoc-file=lib/pstore.rb
583
+ # - save_data_with_atomic_file_rename_strategy(data, file)
584
+ # -->
585
+ #
586
+ def save_data_with_atomic_file_rename_strategy: (string data, File file) -> void
587
+
588
+ # <!--
589
+ # rdoc-file=lib/pstore.rb
590
+ # - save_data_with_fast_strategy(data, file)
591
+ # -->
592
+ #
593
+ def save_data_with_fast_strategy: (string data, File file) -> void
594
+
595
+ EMPTY_MARSHAL_CHECKSUM: String
596
+
597
+ EMPTY_MARSHAL_DATA: String
598
+
599
+ EMPTY_STRING: String
600
+
601
+ RDWR_ACCESS: { mode: Integer, encoding: Encoding }
602
+
603
+ RD_ACCESS: { mode: Integer, encoding: Encoding }
604
+
605
+ VERSION: String
606
+
607
+ WR_ACCESS: { mode: Integer, encoding: Encoding }
608
+ end
@@ -0,0 +1,12 @@
1
+ %a{annotate:rdoc:skip}
2
+ class Object
3
+ # <!--
4
+ # rdoc-file=ext/psych/lib/psych/core_ext.rb
5
+ # - to_yaml(options = {})
6
+ # -->
7
+ # Convert an object to YAML. See Psych.dump for more information on the
8
+ # available `options`.
9
+ #
10
+ def to_yaml: (?indentation: Integer, ?line_width: Integer, ?canonical: bool, ?header: bool) -> String
11
+ | [IO] (IO, ?indentation: Integer, ?line_width: Integer, ?canonical: bool, ?header: bool) -> IO
12
+ end