retoolrpc 0.1.0

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 (563) hide show
  1. package/.prettierignore +2 -0
  2. package/.prettierrc +6 -0
  3. package/.yarn/cache/@babel-code-frame-npm-7.12.13-fb5ba5a992-d0491bb59f.zip +0 -0
  4. package/.yarn/cache/@babel-compat-data-npm-7.14.4-2d95ac42cf-38f6388bb5.zip +0 -0
  5. package/.yarn/cache/@babel-core-npm-7.14.3-9181aae4d9-b91ed6adc7.zip +0 -0
  6. package/.yarn/cache/@babel-generator-npm-7.14.3-3bb0a82750-2c104bbe53.zip +0 -0
  7. package/.yarn/cache/@babel-helper-compilation-targets-npm-7.14.4-cf321ee7be-0a6a3215d6.zip +0 -0
  8. package/.yarn/cache/@babel-helper-function-name-npm-7.14.2-52642340ac-70365d36ad.zip +0 -0
  9. package/.yarn/cache/@babel-helper-get-function-arity-npm-7.12.13-7d8bcf34b7-847ef9f4d4.zip +0 -0
  10. package/.yarn/cache/@babel-helper-member-expression-to-functions-npm-7.13.12-0092ecd45c-76a5ad6ae6.zip +0 -0
  11. package/.yarn/cache/@babel-helper-module-imports-npm-7.13.12-6f45f76073-9abb5e3acb.zip +0 -0
  12. package/.yarn/cache/@babel-helper-module-transforms-npm-7.14.2-81e49440fe-cb6930cb45.zip +0 -0
  13. package/.yarn/cache/@babel-helper-optimise-call-expression-npm-7.12.13-52e64fc268-9925679d67.zip +0 -0
  14. package/.yarn/cache/@babel-helper-plugin-utils-npm-7.13.0-5266a343c1-24f7a44e94.zip +0 -0
  15. package/.yarn/cache/@babel-helper-replace-supers-npm-7.14.4-cc29bf55f9-017dc1af59.zip +0 -0
  16. package/.yarn/cache/@babel-helper-simple-access-npm-7.13.12-038331126e-afd0a8d1c7.zip +0 -0
  17. package/.yarn/cache/@babel-helper-split-export-declaration-npm-7.12.13-bb30c88575-adc8954a0b.zip +0 -0
  18. package/.yarn/cache/@babel-helper-string-parser-npm-7.19.4-0db110dc3a-b2f8a3920b.zip +0 -0
  19. package/.yarn/cache/@babel-helper-validator-identifier-npm-7.14.0-88c0d4b395-6276d57677.zip +0 -0
  20. package/.yarn/cache/@babel-helper-validator-identifier-npm-7.19.1-d84f19e1dc-0eca5e86a7.zip +0 -0
  21. package/.yarn/cache/@babel-helper-validator-option-npm-7.12.17-098722d989-940e7b78dc.zip +0 -0
  22. package/.yarn/cache/@babel-helpers-npm-7.14.0-37cb1e5143-276716f77c.zip +0 -0
  23. package/.yarn/cache/@babel-highlight-npm-7.14.0-54986133d5-5aae226c0d.zip +0 -0
  24. package/.yarn/cache/@babel-parser-npm-7.14.4-c39adeee10-b96ba7f3e9.zip +0 -0
  25. package/.yarn/cache/@babel-plugin-syntax-async-generators-npm-7.8.4-d10cf993c9-7ed1c1d9b9.zip +0 -0
  26. package/.yarn/cache/@babel-plugin-syntax-bigint-npm-7.8.3-b05d971e6c-3a10849d83.zip +0 -0
  27. package/.yarn/cache/@babel-plugin-syntax-class-properties-npm-7.12.13-002ee9d930-24f34b196d.zip +0 -0
  28. package/.yarn/cache/@babel-plugin-syntax-import-meta-npm-7.10.4-4a0a0158bc-166ac1125d.zip +0 -0
  29. package/.yarn/cache/@babel-plugin-syntax-json-strings-npm-7.8.3-6dc7848179-bf5aea1f31.zip +0 -0
  30. package/.yarn/cache/@babel-plugin-syntax-logical-assignment-operators-npm-7.10.4-72ae00fdf6-aff3357703.zip +0 -0
  31. package/.yarn/cache/@babel-plugin-syntax-nullish-coalescing-operator-npm-7.8.3-8a723173b5-87aca49189.zip +0 -0
  32. package/.yarn/cache/@babel-plugin-syntax-numeric-separator-npm-7.10.4-81444be605-01ec5547bd.zip +0 -0
  33. package/.yarn/cache/@babel-plugin-syntax-object-rest-spread-npm-7.8.3-60bd05b6ae-fddcf581a5.zip +0 -0
  34. package/.yarn/cache/@babel-plugin-syntax-optional-catch-binding-npm-7.8.3-ce337427d8-910d90e72b.zip +0 -0
  35. package/.yarn/cache/@babel-plugin-syntax-optional-chaining-npm-7.8.3-f3f3c79579-eef94d53a1.zip +0 -0
  36. package/.yarn/cache/@babel-plugin-syntax-top-level-await-npm-7.12.13-6ac12f7c33-74cf8c8b87.zip +0 -0
  37. package/.yarn/cache/@babel-plugin-syntax-typescript-npm-7.12.13-17e8d888d4-3bd08315a8.zip +0 -0
  38. package/.yarn/cache/@babel-template-npm-7.12.13-069e9c8875-e037731631.zip +0 -0
  39. package/.yarn/cache/@babel-traverse-npm-7.14.2-5dffae5dce-054d5e4442.zip +0 -0
  40. package/.yarn/cache/@babel-types-npm-7.14.4-e879643fd2-52ae21c824.zip +0 -0
  41. package/.yarn/cache/@babel-types-npm-7.21.4-ee756f419d-587bc55a91.zip +0 -0
  42. package/.yarn/cache/@bcoe-v8-coverage-npm-0.2.3-9e27b3c57e-850f930553.zip +0 -0
  43. package/.yarn/cache/@gar-promisify-npm-1.1.3-ac1a325862-4059f790e2.zip +0 -0
  44. package/.yarn/cache/@istanbuljs-load-nyc-config-npm-1.1.0-42d17c9cb1-d578da5e2e.zip +0 -0
  45. package/.yarn/cache/@istanbuljs-schema-npm-0.1.3-466bd3eaaa-5282759d96.zip +0 -0
  46. package/.yarn/cache/@jest-console-npm-27.0.2-3f0dc49490-71b812a49c.zip +0 -0
  47. package/.yarn/cache/@jest-core-npm-27.0.4-ffa396ed48-5b550925c0.zip +0 -0
  48. package/.yarn/cache/@jest-environment-npm-27.0.3-02985c658c-53914eb4b0.zip +0 -0
  49. package/.yarn/cache/@jest-fake-timers-npm-27.0.3-5d90fdb420-8994639f84.zip +0 -0
  50. package/.yarn/cache/@jest-globals-npm-27.0.3-cac79a361c-d1aa1e3b74.zip +0 -0
  51. package/.yarn/cache/@jest-reporters-npm-27.0.4-13f50d68df-2ffa36ae5a.zip +0 -0
  52. package/.yarn/cache/@jest-source-map-npm-27.0.1-b1fbee8f81-32a83be9c8.zip +0 -0
  53. package/.yarn/cache/@jest-test-result-npm-27.0.2-4add172036-2522808ff4.zip +0 -0
  54. package/.yarn/cache/@jest-test-sequencer-npm-27.0.4-438adff1f0-f1f1296158.zip +0 -0
  55. package/.yarn/cache/@jest-transform-npm-27.0.2-6839550ac0-a232fcaa16.zip +0 -0
  56. package/.yarn/cache/@jest-types-npm-27.0.2-11212898dc-22cbc02d5d.zip +0 -0
  57. package/.yarn/cache/@npmcli-fs-npm-2.1.2-08d434e77b-405074965e.zip +0 -0
  58. package/.yarn/cache/@npmcli-move-file-npm-2.0.1-b593d8f741-52dc02259d.zip +0 -0
  59. package/.yarn/cache/@rollup-plugin-typescript-npm-8.2.0-33c0b5170f-d50240a9b3.zip +0 -0
  60. package/.yarn/cache/@rollup-pluginutils-npm-3.1.0-b44b222e7d-8be16e2786.zip +0 -0
  61. package/.yarn/cache/@sinonjs-commons-npm-1.8.3-30cf78d93f-6159726db5.zip +0 -0
  62. package/.yarn/cache/@sinonjs-fake-timers-npm-7.1.2-2a6b119ac7-c84773d797.zip +0 -0
  63. package/.yarn/cache/@tootallnate-once-npm-1.1.2-0517220057-e1fb1bbbc1.zip +0 -0
  64. package/.yarn/cache/@tootallnate-once-npm-2.0.0-e36cf4f140-ad87447820.zip +0 -0
  65. package/.yarn/cache/@tsconfig-node10-npm-1.0.7-06be8de131-54c3d90a93.zip +0 -0
  66. package/.yarn/cache/@tsconfig-node12-npm-1.0.7-3bbdd844d7-e58704bf51.zip +0 -0
  67. package/.yarn/cache/@tsconfig-node14-npm-1.0.0-cf320499dc-a6e564b91e.zip +0 -0
  68. package/.yarn/cache/@tsconfig-node16-npm-1.0.1-0fb4cd7d44-5fdfd91e48.zip +0 -0
  69. package/.yarn/cache/@types-babel__core-npm-7.1.14-a93ee22530-de4a1a4905.zip +0 -0
  70. package/.yarn/cache/@types-babel__generator-npm-7.6.2-13c77730f7-b7764309e5.zip +0 -0
  71. package/.yarn/cache/@types-babel__template-npm-7.4.0-e906ff43dc-5262dc75e6.zip +0 -0
  72. package/.yarn/cache/@types-babel__traverse-npm-7.11.1-b9c64a2aa7-7bcf7fd0c8.zip +0 -0
  73. package/.yarn/cache/@types-body-parser-npm-1.19.2-f845b7b538-e17840c7d7.zip +0 -0
  74. package/.yarn/cache/@types-connect-npm-3.4.35-7337eee0a3-fe81351470.zip +0 -0
  75. package/.yarn/cache/@types-cors-npm-2.8.13-4b8ac1068f-7ef197ea19.zip +0 -0
  76. package/.yarn/cache/@types-estree-npm-0.0.39-f898500e96-412fb5b986.zip +0 -0
  77. package/.yarn/cache/@types-express-npm-4.17.17-46fe8173db-0196dacc27.zip +0 -0
  78. package/.yarn/cache/@types-express-serve-static-core-npm-4.17.33-0366bd5654-dce580d16b.zip +0 -0
  79. package/.yarn/cache/@types-graceful-fs-npm-4.1.5-91d62e1050-d076bb61f4.zip +0 -0
  80. package/.yarn/cache/@types-istanbul-lib-coverage-npm-2.0.3-67a37eb00a-0650cba4be.zip +0 -0
  81. package/.yarn/cache/@types-istanbul-lib-report-npm-3.0.0-50de3e6b3b-656398b62d.zip +0 -0
  82. package/.yarn/cache/@types-istanbul-reports-npm-3.0.1-770e825002-f1ad54bc68.zip +0 -0
  83. package/.yarn/cache/@types-mime-npm-3.0.1-dec03536dc-4040fac73f.zip +0 -0
  84. package/.yarn/cache/@types-node-npm-15.12.1-149da5b459-a8eb7b5bbd.zip +0 -0
  85. package/.yarn/cache/@types-prettier-npm-2.2.3-6036e6d94a-78f1d731f9.zip +0 -0
  86. package/.yarn/cache/@types-qs-npm-6.9.7-4a3e6ca0d0-7fd6f9c250.zip +0 -0
  87. package/.yarn/cache/@types-range-parser-npm-1.2.4-23d797fbde-b7c0dfd508.zip +0 -0
  88. package/.yarn/cache/@types-serve-static-npm-1.15.1-27b3deb72c-2e078bdc1e.zip +0 -0
  89. package/.yarn/cache/@types-stack-utils-npm-2.0.0-8ded8461bc-b3fbae25b0.zip +0 -0
  90. package/.yarn/cache/@types-yargs-npm-16.0.3-b6f52df1c2-0968b06d2f.zip +0 -0
  91. package/.yarn/cache/@types-yargs-parser-npm-20.2.0-4ca5b35c4e-54cf3f8d2c.zip +0 -0
  92. package/.yarn/cache/abab-npm-2.0.5-ae8d5b629e-0ec951b46d.zip +0 -0
  93. package/.yarn/cache/abbrev-npm-1.1.1-3659247eab-a4a97ec07d.zip +0 -0
  94. package/.yarn/cache/accepts-npm-1.3.8-9a812371c9-50c43d32e7.zip +0 -0
  95. package/.yarn/cache/acorn-globals-npm-6.0.0-acbec28ad5-72d95e5b5e.zip +0 -0
  96. package/.yarn/cache/acorn-npm-7.4.1-f450b4646c-1860f23c21.zip +0 -0
  97. package/.yarn/cache/acorn-npm-8.3.0-cf97a23822-9217542382.zip +0 -0
  98. package/.yarn/cache/acorn-walk-npm-7.2.0-5f8b515308-9252158a79.zip +0 -0
  99. package/.yarn/cache/agent-base-npm-6.0.2-428f325a93-f52b6872cc.zip +0 -0
  100. package/.yarn/cache/agentkeepalive-npm-4.3.0-ac3d8e6807-982453aa44.zip +0 -0
  101. package/.yarn/cache/aggregate-error-npm-3.1.0-415a406f4e-1101a33f21.zip +0 -0
  102. package/.yarn/cache/ansi-escapes-npm-4.3.2-3ad173702f-93111c4218.zip +0 -0
  103. package/.yarn/cache/ansi-regex-npm-5.0.0-9c076068d9-b1bb4e992a.zip +0 -0
  104. package/.yarn/cache/ansi-regex-npm-5.0.1-c963a48615-2aa4bb54ca.zip +0 -0
  105. package/.yarn/cache/ansi-styles-npm-3.2.1-8cb8107983-d85ade01c1.zip +0 -0
  106. package/.yarn/cache/ansi-styles-npm-4.3.0-245c7d42c7-513b44c3b2.zip +0 -0
  107. package/.yarn/cache/ansi-styles-npm-5.2.0-72fc7003e3-d7f4e97ce0.zip +0 -0
  108. package/.yarn/cache/anymatch-npm-3.1.2-1d5471acfa-985163db22.zip +0 -0
  109. package/.yarn/cache/aproba-npm-2.0.0-8716bcfde6-5615cadcfb.zip +0 -0
  110. package/.yarn/cache/are-we-there-yet-npm-3.0.1-3395b1512f-52590c2486.zip +0 -0
  111. package/.yarn/cache/arg-npm-4.1.3-1748b966a8-544af8dd3f.zip +0 -0
  112. package/.yarn/cache/argparse-npm-1.0.10-528934e59d-7ca6e45583.zip +0 -0
  113. package/.yarn/cache/array-flatten-npm-1.1.1-9d94ad5f1d-a9925bf351.zip +0 -0
  114. package/.yarn/cache/asynckit-npm-0.4.0-c718858525-7b78c451df.zip +0 -0
  115. package/.yarn/cache/babel-jest-npm-27.0.2-760775130b-ff2bd3c6bf.zip +0 -0
  116. package/.yarn/cache/babel-plugin-istanbul-npm-6.0.0-2c177ffcc3-bc586cf088.zip +0 -0
  117. package/.yarn/cache/babel-plugin-jest-hoist-npm-27.0.1-a04d3c5add-488905f748.zip +0 -0
  118. package/.yarn/cache/babel-preset-current-node-syntax-npm-1.0.1-849ec71e32-d118c27424.zip +0 -0
  119. package/.yarn/cache/babel-preset-jest-npm-27.0.1-9446ad2444-141c11dce5.zip +0 -0
  120. package/.yarn/cache/balanced-match-npm-1.0.2-a53c126459-9706c088a2.zip +0 -0
  121. package/.yarn/cache/body-parser-npm-1.20.1-759fd14db9-f1050dbac3.zip +0 -0
  122. package/.yarn/cache/brace-expansion-npm-1.1.11-fb95eb05ad-faf34a7bb0.zip +0 -0
  123. package/.yarn/cache/brace-expansion-npm-2.0.1-17aa2616f9-a61e7cd2e8.zip +0 -0
  124. package/.yarn/cache/braces-npm-3.0.2-782240b28a-e2a8e769a8.zip +0 -0
  125. package/.yarn/cache/browser-process-hrtime-npm-1.0.0-db700805c2-e30f868cdb.zip +0 -0
  126. package/.yarn/cache/browserslist-npm-4.16.6-a20cef1ca7-3dffc86892.zip +0 -0
  127. package/.yarn/cache/bs-logger-npm-0.2.6-7670f88b66-d34bdaf68c.zip +0 -0
  128. package/.yarn/cache/bser-npm-2.1.1-cc902055ce-9ba4dc58ce.zip +0 -0
  129. package/.yarn/cache/buffer-from-npm-1.1.1-22917b8ed8-ccc53b6973.zip +0 -0
  130. package/.yarn/cache/bytes-npm-3.1.2-28b8643004-e4bcd3948d.zip +0 -0
  131. package/.yarn/cache/cacache-npm-16.1.3-4e2088ed0d-d91409e6e5.zip +0 -0
  132. package/.yarn/cache/call-bind-npm-1.0.2-c957124861-f8e31de9d1.zip +0 -0
  133. package/.yarn/cache/callsites-npm-3.1.0-268f989910-072d17b6ab.zip +0 -0
  134. package/.yarn/cache/camelcase-npm-5.3.1-5db8af62c5-e6effce26b.zip +0 -0
  135. package/.yarn/cache/camelcase-npm-6.2.0-69f8c130ac-8335cfd0ec.zip +0 -0
  136. package/.yarn/cache/caniuse-lite-npm-1.0.30001235-56c9d2c91e-4703293ada.zip +0 -0
  137. package/.yarn/cache/chalk-npm-2.4.2-3ea16dd91e-ec3661d38f.zip +0 -0
  138. package/.yarn/cache/chalk-npm-4.1.1-f1ce6bae57-036e973e66.zip +0 -0
  139. package/.yarn/cache/char-regex-npm-1.0.2-ecade5f97f-b563e4b603.zip +0 -0
  140. package/.yarn/cache/chownr-npm-2.0.0-638f1c9c61-c57cf9dd07.zip +0 -0
  141. package/.yarn/cache/ci-info-npm-3.2.0-90f4cf0660-c68995a94e.zip +0 -0
  142. package/.yarn/cache/cjs-module-lexer-npm-1.2.1-11eb01eaf4-9e9905e3f5.zip +0 -0
  143. package/.yarn/cache/clean-stack-npm-2.2.0-a8ce435a5c-2ac8cd2b2f.zip +0 -0
  144. package/.yarn/cache/cliui-npm-7.0.4-d6b8a9edb6-ce2e8f578a.zip +0 -0
  145. package/.yarn/cache/co-npm-4.6.0-03f2d1feb6-5210d92230.zip +0 -0
  146. package/.yarn/cache/collect-v8-coverage-npm-1.0.1-39dec86bad-4efe0a1fcc.zip +0 -0
  147. package/.yarn/cache/color-convert-npm-1.9.3-1fe690075e-fd7a64a17c.zip +0 -0
  148. package/.yarn/cache/color-convert-npm-2.0.1-79730e935b-79e6bdb9fd.zip +0 -0
  149. package/.yarn/cache/color-name-npm-1.1.3-728b7b5d39-09c5d3e33d.zip +0 -0
  150. package/.yarn/cache/color-name-npm-1.1.4-025792b0ea-b044585952.zip +0 -0
  151. package/.yarn/cache/color-support-npm-1.1.3-3be5c53455-9b73568176.zip +0 -0
  152. package/.yarn/cache/colorette-npm-1.2.2-da75bd0b32-69fec14dda.zip +0 -0
  153. package/.yarn/cache/combined-stream-npm-1.0.8-dc14d4a63a-49fa4aeb49.zip +0 -0
  154. package/.yarn/cache/concat-map-npm-0.0.1-85a921b7ee-902a9f5d89.zip +0 -0
  155. package/.yarn/cache/console-control-strings-npm-1.1.0-e3160e5275-8755d76787.zip +0 -0
  156. package/.yarn/cache/content-disposition-npm-0.5.4-2d93678616-afb9d545e2.zip +0 -0
  157. package/.yarn/cache/content-type-npm-1.0.4-3b1a5ca16b-3d93585fda.zip +0 -0
  158. package/.yarn/cache/convert-source-map-npm-1.7.0-f9727424f7-bcd2e3ea7d.zip +0 -0
  159. package/.yarn/cache/cookie-npm-0.5.0-e2d58a161a-1f4bd2ca57.zip +0 -0
  160. package/.yarn/cache/cookie-signature-npm-1.0.6-93f325f7f0-f4e1b0a98a.zip +0 -0
  161. package/.yarn/cache/cors-npm-2.8.5-c9935a2d12-ced838404c.zip +0 -0
  162. package/.yarn/cache/create-require-npm-1.1.1-839884ca2e-a9a1503d43.zip +0 -0
  163. package/.yarn/cache/cross-env-npm-7.0.3-96d81820f4-26f2f3ea2a.zip +0 -0
  164. package/.yarn/cache/cross-spawn-npm-7.0.3-e4ff3e65b3-671cc7c728.zip +0 -0
  165. package/.yarn/cache/cssom-npm-0.3.8-a9291d36ff-24beb3087c.zip +0 -0
  166. package/.yarn/cache/cssom-npm-0.4.4-818f01a6e3-e3bc1076e7.zip +0 -0
  167. package/.yarn/cache/cssstyle-npm-2.3.0-b5d112c450-5f05e6fd2e.zip +0 -0
  168. package/.yarn/cache/data-urls-npm-2.0.0-2b80c32b82-97caf828aa.zip +0 -0
  169. package/.yarn/cache/debug-npm-2.6.9-7d4cb597dc-d2f51589ca.zip +0 -0
  170. package/.yarn/cache/debug-npm-4.3.1-22e08d605e-2c3352e37d.zip +0 -0
  171. package/.yarn/cache/debug-npm-4.3.4-4513954577-3dbad3f94e.zip +0 -0
  172. package/.yarn/cache/decimal.js-npm-10.2.1-6eff4c0574-d2421adf20.zip +0 -0
  173. package/.yarn/cache/dedent-npm-0.7.0-2dbb45a4c5-87de191050.zip +0 -0
  174. package/.yarn/cache/deep-is-npm-0.1.3-0941784645-c15b04c384.zip +0 -0
  175. package/.yarn/cache/deepmerge-npm-4.2.2-112165ced2-a8c43a1ed8.zip +0 -0
  176. package/.yarn/cache/delayed-stream-npm-1.0.0-c5a4c4cc02-46fe6e83e2.zip +0 -0
  177. package/.yarn/cache/delegates-npm-1.0.0-9b1942d75f-a51744d9b5.zip +0 -0
  178. package/.yarn/cache/depd-npm-2.0.0-b6c51a4b43-abbe19c768.zip +0 -0
  179. package/.yarn/cache/destroy-npm-1.2.0-6a511802e2-0acb300b74.zip +0 -0
  180. package/.yarn/cache/detect-newline-npm-3.1.0-6d33fa8d37-ae6cd429c4.zip +0 -0
  181. package/.yarn/cache/diff-npm-4.0.2-73133c7102-f2c09b0ce4.zip +0 -0
  182. package/.yarn/cache/diff-sequences-npm-27.0.1-65556e2cb7-013d0f5461.zip +0 -0
  183. package/.yarn/cache/domexception-npm-2.0.1-81b20626ae-d638e9cb05.zip +0 -0
  184. package/.yarn/cache/ee-first-npm-1.1.1-33f8535b39-1b4cac778d.zip +0 -0
  185. package/.yarn/cache/electron-to-chromium-npm-1.3.749-321060d087-f15c327e86.zip +0 -0
  186. package/.yarn/cache/emittery-npm-0.8.1-9771f0f260-2457e8c7b0.zip +0 -0
  187. package/.yarn/cache/emoji-regex-npm-8.0.0-213764015c-d4c5c39d5a.zip +0 -0
  188. package/.yarn/cache/encodeurl-npm-1.0.2-f8c8454c41-e50e3d508c.zip +0 -0
  189. package/.yarn/cache/encoding-npm-0.1.13-82a1837d30-bb98632f8f.zip +0 -0
  190. package/.yarn/cache/env-paths-npm-2.2.1-7c7577428c-65b5df55a8.zip +0 -0
  191. package/.yarn/cache/err-code-npm-2.0.3-082e0ff9a7-8b7b1be20d.zip +0 -0
  192. package/.yarn/cache/escalade-npm-3.1.1-e02da076aa-a3e2a99f07.zip +0 -0
  193. package/.yarn/cache/escape-html-npm-1.0.3-376c22ee74-6213ca9ae0.zip +0 -0
  194. package/.yarn/cache/escape-string-regexp-npm-1.0.5-3284de402f-6092fda75c.zip +0 -0
  195. package/.yarn/cache/escape-string-regexp-npm-2.0.0-aef69d2a25-9f8a2d5743.zip +0 -0
  196. package/.yarn/cache/escodegen-npm-2.0.0-6450b02925-5aa6b2966f.zip +0 -0
  197. package/.yarn/cache/esprima-npm-4.0.1-1084e98778-b45bc805a6.zip +0 -0
  198. package/.yarn/cache/estraverse-npm-5.2.0-b2e8e36350-ec11b70d94.zip +0 -0
  199. package/.yarn/cache/estree-walker-npm-1.0.1-e916593b23-7e70da5396.zip +0 -0
  200. package/.yarn/cache/esutils-npm-2.0.3-f865beafd5-22b5b08f74.zip +0 -0
  201. package/.yarn/cache/etag-npm-1.8.1-54a3b989d9-571aeb3dbe.zip +0 -0
  202. package/.yarn/cache/execa-npm-5.1.1-191347acf5-fba9022c8c.zip +0 -0
  203. package/.yarn/cache/exit-npm-0.1.2-ef3761a67d-abc407f07a.zip +0 -0
  204. package/.yarn/cache/expect-npm-27.0.2-d2be5f87e0-50fa15906d.zip +0 -0
  205. package/.yarn/cache/express-npm-4.18.2-bb15ff679a-3c4b9b0768.zip +0 -0
  206. package/.yarn/cache/fast-json-stable-stringify-npm-2.1.0-02e8905fda-b191531e36.zip +0 -0
  207. package/.yarn/cache/fast-levenshtein-npm-2.0.6-fcd74b8df5-92cfec0a8d.zip +0 -0
  208. package/.yarn/cache/fb-watchman-npm-2.0.1-30005d50fe-8510230778.zip +0 -0
  209. package/.yarn/cache/fill-range-npm-7.0.1-b8b1817caa-cc283f4e65.zip +0 -0
  210. package/.yarn/cache/finalhandler-npm-1.2.0-593d001463-92effbfd32.zip +0 -0
  211. package/.yarn/cache/find-up-npm-4.1.0-c3ccf8d855-4c172680e8.zip +0 -0
  212. package/.yarn/cache/form-data-npm-3.0.1-d080d436e0-b019e8d35c.zip +0 -0
  213. package/.yarn/cache/forwarded-npm-0.2.0-6473dabe35-fd27e2394d.zip +0 -0
  214. package/.yarn/cache/fresh-npm-0.5.2-ad2bb4c0a2-13ea8b08f9.zip +0 -0
  215. package/.yarn/cache/fs-minipass-npm-2.1.0-501ef87306-1b8d128dae.zip +0 -0
  216. package/.yarn/cache/fs.realpath-npm-1.0.0-c8f05d8126-99ddea01a7.zip +0 -0
  217. package/.yarn/cache/fsevents-npm-2.3.2-a881d6ac9f-97ade64e75.zip +0 -0
  218. package/.yarn/cache/fsevents-patch-3340e2eb10-8.zip +0 -0
  219. package/.yarn/cache/function-bind-npm-1.1.1-b56b322ae9-b32fbaebb3.zip +0 -0
  220. package/.yarn/cache/gauge-npm-4.0.4-8f878385e9-788b6bfe52.zip +0 -0
  221. package/.yarn/cache/gensync-npm-1.0.0-beta.2-224666d72f-a7437e58c6.zip +0 -0
  222. package/.yarn/cache/get-caller-file-npm-2.0.5-80e8a86305-b9769a836d.zip +0 -0
  223. package/.yarn/cache/get-intrinsic-npm-1.2.0-eb08ea9b1d-78fc0487b7.zip +0 -0
  224. package/.yarn/cache/get-package-type-npm-0.1.0-6c70cdc8ab-bba0811116.zip +0 -0
  225. package/.yarn/cache/get-stream-npm-6.0.1-83e51a4642-e04ecece32.zip +0 -0
  226. package/.yarn/cache/glob-npm-7.1.7-5698ad9c48-b61f48973b.zip +0 -0
  227. package/.yarn/cache/glob-npm-8.1.0-65f64af8b1-92fbea3221.zip +0 -0
  228. package/.yarn/cache/globals-npm-11.12.0-1fa7f41a6c-67051a45ec.zip +0 -0
  229. package/.yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-ac85f94da9.zip +0 -0
  230. package/.yarn/cache/graceful-fs-npm-4.2.6-535b2234f1-792e64aafd.zip +0 -0
  231. package/.yarn/cache/has-flag-npm-3.0.0-16ac11fe05-4a15638b45.zip +0 -0
  232. package/.yarn/cache/has-flag-npm-4.0.0-32af9f0536-261a135703.zip +0 -0
  233. package/.yarn/cache/has-npm-1.0.3-b7f00631c1-b9ad53d53b.zip +0 -0
  234. package/.yarn/cache/has-symbols-npm-1.0.3-1986bff2c4-a054c40c63.zip +0 -0
  235. package/.yarn/cache/has-unicode-npm-2.0.1-893adb4747-1eab07a743.zip +0 -0
  236. package/.yarn/cache/html-encoding-sniffer-npm-2.0.1-381bf15a76-bf30cce461.zip +0 -0
  237. package/.yarn/cache/html-escaper-npm-2.0.2-38e51ef294-d2df2da3ad.zip +0 -0
  238. package/.yarn/cache/http-cache-semantics-npm-4.1.1-1120131375-83ac0bc60b.zip +0 -0
  239. package/.yarn/cache/http-errors-npm-2.0.0-3f1c503428-9b0a378266.zip +0 -0
  240. package/.yarn/cache/http-proxy-agent-npm-4.0.1-ce9ef61788-c6a5da5a19.zip +0 -0
  241. package/.yarn/cache/http-proxy-agent-npm-5.0.0-7f1f121b83-e2ee1ff165.zip +0 -0
  242. package/.yarn/cache/https-proxy-agent-npm-5.0.0-bb777903c3-165bfb090b.zip +0 -0
  243. package/.yarn/cache/human-signals-npm-2.1.0-f75815481d-b87fd89fce.zip +0 -0
  244. package/.yarn/cache/humanize-ms-npm-1.2.1-e942bd7329-9c7a74a282.zip +0 -0
  245. package/.yarn/cache/iconv-lite-npm-0.4.24-c5c4ac6695-bd9f120f5a.zip +0 -0
  246. package/.yarn/cache/iconv-lite-npm-0.6.3-24b8aae27e-3f60d47a5c.zip +0 -0
  247. package/.yarn/cache/import-local-npm-3.0.2-c8afc1fd5f-c74d9f9484.zip +0 -0
  248. package/.yarn/cache/imurmurhash-npm-0.1.4-610c5068a0-7cae75c8cd.zip +0 -0
  249. package/.yarn/cache/indent-string-npm-4.0.0-7b717435b2-824cfb9929.zip +0 -0
  250. package/.yarn/cache/infer-owner-npm-1.0.4-685ac3d2af-181e732764.zip +0 -0
  251. package/.yarn/cache/inflight-npm-1.0.6-ccedb4b908-f4f76aa072.zip +0 -0
  252. package/.yarn/cache/inherits-npm-2.0.4-c66b3957a0-4a48a73384.zip +0 -0
  253. package/.yarn/cache/ip-npm-2.0.0-204facb3cc-cfcfac6b87.zip +0 -0
  254. package/.yarn/cache/ipaddr.js-npm-1.9.1-19ae7878b4-f88d382598.zip +0 -0
  255. package/.yarn/cache/is-ci-npm-3.0.0-8cc50ac1f6-4b45aef32d.zip +0 -0
  256. package/.yarn/cache/is-core-module-npm-2.2.0-497065e3b0-61e2aff4a7.zip +0 -0
  257. package/.yarn/cache/is-fullwidth-code-point-npm-3.0.0-1ecf4ebee5-44a30c2945.zip +0 -0
  258. package/.yarn/cache/is-generator-fn-npm-2.1.0-37895c2d2b-a6ad5492cf.zip +0 -0
  259. package/.yarn/cache/is-lambda-npm-1.0.1-7ab55bc8a8-93a32f0194.zip +0 -0
  260. package/.yarn/cache/is-number-npm-7.0.0-060086935c-456ac6f8e0.zip +0 -0
  261. package/.yarn/cache/is-potential-custom-element-name-npm-1.0.1-f352f606f8-ced7bbbb64.zip +0 -0
  262. package/.yarn/cache/is-stream-npm-2.0.0-1401f82ad7-4dc47738e2.zip +0 -0
  263. package/.yarn/cache/is-typedarray-npm-1.0.0-bbd99de5b6-3508c6cd0a.zip +0 -0
  264. package/.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip +0 -0
  265. package/.yarn/cache/istanbul-lib-coverage-npm-3.0.0-654bb0146d-ea57c24288.zip +0 -0
  266. package/.yarn/cache/istanbul-lib-instrument-npm-4.0.3-4d4c2263f8-fa1171d302.zip +0 -0
  267. package/.yarn/cache/istanbul-lib-report-npm-3.0.0-660f97340a-3f29eb3f53.zip +0 -0
  268. package/.yarn/cache/istanbul-lib-source-maps-npm-4.0.0-def3895674-292bfb4083.zip +0 -0
  269. package/.yarn/cache/istanbul-reports-npm-3.0.2-6ccd67e17e-c5da63f1f4.zip +0 -0
  270. package/.yarn/cache/jest-changed-files-npm-27.0.2-d43bfae442-75f12ee648.zip +0 -0
  271. package/.yarn/cache/jest-circus-npm-27.0.4-c2a1fe4bb5-db445e01e9.zip +0 -0
  272. package/.yarn/cache/jest-cli-npm-27.0.4-1c40df1857-37099bf9fc.zip +0 -0
  273. package/.yarn/cache/jest-config-npm-27.0.4-a3cf5198bf-f71584a091.zip +0 -0
  274. package/.yarn/cache/jest-diff-npm-27.0.2-10b7ae1f33-0b423e480d.zip +0 -0
  275. package/.yarn/cache/jest-docblock-npm-27.0.1-20d82eae71-e1d3d85b03.zip +0 -0
  276. package/.yarn/cache/jest-each-npm-27.0.2-e44fb469a9-e6acc2f015.zip +0 -0
  277. package/.yarn/cache/jest-environment-jsdom-npm-27.0.3-cf9425c76e-964c020cf7.zip +0 -0
  278. package/.yarn/cache/jest-environment-node-npm-27.0.3-1f3bf742d9-8cb316ef03.zip +0 -0
  279. package/.yarn/cache/jest-get-type-npm-27.0.1-aa40b7f8ce-22c5e04700.zip +0 -0
  280. package/.yarn/cache/jest-haste-map-npm-27.0.2-d6810375d3-bdb251147a.zip +0 -0
  281. package/.yarn/cache/jest-jasmine2-npm-27.0.4-2ee7daa2ae-a1c1b1380d.zip +0 -0
  282. package/.yarn/cache/jest-leak-detector-npm-27.0.2-d26b012860-22a9bd22b5.zip +0 -0
  283. package/.yarn/cache/jest-matcher-utils-npm-27.0.2-e0586ec40a-7c12409e42.zip +0 -0
  284. package/.yarn/cache/jest-message-util-npm-27.0.2-b37b426cca-b3c3733ec5.zip +0 -0
  285. package/.yarn/cache/jest-mock-npm-27.0.3-e7f02fb624-d783d3b3f6.zip +0 -0
  286. package/.yarn/cache/jest-npm-27.0.4-f6f5ed6be6-2d7800777d.zip +0 -0
  287. package/.yarn/cache/jest-pnp-resolver-npm-1.2.2-da20f8bdfe-bd85dcc0e7.zip +0 -0
  288. package/.yarn/cache/jest-regex-util-npm-27.0.1-d1632ee0e1-b9a73d4dc0.zip +0 -0
  289. package/.yarn/cache/jest-resolve-dependencies-npm-27.0.4-aa41296e81-974025f2ce.zip +0 -0
  290. package/.yarn/cache/jest-resolve-npm-27.0.4-1909eb3211-9d6698a824.zip +0 -0
  291. package/.yarn/cache/jest-runner-npm-27.0.4-2961cd612d-118084ce36.zip +0 -0
  292. package/.yarn/cache/jest-runtime-npm-27.0.4-614e4abe4f-d56ceea4a2.zip +0 -0
  293. package/.yarn/cache/jest-serializer-npm-27.0.1-aa547af7bf-de16a8e3a3.zip +0 -0
  294. package/.yarn/cache/jest-snapshot-npm-27.0.4-41adfef6e7-1a51fb78ac.zip +0 -0
  295. package/.yarn/cache/jest-util-npm-27.0.2-543ecb60f0-8751d6d97f.zip +0 -0
  296. package/.yarn/cache/jest-validate-npm-27.0.2-11208a2a7c-1ae6d0bc16.zip +0 -0
  297. package/.yarn/cache/jest-watcher-npm-27.0.2-55e546b64d-4d3ee72f74.zip +0 -0
  298. package/.yarn/cache/jest-worker-npm-27.0.2-256c4c36d7-ea1b72afc9.zip +0 -0
  299. package/.yarn/cache/js-tokens-npm-4.0.0-0ac852e9e2-8a95213a5a.zip +0 -0
  300. package/.yarn/cache/js-yaml-npm-3.14.1-b968c6095e-bef146085f.zip +0 -0
  301. package/.yarn/cache/jsdom-npm-16.6.0-f5f949a44e-4abf126bba.zip +0 -0
  302. package/.yarn/cache/jsesc-npm-2.5.2-c5acb78804-4dc1907711.zip +0 -0
  303. package/.yarn/cache/json5-npm-2.2.0-da49dc7cb5-e88fc5274b.zip +0 -0
  304. package/.yarn/cache/kleur-npm-3.0.3-f6f53649a4-df82cd1e17.zip +0 -0
  305. package/.yarn/cache/leven-npm-3.1.0-b7697736a3-638401d534.zip +0 -0
  306. package/.yarn/cache/levn-npm-0.3.0-48d774b1c2-0d084a5242.zip +0 -0
  307. package/.yarn/cache/locate-path-npm-5.0.0-46580c43e4-83e51725e6.zip +0 -0
  308. package/.yarn/cache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip +0 -0
  309. package/.yarn/cache/lru-cache-npm-6.0.0-b4c8668fe1-f97f499f89.zip +0 -0
  310. package/.yarn/cache/lru-cache-npm-7.18.3-e68be5b11c-e550d77238.zip +0 -0
  311. package/.yarn/cache/make-dir-npm-3.1.0-d1d7505142-484200020a.zip +0 -0
  312. package/.yarn/cache/make-error-npm-1.3.6-ccb85d9458-b86e5e0e25.zip +0 -0
  313. package/.yarn/cache/make-fetch-happen-npm-10.2.1-f1cc7cd2df-2332eb9a8e.zip +0 -0
  314. package/.yarn/cache/makeerror-npm-1.0.11-f7d070b73c-9a62ec2d96.zip +0 -0
  315. package/.yarn/cache/media-typer-npm-0.3.0-8674f8f0f5-af1b38516c.zip +0 -0
  316. package/.yarn/cache/merge-descriptors-npm-1.0.1-615287aaa8-5abc259d2a.zip +0 -0
  317. package/.yarn/cache/merge-stream-npm-2.0.0-2ac83efea5-6fa4dcc8d8.zip +0 -0
  318. package/.yarn/cache/methods-npm-1.1.2-92f6fdb39b-0917ff4041.zip +0 -0
  319. package/.yarn/cache/micromatch-npm-4.0.4-9fdcbb7a0e-ef3d1c88e7.zip +0 -0
  320. package/.yarn/cache/mime-db-npm-1.48.0-d896dd3151-d778392e47.zip +0 -0
  321. package/.yarn/cache/mime-db-npm-1.52.0-b5371d6fd2-0d99a03585.zip +0 -0
  322. package/.yarn/cache/mime-npm-1.6.0-60ae95038a-fef25e3926.zip +0 -0
  323. package/.yarn/cache/mime-types-npm-2.1.31-fbe9a57bbf-eb1612aa96.zip +0 -0
  324. package/.yarn/cache/mime-types-npm-2.1.35-dd9ea9f3e2-89a5b7f1de.zip +0 -0
  325. package/.yarn/cache/mimic-fn-npm-2.1.0-4fbeb3abb4-d2421a3444.zip +0 -0
  326. package/.yarn/cache/minimatch-npm-3.0.4-6e76f51c23-66ac295f8a.zip +0 -0
  327. package/.yarn/cache/minimatch-npm-5.1.6-1e71429f4c-7564208ef8.zip +0 -0
  328. package/.yarn/cache/minimist-npm-1.2.5-ced0e1f617-86706ce5b3.zip +0 -0
  329. package/.yarn/cache/minipass-collect-npm-1.0.2-3b4676eab5-14df761028.zip +0 -0
  330. package/.yarn/cache/minipass-fetch-npm-2.1.2-9b21a5c930-3f216be791.zip +0 -0
  331. package/.yarn/cache/minipass-flush-npm-1.0.5-efe79d9826-56269a0b22.zip +0 -0
  332. package/.yarn/cache/minipass-npm-3.3.6-b8d93a945b-a30d083c80.zip +0 -0
  333. package/.yarn/cache/minipass-npm-4.2.5-25860eb433-4f9c19af23.zip +0 -0
  334. package/.yarn/cache/minipass-pipeline-npm-1.2.4-5924cb077f-b14240dac0.zip +0 -0
  335. package/.yarn/cache/minipass-sized-npm-1.0.3-306d86f432-79076749fc.zip +0 -0
  336. package/.yarn/cache/minizlib-npm-2.1.2-ea89cd0cfb-f1fdeac0b0.zip +0 -0
  337. package/.yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-a96865108c.zip +0 -0
  338. package/.yarn/cache/ms-npm-2.0.0-9e1101a471-0e6a22b8b7.zip +0 -0
  339. package/.yarn/cache/ms-npm-2.1.2-ec0c1512ff-673cdb2c31.zip +0 -0
  340. package/.yarn/cache/ms-npm-2.1.3-81ff3cfac1-aa92de6080.zip +0 -0
  341. package/.yarn/cache/natural-compare-npm-1.4.0-97b75b362d-23ad088b08.zip +0 -0
  342. package/.yarn/cache/negotiator-npm-0.6.3-9d50e36171-b8ffeb1e26.zip +0 -0
  343. package/.yarn/cache/node-gyp-npm-9.3.1-43540bab9c-b860e9976f.zip +0 -0
  344. package/.yarn/cache/node-int64-npm-0.4.0-0dc04ec3b2-d0b30b1ee6.zip +0 -0
  345. package/.yarn/cache/node-modules-regexp-npm-1.0.0-2f5f5ba9c6-9954190353.zip +0 -0
  346. package/.yarn/cache/node-releases-npm-1.1.72-662e905d8e-84dacd44e6.zip +0 -0
  347. package/.yarn/cache/nopt-npm-6.0.0-5ea8050815-82149371f8.zip +0 -0
  348. package/.yarn/cache/normalize-path-npm-3.0.0-658ba7d77f-88eeb4da89.zip +0 -0
  349. package/.yarn/cache/npm-run-path-npm-4.0.1-7aebd8bab3-5374c0cea4.zip +0 -0
  350. package/.yarn/cache/npmlog-npm-6.0.2-e0e69455c7-ae238cd264.zip +0 -0
  351. package/.yarn/cache/nwsapi-npm-2.2.0-8f05590043-5ef4a9bc0c.zip +0 -0
  352. package/.yarn/cache/object-assign-npm-4.1.1-1004ad6dec-fcc6e4ea8c.zip +0 -0
  353. package/.yarn/cache/object-inspect-npm-1.12.3-1e7d20f5ff-dabfd824d9.zip +0 -0
  354. package/.yarn/cache/on-finished-npm-2.4.1-907af70f88-d20929a25e.zip +0 -0
  355. package/.yarn/cache/once-npm-1.4.0-ccf03ef07a-cd0a885013.zip +0 -0
  356. package/.yarn/cache/onetime-npm-5.1.2-3ed148fa42-2478859ef8.zip +0 -0
  357. package/.yarn/cache/optionator-npm-0.8.3-bc555bc5b7-b8695ddf3d.zip +0 -0
  358. package/.yarn/cache/p-each-series-npm-2.2.0-b9907a1ae6-5fbe2f1f19.zip +0 -0
  359. package/.yarn/cache/p-limit-npm-2.3.0-94a0310039-84ff17f1a3.zip +0 -0
  360. package/.yarn/cache/p-locate-npm-4.1.0-eec6872537-513bd14a45.zip +0 -0
  361. package/.yarn/cache/p-map-npm-4.0.0-4677ae07c7-cb0ab21ec0.zip +0 -0
  362. package/.yarn/cache/p-try-npm-2.2.0-e0390dbaf8-f8a8e9a769.zip +0 -0
  363. package/.yarn/cache/parse5-npm-6.0.1-70a35a494a-7d569a176c.zip +0 -0
  364. package/.yarn/cache/parseurl-npm-1.3.3-1542397e00-407cee8e0a.zip +0 -0
  365. package/.yarn/cache/path-exists-npm-4.0.0-e9e4f63eb0-505807199d.zip +0 -0
  366. package/.yarn/cache/path-is-absolute-npm-1.0.1-31bc695ffd-060840f92c.zip +0 -0
  367. package/.yarn/cache/path-key-npm-3.1.1-0e66ea8321-55cd7a9dd4.zip +0 -0
  368. package/.yarn/cache/path-parse-npm-1.0.6-4a4c90546c-962a85dd38.zip +0 -0
  369. package/.yarn/cache/path-to-regexp-npm-0.1.7-2605347373-69a14ea24d.zip +0 -0
  370. package/.yarn/cache/picomatch-npm-2.3.0-5e60e6c82d-16818720ea.zip +0 -0
  371. package/.yarn/cache/pirates-npm-4.0.1-377058e8fc-091e232aac.zip +0 -0
  372. package/.yarn/cache/pkg-dir-npm-4.2.0-2b5d0a8d32-9863e3f351.zip +0 -0
  373. package/.yarn/cache/prelude-ls-npm-1.1.2-a0daac0886-c4867c8748.zip +0 -0
  374. package/.yarn/cache/prettier-npm-2.3.1-f8593fac45-3b37731ff7.zip +0 -0
  375. package/.yarn/cache/pretty-format-npm-27.0.2-d193adf249-26a454f1da.zip +0 -0
  376. package/.yarn/cache/promise-inflight-npm-1.0.1-5bb925afac-2274948309.zip +0 -0
  377. package/.yarn/cache/promise-retry-npm-2.0.1-871f0b01b7-f96a3f6d90.zip +0 -0
  378. package/.yarn/cache/prompts-npm-2.4.1-dd3df3be17-05bf486587.zip +0 -0
  379. package/.yarn/cache/proxy-addr-npm-2.0.7-dae6552872-29c6990ce9.zip +0 -0
  380. package/.yarn/cache/psl-npm-1.8.0-226099d70e-6150048ed2.zip +0 -0
  381. package/.yarn/cache/punycode-npm-2.1.1-26eb3e15cf-823bf443c6.zip +0 -0
  382. package/.yarn/cache/qs-npm-6.11.0-caf1bc9dea-6e1f29dd53.zip +0 -0
  383. package/.yarn/cache/range-parser-npm-1.2.1-1a470fa390-0a268d4fea.zip +0 -0
  384. package/.yarn/cache/raw-body-npm-2.5.1-9dd1d9fff9-5362adff15.zip +0 -0
  385. package/.yarn/cache/react-is-npm-17.0.2-091bbb8db6-9d6d111d89.zip +0 -0
  386. package/.yarn/cache/readable-stream-npm-3.6.2-d2a6069158-bdcbe6c22e.zip +0 -0
  387. package/.yarn/cache/require-directory-npm-2.1.1-8608aee50b-fb47e70bf0.zip +0 -0
  388. package/.yarn/cache/resolve-cwd-npm-3.0.0-e6f4e296bf-546e081601.zip +0 -0
  389. package/.yarn/cache/resolve-from-npm-5.0.0-15c9db4d33-4ceeb9113e.zip +0 -0
  390. package/.yarn/cache/resolve-npm-1.20.0-1bc5878aa9-40cf70b2cd.zip +0 -0
  391. package/.yarn/cache/resolve-patch-b4a69197d3-a0dd7d16a8.zip +0 -0
  392. package/.yarn/cache/retry-npm-0.12.0-72ac7fb4cc-623bd7d2e5.zip +0 -0
  393. package/.yarn/cache/rimraf-npm-3.0.2-2cb7dac69a-87f4164e39.zip +0 -0
  394. package/.yarn/cache/rollup-npm-2.39.0-d94e133c08-62f136bffc.zip +0 -0
  395. package/.yarn/cache/safe-buffer-npm-5.1.2-c27fedf6c4-f2f1f7943c.zip +0 -0
  396. package/.yarn/cache/safe-buffer-npm-5.2.1-3481c8aa9b-b99c4b41fd.zip +0 -0
  397. package/.yarn/cache/safer-buffer-npm-2.1.2-8d5c0b705e-cab8f25ae6.zip +0 -0
  398. package/.yarn/cache/saxes-npm-5.0.1-57abf031ae-5636b55cf1.zip +0 -0
  399. package/.yarn/cache/semver-npm-6.3.0-b3eace8bfd-1b26ecf6db.zip +0 -0
  400. package/.yarn/cache/semver-npm-7.3.5-618cf5db6a-5eafe6102b.zip +0 -0
  401. package/.yarn/cache/semver-npm-7.3.8-25a996cb4f-ba9c7cbbf2.zip +0 -0
  402. package/.yarn/cache/send-npm-0.18.0-faadf6353f-74fc07ebb5.zip +0 -0
  403. package/.yarn/cache/serve-static-npm-1.15.0-86c81879f5-af57fc13be.zip +0 -0
  404. package/.yarn/cache/set-blocking-npm-2.0.0-49e2cffa24-6e65a05f7c.zip +0 -0
  405. package/.yarn/cache/setprototypeof-npm-1.2.0-0fedbdcd3a-be18cbbf70.zip +0 -0
  406. package/.yarn/cache/shebang-command-npm-2.0.0-eb2b01921d-6b52fe8727.zip +0 -0
  407. package/.yarn/cache/shebang-regex-npm-3.0.0-899a0cd65e-1a2bcae50d.zip +0 -0
  408. package/.yarn/cache/side-channel-npm-1.0.4-e1f38b9e06-351e41b947.zip +0 -0
  409. package/.yarn/cache/signal-exit-npm-3.0.3-5a2d797648-f0169d3f12.zip +0 -0
  410. package/.yarn/cache/signal-exit-npm-3.0.7-bd270458a3-a2f098f247.zip +0 -0
  411. package/.yarn/cache/sisteransi-npm-1.0.5-af60cc0cfa-aba6438f46.zip +0 -0
  412. package/.yarn/cache/slash-npm-3.0.0-b87de2279a-94a93fff61.zip +0 -0
  413. package/.yarn/cache/smart-buffer-npm-4.2.0-5ac3f668bb-b5167a7142.zip +0 -0
  414. package/.yarn/cache/socks-npm-2.7.1-17f2b53052-259d9e3e8e.zip +0 -0
  415. package/.yarn/cache/socks-proxy-agent-npm-7.0.0-7aacf32ea0-7205543701.zip +0 -0
  416. package/.yarn/cache/source-map-npm-0.5.7-7c3f035429-5dc2043b93.zip +0 -0
  417. package/.yarn/cache/source-map-npm-0.6.1-1a3621db16-59ce8640cf.zip +0 -0
  418. package/.yarn/cache/source-map-npm-0.7.3-e3b4f7982a-cd24efb3b8.zip +0 -0
  419. package/.yarn/cache/source-map-support-npm-0.5.19-65b33ae61e-c72802fdba.zip +0 -0
  420. package/.yarn/cache/sprintf-js-npm-1.0.3-73f0a322fa-19d79aec21.zip +0 -0
  421. package/.yarn/cache/ssri-npm-9.0.1-33ce27f4f8-fb58f5e46b.zip +0 -0
  422. package/.yarn/cache/stack-utils-npm-2.0.3-e255395afd-c86ac08f58.zip +0 -0
  423. package/.yarn/cache/statuses-npm-2.0.1-81d2b97fee-18c7623fdb.zip +0 -0
  424. package/.yarn/cache/string-length-npm-4.0.2-675173c7a2-ce85533ef5.zip +0 -0
  425. package/.yarn/cache/string-width-npm-4.2.2-aa12d6b759-343e089b0e.zip +0 -0
  426. package/.yarn/cache/string-width-npm-4.2.3-2c27177bae-e52c10dc3f.zip +0 -0
  427. package/.yarn/cache/string_decoder-npm-1.3.0-2422117fd0-8417646695.zip +0 -0
  428. package/.yarn/cache/strip-ansi-npm-6.0.0-904613e9eb-04c3239ede.zip +0 -0
  429. package/.yarn/cache/strip-ansi-npm-6.0.1-caddc7cb40-f3cd25890a.zip +0 -0
  430. package/.yarn/cache/strip-bom-npm-4.0.0-97d367a64d-9dbcfbaf50.zip +0 -0
  431. package/.yarn/cache/strip-final-newline-npm-2.0.0-340c4f7c66-69412b5e25.zip +0 -0
  432. package/.yarn/cache/supports-color-npm-5.5.0-183ac537bc-95f6f4ba5a.zip +0 -0
  433. package/.yarn/cache/supports-color-npm-7.2.0-606bfcf7da-3dda818de0.zip +0 -0
  434. package/.yarn/cache/supports-color-npm-8.1.1-289e937149-c052193a7e.zip +0 -0
  435. package/.yarn/cache/supports-hyperlinks-npm-2.2.0-9b22a6271b-aef04fb41f.zip +0 -0
  436. package/.yarn/cache/symbol-tree-npm-3.2.4-fe70cdb75b-6e8fc7e148.zip +0 -0
  437. package/.yarn/cache/tar-npm-6.1.13-3234e72781-8a278bed12.zip +0 -0
  438. package/.yarn/cache/terminal-link-npm-2.1.1-de80341758-ce3d2cd3a4.zip +0 -0
  439. package/.yarn/cache/test-exclude-npm-6.0.0-3fb03d69df-3b34a3d771.zip +0 -0
  440. package/.yarn/cache/throat-npm-6.0.1-1308a37a10-782d4171ee.zip +0 -0
  441. package/.yarn/cache/tmpl-npm-1.0.4-35b37c2875-72c9333504.zip +0 -0
  442. package/.yarn/cache/to-fast-properties-npm-2.0.0-0dc60cc481-be2de62fe5.zip +0 -0
  443. package/.yarn/cache/to-regex-range-npm-5.0.1-f1e8263b00-f76fa01b3d.zip +0 -0
  444. package/.yarn/cache/toidentifier-npm-1.0.1-f759712599-952c29e2a8.zip +0 -0
  445. package/.yarn/cache/tough-cookie-npm-4.0.0-7c5f3086af-0891b37eb7.zip +0 -0
  446. package/.yarn/cache/tr46-npm-2.1.0-00af583f4f-ffe6049b9d.zip +0 -0
  447. package/.yarn/cache/ts-jest-npm-27.0.2-a85e2f76a4-dbc3fb1e61.zip +0 -0
  448. package/.yarn/cache/ts-node-npm-10.0.0-9c3d77d0a0-96d633774e.zip +0 -0
  449. package/.yarn/cache/tslib-npm-2.1.0-81c9ac9b82-aa189c8179.zip +0 -0
  450. package/.yarn/cache/type-check-npm-0.3.2-a4a38bb0b6-dd3b149564.zip +0 -0
  451. package/.yarn/cache/type-detect-npm-4.0.8-8d8127b901-62b5628bff.zip +0 -0
  452. package/.yarn/cache/type-fest-npm-0.21.3-5ff2a9c6fd-e6b32a3b38.zip +0 -0
  453. package/.yarn/cache/type-is-npm-1.6.18-6dee4d4961-2c8e47675d.zip +0 -0
  454. package/.yarn/cache/typedarray-to-buffer-npm-3.1.5-aadc11995e-99c11aaa8f.zip +0 -0
  455. package/.yarn/cache/typescript-npm-5.0.3-84e500d967-3cce0576d2.zip +0 -0
  456. package/.yarn/cache/typescript-patch-f563c275ac-9ec0a8eed3.zip +0 -0
  457. package/.yarn/cache/unique-filename-npm-2.0.1-183c6c7c2b-807acf3381.zip +0 -0
  458. package/.yarn/cache/unique-slug-npm-3.0.0-0b82e51577-49f8d915ba.zip +0 -0
  459. package/.yarn/cache/universalify-npm-0.1.2-9b22d31d2d-40cdc60f6e.zip +0 -0
  460. package/.yarn/cache/unpipe-npm-1.0.0-2ed2a3c2bf-4fa18d8d8d.zip +0 -0
  461. package/.yarn/cache/util-deprecate-npm-1.0.2-e3fe1a219c-474acf1146.zip +0 -0
  462. package/.yarn/cache/utils-merge-npm-1.0.1-363bbdfbca-c810954932.zip +0 -0
  463. package/.yarn/cache/v8-to-istanbul-npm-7.1.2-f29c35e9aa-e52b48764f.zip +0 -0
  464. package/.yarn/cache/vary-npm-1.1.2-b49f70ae63-ae0123222c.zip +0 -0
  465. package/.yarn/cache/w3c-hr-time-npm-1.0.2-87f88e51d9-ec3c2dacbf.zip +0 -0
  466. package/.yarn/cache/w3c-xmlserializer-npm-2.0.0-f8f7bc8b42-ae25c51cf7.zip +0 -0
  467. package/.yarn/cache/walker-npm-1.0.7-a97443bd99-4038fcf92f.zip +0 -0
  468. package/.yarn/cache/webidl-conversions-npm-5.0.0-9649787484-ccf1ec2ca7.zip +0 -0
  469. package/.yarn/cache/webidl-conversions-npm-6.1.0-0594fd577c-1f526507aa.zip +0 -0
  470. package/.yarn/cache/whatwg-encoding-npm-1.0.5-85e0fb7d7d-5be4efe111.zip +0 -0
  471. package/.yarn/cache/whatwg-mimetype-npm-2.3.0-52eaa1d941-23eb885940.zip +0 -0
  472. package/.yarn/cache/whatwg-url-npm-8.5.0-10be05312c-3bda9bfd98.zip +0 -0
  473. package/.yarn/cache/which-npm-2.0.2-320ddf72f7-1a5c563d3c.zip +0 -0
  474. package/.yarn/cache/wide-align-npm-1.1.5-889d77e592-d5fc37cd56.zip +0 -0
  475. package/.yarn/cache/word-wrap-npm-1.2.3-7fb15ab002-30b48f91fc.zip +0 -0
  476. package/.yarn/cache/wrap-ansi-npm-7.0.0-ad6e1a0554-a790b846fd.zip +0 -0
  477. package/.yarn/cache/wrappy-npm-1.0.2-916de4d4b3-159da4805f.zip +0 -0
  478. package/.yarn/cache/write-file-atomic-npm-3.0.3-d948a237da-c55b24617c.zip +0 -0
  479. package/.yarn/cache/ws-npm-7.4.6-9c9a725604-3a990b32ed.zip +0 -0
  480. package/.yarn/cache/xml-name-validator-npm-3.0.0-10e74a38ea-b3ac459afe.zip +0 -0
  481. package/.yarn/cache/xmlchars-npm-2.2.0-8b78f0f5e4-8c70ac9407.zip +0 -0
  482. package/.yarn/cache/y18n-npm-5.0.8-5f3a0a7e62-54f0fb9562.zip +0 -0
  483. package/.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip +0 -0
  484. package/.yarn/cache/yargs-npm-16.2.0-547873d425-b14afbb51e.zip +0 -0
  485. package/.yarn/cache/yargs-parser-npm-20.2.7-5ab0b83136-ec0ea9e1b5.zip +0 -0
  486. package/.yarn/cache/yn-npm-3.1.1-8ad4259784-2c487b0e14.zip +0 -0
  487. package/.yarn/install-state.gz +0 -0
  488. package/LICENSE +21 -0
  489. package/README.md +31 -0
  490. package/dist/cjs/example.js +124 -0
  491. package/dist/cjs/index.js +134 -0
  492. package/dist/cjs/package.json +1 -0
  493. package/dist/cjs/rpc-044798c3.js +526 -0
  494. package/dist/cjs/rpc-0efa90dd.js +526 -0
  495. package/dist/cjs/rpc-25d007b6.js +537 -0
  496. package/dist/cjs/rpc-2ed27fc8.js +538 -0
  497. package/dist/cjs/rpc-39814774.js +537 -0
  498. package/dist/cjs/rpc-43646121.js +539 -0
  499. package/dist/cjs/rpc-5117881b.js +526 -0
  500. package/dist/cjs/rpc-5504b82e.js +514 -0
  501. package/dist/cjs/rpc-5628288a.js +538 -0
  502. package/dist/cjs/rpc-5bfe852e.js +528 -0
  503. package/dist/cjs/rpc-5d397af6.js +528 -0
  504. package/dist/cjs/rpc-ce896005.js +517 -0
  505. package/dist/cjs/sdk-46322c77.js +535 -0
  506. package/dist/cjs/sdk-a6de67bc.js +515 -0
  507. package/dist/cjs/sdk-c55b3e15.js +515 -0
  508. package/dist/cjs/sdk.js +468 -0
  509. package/dist/example.d.ts +1 -0
  510. package/dist/example.js +118 -0
  511. package/dist/index.d.ts +3 -0
  512. package/dist/index.js +129 -0
  513. package/dist/package.json +57 -0
  514. package/dist/rpc-5467a71f.js +519 -0
  515. package/dist/rpc-6ad4d5ed.js +521 -0
  516. package/dist/rpc-6d9f35c6.js +510 -0
  517. package/dist/rpc-9139c966.js +531 -0
  518. package/dist/rpc-99282f71.js +519 -0
  519. package/dist/rpc-a007c277.js +521 -0
  520. package/dist/rpc-a877a316.js +529 -0
  521. package/dist/rpc-b3bf4c41.js +529 -0
  522. package/dist/rpc-d24089bc.js +532 -0
  523. package/dist/rpc-ddc52117.js +508 -0
  524. package/dist/rpc-e138a275.js +519 -0
  525. package/dist/rpc-fb0623fd.js +531 -0
  526. package/dist/scripts/bumpVersion.d.ts +1 -0
  527. package/dist/sdk-939066ea.js +509 -0
  528. package/dist/sdk-9804f7c5.js +509 -0
  529. package/dist/sdk-db908f37.js +510 -0
  530. package/dist/sdk.js +440 -0
  531. package/dist/src/addons/sequelize.d.ts +13 -0
  532. package/dist/src/example.d.ts +1 -0
  533. package/dist/src/rpc.d.ts +56 -0
  534. package/dist/src/rpc.spec.d.ts +1 -0
  535. package/dist/src/sdk.d.ts +57 -0
  536. package/dist/src/sdk.spec.d.ts +1 -0
  537. package/dist/src/types.d.ts +93 -0
  538. package/dist/src/utils/api.d.ts +43 -0
  539. package/dist/src/utils/errors.d.ts +8 -0
  540. package/dist/src/utils/helpers.d.ts +6 -0
  541. package/dist/src/utils/logger.d.ts +15 -0
  542. package/dist/src/utils/polling.d.ts +3 -0
  543. package/dist/src/utils/schema.d.ts +2 -0
  544. package/dist/src/version.d.ts +1 -0
  545. package/example.ts +134 -0
  546. package/index.ts +3 -0
  547. package/package.json +57 -0
  548. package/rollup.config.js +34 -0
  549. package/scripts/bumpVersion.ts +22 -0
  550. package/src/addons/README.md +5 -0
  551. package/src/addons/sequelize.ts +152 -0
  552. package/src/rpc.spec.ts +752 -0
  553. package/src/rpc.ts +262 -0
  554. package/src/types.ts +114 -0
  555. package/src/utils/api.ts +105 -0
  556. package/src/utils/errors.ts +53 -0
  557. package/src/utils/helpers.ts +41 -0
  558. package/src/utils/logger.ts +49 -0
  559. package/src/utils/polling.ts +43 -0
  560. package/src/utils/schema.ts +166 -0
  561. package/src/version.ts +1 -0
  562. package/tsconfig.cjs.json +7 -0
  563. package/tsconfig.json +23 -0
