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