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
package/dist/sdk.js
ADDED
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
import fetch from 'node-fetch';
|
|
2
|
+
import { setTimeout } from 'timers/promises';
|
|
3
|
+
import * as uuid from 'uuid';
|
|
4
|
+
import { createLogger, transports } from 'winston';
|
|
5
|
+
import { dedent } from 'ts-dedent';
|
|
6
|
+
|
|
7
|
+
const RetoolSDKVersion = '0.0.35';
|
|
8
|
+
|
|
9
|
+
const AGENT_SERVER_ERROR = 'AgentServerError';
|
|
10
|
+
function createAgentServerError(error) {
|
|
11
|
+
if (error instanceof Error) {
|
|
12
|
+
const agentError = {
|
|
13
|
+
name: error.name,
|
|
14
|
+
message: error.message,
|
|
15
|
+
stack: error.stack,
|
|
16
|
+
};
|
|
17
|
+
if ('code' in error) {
|
|
18
|
+
if (typeof error.code === 'number') {
|
|
19
|
+
agentError.code = error.code;
|
|
20
|
+
}
|
|
21
|
+
else if (error.code === 'string') {
|
|
22
|
+
agentError.code = parseInt(error.code, 10);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if ('details' in error) {
|
|
26
|
+
agentError.details = error.details;
|
|
27
|
+
}
|
|
28
|
+
return agentError;
|
|
29
|
+
}
|
|
30
|
+
if (typeof error === 'string') {
|
|
31
|
+
return {
|
|
32
|
+
name: AGENT_SERVER_ERROR,
|
|
33
|
+
message: error,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
name: AGENT_SERVER_ERROR,
|
|
38
|
+
message: 'Unknown agent server error',
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
class FunctionNotFoundError extends Error {
|
|
42
|
+
constructor(functionName) {
|
|
43
|
+
super(`Function "${functionName}" not found on remote agent server.`);
|
|
44
|
+
this.name = 'FunctionNotFoundError';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
class InvalidArgumentsError extends Error {
|
|
48
|
+
constructor(message) {
|
|
49
|
+
super(message);
|
|
50
|
+
this.name = 'InvalidArgumentsError';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function pick(obj, keys) {
|
|
55
|
+
const result = {};
|
|
56
|
+
for (const key of keys) {
|
|
57
|
+
if (key in obj) {
|
|
58
|
+
result[key] = obj[key];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
function isRecord(value) {
|
|
64
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
65
|
+
}
|
|
66
|
+
function isFalsyArgumentValue(value) {
|
|
67
|
+
return value === null || value === undefined || value === '';
|
|
68
|
+
}
|
|
69
|
+
function isBooleanString(value) {
|
|
70
|
+
if (typeof value === 'string') {
|
|
71
|
+
const lowercaseValue = value.toLowerCase();
|
|
72
|
+
return lowercaseValue === 'true' || lowercaseValue === 'false';
|
|
73
|
+
}
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
function isNumberString(value) {
|
|
77
|
+
if (typeof value === 'string') {
|
|
78
|
+
// Use a regular expression to check if the string is a valid number
|
|
79
|
+
return /^-?\d+(\.\d+)?$/.test(value);
|
|
80
|
+
}
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
function isClientError(status) {
|
|
84
|
+
return status >= 400 && status < 500;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
class ArgumentParser {
|
|
88
|
+
constructor(schema) {
|
|
89
|
+
this.schema = schema;
|
|
90
|
+
}
|
|
91
|
+
parse(argsToParse) {
|
|
92
|
+
const parsedArgs = { ...argsToParse };
|
|
93
|
+
const parsedErrors = [];
|
|
94
|
+
for (const argName in this.schema) {
|
|
95
|
+
const argDefinition = this.schema[argName];
|
|
96
|
+
const argValue = argsToParse[argName];
|
|
97
|
+
const falsyArgValue = isFalsyArgumentValue(argValue);
|
|
98
|
+
if (falsyArgValue) {
|
|
99
|
+
if (argDefinition.required) {
|
|
100
|
+
parsedErrors.push(`Argument "${argName}" is required but missing.`);
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (!falsyArgValue) {
|
|
105
|
+
if (argDefinition.array) {
|
|
106
|
+
if (!Array.isArray(argValue)) {
|
|
107
|
+
parsedErrors.push(`Argument "${argName}" should be an array.`);
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
const parseValueTypeItems = argValue.map((item) => this.parseValueType(item, argDefinition.type));
|
|
111
|
+
if (!parseValueTypeItems.every((item) => item.isValidType)) {
|
|
112
|
+
parsedErrors.push(`Argument "${argName}" should be an array of type "${argDefinition.type}".`);
|
|
113
|
+
}
|
|
114
|
+
parsedArgs[argName] = parseValueTypeItems.map((item) => item.parsedValue);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
const parsedValueTypeItem = this.parseValueType(argValue, argDefinition.type);
|
|
118
|
+
if (!parsedValueTypeItem.isValidType) {
|
|
119
|
+
parsedErrors.push(`Argument "${argName}" should be of type "${argDefinition.type}".`);
|
|
120
|
+
}
|
|
121
|
+
parsedArgs[argName] = parsedValueTypeItem.parsedValue;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return { parsedErrors, parsedArgs };
|
|
126
|
+
}
|
|
127
|
+
parseValueType(value, expectedType) {
|
|
128
|
+
switch (expectedType) {
|
|
129
|
+
case 'string':
|
|
130
|
+
if (typeof value === 'string') {
|
|
131
|
+
return {
|
|
132
|
+
isValidType: true,
|
|
133
|
+
parsedValue: value,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
isValidType: false,
|
|
138
|
+
parsedValue: value,
|
|
139
|
+
};
|
|
140
|
+
case 'boolean':
|
|
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
|
+
if (typeof value === 'number') {
|
|
159
|
+
return {
|
|
160
|
+
isValidType: true,
|
|
161
|
+
parsedValue: value,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
if (isNumberString(value)) {
|
|
165
|
+
return {
|
|
166
|
+
isValidType: true,
|
|
167
|
+
parsedValue: parseFloat(value),
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
isValidType: false,
|
|
172
|
+
parsedValue: value,
|
|
173
|
+
};
|
|
174
|
+
case 'json':
|
|
175
|
+
try {
|
|
176
|
+
const parsedJSONValue = JSON.parse(JSON.stringify(value));
|
|
177
|
+
return {
|
|
178
|
+
isValidType: true,
|
|
179
|
+
parsedValue: parsedJSONValue,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
return {
|
|
184
|
+
isValidType: false,
|
|
185
|
+
parsedValue: value,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
default:
|
|
189
|
+
const _expectedType = expectedType;
|
|
190
|
+
throw new Error(`Unknown argument type "${_expectedType}".`);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
function parseFunctionArgs(args, schema) {
|
|
195
|
+
if (!isRecord(args)) {
|
|
196
|
+
throw new Error(`The given arguments are invalid.`);
|
|
197
|
+
}
|
|
198
|
+
const argumentParser = new ArgumentParser(schema);
|
|
199
|
+
const { parsedArgs, parsedErrors } = argumentParser.parse(args);
|
|
200
|
+
if (parsedErrors.length > 0) {
|
|
201
|
+
const invalidArgumentsError = dedent `
|
|
202
|
+
Invalid parameter(s) found:
|
|
203
|
+
${parsedErrors.join('\n')}
|
|
204
|
+
`;
|
|
205
|
+
throw new InvalidArgumentsError(invalidArgumentsError);
|
|
206
|
+
}
|
|
207
|
+
return pick(parsedArgs, Object.keys(schema));
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
const logger = createLogger({
|
|
211
|
+
levels: {
|
|
212
|
+
error: 0,
|
|
213
|
+
warn: 1,
|
|
214
|
+
info: 2,
|
|
215
|
+
verbose: 3,
|
|
216
|
+
debug: 4, // log things like sql queries executed by the ORM
|
|
217
|
+
},
|
|
218
|
+
transports: [
|
|
219
|
+
new transports.Console({
|
|
220
|
+
level: 'info',
|
|
221
|
+
}),
|
|
222
|
+
],
|
|
223
|
+
exitOnError: false,
|
|
224
|
+
silent: process.env.NODE_ENV === 'test',
|
|
225
|
+
});
|
|
226
|
+
const CONNECTION_ERROR_INITIAL_TIMEOUT_MS = 50;
|
|
227
|
+
const MINIMUM_POLLING_INTERVAL_MS = 100;
|
|
228
|
+
const CONNECTION_ERROR_RETRY_MAX_MS = 1000 * 60 * 10; // 10 minutes
|
|
229
|
+
const POLLING_TIMEOUT_MS = 5 * 1000; // 5 seconds
|
|
230
|
+
async function pollingTimeout() {
|
|
231
|
+
await setTimeout(POLLING_TIMEOUT_MS);
|
|
232
|
+
throw new Error(`Polling timeout after ${POLLING_TIMEOUT_MS}ms`);
|
|
233
|
+
}
|
|
234
|
+
async function loopWithBackoff(pollingIntervalMs, fn) {
|
|
235
|
+
let delayTimeMs = CONNECTION_ERROR_INITIAL_TIMEOUT_MS;
|
|
236
|
+
let lastLoopTime = Date.now();
|
|
237
|
+
while (true) {
|
|
238
|
+
if (logger.transports[0].level === 'debug') {
|
|
239
|
+
const currentTime = Date.now();
|
|
240
|
+
const loopDurationMs = currentTime - lastLoopTime;
|
|
241
|
+
logger.debug(`Loop time: ${loopDurationMs}ms, delay time: ${delayTimeMs}ms, polling interval: ${pollingIntervalMs}ms`);
|
|
242
|
+
lastLoopTime = currentTime;
|
|
243
|
+
}
|
|
244
|
+
try {
|
|
245
|
+
const result = await Promise.race([fn(), pollingTimeout()]);
|
|
246
|
+
if (result && result !== 'continue') {
|
|
247
|
+
return result;
|
|
248
|
+
}
|
|
249
|
+
await setTimeout(pollingIntervalMs);
|
|
250
|
+
delayTimeMs = Math.max(delayTimeMs / 2, CONNECTION_ERROR_INITIAL_TIMEOUT_MS);
|
|
251
|
+
}
|
|
252
|
+
catch (error) {
|
|
253
|
+
logger.error('Error running sdk agent', error);
|
|
254
|
+
await setTimeout(delayTimeMs);
|
|
255
|
+
delayTimeMs *= 2;
|
|
256
|
+
delayTimeMs = Math.min(delayTimeMs, CONNECTION_ERROR_RETRY_MAX_MS);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Represents the Retool SDK for interacting with Retool functions and contexts.
|
|
262
|
+
*/
|
|
263
|
+
class RetoolSDK {
|
|
264
|
+
/**
|
|
265
|
+
* Creates an instance of the RetoolSDK class.
|
|
266
|
+
*/
|
|
267
|
+
constructor(config) {
|
|
268
|
+
this._functions = {};
|
|
269
|
+
this._apiKey = config.apiToken;
|
|
270
|
+
this._hostUrl = config.host.replace(/\/$/, ''); // Remove trailing / from host
|
|
271
|
+
this._resourceId = config.resourceId;
|
|
272
|
+
this._environmentName = config.environmentName || 'production';
|
|
273
|
+
this._pollingIntervalMs = config.pollingIntervalMs
|
|
274
|
+
? Math.max(config.pollingIntervalMs, MINIMUM_POLLING_INTERVAL_MS)
|
|
275
|
+
: 1000;
|
|
276
|
+
this._version = config.version || '0.0.1';
|
|
277
|
+
this._agentUuid = config.agentUuid || uuid.v4();
|
|
278
|
+
if (config.logLevel) {
|
|
279
|
+
logger.transports[0].level = config.logLevel;
|
|
280
|
+
}
|
|
281
|
+
logger.debug({
|
|
282
|
+
apiKey: this._apiKey,
|
|
283
|
+
hostUrl: this._hostUrl,
|
|
284
|
+
resourceId: this._resourceId,
|
|
285
|
+
environmentName: this._environmentName,
|
|
286
|
+
agentUuid: this._agentUuid,
|
|
287
|
+
version: this._version,
|
|
288
|
+
pollingIntervalMs: this._pollingIntervalMs,
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Asynchronously starts listening for incoming Retool function invocations.
|
|
293
|
+
*/
|
|
294
|
+
async listen() {
|
|
295
|
+
logger.info('Starting sdk agent');
|
|
296
|
+
const registerResult = await loopWithBackoff(this._pollingIntervalMs, () => this._registerAgent());
|
|
297
|
+
if (registerResult === 'done') {
|
|
298
|
+
logger.info('Agent registered');
|
|
299
|
+
logger.info('Starting processing query');
|
|
300
|
+
loopWithBackoff(this._pollingIntervalMs, () => this._fetchQueryAndExecute());
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Registers a Retool function with the specified function definition.
|
|
305
|
+
*/
|
|
306
|
+
register({ name, args, impl }) {
|
|
307
|
+
this._functions[name] = {
|
|
308
|
+
args,
|
|
309
|
+
impl,
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
async executeFunction(functionName, args, context) {
|
|
313
|
+
logger.info(`Executing function: ${functionName}, context: ${context}`);
|
|
314
|
+
if (functionName === '__testConnection__') {
|
|
315
|
+
return { result: this._testConnection(args, context), args: {} };
|
|
316
|
+
}
|
|
317
|
+
const fnSpec = this._functions[functionName];
|
|
318
|
+
if (!fnSpec) {
|
|
319
|
+
throw new FunctionNotFoundError(functionName);
|
|
320
|
+
}
|
|
321
|
+
const parsedArgs = parseFunctionArgs(args, fnSpec.args);
|
|
322
|
+
logger.debug('Parsed args: ', parsedArgs);
|
|
323
|
+
const result = await fnSpec.impl(parsedArgs, context);
|
|
324
|
+
// TODO: consider truncating large arguments
|
|
325
|
+
return { result, args: parsedArgs };
|
|
326
|
+
}
|
|
327
|
+
_testConnection(_args, context) {
|
|
328
|
+
return {
|
|
329
|
+
success: true,
|
|
330
|
+
version: this._version,
|
|
331
|
+
agentUuid: this._agentUuid,
|
|
332
|
+
context,
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
async _registerAgent() {
|
|
336
|
+
const functionsMetadata = {};
|
|
337
|
+
for (const functionName in this._functions) {
|
|
338
|
+
functionsMetadata[functionName] = {
|
|
339
|
+
args: this._functions[functionName].args,
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
const response = await fetch(`${this._hostUrl}/api/v1/retoolsdk/registerAgent`, {
|
|
343
|
+
method: 'POST',
|
|
344
|
+
// TODO: add ApiToken
|
|
345
|
+
headers: {
|
|
346
|
+
Authorization: `Bearer ${this._apiKey}`,
|
|
347
|
+
'Content-Type': 'application/json',
|
|
348
|
+
},
|
|
349
|
+
body: JSON.stringify({
|
|
350
|
+
resourceId: this._resourceId,
|
|
351
|
+
environmentName: this._environmentName,
|
|
352
|
+
version: this._version,
|
|
353
|
+
agentUuid: this._agentUuid,
|
|
354
|
+
operations: functionsMetadata,
|
|
355
|
+
}),
|
|
356
|
+
});
|
|
357
|
+
if (!response.ok) {
|
|
358
|
+
if (isClientError(response.status)) {
|
|
359
|
+
logger.error(`Error registering agent: ${response.status} ${await response.text()}}`);
|
|
360
|
+
// client error, stop the client
|
|
361
|
+
return 'stop';
|
|
362
|
+
}
|
|
363
|
+
throw new Error(`Error connecting to retool server: ${response.status} ${await response.text()}}`);
|
|
364
|
+
}
|
|
365
|
+
const { versionHash } = await response.json();
|
|
366
|
+
this._versionHash = versionHash;
|
|
367
|
+
logger.info(`Agent registered with versionHash ${versionHash}`);
|
|
368
|
+
return 'done';
|
|
369
|
+
}
|
|
370
|
+
async _fetchQueryAndExecute() {
|
|
371
|
+
const pendingQueryFetch = await fetch(`${this._hostUrl}/api/v1/retoolsdk/popQuery`, {
|
|
372
|
+
method: 'POST',
|
|
373
|
+
headers: {
|
|
374
|
+
Authorization: `Bearer ${this._apiKey}`,
|
|
375
|
+
'Content-Type': 'application/json',
|
|
376
|
+
},
|
|
377
|
+
body: JSON.stringify({
|
|
378
|
+
resourceId: this._resourceId,
|
|
379
|
+
environmentName: this._environmentName,
|
|
380
|
+
agentUuid: this._agentUuid,
|
|
381
|
+
versionHash: this._versionHash,
|
|
382
|
+
}),
|
|
383
|
+
});
|
|
384
|
+
if (!pendingQueryFetch.ok) {
|
|
385
|
+
if (isClientError(pendingQueryFetch.status)) {
|
|
386
|
+
logger.error(`Error fetching query (${pendingQueryFetch.status}): ${await pendingQueryFetch.text()}`);
|
|
387
|
+
return 'stop';
|
|
388
|
+
}
|
|
389
|
+
throw new Error(`Server error when fetching query: ${pendingQueryFetch.status}. Retrying...`);
|
|
390
|
+
}
|
|
391
|
+
const body = await pendingQueryFetch.json();
|
|
392
|
+
if (body.query) {
|
|
393
|
+
logger.debug('execute query', body.query); // This might contain sensitive information
|
|
394
|
+
const agentReceivedQueryAt = new Date().toISOString();
|
|
395
|
+
const queryUuid = body.query.queryUuid;
|
|
396
|
+
const { method, parameters, context } = body.query.queryInfo;
|
|
397
|
+
let status;
|
|
398
|
+
let executionResponse = undefined;
|
|
399
|
+
let executionArgs = undefined;
|
|
400
|
+
let agentError = undefined;
|
|
401
|
+
try {
|
|
402
|
+
const executionResult = await this.executeFunction(method, parameters, context);
|
|
403
|
+
executionResponse = executionResult.result;
|
|
404
|
+
executionArgs = executionResult.args;
|
|
405
|
+
status = 'success';
|
|
406
|
+
}
|
|
407
|
+
catch (err) {
|
|
408
|
+
status = 'error';
|
|
409
|
+
agentError = createAgentServerError(err);
|
|
410
|
+
}
|
|
411
|
+
const agentFinishedQueryAt = new Date().toISOString();
|
|
412
|
+
const updateQueryResponse = await fetch(`${this._hostUrl}/api/v1/retoolsdk/postQueryResponse`, {
|
|
413
|
+
method: 'POST',
|
|
414
|
+
headers: {
|
|
415
|
+
Authorization: `Bearer ${this._apiKey}`,
|
|
416
|
+
'Content-Type': 'application/json',
|
|
417
|
+
},
|
|
418
|
+
body: JSON.stringify({
|
|
419
|
+
resourceId: this._resourceId,
|
|
420
|
+
environmentName: this._environmentName,
|
|
421
|
+
versionHash: this._versionHash,
|
|
422
|
+
agentUuid: this._agentUuid,
|
|
423
|
+
queryUuid,
|
|
424
|
+
status,
|
|
425
|
+
data: executionResponse,
|
|
426
|
+
metadata: {
|
|
427
|
+
agentReceivedQueryAt,
|
|
428
|
+
agentFinishedQueryAt,
|
|
429
|
+
parameters: executionArgs,
|
|
430
|
+
},
|
|
431
|
+
error: agentError,
|
|
432
|
+
}),
|
|
433
|
+
});
|
|
434
|
+
logger.debug('update query response status: ', updateQueryResponse.status, await updateQueryResponse.text());
|
|
435
|
+
}
|
|
436
|
+
return 'continue';
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
export { RetoolSDK, RetoolSDKVersion };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { RetoolRPC } from '../rpc';
|
|
2
|
+
type Constructor<T = {}> = new (...args: any[]) => T;
|
|
3
|
+
type RegisterModelArgs = {
|
|
4
|
+
model: any;
|
|
5
|
+
readAttributes?: string[];
|
|
6
|
+
writeAttributes?: string[];
|
|
7
|
+
findByAttributes?: string[];
|
|
8
|
+
};
|
|
9
|
+
export declare class MyMixinInterface {
|
|
10
|
+
registerModel(args: RegisterModelArgs): void;
|
|
11
|
+
}
|
|
12
|
+
export declare function sequelizeMixin<TBase extends Constructor<RetoolRPC>>(Base: TBase): Constructor<MyMixinInterface> & TBase;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { RetoolRPCConfig, Arguments, RetoolContext, RegisterFunctionSpec, AgentServerStatus } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Represents the Retool RPC for interacting with Retool functions and contexts.
|
|
4
|
+
*/
|
|
5
|
+
export declare class RetoolRPC {
|
|
6
|
+
private _apiKey;
|
|
7
|
+
private _hostUrl;
|
|
8
|
+
private _resourceId;
|
|
9
|
+
private _environmentName;
|
|
10
|
+
private _pollingIntervalMs;
|
|
11
|
+
private _version;
|
|
12
|
+
private _agentUuid;
|
|
13
|
+
private _versionHash;
|
|
14
|
+
private _functions;
|
|
15
|
+
private _retoolApi;
|
|
16
|
+
private _logger;
|
|
17
|
+
/**
|
|
18
|
+
* Creates an instance of the RetoolRPC class.
|
|
19
|
+
*/
|
|
20
|
+
constructor(config: RetoolRPCConfig);
|
|
21
|
+
/**
|
|
22
|
+
* Asynchronously starts listening for incoming Retool function invocations.
|
|
23
|
+
*/
|
|
24
|
+
listen(): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Registers a Retool function with the specified function definition.
|
|
27
|
+
*/
|
|
28
|
+
register<TArgs extends Arguments>(spec: RegisterFunctionSpec<TArgs>): void;
|
|
29
|
+
/**
|
|
30
|
+
* Executes a Retool function with the specified arguments and context.
|
|
31
|
+
*/
|
|
32
|
+
executeFunction(functionName: string, functionArguments: unknown, context: RetoolContext): Promise<{
|
|
33
|
+
result: any;
|
|
34
|
+
arguments: Record<string, unknown>;
|
|
35
|
+
}>;
|
|
36
|
+
/**
|
|
37
|
+
* Tests the current connection to the Retool server.
|
|
38
|
+
*/
|
|
39
|
+
private testConnection;
|
|
40
|
+
/**
|
|
41
|
+
* Registers the agent with the Retool server.
|
|
42
|
+
*/
|
|
43
|
+
private registerAgent;
|
|
44
|
+
/**
|
|
45
|
+
* Fetches a query from the Retool server and executes it.
|
|
46
|
+
*/
|
|
47
|
+
private fetchQueryAndExecute;
|
|
48
|
+
/**
|
|
49
|
+
* Export registerAgent as a protected method for testing purpose only. Lookup TestRetoolRPC for usage.
|
|
50
|
+
*/
|
|
51
|
+
protected protectedRegisterAgent(): Promise<AgentServerStatus>;
|
|
52
|
+
/**
|
|
53
|
+
* Export fetchQueryAndExecute as a protected method for testing purpose only. Lookup TestRetoolRPC for usage.
|
|
54
|
+
*/
|
|
55
|
+
protected protectedFetchQueryAndExecute(): Promise<AgentServerStatus>;
|
|
56
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { RetoolSDKConfig, Arguments, RetoolContext, RegisterFunctionSpec, LoopCallbackResult } from './types';
|
|
2
|
+
export { RetoolSDKVersion } from './version';
|
|
3
|
+
/**
|
|
4
|
+
* Represents the Retool SDK for interacting with Retool functions and contexts.
|
|
5
|
+
*/
|
|
6
|
+
export declare class RetoolSDK {
|
|
7
|
+
private _apiKey;
|
|
8
|
+
private _hostUrl;
|
|
9
|
+
private _resourceId;
|
|
10
|
+
private _environmentName;
|
|
11
|
+
private _pollingIntervalMs;
|
|
12
|
+
private _version;
|
|
13
|
+
private _agentUuid;
|
|
14
|
+
private _versionHash;
|
|
15
|
+
private _functions;
|
|
16
|
+
private _retoolApi;
|
|
17
|
+
private _logger;
|
|
18
|
+
/**
|
|
19
|
+
* Creates an instance of the RetoolSDK class.
|
|
20
|
+
*/
|
|
21
|
+
constructor(config: RetoolSDKConfig);
|
|
22
|
+
/**
|
|
23
|
+
* Asynchronously starts listening for incoming Retool function invocations.
|
|
24
|
+
*/
|
|
25
|
+
listen(): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Registers a Retool function with the specified function definition.
|
|
28
|
+
*/
|
|
29
|
+
register<TArgs extends Arguments>(spec: RegisterFunctionSpec<TArgs>): void;
|
|
30
|
+
/**
|
|
31
|
+
* Executes a Retool function with the specified arguments and context.
|
|
32
|
+
*/
|
|
33
|
+
executeFunction(functionName: string, args: unknown, context: RetoolContext): Promise<{
|
|
34
|
+
result: any;
|
|
35
|
+
args: import("./types").TransformedArguments<Arguments>;
|
|
36
|
+
}>;
|
|
37
|
+
/**
|
|
38
|
+
* Tests the current connection to the Retool server.
|
|
39
|
+
*/
|
|
40
|
+
private testConnection;
|
|
41
|
+
/**
|
|
42
|
+
* Registers the agent with the Retool server.
|
|
43
|
+
*/
|
|
44
|
+
private registerAgent;
|
|
45
|
+
/**
|
|
46
|
+
* Fetches a query from the Retool server and executes it.
|
|
47
|
+
*/
|
|
48
|
+
private fetchQueryAndExecute;
|
|
49
|
+
/**
|
|
50
|
+
* Export for testing purpose only.
|
|
51
|
+
*/
|
|
52
|
+
_registerAgent(): Promise<LoopCallbackResult>;
|
|
53
|
+
/**
|
|
54
|
+
* Export for testing purpose only.
|
|
55
|
+
*/
|
|
56
|
+
_fetchQueryAndExecute(): Promise<LoopCallbackResult>;
|
|
57
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,93 @@
|
|
|
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
|
+
/** Represents the type of the argument. Right now we are supporting only string, boolean, number, dict, and json. */
|
|
26
|
+
export type ArgumentType = 'string' | 'boolean' | 'number' | 'dict' | 'json';
|
|
27
|
+
/** Represents an argument definition for a Retool function. */
|
|
28
|
+
export type Argument = {
|
|
29
|
+
/** The type of the argument. */
|
|
30
|
+
type: ArgumentType;
|
|
31
|
+
/** Specifies whether the argument is expected to be an array. */
|
|
32
|
+
array?: boolean;
|
|
33
|
+
/** The description of the argument. */
|
|
34
|
+
description?: string;
|
|
35
|
+
/** Specifies whether the argument is required. */
|
|
36
|
+
required?: boolean;
|
|
37
|
+
};
|
|
38
|
+
/** Recursive JSON type */
|
|
39
|
+
export type Json = string | number | boolean | null | Json[] | {
|
|
40
|
+
[property: string]: Json;
|
|
41
|
+
};
|
|
42
|
+
/** Represents a map of argument name to argument type. */
|
|
43
|
+
export type ArgumentTypeMap<T extends Argument> = T['type'] extends 'string' ? string : T['type'] extends 'number' ? number : T['type'] extends 'boolean' ? boolean : T['type'] extends 'dict' ? Record<string, any> : T['type'] extends 'json' ? Json : never;
|
|
44
|
+
/** Represents a map of argument names to argument definitions. */
|
|
45
|
+
export type Arguments = Record<string, Argument>;
|
|
46
|
+
/** Represents a map of argument name to argument type. */
|
|
47
|
+
export type TransformedArgument<TArg extends Argument> = TArg['array'] extends true ? Array<ArgumentTypeMap<TArg>> : ArgumentTypeMap<TArg>;
|
|
48
|
+
/** Represents a map of argument names to argument types. */
|
|
49
|
+
export type TransformedArguments<TArgs extends Arguments> = {
|
|
50
|
+
[TArg in keyof TArgs]: TransformedArgument<TArgs[TArg]>;
|
|
51
|
+
};
|
|
52
|
+
/** Represents the specification for registering a Retool function. */
|
|
53
|
+
export type RegisterFunctionSpec<TArgs extends Arguments> = {
|
|
54
|
+
/** The name of the function. */
|
|
55
|
+
name: string;
|
|
56
|
+
/** The arguments of the function. */
|
|
57
|
+
arguments: Pick<TArgs, keyof TArgs>;
|
|
58
|
+
/** The implementation of the function. */
|
|
59
|
+
implementation: (args: TransformedArguments<TArgs>, context: RetoolContext) => Promise<any>;
|
|
60
|
+
/** The permissions configuration for the function. */
|
|
61
|
+
permissions?: {
|
|
62
|
+
/** The list of group names that have permission to execute the function. */
|
|
63
|
+
groupNames?: string[];
|
|
64
|
+
/** The list of user emails that have permission to execute the function. */
|
|
65
|
+
userEmails?: string[];
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
/** Additional context information that is passed to the Retool function. */
|
|
69
|
+
export type RetoolContext = {
|
|
70
|
+
/** Name of the user who is executing the function. */
|
|
71
|
+
userName?: string;
|
|
72
|
+
/** Email address of the user who is executing the function. */
|
|
73
|
+
userEmail?: string;
|
|
74
|
+
/** A list of group names of the user who is executing the function. */
|
|
75
|
+
userGroups?: string[];
|
|
76
|
+
/** The organization name of the user who is executing the function. */
|
|
77
|
+
organizationName?: string;
|
|
78
|
+
};
|
|
79
|
+
/** Agent server error that is thrown by Retool RPC. */
|
|
80
|
+
export type AgentServerError = {
|
|
81
|
+
/** The error name. */
|
|
82
|
+
name: string;
|
|
83
|
+
/** The error message. */
|
|
84
|
+
message: string;
|
|
85
|
+
/** The error stack track. */
|
|
86
|
+
stack?: string;
|
|
87
|
+
/** The error status code. */
|
|
88
|
+
code?: number;
|
|
89
|
+
/** The error additional details. */
|
|
90
|
+
details?: unknown;
|
|
91
|
+
};
|
|
92
|
+
/** Represents the current status of a function execution. */
|
|
93
|
+
export type AgentServerStatus = 'continue' | 'stop' | 'done';
|