package/src/rpc.ts ADDED
@@ -0,0 +1,262 @@
1
+ import { v4 as uuidv4 } from 'uuid'
2
+
3
+ import {
4
+ RetoolRPCConfig,
5
+ Arguments,
6
+ RetoolContext,
7
+ AgentServerError,
8
+ RegisterFunctionSpec,
9
+ AgentServerStatus,
10
+ } from './types'
11
+
12
+ import { createAgentServerError, FunctionNotFoundError } from './utils/errors'
13
+ import { parseFunctionArguments } from './utils/schema'
14
+ import { isClientError } from './utils/helpers'
15
+ import { loopWithBackoff } from './utils/polling'
16
+ import { Logger } from './utils/logger'
17
+ import { RetoolAPI } from './utils/api'
18
+ import { RetoolRPCVersion } from './version'
19
+
20
+ const MINIMUM_POLLING_INTERVAL_MS = 100
21
+ const DEFAULT_POLLING_INTERVAL_MS = 1000
22
+ const DEFAULT_ENVIRONMENT_NAME = 'production'
23
+ const DEFAULT_VERSION = '0.0.1'
24
+
25
+ /**
26
+ * Represents the Retool RPC for interacting with Retool functions and contexts.
27
+ */
28
+ export class RetoolRPC {
29
+ private _apiKey: string
30
+ private _hostUrl: string
31
+ private _resourceId: string
32
+ private _environmentName: string
33
+ private _pollingIntervalMs: number
34
+ private _version: string
35
+ private _agentUuid: string
36
+ private _versionHash: string | undefined
37
+ private _functions: Record<string, Omit<RegisterFunctionSpec<any>, 'name'>> = {}
38
+ private _retoolApi: RetoolAPI
39
+ private _logger: Logger
40
+
41
+ /**
42
+ * Creates an instance of the RetoolRPC class.
43
+ */
44
+ constructor(config: RetoolRPCConfig) {
45
+ this._apiKey = config.apiToken
46
+ this._hostUrl = config.host.replace(/\/$/, '') // Remove trailing / from host
47
+ this._resourceId = config.resourceId
48
+ this._environmentName = config.environmentName || DEFAULT_ENVIRONMENT_NAME
49
+ this._pollingIntervalMs = config.pollingIntervalMs
50
+ ? Math.max(config.pollingIntervalMs, MINIMUM_POLLING_INTERVAL_MS)
51
+ : DEFAULT_POLLING_INTERVAL_MS
52
+ this._version = config.version || DEFAULT_VERSION
53
+ this._agentUuid = config.agentUuid || uuidv4()
54
+
55
+ this._retoolApi = new RetoolAPI({ hostUrl: this._hostUrl, apiKey: this._apiKey })
56
+ this._logger = new Logger({ logLevel: config.logLevel })
57
+
58
+ this._logger.debug('Retool RPC Configuration', {
59
+ apiKey: this._apiKey,
60
+ hostUrl: this._hostUrl,
61
+ resourceId: this._resourceId,
62
+ environmentName: this._environmentName,
63
+ agentUuid: this._agentUuid,
64
+ version: this._version,
65
+ pollingIntervalMs: this._pollingIntervalMs,
66
+ })
67
+ }
68
+
69
+ /**
70
+ * Asynchronously starts listening for incoming Retool function invocations.
71
+ */
72
+ async listen(): Promise<void> {
73
+ this._logger.info('Starting RPC agent')
74
+ const registerResult = await loopWithBackoff(this._pollingIntervalMs, this._logger, () => this.registerAgent())
75
+ if (registerResult === 'done') {
76
+ this._logger.info('Agent registered')
77
+ this._logger.info('Starting processing query')
78
+ loopWithBackoff(this._pollingIntervalMs, this._logger, () => this.fetchQueryAndExecute())
79
+ }
80
+ }
81
+
82
+ /**
83
+ * Registers a Retool function with the specified function definition.
84
+ */
85
+ register<TArgs extends Arguments>(spec: RegisterFunctionSpec<TArgs>): void {
86
+ this._functions[spec.name] = {
87
+ arguments: spec.arguments,
88
+ permissions: spec.permissions,
89
+ implementation: spec.implementation,
90
+ }
91
+ }
92
+
93
+ /**
94
+ * Executes a Retool function with the specified arguments and context.
95
+ */
96
+ async executeFunction(
97
+ functionName: string,
98
+ functionArguments: unknown,
99
+ context: RetoolContext,
100
+ ): Promise<{ result: any; arguments: Record<string, unknown> }> {
101
+ this._logger.info(`Executing function: ${functionName}, context: ${context}`)
102
+ if (functionName === '__testConnection__') {
103
+ return { result: this.testConnection(context), arguments: {} }
104
+ }
105
+
106
+ const fnSpec = this._functions[functionName]
107
+ if (!fnSpec) {
108
+ throw new FunctionNotFoundError(functionName)
109
+ }
110
+
111
+ const parsedArguments = parseFunctionArguments(functionArguments, fnSpec.arguments)
112
+ this._logger.debug('Parsed arguments: ', parsedArguments)
113
+
114
+ const result = await fnSpec.implementation(parsedArguments, context)
115
+
116
+ // Consider truncating large arguments
117
+ return { result, arguments: parsedArguments }
118
+ }
119
+
120
+ /**
121
+ * Tests the current connection to the Retool server.
122
+ */
123
+ private testConnection(context: RetoolContext): {
124
+ success: true
125
+ version: string
126
+ agentUuid: string
127
+ context: RetoolContext
128
+ } {
129
+ return {
130
+ success: true,
131
+ version: this._version,
132
+ agentUuid: this._agentUuid,
133
+ context,
134
+ }
135
+ }
136
+
137
+ /**
138
+ * Registers the agent with the Retool server.
139
+ */
140
+ private async registerAgent(): Promise<AgentServerStatus> {
141
+ const functionsMetadata: Record<string, Pick<RegisterFunctionSpec<any>, 'arguments' | 'permissions'>> = {}
142
+ for (const functionName in this._functions) {
143
+ functionsMetadata[functionName] = {
144
+ arguments: this._functions[functionName].arguments,
145
+ permissions: this._functions[functionName].permissions,
146
+ }
147
+ }
148
+
149
+ const registerAgentResponse = await this._retoolApi.registerAgent({
150
+ resourceId: this._resourceId,
151
+ environmentName: this._environmentName,
152
+ version: this._version,
153
+ agentUuid: this._agentUuid,
154
+ operations: functionsMetadata,
155
+ })
156
+
157
+ if (!registerAgentResponse.ok) {
158
+ if (isClientError(registerAgentResponse.status)) {
159
+ this._logger.error(
160
+ `Error registering agent: ${registerAgentResponse.status} ${await registerAgentResponse.text()}}`,
161
+ )
162
+
163
+ // client error, stop the client
164
+ return 'stop'
165
+ }
166
+
167
+ throw new Error(
168
+ `Error connecting to retool server: ${registerAgentResponse.status} ${await registerAgentResponse.text()}}`,
169
+ )
170
+ }
171
+
172
+ const { versionHash } = await registerAgentResponse.json()
173
+ this._versionHash = versionHash
174
+ this._logger.info(`Agent registered with versionHash: ${versionHash}`)
175
+
176
+ return 'done'
177
+ }
178
+
179
+ /**
180
+ * Fetches a query from the Retool server and executes it.
181
+ */
182
+ private async fetchQueryAndExecute(): Promise<AgentServerStatus> {
183
+ const pendingQueryFetch = await this._retoolApi.popQuery({
184
+ resourceId: this._resourceId,
185
+ environmentName: this._environmentName,
186
+ agentUuid: this._agentUuid,
187
+ versionHash: this._versionHash,
188
+ })
189
+
190
+ if (!pendingQueryFetch.ok) {
191
+ if (isClientError(pendingQueryFetch.status)) {
192
+ this._logger.error(`Error fetching query (${pendingQueryFetch.status}): ${await pendingQueryFetch.text()}`)
193
+ return 'stop'
194
+ }
195
+
196
+ throw new Error(`Server error when fetching query: ${pendingQueryFetch.status}. Retrying...`)
197
+ }
198
+
199
+ const { query } = await pendingQueryFetch.json()
200
+ if (query) {
201
+ this._logger.debug('Executing query', query) // This might contain sensitive information
202
+
203
+ const agentReceivedQueryAt = new Date().toISOString()
204
+
205
+ const queryUuid: string = query.queryUuid
206
+ const { method, parameters, context } = query.queryInfo
207
+
208
+ let status: 'success' | 'error'
209
+ let executionResponse: unknown = undefined
210
+ let executionArguments: Record<string, unknown> | undefined = undefined
211
+ let agentError: AgentServerError | undefined = undefined
212
+
213
+ try {
214
+ const executionResult = await this.executeFunction(method, parameters, context)
215
+ executionResponse = executionResult.result
216
+ executionArguments = executionResult.arguments
217
+ status = 'success'
218
+ } catch (err: unknown) {
219
+ agentError = createAgentServerError(err)
220
+ status = 'error'
221
+ }
222
+
223
+ const agentFinishedQueryAt = new Date().toISOString()
224
+
225
+ const updateQueryResponse = await this._retoolApi.postQueryResponse({
226
+ resourceId: this._resourceId,
227
+ environmentName: this._environmentName,
228
+ versionHash: this._versionHash,
229
+ agentUuid: this._agentUuid,
230
+ queryUuid,
231
+ status,
232
+ data: executionResponse,
233
+ metadata: {
234
+ packageLanguage: 'javascript',
235
+ packageVersion: RetoolRPCVersion,
236
+ agentReceivedQueryAt,
237
+ agentFinishedQueryAt,
238
+ parameters: executionArguments,
239
+ },
240
+ error: agentError,
241
+ })
242
+
243
+ this._logger.debug('Update query response status: ', updateQueryResponse.status, await updateQueryResponse.text())
244
+ }
245
+
246
+ return 'continue'
247
+ }
248
+
249
+ /**
250
+ * Export registerAgent as a protected method for testing purpose only. Lookup TestRetoolRPC for usage.
251
+ */
252
+ protected async protectedRegisterAgent() {
253
+ return this.registerAgent()
254
+ }
255
+
256
+ /**
257
+ * Export fetchQueryAndExecute as a protected method for testing purpose only. Lookup TestRetoolRPC for usage.
258
+ */
259
+ protected async protectedFetchQueryAndExecute() {
260
+ return this.fetchQueryAndExecute()
261
+ }
262
+ }
package/src/types.ts ADDED
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Configuration options for the Retool RPC.
3
+ */
4
+ export type RetoolRPCConfig = {
5
+ /** The host URL of the Retool instance. */
6
+ host: string
7
+ /** The API token for authenticating with the Retool instance. */
8
+ apiToken: string
9
+ /** The ID of the resource in Retool (UUID format). */
10
+ resourceId: string
11
+ /** The optional environment identifier. Defaults to `production` */
12
+ environmentName?: string
13
+ /**
14
+ * The version of the schema being used. If the resource enforce explicit versioning,
15
+ * this property must be set, and must be updated with each schema change.
16
+ * */
17
+ version?: string
18
+ /** The optional polling interval in milliseconds. Defaults to 1000. Minimum is 100. */
19
+ pollingIntervalMs?: number
20
+ /** The optional UUID of the agent. Will be automatically generated by default */
21
+ agentUuid?: string
22
+ /** The optional log level. */
23
+ logLevel?: 'debug' | 'info' | 'warn' | 'error'
24
+ }
25
+
26
+ /** Represents the type of the argument. Right now we are supporting only string, boolean, number, dict, and json. */
27
+ export type ArgumentType = 'string' | 'boolean' | 'number' | 'dict' | 'json'
28
+
29
+ /** Represents an argument definition for a Retool function. */
30
+ export type Argument = {
31
+ /** The type of the argument. */
32
+ type: ArgumentType
33
+ /** Specifies whether the argument is expected to be an array. */
34
+ array?: boolean
35
+ /** The description of the argument. */
36
+ description?: string
37
+ /** Specifies whether the argument is required. */
38
+ required?: boolean
39
+ }
40
+
41
+ /** Recursive JSON type */
42
+ export type Json = string | number | boolean | null | Json[] | { [property: string]: Json }
43
+
44
+ /** Represents a map of argument name to argument type. */
45
+ export type ArgumentTypeMap<T extends Argument> = T['type'] extends 'string'
46
+ ? string
47
+ : T['type'] extends 'number'
48
+ ? number
49
+ : T['type'] extends 'boolean'
50
+ ? boolean
51
+ : T['type'] extends 'dict'
52
+ ? Record<string, any>
53
+ : T['type'] extends 'json'
54
+ ? Json
55
+ : never
56
+
57
+ /** Represents a map of argument names to argument definitions. */
58
+ export type Arguments = Record<string, Argument>
59
+
60
+ /** Represents a map of argument name to argument type. */
61
+ export type TransformedArgument<TArg extends Argument> = TArg['array'] extends true
62
+ ? Array<ArgumentTypeMap<TArg>>
63
+ : ArgumentTypeMap<TArg>
64
+
65
+ /** Represents a map of argument names to argument types. */
66
+ export type TransformedArguments<TArgs extends Arguments> = {
67
+ [TArg in keyof TArgs]: TransformedArgument<TArgs[TArg]>
68
+ }
69
+
70
+ /** Represents the specification for registering a Retool function. */
71
+ export type RegisterFunctionSpec<TArgs extends Arguments> = {
72
+ /** The name of the function. */
73
+ name: string
74
+ /** The arguments of the function. */
75
+ arguments: Pick<TArgs, keyof TArgs>
76
+ /** The implementation of the function. */
77
+ implementation: (args: TransformedArguments<TArgs>, context: RetoolContext) => Promise<any>
78
+ /** The permissions configuration for the function. */
79
+ permissions?: {
80
+ /** The list of group names that have permission to execute the function. */
81
+ groupNames?: string[]
82
+ /** The list of user emails that have permission to execute the function. */
83
+ userEmails?: string[]
84
+ }
85
+ }
86
+
87
+ /** Additional context information that is passed to the Retool function. */
88
+ export type RetoolContext = {
89
+ /** Name of the user who is executing the function. */
90
+ userName?: string
91
+ /** Email address of the user who is executing the function. */
92
+ userEmail?: string
93
+ /** A list of group names of the user who is executing the function. */
94
+ userGroups?: string[]
95
+ /** The organization name of the user who is executing the function. */
96
+ organizationName?: string
97
+ }
98
+
99
+ /** Agent server error that is thrown by Retool RPC. */
100
+ export type AgentServerError = {
101
+ /** The error name. */
102
+ name: string
103
+ /** The error message. */
104
+ message: string
105
+ /** The error stack track. */
106
+ stack?: string
107
+ /** The error status code. */
108
+ code?: number
109
+ /** The error additional details. */
110
+ details?: unknown
111
+ }
112
+
113
+ /** Represents the current status of a function execution. */
114
+ export type AgentServerStatus = 'continue' | 'stop' | 'done'
@@ -0,0 +1,105 @@
1
+ import fetch, { RequestInit } from 'node-fetch'
2
+
3
+ import AbortControllerFallback from 'abort-controller'
4
+
5
+ // AbortController was added in node v14.17.0 globally, but we need to polyfill it for older versions
6
+ const AbortController = globalThis.AbortController || AbortControllerFallback
7
+
8
+ import { AgentServerError } from '../types'
9
+ import { RetoolRPCVersion } from '../version'
10
+
11
+ const POLLING_TIMEOUT_MS = 5 * 1000 // 5 seconds
12
+
13
+ type PopQueryRequest = {
14
+ resourceId: string
15
+ environmentName: string
16
+ agentUuid: string
17
+ versionHash: string | undefined
18
+ }
19
+
20
+ type RegisterAgentRequest = {
21
+ resourceId: string
22
+ environmentName: string
23
+ version: string
24
+ agentUuid: string
25
+ operations: Record<string, unknown>
26
+ }
27
+
28
+ type PostQueryResponseRequest = {
29
+ resourceId: string
30
+ environmentName: string
31
+ versionHash: string | undefined
32
+ agentUuid: string
33
+ queryUuid: string
34
+ metadata: {
35
+ packageVersion: string
36
+ packageLanguage: 'python' | 'javascript'
37
+ agentReceivedQueryAt: string
38
+ agentFinishedQueryAt: string
39
+ parameters: Record<string, unknown> | undefined
40
+ }
41
+ status: 'success' | 'error' // Should be a discriminated union instead
42
+ data: unknown
43
+ error: AgentServerError | undefined
44
+ }
45
+
46
+ export class RetoolAPI {
47
+ private _hostUrl: string
48
+ private _apiKey: string
49
+
50
+ constructor({ hostUrl, apiKey }: { hostUrl: string; apiKey: string }) {
51
+ this._hostUrl = hostUrl
52
+ this._apiKey = apiKey
53
+ }
54
+
55
+ async popQuery(options: PopQueryRequest) {
56
+ const abortController = new AbortController()
57
+ setTimeout(() => {
58
+ abortController.abort()
59
+ }, POLLING_TIMEOUT_MS)
60
+
61
+ try {
62
+ return await fetch(`${this._hostUrl}/api/v1/retoolrpc/popQuery`, {
63
+ method: 'POST',
64
+ headers: {
65
+ Authorization: `Bearer ${this._apiKey}`,
66
+ 'Content-Type': 'application/json',
67
+ 'User-Agent': `RetoolRPC/${RetoolRPCVersion} (Javascript)`,
68
+ },
69
+ body: JSON.stringify(options),
70
+ // Had to cast to RequestInit['signal'] because of a bug in the types
71
+ // https://github.com/jasonkuhrt/graphql-request/issues/481
72
+ signal: abortController.signal as RequestInit['signal'],
73
+ })
74
+ } catch (error: any) {
75
+ if (abortController.signal.aborted) {
76
+ throw new Error(`Polling timeout after ${POLLING_TIMEOUT_MS}ms`)
77
+ }
78
+ throw error
79
+ }
80
+ }
81
+
82
+ async registerAgent(options: RegisterAgentRequest) {
83
+ return fetch(`${this._hostUrl}/api/v1/retoolrpc/registerAgent`, {
84
+ method: 'POST',
85
+ headers: {
86
+ Authorization: `Bearer ${this._apiKey}`,
87
+ 'Content-Type': 'application/json',
88
+ 'User-Agent': `RetoolRPC/${RetoolRPCVersion} (Javascript)`,
89
+ },
90
+ body: JSON.stringify(options),
91
+ })
92
+ }
93
+
94
+ async postQueryResponse(options: PostQueryResponseRequest) {
95
+ return fetch(`${this._hostUrl}/api/v1/retoolrpc/postQueryResponse`, {
96
+ method: 'POST',
97
+ headers: {
98
+ Authorization: `Bearer ${this._apiKey}`,
99
+ 'Content-Type': 'application/json',
100
+ 'User-Agent': `RetoolRPC/${RetoolRPCVersion} (Javascript)`,
101
+ },
102
+ body: JSON.stringify(options),
103
+ })
104
+ }
105
+ }
@@ -0,0 +1,53 @@
1
+ import { AgentServerError } from '../types'
2
+
3
+ const AGENT_SERVER_ERROR = 'AgentServerError'
4
+
5
+ export function createAgentServerError(error: unknown): AgentServerError {
6
+ if (error instanceof Error) {
7
+ const agentError: AgentServerError = {
8
+ name: error.name,
9
+ message: error.message,
10
+ stack: error.stack,
11
+ }
12
+
13
+ if ('code' in error) {
14
+ if (typeof error.code === 'number') {
15
+ agentError.code = error.code
16
+ } else if (error.code === 'string') {
17
+ agentError.code = parseInt(error.code, 10)
18
+ }
19
+ }
20
+
21
+ if ('details' in error) {
22
+ agentError.details = error.details
23
+ }
24
+
25
+ return agentError
26
+ }
27
+
28
+ if (typeof error === 'string') {
29
+ return {
30
+ name: AGENT_SERVER_ERROR,
31
+ message: error,
32
+ }
33
+ }
34
+
35
+ return {
36
+ name: AGENT_SERVER_ERROR,
37
+ message: 'Unknown agent server error',
38
+ }
39
+ }
40
+
41
+ export class FunctionNotFoundError extends Error {
42
+ constructor(functionName: string) {
43
+ super(`Function "${functionName}" not found on remote agent server.`)
44
+ this.name = 'FunctionNotFoundError'
45
+ }
46
+ }
47
+
48
+ export class InvalidArgumentsError extends Error {
49
+ constructor(message: string) {
50
+ super(message)
51
+ this.name = 'InvalidArgumentsError'
52
+ }
53
+ }
@@ -0,0 +1,41 @@
1
+ export function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K> {
2
+ const result: Partial<T> = {}
3
+
4
+ for (const key of keys) {
5
+ if (key in obj) {
6
+ result[key] = obj[key]
7
+ }
8
+ }
9
+
10
+ return result as Pick<T, K>
11
+ }
12
+
13
+ export function isRecord(value: unknown): value is Record<string, unknown> {
14
+ return typeof value === 'object' && value !== null && !Array.isArray(value)
15
+ }
16
+
17
+ export function isFalsyArgumentValue(value: unknown): boolean {
18
+ return value === null || value === undefined || value === ''
19
+ }
20
+
21
+ export function isBooleanString(value: unknown): value is string {
22
+ if (typeof value === 'string') {
23
+ const lowercaseValue = value.toLowerCase()
24
+ return lowercaseValue === 'true' || lowercaseValue === 'false'
25
+ }
26
+
27
+ return false
28
+ }
29
+
30
+ export function isNumberString(value: unknown): value is string {
31
+ if (typeof value === 'string') {
32
+ // Use a regular expression to check if the string is a valid number
33
+ return /^-?\d+(\.\d+)?$/.test(value)
34
+ }
35
+
36
+ return false
37
+ }
38
+
39
+ export function isClientError(status: number): boolean {
40
+ return status >= 400 && status < 500
41
+ }
@@ -0,0 +1,49 @@
1
+ const LOG_LEVELS = ['debug', 'info', 'warn', 'error'] as const
2
+ type LogLevel = typeof LOG_LEVELS[number]
3
+
4
+ const LOG_LEVEL_RANKINGS: Record<LogLevel, number> = {
5
+ debug: 0,
6
+ info: 1,
7
+ warn: 2,
8
+ error: 3,
9
+ }
10
+
11
+ type LoggerOptions = {
12
+ logLevel?: LogLevel
13
+ }
14
+
15
+ export class Logger {
16
+ private currentLogLevel: LogLevel
17
+
18
+ constructor(options: LoggerOptions) {
19
+ this.currentLogLevel = options.logLevel || 'info' // Default to 'info' if logLevel is not specified
20
+ }
21
+
22
+ private shouldLog(level: LogLevel) {
23
+ return LOG_LEVEL_RANKINGS[level] >= LOG_LEVEL_RANKINGS[this.currentLogLevel] && process.env.NODE_ENV !== 'test'
24
+ }
25
+
26
+ debug(...messages: any[]) {
27
+ if (this.shouldLog('debug')) {
28
+ console.log(...messages)
29
+ }
30
+ }
31
+
32
+ info(...messages: any[]) {
33
+ if (this.shouldLog('info')) {
34
+ console.log(...messages)
35
+ }
36
+ }
37
+
38
+ warn(...messages: any[]) {
39
+ if (this.shouldLog('warn')) {
40
+ console.log(...messages)
41
+ }
42
+ }
43
+
44
+ error(...messages: any[]) {
45
+ if (this.shouldLog('error')) {
46
+ console.log(...messages)
47
+ }
48
+ }
49
+ }
@@ -0,0 +1,43 @@
1
+ import { AgentServerStatus } from '../types'
2
+ import { Logger } from './logger'
3
+
4
+ const CONNECTION_ERROR_INITIAL_TIMEOUT_MS = 50
5
+ const CONNECTION_ERROR_RETRY_MAX_MS = 1000 * 60 * 10 // 10 minutes
6
+
7
+ function sleep(ms: number): Promise<void> {
8
+ return new Promise((resolve) => {
9
+ setTimeout(resolve, ms)
10
+ })
11
+ }
12
+
13
+ export async function loopWithBackoff(
14
+ pollingIntervalMs: number,
15
+ logger: Logger,
16
+ callback: () => Promise<AgentServerStatus>,
17
+ ): Promise<AgentServerStatus> {
18
+ let delayTimeMs = CONNECTION_ERROR_INITIAL_TIMEOUT_MS
19
+ let lastLoopTimestamp = Date.now()
20
+
21
+ while (true) {
22
+ try {
23
+ const result = await callback()
24
+
25
+ const currentTimestamp = Date.now()
26
+ const loopDurationMs = currentTimestamp - lastLoopTimestamp
27
+ lastLoopTimestamp = currentTimestamp
28
+ logger.debug(
29
+ `Loop time: ${loopDurationMs}ms, delay time: ${delayTimeMs}ms, polling interval: ${pollingIntervalMs}ms`,
30
+ )
31
+
32
+ if (result !== 'continue') {
33
+ return result
34
+ }
35
+ await sleep(pollingIntervalMs)
36
+ delayTimeMs = Math.max(delayTimeMs / 2, CONNECTION_ERROR_INITIAL_TIMEOUT_MS)
37
+ } catch (err: unknown) {
38
+ logger.error('Error running RPC agent', err)
39
+ await sleep(delayTimeMs)
40
+ delayTimeMs = Math.min(delayTimeMs * 2, CONNECTION_ERROR_RETRY_MAX_MS)
41
+ }
42
+ }
43
+ }