diff --git a/packages/builder/yarn.lock b/packages/builder/yarn.lock
index 75142123d4..48fd25ac71 100644
--- a/packages/builder/yarn.lock
+++ b/packages/builder/yarn.lock
@@ -2,11 +2,6 @@
# yarn lockfile v1
-"@adobe/spectrum-css-workflow-icons@^1.2.1":
- version "1.4.2"
- resolved "https://registry.yarnpkg.com/@adobe/spectrum-css-workflow-icons/-/spectrum-css-workflow-icons-1.4.2.tgz#6df50c967a0b129d8629b332f7f0f40d4a070438"
- integrity sha512-zH0a3B6tMntGcGY9gMYEuQPA5bI/vjhLGmdneUyD5c7CEH45vyHJLzD8Dpw22FDzu/ts7oOF+AXE1LyuaxQsbQ==
-
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.16.0":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431"
@@ -920,131 +915,6 @@
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
-"@budibase/bbui@^1.0.84":
- version "1.0.84"
- resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-1.0.84.tgz#8bf2f3d93aaf71ae353f93b10cb34e06c99d8176"
- integrity sha512-GO2qXq5wJ00YCdgl93fP1y9eLwAbX0fpt9WVqNYWcgUzAMkeQAOPr7S0ud05GwLZPo736exxqh6RzSwo5H73sg==
- dependencies:
- "@adobe/spectrum-css-workflow-icons" "^1.2.1"
- "@budibase/string-templates" "^1.0.84"
- "@spectrum-css/actionbutton" "^1.0.1"
- "@spectrum-css/actiongroup" "^1.0.1"
- "@spectrum-css/avatar" "^3.0.2"
- "@spectrum-css/button" "^3.0.1"
- "@spectrum-css/buttongroup" "^3.0.2"
- "@spectrum-css/checkbox" "^3.0.2"
- "@spectrum-css/dialog" "^3.0.1"
- "@spectrum-css/divider" "^1.0.3"
- "@spectrum-css/dropzone" "^3.0.2"
- "@spectrum-css/fieldgroup" "^3.0.2"
- "@spectrum-css/fieldlabel" "^3.0.1"
- "@spectrum-css/icon" "^3.0.1"
- "@spectrum-css/illustratedmessage" "^3.0.2"
- "@spectrum-css/inlinealert" "^2.0.1"
- "@spectrum-css/inputgroup" "^3.0.2"
- "@spectrum-css/label" "^2.0.10"
- "@spectrum-css/link" "^3.1.1"
- "@spectrum-css/menu" "^3.0.1"
- "@spectrum-css/modal" "^3.0.1"
- "@spectrum-css/pagination" "^3.0.3"
- "@spectrum-css/picker" "^1.0.1"
- "@spectrum-css/popover" "^3.0.1"
- "@spectrum-css/progressbar" "^1.0.2"
- "@spectrum-css/progresscircle" "^1.0.2"
- "@spectrum-css/radio" "^3.0.2"
- "@spectrum-css/search" "^3.0.2"
- "@spectrum-css/sidenav" "^3.0.2"
- "@spectrum-css/statuslight" "^3.0.2"
- "@spectrum-css/stepper" "^3.0.3"
- "@spectrum-css/switch" "^1.0.2"
- "@spectrum-css/table" "^3.0.1"
- "@spectrum-css/tabs" "^3.0.1"
- "@spectrum-css/tags" "^3.0.2"
- "@spectrum-css/textfield" "^3.0.1"
- "@spectrum-css/toast" "^3.0.1"
- "@spectrum-css/tooltip" "^3.0.3"
- "@spectrum-css/treeview" "^3.0.2"
- "@spectrum-css/typography" "^3.0.1"
- "@spectrum-css/underlay" "^2.0.9"
- "@spectrum-css/vars" "^3.0.1"
- dayjs "^1.10.4"
- easymde "^2.16.1"
- svelte-flatpickr "^3.2.3"
- svelte-portal "^1.0.0"
-
-"@budibase/client@^1.0.84":
- version "1.0.84"
- resolved "https://registry.yarnpkg.com/@budibase/client/-/client-1.0.84.tgz#7d29cd03a3611fb580ced1bb911b45e73a8c7832"
- integrity sha512-sZC3/7KQXPHS/jDyeTiPKK8Ri81JgtgInIfEvpd45V5jeg5kNo0L1m37xZgQEzQCqSqr47veM6WN7Kl3WYZr0g==
- dependencies:
- "@budibase/bbui" "^1.0.84"
- "@budibase/frontend-core" "^1.0.84"
- "@budibase/string-templates" "^1.0.84"
- "@spectrum-css/button" "^3.0.3"
- "@spectrum-css/card" "^3.0.3"
- "@spectrum-css/divider" "^1.0.3"
- "@spectrum-css/link" "^3.1.3"
- "@spectrum-css/page" "^3.0.1"
- "@spectrum-css/tag" "^3.1.4"
- "@spectrum-css/typography" "^3.0.2"
- "@spectrum-css/vars" "^3.0.1"
- apexcharts "^3.22.1"
- dayjs "^1.10.5"
- downloadjs "1.4.7"
- regexparam "^1.3.0"
- rollup-plugin-polyfill-node "^0.8.0"
- shortid "^2.2.15"
- svelte "^3.38.2"
- svelte-apexcharts "^1.0.2"
- svelte-flatpickr "^3.1.0"
- svelte-spa-router "^3.0.5"
-
-"@budibase/frontend-core@^1.0.84":
- version "1.0.84"
- resolved "https://registry.yarnpkg.com/@budibase/frontend-core/-/frontend-core-1.0.84.tgz#d21594ddb521b79e2ac1b5322903887268f8a9aa"
- integrity sha512-v6vTIVq8p+1ytnCWckYUqzzJ4Ylo6DF4C/pi2x5UrZxZuU7tQPMYGktHGQOouosHoGoZXsnPXJooeFHy43j0OQ==
- dependencies:
- "@budibase/bbui" "^1.0.84"
- lodash "^4.17.21"
- svelte "^3.46.2"
-
-"@budibase/handlebars-helpers@^0.11.8":
- version "0.11.8"
- resolved "https://registry.yarnpkg.com/@budibase/handlebars-helpers/-/handlebars-helpers-0.11.8.tgz#6953d29673a8c5c407e096c0a84890465c7ce841"
- integrity sha512-ggWJUt0GqsHFAEup5tlWlcrmYML57nKhpNGGLzVsqXVYN8eVmf3xluYmmMe7fDYhQH0leSprrdEXmsdFQF3HAQ==
- dependencies:
- array-sort "^1.0.0"
- define-property "^2.0.2"
- extend-shallow "^3.0.2"
- for-in "^1.0.2"
- get-object "^0.2.0"
- get-value "^3.0.1"
- handlebars "^4.7.7"
- handlebars-utils "^1.0.6"
- has-value "^2.0.2"
- helper-md "^0.2.2"
- html-tag "^2.0.0"
- is-even "^1.0.0"
- is-glob "^4.0.1"
- kind-of "^6.0.3"
- micromatch "^3.1.5"
- relative "^3.0.2"
- striptags "^3.1.1"
- to-gfm-code-block "^0.1.1"
- year "^0.2.1"
-
-"@budibase/string-templates@^1.0.84":
- version "1.0.84"
- resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-1.0.84.tgz#66669e9898ed20c6be2c46a5eb19d55003eb6bcb"
- integrity sha512-6Tv/TfGkmr3uBwNdZ3eKAPKwdsRTZbuQ+02puH+EcJK2leCerINo1SpAHf1BOmjQJynKeslKpSkUiisRVerMEg==
- dependencies:
- "@budibase/handlebars-helpers" "^0.11.8"
- dayjs "^1.10.4"
- handlebars "^4.7.6"
- handlebars-utils "^1.0.6"
- lodash "^4.17.20"
- vm2 "^3.9.4"
-
"@cnakazawa/watch@^1.0.3":
version "1.0.4"
resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a"
@@ -1328,15 +1198,6 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
-"@rollup/plugin-inject@^4.0.0":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-4.0.4.tgz#fbeee66e9a700782c4f65c8b0edbafe58678fbc2"
- integrity sha512-4pbcU4J/nS+zuHk+c+OL3WtmEQhqxlZ9uqfjQMQDOHOPld7PsCd8k5LWs8h5wjwJN7MgnAn768F2sDxEP4eNFQ==
- dependencies:
- "@rollup/pluginutils" "^3.1.0"
- estree-walker "^2.0.1"
- magic-string "^0.25.7"
-
"@rollup/plugin-replace@^2.4.2":
version "2.4.2"
resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a"
@@ -1472,108 +1333,6 @@
dependencies:
"@sinonjs/commons" "^1.7.0"
-"@spectrum-css/actionbutton@^1.0.1":
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/@spectrum-css/actionbutton/-/actionbutton-1.1.8.tgz#35c238da459844e19c3d9480566e15f5e2651071"
- integrity sha512-GhMVe9ZD5QRlcVV7asLArkVfXjFSB9ndQsO6CNnMoXBpo+2eV2Hi2xl1971mTKBEcR7OucIXk+OK02eJ6rRVTg==
-
-"@spectrum-css/actiongroup@^1.0.1":
- version "1.0.19"
- resolved "https://registry.yarnpkg.com/@spectrum-css/actiongroup/-/actiongroup-1.0.19.tgz#91bd74ce0c0221e50ca3b190bc875c8a19db4db8"
- integrity sha512-sQxodiO/EGJUWE7nHxApSncX4nDyX9exm8EIAWZ9bPSH2vPeH+Vib+tHDrWw7d1i2lGCTwzMH1wI0w2DvjsRsA==
-
-"@spectrum-css/avatar@^3.0.2":
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/@spectrum-css/avatar/-/avatar-3.0.2.tgz#4f1826223eae330e64b6d3cc899e9bc2e98dac95"
- integrity sha512-wEczvSqxttTWSiL3cOvXV/RmGRwSkw2w6+slcHhnf0kb7ovymMM+9oz8vvEpEsSeo5u598bc+7ktrKFpAd6soQ==
-
-"@spectrum-css/button@^3.0.1", "@spectrum-css/button@^3.0.3":
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/@spectrum-css/button/-/button-3.0.3.tgz#2df1efaab6c7e0b3b06cb4b59e1eae59c7f1fc84"
- integrity sha512-6CnLPqqtaU/PcSSIGeGRi0iFIIxIUByYLKFO6zn5NEUc12KQ28dJ4PLwB6WBa0L8vRoAGlnWWH2ZZweTijbXgg==
-
-"@spectrum-css/buttongroup@^3.0.2":
- version "3.0.10"
- resolved "https://registry.yarnpkg.com/@spectrum-css/buttongroup/-/buttongroup-3.0.10.tgz#897ea04b3ffea389fc7fe5bf67a6d1f3454b774d"
- integrity sha512-U7D24vgHYhlqOyaLJZ5LPskDAuD7cGZktmWvXtvLqG6RFyTr7JHn5oPRuo6mLzaggIHqCdJylOjZ4FHqT4LpTQ==
-
-"@spectrum-css/card@^3.0.3":
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/@spectrum-css/card/-/card-3.0.3.tgz#56b2e2da6b80c1583228baa279de7407383bfb6b"
- integrity sha512-+oKLUI2a0QmQP9EzySeq/G4FpUkkdaDNbuEbqCj2IkPMc/2v/nwzsPhh1fj2UIghGAiiUwXfPpzax1e8fyhQUg==
-
-"@spectrum-css/checkbox@^3.0.2":
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/checkbox/-/checkbox-3.0.17.tgz#8023a42e0197321c11df92fd1fb18fd81949808b"
- integrity sha512-bJlNmF7MOwKCc5YSaem4scEux76bMQmC2rPtKG63ajmd2uNkJMynCEiPtkE4tG3KBLa/qDHW3l7swyy8L04/eg==
-
-"@spectrum-css/dialog@^3.0.1":
- version "3.0.12"
- resolved "https://registry.yarnpkg.com/@spectrum-css/dialog/-/dialog-3.0.12.tgz#fc97e002ca768a3d99dd10cb6a135c2b06052004"
- integrity sha512-50rbFa+9eUKT+3uYBX7CkmI7SbQ0Z3CAFwjyjai+itYZ8kf/FcHVFwcLjgrry9scUnKhexMs94kkr0gfQpPe8Q==
-
-"@spectrum-css/divider@^1.0.3":
- version "1.0.19"
- resolved "https://registry.yarnpkg.com/@spectrum-css/divider/-/divider-1.0.19.tgz#0aa97be02148f8a4ebb778c5e9d40d20e518bf19"
- integrity sha512-vXUTfl08Txd2Rc7DsZtFDkaRSTDw1TzBwDvMJaGBl2E6cdCAXL2zXMxuXsEXN1NlPT8unpXVFYVMppcTzv/FCg==
- dependencies:
- "@spectrum-css/vars" "^7.1.0"
-
-"@spectrum-css/dropzone@^3.0.2":
- version "3.0.18"
- resolved "https://registry.yarnpkg.com/@spectrum-css/dropzone/-/dropzone-3.0.18.tgz#ed4ff37f3781fc2d30ec21fb2b3579c864b155a5"
- integrity sha512-eBqJrqy/EAERnydMRtkzRGaamvTYCD+4j2L50YA7jPp2DML+93dd5C4EkG/sBzhzCigEiNQIibXT8c3BiQKNDA==
-
-"@spectrum-css/fieldgroup@^3.0.2":
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/fieldgroup/-/fieldgroup-3.0.17.tgz#93656af3fa403f2ef4716d43b17356e99dcf524d"
- integrity sha512-eXIlK1bcUwzQK0KsZ3u1Ar6qK6tI0GX12cQpgPKxT+8Pxjk1eK5JPWH5kKepe/6i0lagrGbKBoYDv2xGJWWSUg==
-
-"@spectrum-css/fieldlabel@^3.0.1":
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/@spectrum-css/fieldlabel/-/fieldlabel-3.0.3.tgz#f73c04d20734d4718ffb620dc46458904685b449"
- integrity sha512-nEvIkEXCD5n4fW67Unq6Iu7VXoauEd/JGpfTY02VsC5p4FJLnwKfPDbJUuUsqClAxqw7nAsmXVKtn4zQFf5yPQ==
-
-"@spectrum-css/icon@^3.0.1":
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/icon/-/icon-3.0.17.tgz#952a43b8bdd451aaf54e4cd7d5fe0a156018f8c9"
- integrity sha512-O+xY3UPLgyG2VnQjGCTBadOwkqtKBRmAkRRnWIB14/O/CPVh5ca3hMGGVHql2IBH7V9I7zThH/JU3MrrE9owQQ==
-
-"@spectrum-css/illustratedmessage@^3.0.2":
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/illustratedmessage/-/illustratedmessage-3.0.17.tgz#49cb2549fda97a6812156bfba6ccdd3a18bebd11"
- integrity sha512-kpDqeq1U+rEjG1XuiXkbGvS71vn6mpFF/hiwCgFJWudVOfypDPQ4KLfYw1ditFSUzMCm5H6U/RqAShAJn8oMWA==
-
-"@spectrum-css/inlinealert@^2.0.1":
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/@spectrum-css/inlinealert/-/inlinealert-2.0.6.tgz#4c5e923a1f56a96cc1adb30ef1f06ae04f2c6376"
- integrity sha512-OpvvoWP02wWyCnF4IgG8SOPkXymovkC9cGtgMS1FdDubnG3tJZB/JeKTsRR9C9Vt3WBaOmISRdSKlZ4lC9CFzA==
-
-"@spectrum-css/inputgroup@^3.0.2":
- version "3.0.8"
- resolved "https://registry.yarnpkg.com/@spectrum-css/inputgroup/-/inputgroup-3.0.8.tgz#fc23afc8a73c24d17249c9d2337e8b42085b298b"
- integrity sha512-cmQWzFp0GU+4IMc8SSeVFdmQDlRUdPelXaQdKUR9mZuO2iYettg37s0lfBCeJyYkUNTagz0zP8O7A0iXfmeE6g==
-
-"@spectrum-css/label@^2.0.10":
- version "2.0.10"
- resolved "https://registry.yarnpkg.com/@spectrum-css/label/-/label-2.0.10.tgz#2368651d7636a19385b5d300cdf6272db1916001"
- integrity sha512-xCbtEiQkZIlLdWFikuw7ifDCC21DOC/KMgVrrVJHXFc4KRQe9LTZSqmGF3tovm+CSq1adE59mYoTbojVQ9YuEQ==
-
-"@spectrum-css/link@^3.1.1", "@spectrum-css/link@^3.1.3":
- version "3.1.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/link/-/link-3.1.17.tgz#efa8fd5ee8a6b291843dcaf4fa1270b81c564c48"
- integrity sha512-sWWTnDB+Yig9WmLvzcvUgSH6zZtu2tWfobMivFLjRnfQYIhxJSoj87AleLpcTbvIQIwSwytSdnbncsm4rBfDjg==
-
-"@spectrum-css/menu@^3.0.1":
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/menu/-/menu-3.0.17.tgz#251c8086ab84ca9237109e19d29f838a813b3f8a"
- integrity sha512-mCTo/JGTbpw93T6EZ+hl+OJ+6BaMbVSEy31Wy3UgYaSw61+IzVIn7cVVr/9fxmOZl/Y6zSwAq/IZl3FBnQ3zbQ==
-
-"@spectrum-css/modal@^3.0.1":
- version "3.0.16"
- resolved "https://registry.yarnpkg.com/@spectrum-css/modal/-/modal-3.0.16.tgz#a9034f6b5faf8b54850ab9ff5830cf25f37b84c8"
- integrity sha512-pmCUTUOwg8Q521ptMNpIiGOJhndFGMv8OpAPaUfCMEfVLnv5s3+GR1ciGl9NmsdibjmVXi54WnSRsZtcpe2j0A==
-
"@spectrum-css/page@^3.0.1":
version "3.0.8"
resolved "https://registry.yarnpkg.com/@spectrum-css/page/-/page-3.0.8.tgz#001efa9e4c10095df9b2b37cf7d7d6eb60140190"
@@ -1581,111 +1340,6 @@
dependencies:
"@spectrum-css/vars" "^4.3.0"
-"@spectrum-css/pagination@^3.0.3":
- version "3.0.11"
- resolved "https://registry.yarnpkg.com/@spectrum-css/pagination/-/pagination-3.0.11.tgz#68d9f34fe8eb36bf922e41b11f49eac62ac2fc41"
- integrity sha512-wjZr7NAcqHK6fxNIGKTYEVtAOJugJTbcz4d8K7DZuUDgBVwLJJHJBi4uJ4KrIRYliMWOvqWTZzCJLmmTfx4cyw==
-
-"@spectrum-css/picker@^1.0.1":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@spectrum-css/picker/-/picker-1.2.0.tgz#5e986d3b725b2f6820949fb92f6ea6262e11dda7"
- integrity sha512-NQEZUV7pnT5CliHq08g8dO6KpWgipycpa+vBw+Cqw93h8IjIHWCUU+gUo87EV+h/Z1fI1l/sWguBpwzb/nGEAg==
-
-"@spectrum-css/popover@^3.0.1":
- version "3.0.11"
- resolved "https://registry.yarnpkg.com/@spectrum-css/popover/-/popover-3.0.11.tgz#a7450c01bcf1609264b4a9df58821368b9e224d1"
- integrity sha512-bzyNQJVw6Mn1EBelTaRlXCdd0ZfykNX9O6SHx3a+jXPYu8VBrRpHm0gsfWzPAz1etd1vj1CxwG/teQt4qvyZ/Q==
-
-"@spectrum-css/progressbar@^1.0.2":
- version "1.0.21"
- resolved "https://registry.yarnpkg.com/@spectrum-css/progressbar/-/progressbar-1.0.21.tgz#892a0f3655e0e0f97734362b1e5763a6c3214dcc"
- integrity sha512-CC7QrVfFT/IwDSBkTooe8aORVG+SuXC2kxkCbRHz789W4ST/ntM5qv62Axvb9AhR0HTGdEVMJByFt6wsdB5ZpQ==
-
-"@spectrum-css/progresscircle@^1.0.2":
- version "1.0.16"
- resolved "https://registry.yarnpkg.com/@spectrum-css/progresscircle/-/progresscircle-1.0.16.tgz#b2d44b11d56f9af0047933f9ed820b8b9704af1f"
- integrity sha512-kXdepk7LQ2Chze4RTWRKECTqI4QdeAMG74sbkznUAdZj+wMAytLpWgWaH/4v+0uJ66WcFy2GDVkmy38qHJ/HwQ==
-
-"@spectrum-css/radio@^3.0.2":
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/radio/-/radio-3.0.17.tgz#7097aea15b24cdeccf19944898f9b46fcd30044c"
- integrity sha512-X2JHa/Vp/BdzOy71Kiyxg4C3Ld+YNglZ/SWMbCvlEmcJL6VcQ5druni16vgUhwmk8z3LCGN74wJB9sbNdF/UAQ==
-
-"@spectrum-css/search@^3.0.2":
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/@spectrum-css/search/-/search-3.1.2.tgz#8d43f35f884f7c190e7694c8d26a3f2cfed01ef0"
- integrity sha512-8cMK1QB07dbReZ/ECyTyoT2dELZ7hK1b3jEDiWSeLBbXcKirR1OI24sZEnewQY/XWFd/62Z1YdNaaA8S6UuXWQ==
-
-"@spectrum-css/sidenav@^3.0.2":
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/sidenav/-/sidenav-3.0.17.tgz#f3ceae802a307a6beb6663298f95451236c31a61"
- integrity sha512-zkZrI1SCT5KkNVn3cdcCs6Yw8p4F29V/4Wim/ZWp0344ymew4YpnyWTgdEtIEavGsW7ivR45GpgskZhrLOs54g==
-
-"@spectrum-css/statuslight@^3.0.2":
- version "3.0.8"
- resolved "https://registry.yarnpkg.com/@spectrum-css/statuslight/-/statuslight-3.0.8.tgz#3b0ea80712573679870a85d469850230e794a0f7"
- integrity sha512-zMTHs8lk+I7fLdi9waEEbsCmJ1FxeHcjQ0yltWxuRmGk2vl4MQdQIuHIMI63iblqEaiwnJRjXJoKnWlNvndTJQ==
-
-"@spectrum-css/stepper@^3.0.3":
- version "3.0.19"
- resolved "https://registry.yarnpkg.com/@spectrum-css/stepper/-/stepper-3.0.19.tgz#415823fdc809e002a24627b89e9e118ebcdb5ae2"
- integrity sha512-ebe+g+/0rr0FyvDNCDm2AvNqGwmuP2g1/VAIOKEx3lvmAqJaq7gdYAymJqxn6n8xn8e66X7okyAp2OpLNcLk8w==
-
-"@spectrum-css/switch@^1.0.2":
- version "1.0.16"
- resolved "https://registry.yarnpkg.com/@spectrum-css/switch/-/switch-1.0.16.tgz#1eb3cd0589a7dc663f991b9aecc811afb71e6194"
- integrity sha512-R47F1u10jfaPPZ0gZPSC6qyCOv3iIlxv+BPAwYky1h0eC/peNCSZUGSIDd6vog/TVH/t3b8q+uryxVrxwrJFBQ==
-
-"@spectrum-css/table@^3.0.1":
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/@spectrum-css/table/-/table-3.0.3.tgz#7f7f19905ef3275cbf907ce3a5818e63c30b2caf"
- integrity sha512-nxwzVjLPsXoY/v4sdxOVYLcC+cEbGgJyLcLclT5LT9MGSbngFeUMJzzVR4EvehzuN4dH7hrATG7Mbuq29Mf0Hg==
-
-"@spectrum-css/tabs@^3.0.1":
- version "3.2.7"
- resolved "https://registry.yarnpkg.com/@spectrum-css/tabs/-/tabs-3.2.7.tgz#f68a6e2a7ffb93520eb7831fe4e391d58a63d23d"
- integrity sha512-HsdUL5ytBdhjFbA6CnAnU24Fifs4qWVH0MIdKL5hqsVQOauVgul8VqqaTGIhhfvmRBl5G9GRVrpg0I30qD3iDA==
-
-"@spectrum-css/tag@^3.1.4":
- version "3.3.5"
- resolved "https://registry.yarnpkg.com/@spectrum-css/tag/-/tag-3.3.5.tgz#f83ded301c8ed334d2c9a33f586807a3d423e588"
- integrity sha512-KhUZ75xzjnbYPg1ztwWp5xvWYVkG5+KH/2OiTsE5vA9LXZ3Z1O21c5YpFg5FVCvAWN/fwfwpxsi7sp38x7FlLg==
-
-"@spectrum-css/tags@^3.0.2":
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/@spectrum-css/tags/-/tags-3.0.3.tgz#fc76d2735cdc442de91b7eb3bee49a928c0767ac"
- integrity sha512-SL8vPxVDfWcY5VdIuyl0TImEXcOU1I7yCyXkk7MudMwfnYs81FaIyY32hFV9OHj0Tz/36UzRzc7AVMSuRQ53pw==
-
-"@spectrum-css/textfield@^3.0.1":
- version "3.1.8"
- resolved "https://registry.yarnpkg.com/@spectrum-css/textfield/-/textfield-3.1.8.tgz#15cb08cccd7d209767b86b4cd854ebd159bc3890"
- integrity sha512-uWF75ixdmbpfvTasBdYC0wPQvfLuk36ATy9TkmlRredp+N98QR2XU0H5kNuZnyxwahsw+9xe7K/lpFw4ZWJ3Zw==
-
-"@spectrum-css/toast@^3.0.1":
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/@spectrum-css/toast/-/toast-3.0.3.tgz#97c1527384707600832ecda35643ed304615250f"
- integrity sha512-CjLeaMs+cjUXojCCRtbj0YkD2BoZW16kjj2o5omkEpUTjA34IJ8xJ1a+CCtDILWekhXvN0MBN4sbumcnwcnx8w==
-
-"@spectrum-css/tooltip@^3.0.3":
- version "3.1.11"
- resolved "https://registry.yarnpkg.com/@spectrum-css/tooltip/-/tooltip-3.1.11.tgz#7981c988b0e20604b8018b8cc6bc6af4cac457fb"
- integrity sha512-PhxyoYNL90QxY0X6qe1tq7werNhV6HJBYe6fcf2d2cBXaM7L2htXwDfLoqnR5NXU1G4c186ZkZr7tk+flRXFGw==
-
-"@spectrum-css/treeview@^3.0.2":
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/@spectrum-css/treeview/-/treeview-3.0.3.tgz#aeda5175158b9f8d7529cb2b394428eb2a428046"
- integrity sha512-D5gGzZC/KtRArdx86Mesc9+99W9nTbUOeyYGqoJoAfJSOttoT6Tk5CrDvlCmAqjKf5rajemAkGri1ChqvUIwkw==
-
-"@spectrum-css/typography@^3.0.1", "@spectrum-css/typography@^3.0.2":
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/@spectrum-css/typography/-/typography-3.0.2.tgz#ea3ca0a60e18064527819d48c8c4364cab4fcd38"
- integrity sha512-5ZOLmQe0edzsDMyhghUd4hBb5uxGsFrxzf+WasfcUw9klSfTsRZ09n1BsaaWbgrLjlMQ+EEHS46v5VNo0Ms2CA==
-
-"@spectrum-css/underlay@^2.0.9":
- version "2.0.25"
- resolved "https://registry.yarnpkg.com/@spectrum-css/underlay/-/underlay-2.0.25.tgz#8d390b3353e7f05b00d72fea00dbd66dea31c663"
- integrity sha512-Ht/p6g7FxP7q5lO3iPJ5y89UK20pRWDtGdqeBFxsrxVXdHYbiC3Dm2UNgvi7WRF7dWmD9gaHJmSetjmSDYtVcw==
-
"@spectrum-css/vars@^3.0.1":
version "3.0.2"
resolved "https://registry.yarnpkg.com/@spectrum-css/vars/-/vars-3.0.2.tgz#ea9062c3c98dfc6ba59e5df14a03025ad8969999"
@@ -1696,11 +1350,6 @@
resolved "https://registry.yarnpkg.com/@spectrum-css/vars/-/vars-4.3.0.tgz#03ddf67d3aa8a9a4cb0edbbd259465c9ced7e70d"
integrity sha512-ZQ2XAhgu4G9yBeXQNDAz07Z8oZNnMt5o9vzf/mpBA7Teb/JI+8qXp2wt8D245SzmtNlFkG/bzRYvQc0scgZeCQ==
-"@spectrum-css/vars@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@spectrum-css/vars/-/vars-7.1.0.tgz#6531de43d3d0dfcc96ddda4d283f656e0efb63f6"
- integrity sha512-hSn2ZZpvPOOzMCof9XWhaKNIs9yQfVkeUM0N6y99uz+9dvCyMrFlD2bvm+4IRB7yvu2xJQicd5vjVzbWyW/P6Q==
-
"@sveltejs/vite-plugin-svelte@1.0.0-next.19":
version "1.0.0-next.19"
resolved "https://registry.yarnpkg.com/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.19.tgz#9646abc2cd1982146db4bb341aafdb5f32f19dd2"
@@ -1812,18 +1461,6 @@
dependencies:
"@babel/types" "^7.3.0"
-"@types/codemirror@^5.60.4":
- version "5.60.5"
- resolved "https://registry.yarnpkg.com/@types/codemirror/-/codemirror-5.60.5.tgz#5b989a3b4bbe657458cf372c92b6bfda6061a2b7"
- integrity sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg==
- dependencies:
- "@types/tern" "*"
-
-"@types/estree@*":
- version "0.0.51"
- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40"
- integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
-
"@types/estree@0.0.39":
version "0.0.39"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
@@ -1878,11 +1515,6 @@
jest-diff "^27.0.0"
pretty-format "^27.0.0"
-"@types/marked@^4.0.1":
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/@types/marked/-/marked-4.0.2.tgz#cb2dbf10da2f41cf20bd91fb5f89b67540c282f7"
- integrity sha512-auNrZ/c0w6wsM9DccwVxWHssrMDezHUAXNesdp2RQrCVCyrQbOiSq7yqdJKrUQQpw9VTm7CGYJH2A/YG7jjrjQ==
-
"@types/minimatch@*":
version "3.0.5"
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40"
@@ -1928,13 +1560,6 @@
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c"
integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==
-"@types/tern@*":
- version "0.23.4"
- resolved "https://registry.yarnpkg.com/@types/tern/-/tern-0.23.4.tgz#03926eb13dbeaf3ae0d390caf706b2643a0127fb"
- integrity sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==
- dependencies:
- "@types/estree" "*"
-
"@types/testing-library__jest-dom@^5.9.1":
version "5.14.1"
resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.1.tgz#014162a5cee6571819d48e999980694e2f657c3c"
@@ -1986,7 +1611,7 @@ acorn-walk@^7.1.1:
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
-acorn-walk@^8.1.1, acorn-walk@^8.2.0:
+acorn-walk@^8.1.1:
version "8.2.0"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
@@ -2001,7 +1626,7 @@ acorn@^8.2.4:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2"
integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==
-acorn@^8.4.1, acorn@^8.7.0:
+acorn@^8.4.1:
version "8.7.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==
@@ -2073,18 +1698,6 @@ anymatch@^3.0.3:
normalize-path "^3.0.0"
picomatch "^2.0.4"
-apexcharts@^3.19.2, apexcharts@^3.22.1:
- version "3.33.2"
- resolved "https://registry.yarnpkg.com/apexcharts/-/apexcharts-3.33.2.tgz#ebb186f1da954fc31857f1ee562a6b281d25db6b"
- integrity sha512-GkHZ3o36ZT/jSBh5y1pxxRzwM3tvtladtkcUTfXwP0wYAHK8Qj0X4ZPsupP7emRIjhOVpGsCxW9xeO3F5w+AOQ==
- dependencies:
- svg.draggable.js "^2.2.2"
- svg.easing.js "^2.0.0"
- svg.filter.js "^2.0.2"
- svg.pathmorphing.js "^0.1.3"
- svg.resize.js "^1.4.3"
- svg.select.js "^3.0.1"
-
arch@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11"
@@ -2095,7 +1708,7 @@ arg@^4.1.0:
resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
-argparse@^1.0.10, argparse@^1.0.7:
+argparse@^1.0.7:
version "1.0.10"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
@@ -2125,15 +1738,6 @@ arr-union@^3.1.0:
resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
-array-sort@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a"
- integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==
- dependencies:
- default-compare "^1.0.0"
- get-value "^2.0.6"
- kind-of "^5.0.2"
-
array-union@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
@@ -2186,13 +1790,6 @@ atob@^2.1.2:
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
-autolinker@~0.28.0:
- version "0.28.1"
- resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-0.28.1.tgz#0652b491881879f0775dace0cdca3233942a4e47"
- integrity sha1-BlK0kYgYefB3XazgzcoyM5QqTkc=
- dependencies:
- gulp-header "^1.7.1"
-
aws-sign2@~0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
@@ -2589,23 +2186,11 @@ co@^4.6.0:
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
-codemirror-spell-checker@1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/codemirror-spell-checker/-/codemirror-spell-checker-1.1.2.tgz#1c660f9089483ccb5113b9ba9ca19c3f4993371e"
- integrity sha1-HGYPkIlIPMtRE7m6nKGcP0mTNx4=
- dependencies:
- typo-js "*"
-
codemirror@^5.59.0:
version "5.63.3"
resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.63.3.tgz#97042a242027fe0c87c09b36bc01931d37b76527"
integrity sha512-1C+LELr+5grgJYqwZKqxrcbPsHFHapVaVAloBsFBASbpLnQqLw1U8yXJ3gT5D+rhxIiSpo+kTqN+hQ+9ialIXw==
-codemirror@^5.63.1:
- version "5.65.2"
- resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.65.2.tgz#5799a70cb3d706e10f60e267245e3a75205d3dd9"
- integrity sha512-SZM4Zq7XEC8Fhroqe3LxbEEX1zUPWH1wMr5zxiBuiUF64iYOUH/JI88v4tBag8MiBS8B8gRv8O1pPXGYXQ4ErA==
-
collect-v8-coverage@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59"
@@ -2690,13 +2275,6 @@ concat-map@0.0.1:
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
-concat-with-sourcemaps@*:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e"
- integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==
- dependencies:
- source-map "^0.6.1"
-
configent@^2.1.4:
version "2.2.0"
resolved "https://registry.yarnpkg.com/configent/-/configent-2.2.0.tgz#2de230fc43f22c47cfd99016aa6962d6f9546994"
@@ -2734,11 +2312,6 @@ core-util-is@1.0.2:
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
-core-util-is@~1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
- integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
-
create-require@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
@@ -2872,11 +2445,6 @@ dayjs@^1.10.4:
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468"
integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==
-dayjs@^1.10.5:
- version "1.10.8"
- resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.8.tgz#267df4bc6276fcb33c04a6735287e3f429abec41"
- integrity sha512-wbNwDfBHHur9UOzNUjeKUOJ0fCb0a52Wx0xInmQ7Y8FstyajiV1NmK1e00cxsr9YrE9r7yAChE0VvpuY5Rnlow==
-
debug@4, debug@4.3.2, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2:
version "4.3.2"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
@@ -2923,13 +2491,6 @@ deepmerge@^4.2.2:
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
-default-compare@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f"
- integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==
- dependencies:
- kind-of "^5.0.2"
-
define-properties@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
@@ -3018,17 +2579,6 @@ duplexer@~0.1.1:
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
-easymde@^2.16.1:
- version "2.16.1"
- resolved "https://registry.yarnpkg.com/easymde/-/easymde-2.16.1.tgz#f4c2380312615cb33826f1a1fecfaa4022ff551a"
- integrity sha512-FihYgjRsKfhGNk89SHSqxKLC4aJ1kfybPWW6iAmtb5GnXu+tnFPSzSaGBmk1RRlCuhFSjhF0SnIMGVPjEzkr6g==
- dependencies:
- "@types/codemirror" "^5.60.4"
- "@types/marked" "^4.0.1"
- codemirror "^5.63.1"
- codemirror-spell-checker "1.1.2"
- marked "^4.0.10"
-
ecc-jsbn@~0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
@@ -3066,11 +2616,6 @@ enquirer@^2.3.6:
dependencies:
ansi-colors "^4.1.1"
-ent@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d"
- integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0=
-
error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
@@ -3480,11 +3025,6 @@ find-up@^4.0.0, find-up@^4.1.0:
locate-path "^5.0.0"
path-exists "^4.0.0"
-flatpickr@^4.5.2:
- version "4.6.11"
- resolved "https://registry.yarnpkg.com/flatpickr/-/flatpickr-4.6.11.tgz#c92f5108269c551c6b5069ecd754be610574574c"
- integrity sha512-/rnbE/hu5I5zndLEyYfYvqE4vPDvI5At0lFcQA5eOPfjquZLcQ0HMKTL7rv5/+DvbPM3/vJcXpXjB/DjBh+1jw==
-
fn-name@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-3.0.0.tgz#0596707f635929634d791f452309ab41558e3c5c"
@@ -3535,11 +3075,6 @@ from@~0:
resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe"
integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=
-fs-exists-sync@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add"
- integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=
-
fs-extra@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
@@ -3593,14 +3128,6 @@ get-intrinsic@^1.0.2:
has "^1.0.3"
has-symbols "^1.0.1"
-get-object@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/get-object/-/get-object-0.2.0.tgz#d92ff7d5190c64530cda0543dac63a3d47fe8c0c"
- integrity sha1-2S/31RkMZFMM2gVD2sY6PUf+jAw=
- dependencies:
- is-number "^2.0.2"
- isobject "^0.2.0"
-
get-package-type@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
@@ -3630,13 +3157,6 @@ get-value@^2.0.3, get-value@^2.0.6:
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
-get-value@^3.0.0, get-value@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/get-value/-/get-value-3.0.1.tgz#5efd2a157f1d6a516d7524e124ac52d0a39ef5a8"
- integrity sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==
- dependencies:
- isobject "^3.0.1"
-
getos@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5"
@@ -3706,35 +3226,6 @@ growly@^1.3.0:
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
-gulp-header@^1.7.1:
- version "1.8.12"
- resolved "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.12.tgz#ad306be0066599127281c4f8786660e705080a84"
- integrity sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==
- dependencies:
- concat-with-sourcemaps "*"
- lodash.template "^4.4.0"
- through2 "^2.0.0"
-
-handlebars-utils@^1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/handlebars-utils/-/handlebars-utils-1.0.6.tgz#cb9db43362479054782d86ffe10f47abc76357f9"
- integrity sha512-d5mmoQXdeEqSKMtQQZ9WkiUcO1E3tPbWxluCK9hVgIDPzQa9WsKo3Lbe/sGflTe7TomHEeZaOgwIkyIr1kfzkw==
- dependencies:
- kind-of "^6.0.0"
- typeof-article "^0.1.1"
-
-handlebars@^4.7.6, handlebars@^4.7.7:
- version "4.7.7"
- resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
- integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==
- dependencies:
- minimist "^1.2.5"
- neo-async "^2.6.0"
- source-map "^0.6.1"
- wordwrap "^1.0.0"
- optionalDependencies:
- uglify-js "^3.1.4"
-
harmony-reflect@^1.4.6:
version "1.6.2"
resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710"
@@ -3773,14 +3264,6 @@ has-value@^1.0.0:
has-values "^1.0.0"
isobject "^3.0.0"
-has-value@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-2.0.2.tgz#d0f12e8780ba8e90e66ad1a21c707fdb67c25658"
- integrity sha512-ybKOlcRsK2MqrM3Hmz/lQxXHZ6ejzSPzpNabKB45jb5qDgJvKPa3SdapTsTLwEb9WltgWpOmNax7i+DzNOk4TA==
- dependencies:
- get-value "^3.0.0"
- has-values "^2.0.1"
-
has-values@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
@@ -3794,13 +3277,6 @@ has-values@^1.0.0:
is-number "^3.0.0"
kind-of "^4.0.0"
-has-values@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-2.0.1.tgz#3876200ff86d8a8546a9264a952c17d5fc17579d"
- integrity sha512-+QdH3jOmq9P8GfdjFg0eJudqx1FqU62NQJ4P16rOEHeRdl7ckgwn6uqQjzYE0ZoHVV/e5E2esuJ5Gl5+HUW19w==
- dependencies:
- kind-of "^6.0.2"
-
has@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
@@ -3808,16 +3284,6 @@ has@^1.0.3:
dependencies:
function-bind "^1.1.1"
-helper-md@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/helper-md/-/helper-md-0.2.2.tgz#c1f59d7e55bbae23362fd8a0e971607aec69d41f"
- integrity sha1-wfWdflW7riM2L9ig6XFgeuxp1B8=
- dependencies:
- ent "^2.2.0"
- extend-shallow "^2.0.1"
- fs-exists-sync "^0.1.0"
- remarkable "^1.6.2"
-
hosted-git-info@^2.1.4:
version "2.8.9"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
@@ -3835,14 +3301,6 @@ html-escaper@^2.0.0:
resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
-html-tag@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/html-tag/-/html-tag-2.0.0.tgz#36c3bc8d816fd30b570d5764a497a641640c2fed"
- integrity sha512-XxzooSo6oBoxBEUazgjdXj7VwTn/iSTSZzTYKzYY6I916tkaYzypHxy+pbVU1h+0UQ9JlVf5XkNQyxOAiiQO1g==
- dependencies:
- is-self-closing "^1.0.1"
- kind-of "^6.0.0"
-
http-proxy-agent@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a"
@@ -3929,7 +3387,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@^2.0.4, inherits@~2.0.3:
+inherits@2, inherits@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -4021,13 +3479,6 @@ is-docker@^2.0.0:
resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
-is-even@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-even/-/is-even-1.0.0.tgz#76b5055fbad8d294a86b6a949015e1c97b717c06"
- integrity sha1-drUFX7rY0pSoa2qUkBXhyXtxfAY=
- dependencies:
- is-odd "^0.1.2"
-
is-extendable@^0.1.0, is-extendable@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
@@ -4070,13 +3521,6 @@ is-installed-globally@~0.4.0:
global-dirs "^3.0.0"
is-path-inside "^3.0.2"
-is-number@^2.0.2:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
- integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=
- dependencies:
- kind-of "^3.0.2"
-
is-number@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
@@ -4089,13 +3533,6 @@ is-number@^7.0.0:
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
-is-odd@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-0.1.2.tgz#bc573b5ce371ef2aad6e6f49799b72bef13978a7"
- integrity sha1-vFc7XONx7yqtbm9JeZtyvvE5eKc=
- dependencies:
- is-number "^3.0.0"
-
is-path-inside@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
@@ -4118,13 +3555,6 @@ is-potential-custom-element-name@^1.0.1:
resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5"
integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==
-is-self-closing@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-self-closing/-/is-self-closing-1.0.1.tgz#5f406b527c7b12610176320338af0fa3896416e4"
- integrity sha512-E+60FomW7Blv5GXTlYee2KDrnG6srxF7Xt1SjrhWUGUEsTFIqY/nq2y3DaftCsgUMdh89V07IVfhY9KIJhLezg==
- dependencies:
- self-closing-tags "^1.0.1"
-
is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
@@ -4157,7 +3587,7 @@ is-wsl@^2.2.0:
dependencies:
is-docker "^2.0.0"
-isarray@1.0.0, isarray@~1.0.0:
+isarray@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
@@ -4167,11 +3597,6 @@ isexe@^2.0.0:
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
-isobject@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-0.2.0.tgz#a3432192f39b910b5f02cc989487836ec70aa85e"
- integrity sha1-o0MhkvObkQtfAsyYlIeDbscKqF4=
-
isobject@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
@@ -4749,7 +4174,7 @@ jsprim@^2.0.2:
json-schema "0.4.0"
verror "1.10.0"
-kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.1.0, kind-of@^3.2.0:
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
version "3.2.2"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
@@ -4763,12 +4188,12 @@ kind-of@^4.0.0:
dependencies:
is-buffer "^1.1.5"
-kind-of@^5.0.0, kind-of@^5.0.2:
+kind-of@^5.0.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
-kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3:
+kind-of@^6.0.0, kind-of@^6.0.2:
version "6.0.3"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
@@ -4832,11 +4257,6 @@ lodash-es@^4.17.11:
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
-lodash._reinterpolate@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
- integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
-
lodash.debounce@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
@@ -4847,22 +4267,7 @@ lodash.once@^4.1.1:
resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=
-lodash.template@^4.4.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
- integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==
- dependencies:
- lodash._reinterpolate "^3.0.0"
- lodash.templatesettings "^4.0.0"
-
-lodash.templatesettings@^4.0.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33"
- integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==
- dependencies:
- lodash._reinterpolate "^3.0.0"
-
-lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0:
+lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.21, lodash@^4.7.0:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -4947,11 +4352,6 @@ map-visit@^1.0.0:
dependencies:
object-visit "^1.0.0"
-marked@^4.0.10:
- version "4.0.12"
- resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.12.tgz#2262a4e6fd1afd2f13557726238b69a48b982f7d"
- integrity sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==
-
merge-stream@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
@@ -4967,7 +4367,7 @@ methods@^1.1.2:
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
-micromatch@^3.1.4, micromatch@^3.1.5:
+micromatch@^3.1.4:
version "3.1.10"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
@@ -5088,11 +4488,6 @@ ncp@^2.0.0:
resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3"
integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=
-neo-async@^2.6.0:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
- integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
-
nice-try@^1.0.4:
version "1.0.5"
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
@@ -5428,11 +4823,6 @@ pretty-format@^27.0.0, pretty-format@^27.3.1:
ansi-styles "^5.0.0"
react-is "^17.0.1"
-process-nextick-args@~2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
- integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
-
prompts@^2.0.1:
version "2.4.2"
resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
@@ -5510,19 +4900,6 @@ read-pkg@^5.2.0:
parse-json "^5.0.0"
type-fest "^0.6.0"
-readable-stream@~2.3.6:
- version "2.3.7"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
- integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.3"
- isarray "~1.0.0"
- process-nextick-args "~2.0.0"
- safe-buffer "~5.1.1"
- string_decoder "~1.1.1"
- util-deprecate "~1.0.1"
-
redent@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f"
@@ -5563,16 +4940,6 @@ regex-not@^1.0.0, regex-not@^1.0.2:
extend-shallow "^3.0.2"
safe-regex "^1.1.0"
-regexparam@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-2.0.0.tgz#059476767d5f5f87f735fc7922d133fd1a118c8c"
- integrity sha512-gJKwd2MVPWHAIFLsaYDZfyKzHNS4o7E/v8YmNf44vmeV2e4YfVoDToTOKTvE7ab68cRJ++kLuEXJBaEeJVt5ow==
-
-regexparam@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/regexparam/-/regexparam-1.3.0.tgz#2fe42c93e32a40eff6235d635e0ffa344b92965f"
- integrity sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g==
-
regexpu-core@^4.7.1:
version "4.8.0"
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0"
@@ -5597,21 +4964,6 @@ regjsparser@^0.7.0:
dependencies:
jsesc "~0.5.0"
-relative@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/relative/-/relative-3.0.2.tgz#0dcd8ec54a5d35a3c15e104503d65375b5a5367f"
- integrity sha1-Dc2OxUpdNaPBXhBFA9ZTdbWlNn8=
- dependencies:
- isobject "^2.0.0"
-
-remarkable@^1.6.2:
- version "1.7.4"
- resolved "https://registry.yarnpkg.com/remarkable/-/remarkable-1.7.4.tgz#19073cb960398c87a7d6546eaa5e50d2022fcd00"
- integrity sha512-e6NKUXgX95whv7IgddywbeN/ItCkWbISmc2DiqHJb0wTrqZIexqdco5b8Z3XZoo/48IdNVKM9ZCvTPJ4F5uvhg==
- dependencies:
- argparse "^1.0.10"
- autolinker "~0.28.0"
-
remixicon@2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/remixicon/-/remixicon-2.5.0.tgz#b5e245894a1550aa23793f95daceadbf96ad1a41"
@@ -5720,13 +5072,6 @@ rollup-plugin-copy@^3.4.0:
globby "10.0.1"
is-plain-object "^3.0.0"
-rollup-plugin-polyfill-node@^0.8.0:
- version "0.8.0"
- resolved "https://registry.yarnpkg.com/rollup-plugin-polyfill-node/-/rollup-plugin-polyfill-node-0.8.0.tgz#859c070822f5e38d221e5b4238cb34aa894c2b19"
- integrity sha512-C4UeKedOmOBkB3FgR+z/v9kzRwV1Q/H8xWs1u1+CNe4XOV6hINfOrcO+TredKxYvopCmr+WKUSNsFUnD1RLHgQ==
- dependencies:
- "@rollup/plugin-inject" "^4.0.0"
-
rollup-pluginutils@^2.8.2:
version "2.8.2"
resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e"
@@ -5772,7 +5117,7 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.2:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
@@ -5811,11 +5156,6 @@ saxes@^5.0.1:
dependencies:
xmlchars "^2.2.0"
-self-closing-tags@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/self-closing-tags/-/self-closing-tags-1.0.1.tgz#6c5fa497994bb826b484216916371accee490a5d"
- integrity sha512-7t6hNbYMxM+VHXTgJmxwgZgLGktuXtVVD5AivWzNTdJBM4DBjnDKDzkf2SrNjihaArpeJYNjxkELBu1evI4lQA==
-
"semver@2 || 3 || 4 || 5", semver@^5.5.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
@@ -5889,13 +5229,6 @@ shortid@2.2.15:
dependencies:
nanoid "^2.1.0"
-shortid@^2.2.15:
- version "2.2.16"
- resolved "https://registry.yarnpkg.com/shortid/-/shortid-2.2.16.tgz#b742b8f0cb96406fd391c76bfc18a67a57fe5608"
- integrity sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==
- dependencies:
- nanoid "^2.1.0"
-
signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3:
version "3.0.5"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.5.tgz#9e3e8cc0c75a99472b44321033a7702e7738252f"
@@ -6128,13 +5461,6 @@ string-width@^4.1.0, string-width@^4.2.0:
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1"
-string_decoder@~1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
- integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
- dependencies:
- safe-buffer "~5.1.0"
-
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
@@ -6164,11 +5490,6 @@ strip-indent@^3.0.0:
dependencies:
min-indent "^1.0.0"
-striptags@^3.1.1:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.2.0.tgz#cc74a137db2de8b0b9a370006334161f7dd67052"
- integrity sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==
-
supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
@@ -6198,25 +5519,11 @@ supports-hyperlinks@^2.0.0:
has-flag "^4.0.0"
supports-color "^7.0.0"
-svelte-apexcharts@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/svelte-apexcharts/-/svelte-apexcharts-1.0.2.tgz#4e000f8b8f7c901c05658c845457dfc8314d54c1"
- integrity sha512-6qlx4rE+XsonZ0FZudfwqOQ34Pq+3wpxgAD75zgEmGoYhYBJcwmikTuTf3o8ZBsZue9U/pAwhNy3ed1Bkq1gmA==
- dependencies:
- apexcharts "^3.19.2"
-
svelte-dnd-action@^0.9.8:
version "0.9.12"
resolved "https://registry.yarnpkg.com/svelte-dnd-action/-/svelte-dnd-action-0.9.12.tgz#78cf33097986488c6d069eca517af473cd998730"
integrity sha512-GlXIB3/56IMR5A0+qUx+FX7Q7n8uCAIeuYdgSBmn9iOlxWc+mgM8P1kNwAKCMSTdQ4IQETVQILNgWVY1KIFzsg==
-svelte-flatpickr@^3.1.0, svelte-flatpickr@^3.2.3:
- version "3.2.6"
- resolved "https://registry.yarnpkg.com/svelte-flatpickr/-/svelte-flatpickr-3.2.6.tgz#595a97b2f25a669e61fe743f90a10dce783bbd49"
- integrity sha512-0ePUyE9OjInYFqQwRKOxnFSu4dQX9+/rzFMynq2fKYXx406ZUThzSx72gebtjr0DoAQbsH2///BBZa5qk4qZXg==
- dependencies:
- flatpickr "^4.5.2"
-
svelte-hmr@^0.14.7:
version "0.14.7"
resolved "https://registry.yarnpkg.com/svelte-hmr/-/svelte-hmr-0.14.7.tgz#7fa8261c7b225d9409f0a86f3b9ea5c3ca6f6607"
@@ -6237,83 +5544,11 @@ svelte-portal@0.1.0:
resolved "https://registry.yarnpkg.com/svelte-portal/-/svelte-portal-0.1.0.tgz#cc2821cc84b05ed5814e0218dcdfcbebc53c1742"
integrity sha512-kef+ksXVKun224mRxat+DdO4C+cGHla+fEcZfnBAvoZocwiaceOfhf5azHYOPXSSB1igWVFTEOF3CDENPnuWxg==
-svelte-portal@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/svelte-portal/-/svelte-portal-1.0.0.tgz#36a47c5578b1a4d9b4dc60fa32a904640ec4cdd3"
- integrity sha512-nHf+DS/jZ6jjnZSleBMSaZua9JlG5rZv9lOGKgJuaZStfevtjIlUJrkLc3vbV8QdBvPPVmvcjTlazAzfKu0v3Q==
-
-svelte-spa-router@^3.0.5:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/svelte-spa-router/-/svelte-spa-router-3.2.0.tgz#fae3311d292451236cb57131262406cf312b15ee"
- integrity sha512-igemo5Vs82TGBBw+DjWt6qKameXYzNs6aDXcTxou5XbEvOjiRcAM6MLkdVRCatn6u8r42dE99bt/br7T4qe/AQ==
- dependencies:
- regexparam "2.0.0"
-
svelte@^3.38.2:
version "3.44.1"
resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.44.1.tgz#5cc772a8340f4519a4ecd1ac1a842325466b1a63"
integrity sha512-4DrCEJoBvdR689efHNSxIQn2pnFwB7E7j2yLEJtHE/P8hxwZWIphCtJ8are7bjl/iVMlcEf5uh5pJ68IwR09vQ==
-svelte@^3.46.2:
- version "3.46.4"
- resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.46.4.tgz#0c46bc4a3e20a2617a1b7dc43a722f9d6c084a38"
- integrity sha512-qKJzw6DpA33CIa+C/rGp4AUdSfii0DOTCzj/2YpSKKayw5WGSS624Et9L1nU1k2OVRS9vaENQXp2CVZNU+xvIg==
-
-svg.draggable.js@^2.2.2:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz#c514a2f1405efb6f0263e7958f5b68fce50603ba"
- integrity sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==
- dependencies:
- svg.js "^2.0.1"
-
-svg.easing.js@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/svg.easing.js/-/svg.easing.js-2.0.0.tgz#8aa9946b0a8e27857a5c40a10eba4091e5691f12"
- integrity sha1-iqmUawqOJ4V6XEChDrpAkeVpHxI=
- dependencies:
- svg.js ">=2.3.x"
-
-svg.filter.js@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/svg.filter.js/-/svg.filter.js-2.0.2.tgz#91008e151389dd9230779fcbe6e2c9a362d1c203"
- integrity sha1-kQCOFROJ3ZIwd5/L5uLJo2LRwgM=
- dependencies:
- svg.js "^2.2.5"
-
-svg.js@>=2.3.x, svg.js@^2.0.1, svg.js@^2.2.5, svg.js@^2.4.0, svg.js@^2.6.5:
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/svg.js/-/svg.js-2.7.1.tgz#eb977ed4737001eab859949b4a398ee1bb79948d"
- integrity sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==
-
-svg.pathmorphing.js@^0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz#c25718a1cc7c36e852ecabc380e758ac09bb2b65"
- integrity sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==
- dependencies:
- svg.js "^2.4.0"
-
-svg.resize.js@^1.4.3:
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/svg.resize.js/-/svg.resize.js-1.4.3.tgz#885abd248e0cd205b36b973c4b578b9a36f23332"
- integrity sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==
- dependencies:
- svg.js "^2.6.5"
- svg.select.js "^2.1.2"
-
-svg.select.js@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/svg.select.js/-/svg.select.js-2.1.2.tgz#e41ce13b1acff43a7441f9f8be87a2319c87be73"
- integrity sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==
- dependencies:
- svg.js "^2.2.5"
-
-svg.select.js@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/svg.select.js/-/svg.select.js-3.0.1.tgz#a4198e359f3825739226415f82176a90ea5cc917"
- integrity sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==
- dependencies:
- svg.js "^2.6.5"
-
symbol-tree@^3.2.4:
version "3.2.4"
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
@@ -6351,14 +5586,6 @@ throttleit@^1.0.0:
resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c"
integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=
-through2@^2.0.0:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
- integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
- dependencies:
- readable-stream "~2.3.6"
- xtend "~4.0.1"
-
through@2, through@^2.3.8, through@~2.3, through@~2.3.1:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
@@ -6381,11 +5608,6 @@ to-fast-properties@^2.0.0:
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
-to-gfm-code-block@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/to-gfm-code-block/-/to-gfm-code-block-0.1.1.tgz#25d045a5fae553189e9637b590900da732d8aa82"
- integrity sha1-JdBFpfrlUxielje1kJANpzLYqoI=
-
to-object-path@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
@@ -6531,28 +5753,11 @@ typedarray-to-buffer@^3.1.5:
dependencies:
is-typedarray "^1.0.0"
-typeof-article@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/typeof-article/-/typeof-article-0.1.1.tgz#9f07e733c3fbb646ffa9e61c08debacd460e06af"
- integrity sha1-nwfnM8P7tkb/qeYcCN66zUYOBq8=
- dependencies:
- kind-of "^3.1.0"
-
typescript@^4.5.5:
version "4.5.5"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3"
integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==
-typo-js@*:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/typo-js/-/typo-js-1.2.1.tgz#334a0d8c3f6c56f2f1e15fdf6c31677793cbbe9b"
- integrity sha512-bTGLjbD3WqZDR3CgEFkyi9Q/SS2oM29ipXrWfDb4M74ea69QwKAECVceYpaBu0GfdnASMg9Qfl67ttB23nePHg==
-
-uglify-js@^3.1.4:
- version "3.15.3"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.15.3.tgz#9aa82ca22419ba4c0137642ba0df800cb06e0471"
- integrity sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg==
-
unicode-canonical-property-names-ecmascript@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc"
@@ -6626,11 +5831,6 @@ utf-8-validate@^5.0.2:
dependencies:
node-gyp-build "^4.3.0"
-util-deprecate@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
- integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
-
uuid@8.3.1:
version "8.3.1"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31"
@@ -6679,14 +5879,6 @@ vite@^2.1.5:
optionalDependencies:
fsevents "~2.3.2"
-vm2@^3.9.4:
- version "3.9.9"
- resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.9.tgz#c0507bc5fbb99388fad837d228badaaeb499ddc5"
- integrity sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw==
- dependencies:
- acorn "^8.7.0"
- acorn-walk "^8.2.0"
-
w3c-hr-time@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd"
@@ -6787,11 +5979,6 @@ word-wrap@~1.2.3:
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
-wordwrap@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
- integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
-
wrap-ansi@^6.2.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
@@ -6840,11 +6027,6 @@ xmlchars@^2.2.0:
resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
-xtend@~4.0.1:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
- integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
-
y18n@^4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf"
@@ -6888,11 +6070,6 @@ yauzl@^2.10.0:
buffer-crc32 "~0.2.3"
fd-slicer "~1.1.0"
-year@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/year/-/year-0.2.1.tgz#4083ae520a318b23ec86037f3000cb892bdf9bb0"
- integrity sha1-QIOuUgoxiyPshgN/MADLiSvfm7A=
-
yn@3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
diff --git a/packages/cli/package.json b/packages/cli/package.json
index 7a6a95a5dc..a6c0d64171 100644
--- a/packages/cli/package.json
+++ b/packages/cli/package.json
@@ -1,6 +1,6 @@
{
"name": "@budibase/cli",
- "version": "1.0.89-alpha.0",
+ "version": "1.0.104-alpha.0",
"description": "Budibase CLI, for developers, self hosting and migrations.",
"main": "src/index.js",
"bin": {
diff --git a/packages/cli/src/hosting/index.js b/packages/cli/src/hosting/index.js
index 2b147810b4..2ebcee43a5 100644
--- a/packages/cli/src/hosting/index.js
+++ b/packages/cli/src/hosting/index.js
@@ -35,7 +35,7 @@ async function downloadFiles() {
async function checkDockerConfigured() {
const error =
- "docker/docker-compose has not been installed, please follow instructions at: https://docs.budibase.com/self-hosting/hosting-methods/docker-compose#installing-docker"
+ "docker/docker-compose has not been installed, please follow instructions at: https://docs.budibase.com/docs/docker-compose"
const docker = await lookpath("docker")
const compose = await lookpath("docker-compose")
if (!docker || !compose) {
diff --git a/packages/client/manifest.json b/packages/client/manifest.json
index d8e589588f..4c3c0faf1f 100644
--- a/packages/client/manifest.json
+++ b/packages/client/manifest.json
@@ -7,7 +7,8 @@
"customThemes": true,
"devicePreview": true,
"messagePassing": true,
- "rowSelection": true
+ "rowSelection": true,
+ "continueIfAction": true
},
"layout": {
"name": "Layout",
@@ -264,7 +265,8 @@
{
"label": "Primary",
"value": "primary"
- }, {
+ },
+ {
"label": "Secondary",
"value": "secondary"
},
@@ -507,7 +509,7 @@
},
{
"type": "static",
- "values": [
+ "values": [
{
"label": "Row Index",
"key": "index"
@@ -626,28 +628,36 @@
"defaultValue": "M",
"showInBar": true,
"barStyle": "picker",
- "options": [{
- "label": "Extra Small",
- "value": "XS"
- }, {
- "label": "Small",
- "value": "S"
- }, {
- "label": "Medium",
- "value": "M"
- }, {
- "label": "Large",
- "value": "L"
- }, {
- "label": "Extra Large",
- "value": "XL"
- }, {
- "label": "2XL",
- "value": "XXL"
- }, {
- "label": "3XL",
- "value": "XXXL"
- }]
+ "options": [
+ {
+ "label": "Extra Small",
+ "value": "XS"
+ },
+ {
+ "label": "Small",
+ "value": "S"
+ },
+ {
+ "label": "Medium",
+ "value": "M"
+ },
+ {
+ "label": "Large",
+ "value": "L"
+ },
+ {
+ "label": "Extra Large",
+ "value": "XL"
+ },
+ {
+ "label": "2XL",
+ "value": "XXL"
+ },
+ {
+ "label": "3XL",
+ "value": "XXXL"
+ }
+ ]
},
{
"type": "color",
@@ -689,27 +699,32 @@
"defaultValue": "left",
"showInBar": true,
"barStyle": "buttons",
- "options": [{
- "label": "Left",
- "value": "left",
- "barIcon": "TextAlignLeft",
- "barTitle": "Align left"
- }, {
- "label": "Center",
- "value": "center",
- "barIcon": "TextAlignCenter",
- "barTitle": "Align center"
- }, {
- "label": "Right",
- "value": "right",
- "barIcon": "TextAlignRight",
- "barTitle": "Align right"
- }, {
- "label": "Justify",
- "value": "justify",
- "barIcon": "TextAlignJustify",
- "barTitle": "Justify text"
- }]
+ "options": [
+ {
+ "label": "Left",
+ "value": "left",
+ "barIcon": "TextAlignLeft",
+ "barTitle": "Align left"
+ },
+ {
+ "label": "Center",
+ "value": "center",
+ "barIcon": "TextAlignCenter",
+ "barTitle": "Align center"
+ },
+ {
+ "label": "Right",
+ "value": "right",
+ "barIcon": "TextAlignRight",
+ "barTitle": "Align right"
+ },
+ {
+ "label": "Justify",
+ "value": "justify",
+ "barIcon": "TextAlignJustify",
+ "barTitle": "Justify text"
+ }
+ ]
}
]
},
@@ -733,28 +748,36 @@
"defaultValue": "M",
"showInBar": true,
"barStyle": "picker",
- "options": [{
- "label": "Extra Small",
- "value": "XS"
- }, {
- "label": "Small",
- "value": "S"
- }, {
- "label": "Medium",
- "value": "M"
- }, {
- "label": "Large",
- "value": "L"
- }, {
- "label": "Extra Large",
- "value": "XL"
- }, {
- "label": "2XL",
- "value": "XXL"
- }, {
- "label": "3XL",
- "value": "XXXL"
- }]
+ "options": [
+ {
+ "label": "Extra Small",
+ "value": "XS"
+ },
+ {
+ "label": "Small",
+ "value": "S"
+ },
+ {
+ "label": "Medium",
+ "value": "M"
+ },
+ {
+ "label": "Large",
+ "value": "L"
+ },
+ {
+ "label": "Extra Large",
+ "value": "XL"
+ },
+ {
+ "label": "2XL",
+ "value": "XXL"
+ },
+ {
+ "label": "3XL",
+ "value": "XXXL"
+ }
+ ]
},
{
"type": "color",
@@ -796,27 +819,32 @@
"defaultValue": "left",
"showInBar": true,
"barStyle": "buttons",
- "options": [{
- "label": "Left",
- "value": "left",
- "barIcon": "TextAlignLeft",
- "barTitle": "Align left"
- }, {
- "label": "Center",
- "value": "center",
- "barIcon": "TextAlignCenter",
- "barTitle": "Align center"
- }, {
- "label": "Right",
- "value": "right",
- "barIcon": "TextAlignRight",
- "barTitle": "Align right"
- }, {
- "label": "Justify",
- "value": "justify",
- "barIcon": "TextAlignJustify",
- "barTitle": "Justify text"
- }]
+ "options": [
+ {
+ "label": "Left",
+ "value": "left",
+ "barIcon": "TextAlignLeft",
+ "barTitle": "Align left"
+ },
+ {
+ "label": "Center",
+ "value": "center",
+ "barIcon": "TextAlignCenter",
+ "barTitle": "Align center"
+ },
+ {
+ "label": "Right",
+ "value": "right",
+ "barIcon": "TextAlignRight",
+ "barTitle": "Align right"
+ },
+ {
+ "label": "Justify",
+ "value": "justify",
+ "barIcon": "TextAlignJustify",
+ "barTitle": "Justify text"
+ }
+ ]
}
]
},
@@ -837,16 +865,20 @@
"defaultValue": "M",
"showInBar": true,
"barStyle": "picker",
- "options": [{
- "label": "Small",
- "value": "S"
- }, {
- "label": "Medium",
- "value": "M"
- }, {
- "label": "Large",
- "value": "L"
- }]
+ "options": [
+ {
+ "label": "Small",
+ "value": "S"
+ },
+ {
+ "label": "Medium",
+ "value": "M"
+ },
+ {
+ "label": "Large",
+ "value": "L"
+ }
+ ]
},
{
"type": "color",
@@ -1037,16 +1069,20 @@
"defaultValue": "M",
"showInBar": true,
"barStyle": "picker",
- "options": [{
- "label": "Small",
- "value": "S"
- }, {
- "label": "Medium",
- "value": "M"
- }, {
- "label": "Large",
- "value": "L"
- }]
+ "options": [
+ {
+ "label": "Small",
+ "value": "S"
+ },
+ {
+ "label": "Medium",
+ "value": "M"
+ },
+ {
+ "label": "Large",
+ "value": "L"
+ }
+ ]
},
{
"type": "color",
@@ -1088,27 +1124,32 @@
"defaultValue": "left",
"showInBar": true,
"barStyle": "buttons",
- "options": [{
- "label": "Left",
- "value": "left",
- "barIcon": "TextAlignLeft",
- "barTitle": "Align left"
- }, {
- "label": "Center",
- "value": "center",
- "barIcon": "TextAlignCenter",
- "barTitle": "Align center"
- }, {
- "label": "Right",
- "value": "right",
- "barIcon": "TextAlignRight",
- "barTitle": "Align right"
- }, {
- "label": "Justify",
- "value": "justify",
- "barIcon": "TextAlignJustify",
- "barTitle": "Justify text"
- }]
+ "options": [
+ {
+ "label": "Left",
+ "value": "left",
+ "barIcon": "TextAlignLeft",
+ "barTitle": "Align left"
+ },
+ {
+ "label": "Center",
+ "value": "center",
+ "barIcon": "TextAlignCenter",
+ "barTitle": "Align center"
+ },
+ {
+ "label": "Right",
+ "value": "right",
+ "barIcon": "TextAlignRight",
+ "barTitle": "Align right"
+ },
+ {
+ "label": "Justify",
+ "value": "justify",
+ "barIcon": "TextAlignJustify",
+ "barTitle": "Justify text"
+ }
+ ]
}
]
},
@@ -1165,7 +1206,15 @@
"type": "select",
"label": "Card Width",
"key": "cardWidth",
- "options": ["24rem", "28rem", "32rem", "40rem", "48rem", "60rem", "100%"],
+ "options": [
+ "24rem",
+ "28rem",
+ "32rem",
+ "40rem",
+ "48rem",
+ "60rem",
+ "100%"
+ ],
"defaultValue": "32rem"
},
{
@@ -1785,11 +1834,7 @@
"icon": "Form",
"hasChildren": true,
"illegalChildren": ["section", "form"],
- "actions": [
- "ValidateForm",
- "ClearForm",
- "ChangeFormStep"
- ],
+ "actions": ["ValidateForm", "ClearForm", "ChangeFormStep"],
"styles": ["size"],
"settings": [
{
@@ -1816,7 +1861,8 @@
{
"label": "Medium",
"value": "spectrum--medium"
- }, {
+ },
+ {
"label": "Large",
"value": "spectrum--large"
}
@@ -1833,7 +1879,7 @@
"context": [
{
"type": "static",
- "values": [
+ "values": [
{
"label": "Value",
"key": "__value"
@@ -1947,27 +1993,32 @@
"defaultValue": "left",
"showInBar": true,
"barStyle": "buttons",
- "options": [{
- "label": "Left",
- "value": "left",
- "barIcon": "TextAlignLeft",
- "barTitle": "Align left"
- }, {
- "label": "Center",
- "value": "center",
- "barIcon": "TextAlignCenter",
- "barTitle": "Align center"
- }, {
- "label": "Right",
- "value": "right",
- "barIcon": "TextAlignRight",
- "barTitle": "Align right"
- }, {
- "label": "Justify",
- "value": "justify",
- "barIcon": "TextAlignJustify",
- "barTitle": "Justify text"
- }]
+ "options": [
+ {
+ "label": "Left",
+ "value": "left",
+ "barIcon": "TextAlignLeft",
+ "barTitle": "Align left"
+ },
+ {
+ "label": "Center",
+ "value": "center",
+ "barIcon": "TextAlignCenter",
+ "barTitle": "Align center"
+ },
+ {
+ "label": "Right",
+ "value": "right",
+ "barIcon": "TextAlignRight",
+ "barTitle": "Align right"
+ },
+ {
+ "label": "Justify",
+ "value": "justify",
+ "barIcon": "TextAlignJustify",
+ "barTitle": "Justify text"
+ }
+ ]
}
]
},
@@ -2474,6 +2525,116 @@
}
]
},
+ "embeddedmap": {
+ "name": "Embedded Map",
+ "icon": "Location",
+ "styles": ["size"],
+ "draggable": false,
+ "illegalChildren": ["section"],
+ "settings": [
+ {
+ "type": "dataProvider",
+ "label": "Provider",
+ "key": "dataProvider"
+ },
+ {
+ "type": "field",
+ "label": "Latitude Key",
+ "key": "latitudeKey",
+ "dependsOn": "dataProvider"
+ },
+ {
+ "type": "field",
+ "label": "Longitude Key",
+ "key": "longitudeKey",
+ "dependsOn": "dataProvider"
+ },
+ {
+ "type": "field",
+ "label": "Title Key",
+ "key": "titleKey",
+ "dependsOn": "dataProvider"
+ },
+ {
+ "type": "event",
+ "label": "On Click Marker",
+ "key": "onClickMarker",
+ "context": [
+ {
+ "label": "Clicked marker",
+ "key": "marker"
+ }
+ ]
+ },
+ {
+ "type": "boolean",
+ "label": "Enable creating markers",
+ "key": "creationEnabled",
+ "defaultValue": false
+ },
+ {
+ "type": "event",
+ "label": "On Create Marker",
+ "key": "onCreateMarker",
+ "dependsOn": "creationEnabled",
+ "context": [
+ {
+ "label": "New marker latitude",
+ "key": "lat"
+ },
+ {
+ "label": "New marker longitude",
+ "key": "lng"
+ }
+ ]
+ },
+ {
+ "type": "boolean",
+ "label": "Enable fullscreen",
+ "key": "fullScreenEnabled",
+ "defaultValue": true
+ },
+ {
+ "type": "boolean",
+ "label": "Enable location",
+ "key": "locationEnabled",
+ "defaultValue": true
+ },
+ {
+ "type": "boolean",
+ "label": "Enable zoom",
+ "key": "zoomEnabled",
+ "defaultValue": true
+ },
+ {
+ "type": "text",
+ "label": "Tile URL",
+ "key": "tileURL",
+ "defaultValue": "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
+ },
+
+ {
+ "type": "text",
+ "label": "Default Location (when empty)",
+ "key": "defaultLocation",
+ "placeholder": "51.5072,-0.1276"
+ },
+ {
+ "type": "number",
+ "label": "Default Location Zoom Level (0-100)",
+ "key": "zoomLevel",
+ "placeholder": 50,
+ "max": 100,
+ "min": 0
+ },
+ {
+ "type": "text",
+ "label": "Map Attribution",
+ "key": "mapAttribution",
+ "defaultValue": "OpenStreetMap contributors"
+ }
+ ]
+ },
"attachmentfield": {
"name": "Attachment",
"icon": "Attach",
@@ -2634,15 +2795,15 @@
],
"context": {
"type": "static",
- "values": [
+ "values": [
{
"label": "Rows",
"key": "rows"
},
- {
- "label": "Extra Info",
- "key": "info"
- },
+ {
+ "label": "Extra Info",
+ "key": "info"
+ },
{
"label": "Rows Length",
"key": "rowsLength"
@@ -2964,7 +3125,8 @@
"label": "Table Columns",
"key": "tableColumns",
"dependsOn": "dataSource",
- "placeholder": "All columns"
+ "placeholder": "All columns",
+ "nested": true
},
{
"type": "boolean",
@@ -3116,7 +3278,6 @@
"key": "cardDescription",
"label": "Description",
"nested": true
-
},
{
"type": "text",
@@ -3381,12 +3542,12 @@
{
"type": "static",
"suffix": "provider",
- "values": [
+ "values": [
{
"label": "Rows",
"key": "rows"
},
- {
+ {
"label": "Extra Info",
"key": "info"
},
@@ -3407,12 +3568,12 @@
{
"type": "static",
"suffix": "repeater",
- "values": [
+ "values": [
{
"label": "Row Index",
"key": "index"
}
- ]
+ ]
},
{
"type": "schema",
@@ -3469,7 +3630,6 @@
"name": "Markdown Viewer",
"icon": "TaskList",
"styles": ["size"],
- "editable": true,
"settings": [
{
"type": "text",
diff --git a/packages/client/package.json b/packages/client/package.json
index 388e0bdea8..f2f94255cf 100644
--- a/packages/client/package.json
+++ b/packages/client/package.json
@@ -1,6 +1,6 @@
{
"name": "@budibase/client",
- "version": "1.0.89-alpha.0",
+ "version": "1.0.104-alpha.0",
"license": "MPL-2.0",
"module": "dist/budibase-client.js",
"main": "dist/budibase-client.js",
@@ -19,9 +19,9 @@
"dev:builder": "rollup -cw"
},
"dependencies": {
- "@budibase/bbui": "^1.0.89-alpha.0",
- "@budibase/frontend-core": "^1.0.89-alpha.0",
- "@budibase/string-templates": "^1.0.89-alpha.0",
+ "@budibase/bbui": "^1.0.104-alpha.0",
+ "@budibase/frontend-core": "^1.0.104-alpha.0",
+ "@budibase/string-templates": "^1.0.104-alpha.0",
"@spectrum-css/button": "^3.0.3",
"@spectrum-css/card": "^3.0.3",
"@spectrum-css/divider": "^1.0.3",
@@ -33,8 +33,11 @@
"apexcharts": "^3.22.1",
"dayjs": "^1.10.5",
"downloadjs": "1.4.7",
+ "leaflet": "^1.7.1",
"regexparam": "^1.3.0",
"rollup-plugin-polyfill-node": "^0.8.0",
+ "sanitize-html": "^2.7.0",
+ "screenfull": "^6.0.1",
"shortid": "^2.2.15",
"svelte": "^3.38.2",
"svelte-apexcharts": "^1.0.2",
diff --git a/packages/client/src/components/ClientApp.svelte b/packages/client/src/components/ClientApp.svelte
index 8af065f972..e1930ae49a 100644
--- a/packages/client/src/components/ClientApp.svelte
+++ b/packages/client/src/components/ClientApp.svelte
@@ -226,4 +226,13 @@
border: 1px solid var(--spectrum-global-color-gray-300);
border-radius: 4px;
}
+
+ /* Print styles */
+ @media print {
+ #spectrum-root,
+ #clip-root,
+ #app-root {
+ overflow: visible !important;
+ }
+ }
diff --git a/packages/client/src/components/Component.svelte b/packages/client/src/components/Component.svelte
index 78fff52426..d9af295108 100644
--- a/packages/client/src/components/Component.svelte
+++ b/packages/client/src/components/Component.svelte
@@ -1,6 +1,7 @@
-
+{#key $component.editing}
+
+{/key}
diff --git a/packages/client/src/components/app/Link.svelte b/packages/client/src/components/app/Link.svelte
index f47a2a0522..79bf296208 100644
--- a/packages/client/src/components/app/Link.svelte
+++ b/packages/client/src/components/app/Link.svelte
@@ -61,7 +61,7 @@
}
const updateText = e => {
- builderStore.actions.updateProp("text", e.target.textContent.trim())
+ builderStore.actions.updateProp("text", e.target.textContent)
}
diff --git a/packages/client/src/components/app/SpectrumCard.svelte b/packages/client/src/components/app/SpectrumCard.svelte
index 7aa2990ae4..24cda52598 100644
--- a/packages/client/src/components/app/SpectrumCard.svelte
+++ b/packages/client/src/components/app/SpectrumCard.svelte
@@ -130,6 +130,7 @@
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
+ word-break: break-all;
}
.button-container {
diff --git a/packages/client/src/components/app/Text.svelte b/packages/client/src/components/app/Text.svelte
index 679434edeb..6c16db25fd 100644
--- a/packages/client/src/components/app/Text.svelte
+++ b/packages/client/src/components/app/Text.svelte
@@ -46,24 +46,25 @@
// Convert contenteditable HTML to text and save
const updateText = e => {
- const sanitized = e.target.innerHTML.replace(/
/gi, "\n").trim()
- builderStore.actions.updateProp("text", sanitized)
+ builderStore.actions.updateProp("text", e.target.textContent)
}
-
- {componentText}
-
+{#key $component.editing}
+
+ {componentText}
+
+{/key}
diff --git a/packages/client/src/components/app/charts/BarChart.svelte b/packages/client/src/components/app/charts/BarChart.svelte
index 9a340c404e..af1bb478fe 100644
--- a/packages/client/src/components/app/charts/BarChart.svelte
+++ b/packages/client/src/components/app/charts/BarChart.svelte
@@ -18,16 +18,53 @@
export let palette
export let horizontal
- $: options = setUpChart(dataProvider)
+ $: options = setUpChart(
+ title,
+ dataProvider,
+ labelColumn,
+ valueColumns,
+ xAxisLabel,
+ yAxisLabel,
+ height,
+ width,
+ dataLabels,
+ animate,
+ legend,
+ stacked,
+ yAxisUnits,
+ palette,
+ horizontal
+ )
- const setUpChart = provider => {
+ const setUpChart = (
+ title,
+ dataProvider,
+ labelColumn,
+ valueColumns,
+ xAxisLabel,
+ yAxisLabel,
+ height,
+ width,
+ dataLabels,
+ animate,
+ legend,
+ stacked,
+ yAxisUnits,
+ palette,
+ horizontal
+ ) => {
+ console.log("new chart")
const allCols = [labelColumn, ...(valueColumns || [null])]
- if (!provider || !provider.rows?.length || allCols.find(x => x == null)) {
+ if (
+ !dataProvider ||
+ !dataProvider.rows?.length ||
+ allCols.find(x => x == null)
+ ) {
return null
}
// Fetch data
- const { schema, rows } = provider
+ const { schema, rows } = dataProvider
const reducer = row => (valid, column) => valid && row[column] != null
const hasAllColumns = row => allCols.reduce(reducer(row), true)
const data = rows.filter(row => hasAllColumns(row)).slice(0, 100)
diff --git a/packages/client/src/components/app/charts/CandleStickChart.svelte b/packages/client/src/components/app/charts/CandleStickChart.svelte
index b45e7fe663..b2760b005e 100644
--- a/packages/client/src/components/app/charts/CandleStickChart.svelte
+++ b/packages/client/src/components/app/charts/CandleStickChart.svelte
@@ -16,17 +16,48 @@
export let animate
export let yAxisUnits
- $: options = setUpChart(dataProvider)
+ $: options = setUpChart(
+ title,
+ dataProvider,
+ dateColumn,
+ openColumn,
+ highColumn,
+ lowColumn,
+ closeColumn,
+ xAxisLabel,
+ yAxisLabel,
+ height,
+ width,
+ animate,
+ yAxisUnits
+ )
- // Fetch data on mount
- const setUpChart = provider => {
+ const setUpChart = (
+ title,
+ dataProvider,
+ dateColumn,
+ openColumn,
+ highColumn,
+ lowColumn,
+ closeColumn,
+ xAxisLabel,
+ yAxisLabel,
+ height,
+ width,
+ animate,
+ yAxisUnits
+ ) => {
const allCols = [dateColumn, openColumn, highColumn, lowColumn, closeColumn]
- if (!provider || !provider.rows?.length || allCols.find(x => x == null)) {
+ if (
+ !dataProvider ||
+ !dataProvider.rows?.length ||
+ allCols.find(x => x == null)
+ ) {
return null
}
// Fetch data
- const { schema, rows } = provider
+ const { schema, rows } = dataProvider
const reducer = row => (valid, column) => valid && row[column] != null
const hasAllColumns = row => allCols.reduce(reducer(row), true)
const data = rows.filter(row => hasAllColumns(row))
diff --git a/packages/client/src/components/app/charts/LineChart.svelte b/packages/client/src/components/app/charts/LineChart.svelte
index 2c05292670..afb9f14262 100644
--- a/packages/client/src/components/app/charts/LineChart.svelte
+++ b/packages/client/src/components/app/charts/LineChart.svelte
@@ -23,17 +23,56 @@
export let stacked
export let gradient
- $: options = setUpChart(dataProvider)
+ $: options = setUpChart(
+ title,
+ dataProvider,
+ labelColumn,
+ valueColumns,
+ xAxisLabel,
+ yAxisLabel,
+ height,
+ width,
+ animate,
+ dataLabels,
+ curve,
+ legend,
+ yAxisUnits,
+ palette,
+ area,
+ stacked,
+ gradient
+ )
- // Fetch data on mount
- const setUpChart = provider => {
+ const setUpChart = (
+ title,
+ dataProvider,
+ labelColumn,
+ valueColumns,
+ xAxisLabel,
+ yAxisLabel,
+ height,
+ width,
+ animate,
+ dataLabels,
+ curve,
+ legend,
+ yAxisUnits,
+ palette,
+ area,
+ stacked,
+ gradient
+ ) => {
const allCols = [labelColumn, ...(valueColumns || [null])]
- if (!provider || !provider.rows?.length || allCols.find(x => x == null)) {
+ if (
+ !dataProvider ||
+ !dataProvider.rows?.length ||
+ allCols.find(x => x == null)
+ ) {
return null
}
// Fetch, filter and sort data
- const { schema, rows } = provider
+ const { schema, rows } = dataProvider
const reducer = row => (valid, column) => valid && row[column] != null
const hasAllColumns = row => allCols.reduce(reducer(row), true)
const data = rows.filter(row => hasAllColumns(row))
diff --git a/packages/client/src/components/app/charts/PieChart.svelte b/packages/client/src/components/app/charts/PieChart.svelte
index e14061407e..38a42ee37b 100644
--- a/packages/client/src/components/app/charts/PieChart.svelte
+++ b/packages/client/src/components/app/charts/PieChart.svelte
@@ -14,16 +14,44 @@
export let donut
export let palette
- $: options = setUpChart(dataProvider)
+ $: options = setUpChart(
+ title,
+ dataProvider,
+ labelColumn,
+ valueColumn,
+ height,
+ width,
+ dataLabels,
+ animate,
+ legend,
+ donut,
+ palette
+ )
- // Fetch data on mount
- const setUpChart = provider => {
- if (!provider || !provider.rows?.length || !labelColumn || !valueColumn) {
+ const setUpChart = (
+ title,
+ dataProvider,
+ labelColumn,
+ valueColumn,
+ height,
+ width,
+ dataLabels,
+ animate,
+ legend,
+ donut,
+ palette
+ ) => {
+ if (
+ !dataProvider ||
+ !dataProvider.rows?.length ||
+ !labelColumn ||
+ !valueColumn
+ ) {
return null
}
// Fetch, filter and sort data
- const { schema, rows } = provider
+ const { schema, rows } = dataProvider
const data = rows
.filter(row => row[labelColumn] != null && row[valueColumn] != null)
.slice(0, 100)
diff --git a/packages/client/src/components/app/dynamic-filter/FilterModal.svelte b/packages/client/src/components/app/dynamic-filter/FilterModal.svelte
index 447bdc1058..54ad1f3a80 100644
--- a/packages/client/src/components/app/dynamic-filter/FilterModal.svelte
+++ b/packages/client/src/components/app/dynamic-filter/FilterModal.svelte
@@ -4,7 +4,6 @@
Button,
Combobox,
DatePicker,
- DrawerContent,
Icon,
Input,
Layout,
@@ -12,10 +11,12 @@
} from "@budibase/bbui"
import { generate } from "shortid"
import { LuceneUtils, Constants } from "@budibase/frontend-core"
+ import { getContext } from "svelte"
export let schemaFields
export let filters = []
+ const context = getContext("context")
const BannedTypes = ["link", "attachment", "json"]
$: fieldOptions = (schemaFields ?? [])
@@ -89,55 +90,55 @@
}
-
-
-
-
- {#if !filters?.length}
- Add your first filter expression.
- {:else}
- Results are filtered to only those which match all of the following
- constraints.
- {/if}
-
- {#if filters?.length}
-
- {#each filters as filter, idx}
-
diff --git a/packages/client/src/components/app/embedded-map/EmbeddedMap.svelte b/packages/client/src/components/app/embedded-map/EmbeddedMap.svelte
new file mode 100644
index 0000000000..7738a0d345
--- /dev/null
+++ b/packages/client/src/components/app/embedded-map/EmbeddedMap.svelte
@@ -0,0 +1,402 @@
+
+
+
+ {#if error}
+
{error}
+ {/if}
+
+
+
+ {#if candidateMarkerPosition}
+
+
+
+
+ {/if}
+
+
+
diff --git a/packages/client/src/components/app/embedded-map/EmbeddedMapControls.js b/packages/client/src/components/app/embedded-map/EmbeddedMapControls.js
new file mode 100644
index 0000000000..ca1b1ed22a
--- /dev/null
+++ b/packages/client/src/components/app/embedded-map/EmbeddedMapControls.js
@@ -0,0 +1,192 @@
+import L from "leaflet"
+import screenfull from "screenfull"
+
+const createButton = function (html, title, className, container, fn) {
+ let link = L.DomUtil.create("a", className, container)
+ link.innerHTML = html
+ link.href = "#"
+ link.title = title
+
+ link.setAttribute("role", "button")
+ link.setAttribute("aria-label", title)
+
+ L.DomEvent.disableClickPropagation(link)
+ L.DomEvent.on(link, "click", L.DomEvent.stop)
+ L.DomEvent.on(link, "click", fn, this)
+ L.DomEvent.on(link, "click", this._refocusOnMap, this)
+
+ return link
+}
+
+// Full Screen Control
+
+const FullScreenControl = L.Control.extend({
+ options: {
+ position: "topright",
+ fullScreenContent:
+ '' +
+ '',
+ fullScreenTitle: "Enter Fullscreen",
+ },
+ onAdd: function () {
+ var fullScreenClassName = "leaflet-control-fullscreen",
+ container = L.DomUtil.create("div", fullScreenClassName + " leaflet-bar"),
+ options = this.options
+
+ this._fullScreenButton = this._createButton(
+ options.fullScreenContent,
+ options.fullScreenTitle,
+ "map-fullscreen",
+ container,
+ this._fullScreen
+ )
+
+ return container
+ },
+ _fullScreen: function () {
+ var map = this._map
+ if (screenfull.isEnabled) {
+ screenfull.toggle(map.getContainer())
+ }
+ },
+ _createButton: createButton,
+})
+
+const initFullScreenControl = () => {
+ L.Map.mergeOptions({
+ fullScreen: false,
+ })
+
+ L.Map.addInitHook(function () {
+ if (this.options.fullScreen) {
+ this.fullScreenControl = new FullScreenControl()
+ this.addControl(this.fullScreenControl)
+ } else {
+ this.fullScreenControl = null
+ }
+ })
+}
+
+// Location Control
+
+const LocationControl = L.Control.extend({
+ options: {
+ position: "topright",
+ locationContent:
+ '' +
+ '',
+ locationTitle: "Show Your Location",
+ },
+ onAdd: function () {
+ var locationClassName = "leaflet-control-location",
+ container = L.DomUtil.create("div", locationClassName + " leaflet-bar"),
+ options = this.options
+
+ this._locationButton = this._createButton(
+ options.locationContent,
+ options.locationTitle,
+ "map-location",
+ container,
+ this._location
+ )
+
+ this._updateDisabled()
+
+ return container
+ },
+ disable: function () {
+ this._disabled = true
+ this._updateDisabled()
+ return this
+ },
+ enable: function () {
+ this._disabled = false
+ this._updateDisabled()
+ return this
+ },
+ _location: function () {
+ if (this._disabled == true) {
+ return
+ }
+ this.disable()
+
+ const success = pos => {
+ this._map.closePopup()
+ if (typeof this.options.onLocationSuccess === "function") {
+ this.options.onLocationSuccess({
+ lat: pos.coords.latitude,
+ lng: pos.coords.longitude,
+ })
+ }
+ }
+
+ const error = err => {
+ if (typeof this.options.onLocationFail === "function") {
+ this.options.onLocationFail(err)
+ }
+ }
+
+ this._getPosition()
+ .then(success)
+ .catch(error)
+ .finally(() => {
+ this.enable()
+ })
+ },
+ _getPosition: function () {
+ var options = {
+ enableHighAccuracy: false,
+ timeout: 5000,
+ maximumAge: 30000,
+ }
+
+ return new Promise((resolve, reject) => {
+ navigator.geolocation.getCurrentPosition(resolve, reject, options)
+ })
+ },
+
+ _createButton: createButton,
+
+ _updateDisabled: function () {
+ let disabledClassName = "leaflet-disabled"
+ L.DomUtil.removeClass(this._locationButton, disabledClassName)
+ this._locationButton.setAttribute("aria-disabled", "false")
+
+ if (this._disabled) {
+ L.DomUtil.addClass(this._locationButton, disabledClassName)
+ this._locationButton.setAttribute("aria-disabled", "true")
+ }
+ },
+})
+
+const initLocationControl = () => {
+ L.Map.mergeOptions({
+ location: false,
+ onLocationFail: null,
+ onLocationSuccess: null,
+ })
+
+ L.Map.addInitHook(function () {
+ if (this.options.location) {
+ this.localControl = new LocationControl()
+ this.addControl(this.LocationControl)
+ } else {
+ this.localControl = null
+ }
+ })
+}
+
+const initMapControls = () => {
+ initFullScreenControl()
+ initLocationControl()
+}
+
+export {
+ initFullScreenControl,
+ initLocationControl,
+ initMapControls,
+ FullScreenControl,
+ LocationControl,
+}
diff --git a/packages/client/src/components/app/forms/Field.svelte b/packages/client/src/components/app/forms/Field.svelte
index ca7bd3caaf..3ebfc5084f 100644
--- a/packages/client/src/components/app/forms/Field.svelte
+++ b/packages/client/src/components/app/forms/Field.svelte
@@ -50,22 +50,24 @@
$: labelClass = labelPos === "above" ? "" : `spectrum-FieldLabel--${labelPos}`
const updateLabel = e => {
- builderStore.actions.updateProp("label", e.target.textContent.trim())
+ builderStore.actions.updateProp("label", e.target.textContent)
}
-
+ {#key $component.editing}
+
+ {/key}
{/if}
diff --git a/packages/client/src/stores/auth.js b/packages/client/src/stores/auth.js
index 39f11319cf..214cc7bce2 100644
--- a/packages/client/src/stores/auth.js
+++ b/packages/client/src/stores/auth.js
@@ -6,12 +6,26 @@ const createAuthStore = () => {
// Fetches the user object if someone is logged in and has reloaded the page
const fetchUser = async () => {
+ let globalSelf = null
+ let appSelf = null
+
+ // First try and get the global user, to see if we are logged in at all
try {
- const user = await API.fetchSelf()
- store.set(user)
+ globalSelf = await API.fetchBuilderSelf()
} catch (error) {
store.set(null)
+ return
}
+
+ // Then try and get the user for this app to provide via context
+ try {
+ appSelf = await API.fetchSelf()
+ } catch (error) {
+ // Swallow
+ }
+
+ // Use the app self if present, otherwise fallback to the global self
+ store.set(appSelf || globalSelf || null)
}
const logOut = async () => {
diff --git a/packages/client/src/stores/builder.js b/packages/client/src/stores/builder.js
index 719909b538..27c8bbe2a2 100644
--- a/packages/client/src/stores/builder.js
+++ b/packages/client/src/stores/builder.js
@@ -62,6 +62,9 @@ const createBuilderStore = () => {
deleteComponent: id => {
dispatchEvent("delete-component", { id })
},
+ duplicateComponent: id => {
+ dispatchEvent("duplicate-component", { id })
+ },
notifyLoaded: () => {
dispatchEvent("preview-loaded")
},
diff --git a/packages/client/src/stores/confirmation.js b/packages/client/src/stores/confirmation.js
index 497b021b04..bb9a54386f 100644
--- a/packages/client/src/stores/confirmation.js
+++ b/packages/client/src/stores/confirmation.js
@@ -4,30 +4,36 @@ const initialState = {
showConfirmation: false,
title: null,
text: null,
- callback: null,
+ onConfirm: null,
+ onCancel: null,
}
const createConfirmationStore = () => {
const store = writable(initialState)
- const showConfirmation = (title, text, callback) => {
+ const showConfirmation = (title, text, onConfirm, onCancel) => {
store.set({
showConfirmation: true,
title,
text,
- callback,
+ onConfirm,
+ onCancel,
})
}
const confirm = async () => {
const state = get(store)
- if (!state.showConfirmation || !state.callback) {
+ if (!state.showConfirmation || !state.onConfirm) {
return
}
store.set(initialState)
- await state.callback()
+ await state.onConfirm()
}
const cancel = () => {
+ const state = get(store)
store.set(initialState)
+ if (state.onCancel) {
+ state.onCancel()
+ }
}
return {
diff --git a/packages/client/src/stores/dataSource.js b/packages/client/src/stores/dataSource.js
index d5ad0cb594..6288cbc072 100644
--- a/packages/client/src/stores/dataSource.js
+++ b/packages/client/src/stores/dataSource.js
@@ -54,18 +54,24 @@ export const createDataSourceStore = () => {
// Invalidates a specific dataSource ID by refreshing all instances
// which depend on data from that dataSource
- const invalidateDataSource = async dataSourceId => {
+ const invalidateDataSource = async (dataSourceId, options) => {
if (!dataSourceId) {
return
}
+ // Merge default options
+ options = {
+ invalidateRelationships: false,
+ ...options,
+ }
+
// Emit this as a window event, so parent screens which are iframing us in
// can also invalidate the same datasource
const inModal = get(routeStore).queryParams?.peek
if (inModal) {
window.parent.postMessage({
type: "invalidate-datasource",
- detail: { dataSourceId },
+ detail: { dataSourceId, options },
})
}
@@ -73,13 +79,14 @@ export const createDataSourceStore = () => {
// Fetch related table IDs from table schema
let schema
- try {
- const definition = await API.fetchTableDefinition(dataSourceId)
- schema = definition?.schema
- } catch (error) {
- schema = null
+ if (options.invalidateRelationships) {
+ try {
+ const definition = await API.fetchTableDefinition(dataSourceId)
+ schema = definition?.schema
+ } catch (error) {
+ schema = null
+ }
}
-
if (schema) {
Object.values(schema).forEach(fieldSchema => {
if (
diff --git a/packages/client/src/utils/buttonActions.js b/packages/client/src/utils/buttonActions.js
index 25659cea98..ecc85eabf2 100644
--- a/packages/client/src/utils/buttonActions.js
+++ b/packages/client/src/utils/buttonActions.js
@@ -37,7 +37,9 @@ const saveRowHandler = async (action, context) => {
notificationStore.actions.success("Row saved")
// Refresh related datasources
- await dataSourceStore.actions.invalidateDataSource(row.tableId)
+ await dataSourceStore.actions.invalidateDataSource(row.tableId, {
+ invalidateRelationships: true,
+ })
return { row }
} catch (error) {
@@ -65,7 +67,9 @@ const duplicateRowHandler = async (action, context) => {
notificationStore.actions.success("Row saved")
// Refresh related datasources
- await dataSourceStore.actions.invalidateDataSource(row.tableId)
+ await dataSourceStore.actions.invalidateDataSource(row.tableId, {
+ invalidateRelationships: true,
+ })
return { row }
} catch (error) {
@@ -83,7 +87,9 @@ const deleteRowHandler = async action => {
notificationStore.actions.success("Row deleted")
// Refresh related datasources
- await dataSourceStore.actions.invalidateDataSource(tableId)
+ await dataSourceStore.actions.invalidateDataSource(tableId, {
+ invalidateRelationships: true,
+ })
} catch (error) {
// Abort next actions
return false
@@ -250,9 +256,9 @@ const exportDataHandler = async action => {
const data = await API.exportRows({
tableId: selection.tableId,
rows: selection.selectedRows,
+ format: action.parameters.type,
})
-
- download(JSON.stringify(data), `export.${action.parameters.type}`)
+ download(data, `${selection.tableId}.${action.parameters.type}`)
} catch (error) {
notificationStore.actions.error("There was an error exporting the data")
}
@@ -261,6 +267,26 @@ const exportDataHandler = async action => {
}
}
+const continueIfHandler = action => {
+ const { type, value, operator, referenceValue } = action.parameters
+ if (!type || !operator) {
+ return
+ }
+ let match = false
+ if (value == null && referenceValue == null) {
+ match = true
+ } else if (value === referenceValue) {
+ match = true
+ } else {
+ match = JSON.stringify(value) === JSON.stringify(referenceValue)
+ }
+ if (type === "continue") {
+ return operator === "equal" ? match : !match
+ } else {
+ return operator === "equal" ? !match : match
+ }
+}
+
const handlerMap = {
["Save Row"]: saveRowHandler,
["Duplicate Row"]: duplicateRowHandler,
@@ -277,6 +303,7 @@ const handlerMap = {
["Update State"]: updateStateHandler,
["Upload File to S3"]: s3UploadHandler,
["Export Data"]: exportDataHandler,
+ ["Continue if / Stop if"]: continueIfHandler,
}
const confirmTextMap = {
@@ -308,7 +335,7 @@ export const enrichButtonActions = (actions, context) => {
let buttonContext = context.actions || []
const handlers = actions.map(def => handlerMap[def["##eventHandlerType"]])
- return async () => {
+ return async eventContext => {
for (let i = 0; i < handlers.length; i++) {
try {
// Skip any non-existent action definitions
@@ -317,7 +344,11 @@ export const enrichButtonActions = (actions, context) => {
}
// Built total context for this action
- const totalContext = { ...context, actions: buttonContext }
+ const totalContext = {
+ ...context,
+ actions: buttonContext,
+ eventContext,
+ }
// Get and enrich this button action with the total context
let action = actions[i]
@@ -327,33 +358,36 @@ export const enrichButtonActions = (actions, context) => {
// If this action is confirmable, show confirmation and await a
// callback to execute further actions
if (action.parameters?.confirm) {
- const defaultText = confirmTextMap[action["##eventHandlerType"]]
- const confirmText = action.parameters?.confirmText || defaultText
- confirmationStore.actions.showConfirmation(
- action["##eventHandlerType"],
- confirmText,
- async () => {
- // When confirmed, execute this action immediately,
- // then execute the rest of the actions in the chain
- const result = await callback()
- if (result !== false) {
- // Generate a new total context to pass into the next enrichment
- buttonContext.push(result)
- const newContext = { ...context, actions: buttonContext }
+ return new Promise(resolve => {
+ const defaultText = confirmTextMap[action["##eventHandlerType"]]
+ const confirmText = action.parameters?.confirmText || defaultText
+ confirmationStore.actions.showConfirmation(
+ action["##eventHandlerType"],
+ confirmText,
+ async () => {
+ // When confirmed, execute this action immediately,
+ // then execute the rest of the actions in the chain
+ const result = await callback()
+ if (result !== false) {
+ // Generate a new total context to pass into the next enrichment
+ buttonContext.push(result)
+ const newContext = { ...context, actions: buttonContext }
- // Enrich and call the next button action
- const next = enrichButtonActions(
- actions.slice(i + 1),
- newContext
- )
- await next()
+ // Enrich and call the next button action
+ const next = enrichButtonActions(
+ actions.slice(i + 1),
+ newContext
+ )
+ resolve(await next())
+ } else {
+ resolve(false)
+ }
+ },
+ () => {
+ resolve(false)
}
- }
- )
-
- // Stop enriching actions when encountering a confirmable action,
- // as the callback continues the action chain
- return
+ )
+ })
}
// For non-confirmable actions, execute the handler immediately
diff --git a/packages/client/src/utils/componentProps.js b/packages/client/src/utils/componentProps.js
index 0727b5943f..14760252a9 100644
--- a/packages/client/src/utils/componentProps.js
+++ b/packages/client/src/utils/componentProps.js
@@ -22,7 +22,7 @@ export const propsAreSame = (a, b) => {
* Enriches component props.
* Data bindings are enriched, and button actions are enriched.
*/
-export const enrichProps = (props, context) => {
+export const enrichProps = (props, context, settingsDefinitionMap) => {
// Create context of all bindings and data contexts
// Duplicate the closest context as "data" which the builder requires
const totalContext = {
@@ -38,7 +38,7 @@ export const enrichProps = (props, context) => {
let normalProps = { ...props }
let actionProps = {}
Object.keys(normalProps).forEach(prop => {
- if (prop?.toLowerCase().includes("onclick")) {
+ if (settingsDefinitionMap?.[prop]?.type === "event") {
actionProps[prop] = normalProps[prop]
delete normalProps[prop]
}
@@ -61,7 +61,7 @@ export const enrichProps = (props, context) => {
// Conditions
if (enrichedProps._conditions?.length) {
enrichedProps._conditions.forEach((condition, idx) => {
- if (condition.setting?.toLowerCase().includes("onclick")) {
+ if (settingsDefinitionMap?.[condition.setting]?.type === "event") {
// Use the original condition action value to enrich it to a button
// action
condition.settingValue = enrichButtonActions(
diff --git a/packages/client/yarn.lock b/packages/client/yarn.lock
index 8eb1682af8..97fbbc0a6d 100644
--- a/packages/client/yarn.lock
+++ b/packages/client/yarn.lock
@@ -28,13 +28,13 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@budibase/bbui@^1.0.85":
- version "1.0.85"
- resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-1.0.85.tgz#b4f4415f2acfe3f2891413545c5338a250522576"
- integrity sha512-gxRu48r39b/FLaDIaU89xuPnIjr76b9HoKqx7vgNWyiwaNh6IyyA0LtHRTLj7r2/sLjDCTjYXTVBqDkcmbANpw==
+"@budibase/bbui@^1.0.97":
+ version "1.0.97"
+ resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-1.0.97.tgz#6d36cdbeeaaf3a7b299a8a677f0739b682b49bf3"
+ integrity sha512-AMwDCz0qm4rZp50TY83JJTjqOAlZPdirzsLM4Iydn2dWlaqpcwnB3VZOzgb+mC72uH5eKeqI74Nu7hh3CvtXBw==
dependencies:
"@adobe/spectrum-css-workflow-icons" "^1.2.1"
- "@budibase/string-templates" "^1.0.85"
+ "@budibase/string-templates" "^1.0.97"
"@spectrum-css/actionbutton" "^1.0.1"
"@spectrum-css/actiongroup" "^1.0.1"
"@spectrum-css/avatar" "^3.0.2"
@@ -80,12 +80,12 @@
svelte-flatpickr "^3.2.3"
svelte-portal "^1.0.0"
-"@budibase/frontend-core@^1.0.85":
- version "1.0.85"
- resolved "https://registry.yarnpkg.com/@budibase/frontend-core/-/frontend-core-1.0.85.tgz#f44d97016edc54d4bd6a10a6066f9d0f8d5b5a45"
- integrity sha512-dTHnmWrr87wuulxLsyR7g2hlSOxKtMuDAOXsDZe8drGCiD7gdbSgcYPckJ9dC4XxRJ/rKZN0AZ1tZdRoH7Tx6g==
+"@budibase/frontend-core@^1.0.97":
+ version "1.0.97"
+ resolved "https://registry.yarnpkg.com/@budibase/frontend-core/-/frontend-core-1.0.97.tgz#530a0c716fbc93dd38d7abcc22b3131030f9cd16"
+ integrity sha512-B2LG9UIEKSLE0NBhPlVLYXAypjBZgiPdqGwoNm7xcWZHG12YzYWqflV3NLwaDx9Qt3UTIaRzXqBGoNNQCGdUdQ==
dependencies:
- "@budibase/bbui" "^1.0.85"
+ "@budibase/bbui" "^1.0.97"
lodash "^4.17.21"
svelte "^3.46.2"
@@ -114,10 +114,10 @@
to-gfm-code-block "^0.1.1"
year "^0.2.1"
-"@budibase/string-templates@^1.0.85":
- version "1.0.85"
- resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-1.0.85.tgz#1119ddb28bb3a512a894d4f20b9982cc65911cc7"
- integrity sha512-buU5+rMRXFTQZlG9M3e+uPuaJ57OXE3pSPt/H0mo/8l7Bs5O1Xs9p8O6k2YvTkvQueJeqfwbL9QbztxPmCK9xQ==
+"@budibase/string-templates@^1.0.97":
+ version "1.0.97"
+ resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-1.0.97.tgz#b7485cb8774d6dff8280fbf411c6383b82add72d"
+ integrity sha512-8NfpYzDJgSkic3E0ARfNsPsFEMmOcH+kEeTioLkNnkKrviIRhSQ9Oa3S87QIYo5WGYxpEFEfhYutXsbp3GTLbg==
dependencies:
"@budibase/handlebars-helpers" "^0.11.8"
dayjs "^1.10.4"
@@ -177,14 +177,14 @@
picomatch "^2.2.2"
"@spectrum-css/actionbutton@^1.0.1":
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/@spectrum-css/actionbutton/-/actionbutton-1.1.8.tgz#35c238da459844e19c3d9480566e15f5e2651071"
- integrity sha512-GhMVe9ZD5QRlcVV7asLArkVfXjFSB9ndQsO6CNnMoXBpo+2eV2Hi2xl1971mTKBEcR7OucIXk+OK02eJ6rRVTg==
+ version "1.1.10"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/actionbutton/-/actionbutton-1.1.10.tgz#7cf6e880a8f531b439ed6cbea9f5c4be09289040"
+ integrity sha512-szdXDm6YKrqmDF7k0jEAuPcFDqpNzMVzCweQKs2pMjFjDy0VR2uzEq/hYhfe4wN7soAjOOSDSPUrAh5L5TXuBQ==
"@spectrum-css/actiongroup@^1.0.1":
- version "1.0.19"
- resolved "https://registry.yarnpkg.com/@spectrum-css/actiongroup/-/actiongroup-1.0.19.tgz#91bd74ce0c0221e50ca3b190bc875c8a19db4db8"
- integrity sha512-sQxodiO/EGJUWE7nHxApSncX4nDyX9exm8EIAWZ9bPSH2vPeH+Vib+tHDrWw7d1i2lGCTwzMH1wI0w2DvjsRsA==
+ version "1.0.21"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/actiongroup/-/actiongroup-1.0.21.tgz#0121b3e3393e15f6b63f1cbf4836a5073ff53bd7"
+ integrity sha512-gXzjW+l6n0rbXcIQUdnxtWBZqjNuvtacKkgtlefkizEQPuN5GX1ZTUzYb8F5rgFH3reLcMKTLByrQQ2kRL19HQ==
"@spectrum-css/avatar@^3.0.2":
version "3.0.2"
@@ -207,9 +207,9 @@
integrity sha512-+oKLUI2a0QmQP9EzySeq/G4FpUkkdaDNbuEbqCj2IkPMc/2v/nwzsPhh1fj2UIghGAiiUwXfPpzax1e8fyhQUg==
"@spectrum-css/checkbox@^3.0.2":
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/checkbox/-/checkbox-3.0.17.tgz#8023a42e0197321c11df92fd1fb18fd81949808b"
- integrity sha512-bJlNmF7MOwKCc5YSaem4scEux76bMQmC2rPtKG63ajmd2uNkJMynCEiPtkE4tG3KBLa/qDHW3l7swyy8L04/eg==
+ version "3.0.19"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/checkbox/-/checkbox-3.0.19.tgz#56a8ed82b0bca3753932179caa8e2c705852d6a6"
+ integrity sha512-Pr8PWiUHBqhDvA6uAqldjn8pDZPCcc14obGEeKx8FK/DD7geaYuCNGxYFksWN9w3wW910Pex4fX0FnWnMkJoxg==
"@spectrum-css/dialog@^3.0.1":
version "3.0.12"
@@ -224,14 +224,14 @@
"@spectrum-css/vars" "^7.0.0"
"@spectrum-css/dropzone@^3.0.2":
- version "3.0.18"
- resolved "https://registry.yarnpkg.com/@spectrum-css/dropzone/-/dropzone-3.0.18.tgz#ed4ff37f3781fc2d30ec21fb2b3579c864b155a5"
- integrity sha512-eBqJrqy/EAERnydMRtkzRGaamvTYCD+4j2L50YA7jPp2DML+93dd5C4EkG/sBzhzCigEiNQIibXT8c3BiQKNDA==
+ version "3.0.21"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/dropzone/-/dropzone-3.0.21.tgz#d4e532a4a829c4c3b6a23ae6edfb77bc1faba3eb"
+ integrity sha512-P9uWwp3NH+RaVlF+QEa+BCqZxEe4pL0piJjrI/ei6eiW1k1IwCk8VCnrIce0XNjLk8JIoAUsOjrMvWJq14VNGQ==
"@spectrum-css/fieldgroup@^3.0.2":
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/fieldgroup/-/fieldgroup-3.0.17.tgz#93656af3fa403f2ef4716d43b17356e99dcf524d"
- integrity sha512-eXIlK1bcUwzQK0KsZ3u1Ar6qK6tI0GX12cQpgPKxT+8Pxjk1eK5JPWH5kKepe/6i0lagrGbKBoYDv2xGJWWSUg==
+ version "3.0.19"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/fieldgroup/-/fieldgroup-3.0.19.tgz#7235ff669dca925b6efbeb7e951ac448d1f6d135"
+ integrity sha512-bcS4c2FBYxIcj7KsRwWgE7jE2I2vzBOlrR6xDSanqAtitmeqRh8Kp86u0vM2dNi8lbXDwUsEEviYj/cWhQ3XLQ==
"@spectrum-css/fieldlabel@^3.0.1":
version "3.0.3"
@@ -239,9 +239,9 @@
integrity sha512-nEvIkEXCD5n4fW67Unq6Iu7VXoauEd/JGpfTY02VsC5p4FJLnwKfPDbJUuUsqClAxqw7nAsmXVKtn4zQFf5yPQ==
"@spectrum-css/icon@^3.0.1":
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/icon/-/icon-3.0.17.tgz#952a43b8bdd451aaf54e4cd7d5fe0a156018f8c9"
- integrity sha512-O+xY3UPLgyG2VnQjGCTBadOwkqtKBRmAkRRnWIB14/O/CPVh5ca3hMGGVHql2IBH7V9I7zThH/JU3MrrE9owQQ==
+ version "3.0.19"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/icon/-/icon-3.0.19.tgz#d5b6f115dca41acc0fb9b93aa5fb8453d4f116e2"
+ integrity sha512-2CJgTKujfXLrxsF9OJtJkZVm2WR6kE3bztWuQSsUbBkS2nHIWlRWpfi8C6IUFO3JGe6J/JPMQFWKH0XeSypknw==
"@spectrum-css/illustratedmessage@^3.0.2":
version "3.0.17"
@@ -263,20 +263,25 @@
resolved "https://registry.yarnpkg.com/@spectrum-css/label/-/label-2.0.10.tgz#2368651d7636a19385b5d300cdf6272db1916001"
integrity sha512-xCbtEiQkZIlLdWFikuw7ifDCC21DOC/KMgVrrVJHXFc4KRQe9LTZSqmGF3tovm+CSq1adE59mYoTbojVQ9YuEQ==
-"@spectrum-css/link@^3.1.1", "@spectrum-css/link@^3.1.3":
+"@spectrum-css/link@^3.1.1":
+ version "3.1.19"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/link/-/link-3.1.19.tgz#7231eb3e1e1b1967e9cbbd76c7cdb60ea8cc7529"
+ integrity sha512-rciqeg0zClwp+DiWQBXFrG+dWnx2MA3kzE17wZzou7Np7ff/zLWstDAbmerXYTjgm9Jm9ky1mJF8u5vYQBFfMA==
+
+"@spectrum-css/link@^3.1.3":
version "3.1.17"
resolved "https://registry.yarnpkg.com/@spectrum-css/link/-/link-3.1.17.tgz#efa8fd5ee8a6b291843dcaf4fa1270b81c564c48"
integrity sha512-sWWTnDB+Yig9WmLvzcvUgSH6zZtu2tWfobMivFLjRnfQYIhxJSoj87AleLpcTbvIQIwSwytSdnbncsm4rBfDjg==
"@spectrum-css/menu@^3.0.1":
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/menu/-/menu-3.0.17.tgz#251c8086ab84ca9237109e19d29f838a813b3f8a"
- integrity sha512-mCTo/JGTbpw93T6EZ+hl+OJ+6BaMbVSEy31Wy3UgYaSw61+IzVIn7cVVr/9fxmOZl/Y6zSwAq/IZl3FBnQ3zbQ==
+ version "3.0.19"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/menu/-/menu-3.0.19.tgz#5f6e5534c9b4a95cc78430e379c18eeb26c11619"
+ integrity sha512-KDJ3A7pnAWpWUG/PIFr9lfcWxs4KCrxg+KvQdUOqco5R2rwYL27sU8CZJpZ3vLkKaERaCaFjkUGkabuV8CWNOw==
"@spectrum-css/modal@^3.0.1":
- version "3.0.16"
- resolved "https://registry.yarnpkg.com/@spectrum-css/modal/-/modal-3.0.16.tgz#a9034f6b5faf8b54850ab9ff5830cf25f37b84c8"
- integrity sha512-pmCUTUOwg8Q521ptMNpIiGOJhndFGMv8OpAPaUfCMEfVLnv5s3+GR1ciGl9NmsdibjmVXi54WnSRsZtcpe2j0A==
+ version "3.0.18"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/modal/-/modal-3.0.18.tgz#b466536fdecc635a07620a491e45adf344830825"
+ integrity sha512-vHNUN9u0rHRvst1up9/5SDz/BYKnC/WdPigoJaJorfK0hUQNamtwm/A8COib2JdfiZ5/mqjZex6z84dT93dmiA==
"@spectrum-css/page@^3.0.1":
version "3.0.9"
@@ -291,9 +296,9 @@
integrity sha512-wjZr7NAcqHK6fxNIGKTYEVtAOJugJTbcz4d8K7DZuUDgBVwLJJHJBi4uJ4KrIRYliMWOvqWTZzCJLmmTfx4cyw==
"@spectrum-css/picker@^1.0.1":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@spectrum-css/picker/-/picker-1.2.0.tgz#5e986d3b725b2f6820949fb92f6ea6262e11dda7"
- integrity sha512-NQEZUV7pnT5CliHq08g8dO6KpWgipycpa+vBw+Cqw93h8IjIHWCUU+gUo87EV+h/Z1fI1l/sWguBpwzb/nGEAg==
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/picker/-/picker-1.2.2.tgz#d3cb8fa87d970f1adf1f8a2cfaa20f1021bb78af"
+ integrity sha512-qHhHgQV37EiLlQnBrZzlP+FFrDORDYVNUsvtwaiMkrYZTvAiyiEhOw+vQDj4ZpnI+T2l654twbjrgLX7c/4q1Q==
"@spectrum-css/popover@^3.0.1":
version "3.0.11"
@@ -301,19 +306,19 @@
integrity sha512-bzyNQJVw6Mn1EBelTaRlXCdd0ZfykNX9O6SHx3a+jXPYu8VBrRpHm0gsfWzPAz1etd1vj1CxwG/teQt4qvyZ/Q==
"@spectrum-css/progressbar@^1.0.2":
- version "1.0.21"
- resolved "https://registry.yarnpkg.com/@spectrum-css/progressbar/-/progressbar-1.0.21.tgz#892a0f3655e0e0f97734362b1e5763a6c3214dcc"
- integrity sha512-CC7QrVfFT/IwDSBkTooe8aORVG+SuXC2kxkCbRHz789W4ST/ntM5qv62Axvb9AhR0HTGdEVMJByFt6wsdB5ZpQ==
+ version "1.0.23"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/progressbar/-/progressbar-1.0.23.tgz#0c191c7e6861876755499be10ad21ce6bb0584af"
+ integrity sha512-DoTqHRwokERQ7o6KfftWv1F395IhJYD+65Nv5DayUKPTFq+UIak7oSzZWpCRMkluhU9GJuhbtbXHCRB5dupuMQ==
"@spectrum-css/progresscircle@^1.0.2":
- version "1.0.16"
- resolved "https://registry.yarnpkg.com/@spectrum-css/progresscircle/-/progresscircle-1.0.16.tgz#b2d44b11d56f9af0047933f9ed820b8b9704af1f"
- integrity sha512-kXdepk7LQ2Chze4RTWRKECTqI4QdeAMG74sbkznUAdZj+wMAytLpWgWaH/4v+0uJ66WcFy2GDVkmy38qHJ/HwQ==
+ version "1.0.18"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/progresscircle/-/progresscircle-1.0.18.tgz#170c32e46fb9a364cd391169e63e1e13e69d92a4"
+ integrity sha512-JSqCVJm5nybwSKLylhnMmc18fKpVliDFTvWQ/1Mn+xGERYDGbkLqv369Ss/uLBZWuOyBBAnCAIpWXZH//k5niQ==
"@spectrum-css/radio@^3.0.2":
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/radio/-/radio-3.0.17.tgz#7097aea15b24cdeccf19944898f9b46fcd30044c"
- integrity sha512-X2JHa/Vp/BdzOy71Kiyxg4C3Ld+YNglZ/SWMbCvlEmcJL6VcQ5druni16vgUhwmk8z3LCGN74wJB9sbNdF/UAQ==
+ version "3.0.19"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/radio/-/radio-3.0.19.tgz#9c7e7ee7e91d03e1a24293192d5c2fce47ce3c94"
+ integrity sha512-RUjtrf4Dww+3jbrTk5p3GSdVpQ8035PiASKm7IDlPjC6dYBOlPgJcW56NcHx/wVzsYCjYMQwNzOvVQPT/6lAPA==
"@spectrum-css/search@^3.0.2":
version "3.1.2"
@@ -321,9 +326,9 @@
integrity sha512-8cMK1QB07dbReZ/ECyTyoT2dELZ7hK1b3jEDiWSeLBbXcKirR1OI24sZEnewQY/XWFd/62Z1YdNaaA8S6UuXWQ==
"@spectrum-css/sidenav@^3.0.2":
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/sidenav/-/sidenav-3.0.17.tgz#f3ceae802a307a6beb6663298f95451236c31a61"
- integrity sha512-zkZrI1SCT5KkNVn3cdcCs6Yw8p4F29V/4Wim/ZWp0344ymew4YpnyWTgdEtIEavGsW7ivR45GpgskZhrLOs54g==
+ version "3.0.19"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/sidenav/-/sidenav-3.0.19.tgz#4d1dffef94e584004443ca5ed4e3b8e88957031d"
+ integrity sha512-9UJ9PgG2vvYsFXCFYBAMSo05tDZHDHubbUhaSEinp2mCoO+pe76wxyP0CXSPypif1qOt5JCkeRsdbGC0Jb2m8A==
"@spectrum-css/statuslight@^3.0.2":
version "3.0.8"
@@ -331,14 +336,14 @@
integrity sha512-zMTHs8lk+I7fLdi9waEEbsCmJ1FxeHcjQ0yltWxuRmGk2vl4MQdQIuHIMI63iblqEaiwnJRjXJoKnWlNvndTJQ==
"@spectrum-css/stepper@^3.0.3":
- version "3.0.19"
- resolved "https://registry.yarnpkg.com/@spectrum-css/stepper/-/stepper-3.0.19.tgz#415823fdc809e002a24627b89e9e118ebcdb5ae2"
- integrity sha512-ebe+g+/0rr0FyvDNCDm2AvNqGwmuP2g1/VAIOKEx3lvmAqJaq7gdYAymJqxn6n8xn8e66X7okyAp2OpLNcLk8w==
+ version "3.0.21"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/stepper/-/stepper-3.0.21.tgz#8031851e418f172d0a34b18b5c32cd33889d3474"
+ integrity sha512-IQn0I5rycE5QFVdVYEqbfpeNz5GoA1vF+zeUN1QDDhZ/pqvzA6NW+hQIgkl6vwnvOS1LOGDePcSXYOLz7Z4rrA==
"@spectrum-css/switch@^1.0.2":
- version "1.0.16"
- resolved "https://registry.yarnpkg.com/@spectrum-css/switch/-/switch-1.0.16.tgz#1eb3cd0589a7dc663f991b9aecc811afb71e6194"
- integrity sha512-R47F1u10jfaPPZ0gZPSC6qyCOv3iIlxv+BPAwYky1h0eC/peNCSZUGSIDd6vog/TVH/t3b8q+uryxVrxwrJFBQ==
+ version "1.0.18"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/switch/-/switch-1.0.18.tgz#d371b0d9ef1ba215e76df85a9b849a83dc837324"
+ integrity sha512-Pi7xkZDoBscx1oIE45khpHWyHuk859KXDh15/2QjM1KeVUB49RMeYbQJVWPmW0Ugia4je1OtzbuRH5aDxrQ3aQ==
"@spectrum-css/table@^3.0.1":
version "3.0.3"
@@ -346,9 +351,9 @@
integrity sha512-nxwzVjLPsXoY/v4sdxOVYLcC+cEbGgJyLcLclT5LT9MGSbngFeUMJzzVR4EvehzuN4dH7hrATG7Mbuq29Mf0Hg==
"@spectrum-css/tabs@^3.0.1":
- version "3.2.7"
- resolved "https://registry.yarnpkg.com/@spectrum-css/tabs/-/tabs-3.2.7.tgz#f68a6e2a7ffb93520eb7831fe4e391d58a63d23d"
- integrity sha512-HsdUL5ytBdhjFbA6CnAnU24Fifs4qWVH0MIdKL5hqsVQOauVgul8VqqaTGIhhfvmRBl5G9GRVrpg0I30qD3iDA==
+ version "3.2.9"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/tabs/-/tabs-3.2.9.tgz#ffe6c172cdfbb86b5aecc54494862c6d035fdfc4"
+ integrity sha512-rPRMpj3cq+ADhF8SitDkaZ5FvlKGRCKln8XfVbeCRMTU9lwz7u5p6qSwX04Pur/wXUk+AMKccRAaPa+ijyoGTA==
"@spectrum-css/tag@^3.1.4":
version "3.3.5"
@@ -361,9 +366,9 @@
integrity sha512-SL8vPxVDfWcY5VdIuyl0TImEXcOU1I7yCyXkk7MudMwfnYs81FaIyY32hFV9OHj0Tz/36UzRzc7AVMSuRQ53pw==
"@spectrum-css/textfield@^3.0.1":
- version "3.1.8"
- resolved "https://registry.yarnpkg.com/@spectrum-css/textfield/-/textfield-3.1.8.tgz#15cb08cccd7d209767b86b4cd854ebd159bc3890"
- integrity sha512-uWF75ixdmbpfvTasBdYC0wPQvfLuk36ATy9TkmlRredp+N98QR2XU0H5kNuZnyxwahsw+9xe7K/lpFw4ZWJ3Zw==
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/textfield/-/textfield-3.1.10.tgz#c0fdeb983f122f56007af98187b1ebe5c434b258"
+ integrity sha512-zIHfsQ8wrpYhRj7/WsFoVSa0Yp71BIRS1lnOtaljc9qaA57o3QcqmZBnpBnuQUjOXuB9NkKVgSHp8lzpiokXpA==
"@spectrum-css/toast@^3.0.1":
version "3.0.3"
@@ -371,9 +376,9 @@
integrity sha512-CjLeaMs+cjUXojCCRtbj0YkD2BoZW16kjj2o5omkEpUTjA34IJ8xJ1a+CCtDILWekhXvN0MBN4sbumcnwcnx8w==
"@spectrum-css/tooltip@^3.0.3":
- version "3.1.11"
- resolved "https://registry.yarnpkg.com/@spectrum-css/tooltip/-/tooltip-3.1.11.tgz#7981c988b0e20604b8018b8cc6bc6af4cac457fb"
- integrity sha512-PhxyoYNL90QxY0X6qe1tq7werNhV6HJBYe6fcf2d2cBXaM7L2htXwDfLoqnR5NXU1G4c186ZkZr7tk+flRXFGw==
+ version "3.1.13"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/tooltip/-/tooltip-3.1.13.tgz#02db3376a89577e16820b3133cfa1961c3473d4a"
+ integrity sha512-Bao61MhYDHTfeVsm9fRpliiZS4zsuZ9Vrl8/HxqLqAKJ954Pe7MbjAFwvLRFUDcyTJSEuXegv13+ygB5xSeG+w==
"@spectrum-css/treeview@^3.0.2":
version "3.0.3"
@@ -386,9 +391,9 @@
integrity sha512-5ZOLmQe0edzsDMyhghUd4hBb5uxGsFrxzf+WasfcUw9klSfTsRZ09n1BsaaWbgrLjlMQ+EEHS46v5VNo0Ms2CA==
"@spectrum-css/underlay@^2.0.9":
- version "2.0.25"
- resolved "https://registry.yarnpkg.com/@spectrum-css/underlay/-/underlay-2.0.25.tgz#8d390b3353e7f05b00d72fea00dbd66dea31c663"
- integrity sha512-Ht/p6g7FxP7q5lO3iPJ5y89UK20pRWDtGdqeBFxsrxVXdHYbiC3Dm2UNgvi7WRF7dWmD9gaHJmSetjmSDYtVcw==
+ version "2.0.27"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/underlay/-/underlay-2.0.27.tgz#cdaff9eddd4849eb2c96da42cb31e47db1f190ea"
+ integrity sha512-+eyJul9ctFed+eiKPuIAk8OVb3DmNjkFUzuPDBIt/N/P0Nz/uJY0SawuzWVa7/h5vfWodHdn+t8cv1jmRsDcKQ==
"@spectrum-css/vars@^3.0.1":
version "3.0.2"
@@ -423,9 +428,9 @@
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
"@types/marked@^4.0.1":
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/@types/marked/-/marked-4.0.2.tgz#cb2dbf10da2f41cf20bd91fb5f89b67540c282f7"
- integrity sha512-auNrZ/c0w6wsM9DccwVxWHssrMDezHUAXNesdp2RQrCVCyrQbOiSq7yqdJKrUQQpw9VTm7CGYJH2A/YG7jjrjQ==
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/@types/marked/-/marked-4.0.3.tgz#2098f4a77adaba9ce881c9e0b6baf29116e5acc4"
+ integrity sha512-HnMWQkLJEf/PnxZIfbm0yGJRRZYYMhb++O9M36UCTA9z53uPvVoSlAwJr3XOpDEryb7Hwl1qAx/MV6YIW1RXxg==
"@types/node@*":
version "16.11.7"
@@ -868,7 +873,12 @@ csso@^4.2.0:
dependencies:
css-tree "^1.1.2"
-dayjs@^1.10.4, dayjs@^1.10.5:
+dayjs@^1.10.4:
+ version "1.11.0"
+ resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.0.tgz#009bf7ef2e2ea2d5db2e6583d2d39a4b5061e805"
+ integrity sha512-JLC809s6Y948/FuCZPm5IX8rRhQwOiyMb2TfVVQEixG7P8Lm/gt5S7yoQZmC8x1UehI9Pb7sksEt4xx14m+7Ug==
+
+dayjs@^1.10.5:
version "1.10.8"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.8.tgz#267df4bc6276fcb33c04a6735287e3f429abec41"
integrity sha512-wbNwDfBHHur9UOzNUjeKUOJ0fCb0a52Wx0xInmQ7Y8FstyajiV1NmK1e00cxsr9YrE9r7yAChE0VvpuY5Rnlow==
@@ -938,6 +948,13 @@ domelementtype@^2.0.1, domelementtype@^2.2.0:
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57"
integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==
+domhandler@^4.0.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626"
+ integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==
+ dependencies:
+ domelementtype "^2.2.0"
+
domhandler@^4.2.0:
version "4.2.2"
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f"
@@ -945,7 +962,7 @@ domhandler@^4.2.0:
dependencies:
domelementtype "^2.2.0"
-domutils@^2.6.0:
+domutils@^2.5.2, domutils@^2.6.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
@@ -1005,6 +1022,11 @@ escape-string-regexp@^1.0.5:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+escape-string-regexp@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
+ integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
+
estree-walker@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e"
@@ -1273,6 +1295,16 @@ html-tag@^2.0.0:
is-self-closing "^1.0.1"
kind-of "^6.0.0"
+htmlparser2@^6.0.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7"
+ integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^4.0.0"
+ domutils "^2.5.2"
+ entities "^2.0.0"
+
icss-replace-symbols@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
@@ -1447,6 +1479,11 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4:
dependencies:
isobject "^3.0.1"
+is-plain-object@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
+ integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
+
is-reference@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7"
@@ -1545,6 +1582,11 @@ kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3:
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+leaflet@^1.7.1:
+ version "1.7.1"
+ resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.7.1.tgz#10d684916edfe1bf41d688a3b97127c0322a2a19"
+ integrity sha512-/xwPEBidtg69Q3HlqPdU3DnrXQOvQU/CCHA1tcDQVzOwm91YMYaILjNp7L4Eaw5Z4sOYdbBz6koWyibppd8Zqw==
+
lilconfig@^2.0.3:
version "2.0.4"
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082"
@@ -1660,9 +1702,9 @@ minimatch@^3.0.2, minimatch@^3.0.4:
brace-expansion "^1.1.7"
minimist@^1.2.0, minimist@^1.2.5:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
- integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
+ integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
mixin-deep@^1.2.0:
version "1.3.2"
@@ -1687,6 +1729,11 @@ nanoid@^3.1.30, nanoid@^3.1.32:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c"
integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==
+nanoid@^3.3.1:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35"
+ integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==
+
nanomatch@^1.2.9:
version "1.2.13"
resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
@@ -1785,6 +1832,11 @@ p-timeout@^3.2.0:
dependencies:
p-finally "^1.0.0"
+parse-srcset@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/parse-srcset/-/parse-srcset-1.0.2.tgz#f2bd221f6cc970a938d88556abc589caaaa2bde1"
+ integrity sha1-8r0iH2zJcKk42IVWq8WJyqqiveE=
+
pascalcase@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
@@ -2097,6 +2149,15 @@ postcss@^8.2.10:
picocolors "^1.0.0"
source-map-js "^1.0.1"
+postcss@^8.3.11:
+ version "8.4.12"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905"
+ integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==
+ dependencies:
+ nanoid "^3.3.1"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
process-nextick-args@~2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
@@ -2310,6 +2371,23 @@ safe-regex@^1.1.0:
dependencies:
ret "~0.1.10"
+sanitize-html@^2.7.0:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.7.0.tgz#e106205b468aca932e2f9baf241f24660d34e279"
+ integrity sha512-jfQelabOn5voO7FAfnQF7v+jsA6z9zC/O4ec0z3E35XPEtHYJT/OdUziVWlKW4irCr2kXaQAyXTXDHWAibg1tA==
+ dependencies:
+ deepmerge "^4.2.2"
+ escape-string-regexp "^4.0.0"
+ htmlparser2 "^6.0.0"
+ is-plain-object "^5.0.0"
+ parse-srcset "^1.0.2"
+ postcss "^8.3.11"
+
+screenfull@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-6.0.1.tgz#3b71e6f06b72d817a8d3be73c45ebe71fa8da1ce"
+ integrity sha512-yzQW+j4zMUBQC51xxWaoDYjxOtl8Kn+xvue3p6v/fv2pIi1jH4AldgVLU8TBfFVgH2x3VXlf3+YiA/AYIPlaew==
+
self-closing-tags@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/self-closing-tags/-/self-closing-tags-1.0.1.tgz#6c5fa497994bb826b484216916371accee490a5d"
@@ -2374,7 +2452,7 @@ snapdragon@^0.8.1:
source-map-resolve "^0.5.0"
use "^3.1.0"
-source-map-js@^1.0.1:
+source-map-js@^1.0.1, source-map-js@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
diff --git a/packages/frontend-core/package.json b/packages/frontend-core/package.json
index 4d2b46a081..d9d4546d03 100644
--- a/packages/frontend-core/package.json
+++ b/packages/frontend-core/package.json
@@ -1,12 +1,12 @@
{
"name": "@budibase/frontend-core",
- "version": "1.0.89-alpha.0",
+ "version": "1.0.104-alpha.0",
"description": "Budibase frontend core libraries used in builder and client",
"author": "Budibase",
"license": "MPL-2.0",
"svelte": "src/index.js",
"dependencies": {
- "@budibase/bbui": "^1.0.89-alpha.0",
+ "@budibase/bbui": "^1.0.104-alpha.0",
"lodash": "^4.17.21",
"svelte": "^3.46.2"
}
diff --git a/packages/frontend-core/src/api/analytics.js b/packages/frontend-core/src/api/analytics.js
index 0402365e73..c6efdbddb3 100644
--- a/packages/frontend-core/src/api/analytics.js
+++ b/packages/frontend-core/src/api/analytics.js
@@ -4,7 +4,7 @@ export const buildAnalyticsEndpoints = API => ({
*/
pingEndUser: async () => {
return await API.post({
- url: `/api/analytics/ping`,
+ url: `/api/bbtel/ping`,
})
},
@@ -13,7 +13,7 @@ export const buildAnalyticsEndpoints = API => ({
*/
getAnalyticsStatus: async () => {
return await API.get({
- url: "/api/analytics",
+ url: "/api/bbtel",
})
},
})
diff --git a/packages/frontend-core/src/api/rows.js b/packages/frontend-core/src/api/rows.js
index 1b6efe624f..6a0d278cf7 100644
--- a/packages/frontend-core/src/api/rows.js
+++ b/packages/frontend-core/src/api/rows.js
@@ -66,12 +66,15 @@ export const buildRowEndpoints = API => ({
* @param tableId the table ID to export the rows from
* @param rows the array of rows to export
*/
- exportRows: async ({ tableId, rows }) => {
+ exportRows: async ({ tableId, rows, format }) => {
return await API.post({
- url: `/api/${tableId}/rows/exportRows`,
+ url: `/api/${tableId}/rows/exportRows?format=${format}`,
body: {
rows,
},
+ parseResponse: async response => {
+ return await response.text()
+ },
})
},
})
diff --git a/packages/frontend-core/yarn.lock b/packages/frontend-core/yarn.lock
index 35f0c9f342..8d4b2f14a0 100644
--- a/packages/frontend-core/yarn.lock
+++ b/packages/frontend-core/yarn.lock
@@ -2,1346 +2,12 @@
# yarn lockfile v1
-"@adobe/spectrum-css-workflow-icons@^1.2.1":
- version "1.4.2"
- resolved "https://registry.yarnpkg.com/@adobe/spectrum-css-workflow-icons/-/spectrum-css-workflow-icons-1.4.2.tgz#6df50c967a0b129d8629b332f7f0f40d4a070438"
- integrity sha512-zH0a3B6tMntGcGY9gMYEuQPA5bI/vjhLGmdneUyD5c7CEH45vyHJLzD8Dpw22FDzu/ts7oOF+AXE1LyuaxQsbQ==
-
-"@budibase/bbui@^1.0.84":
- version "1.0.84"
- resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-1.0.84.tgz#8bf2f3d93aaf71ae353f93b10cb34e06c99d8176"
- integrity sha512-GO2qXq5wJ00YCdgl93fP1y9eLwAbX0fpt9WVqNYWcgUzAMkeQAOPr7S0ud05GwLZPo736exxqh6RzSwo5H73sg==
- dependencies:
- "@adobe/spectrum-css-workflow-icons" "^1.2.1"
- "@budibase/string-templates" "^1.0.84"
- "@spectrum-css/actionbutton" "^1.0.1"
- "@spectrum-css/actiongroup" "^1.0.1"
- "@spectrum-css/avatar" "^3.0.2"
- "@spectrum-css/button" "^3.0.1"
- "@spectrum-css/buttongroup" "^3.0.2"
- "@spectrum-css/checkbox" "^3.0.2"
- "@spectrum-css/dialog" "^3.0.1"
- "@spectrum-css/divider" "^1.0.3"
- "@spectrum-css/dropzone" "^3.0.2"
- "@spectrum-css/fieldgroup" "^3.0.2"
- "@spectrum-css/fieldlabel" "^3.0.1"
- "@spectrum-css/icon" "^3.0.1"
- "@spectrum-css/illustratedmessage" "^3.0.2"
- "@spectrum-css/inlinealert" "^2.0.1"
- "@spectrum-css/inputgroup" "^3.0.2"
- "@spectrum-css/label" "^2.0.10"
- "@spectrum-css/link" "^3.1.1"
- "@spectrum-css/menu" "^3.0.1"
- "@spectrum-css/modal" "^3.0.1"
- "@spectrum-css/pagination" "^3.0.3"
- "@spectrum-css/picker" "^1.0.1"
- "@spectrum-css/popover" "^3.0.1"
- "@spectrum-css/progressbar" "^1.0.2"
- "@spectrum-css/progresscircle" "^1.0.2"
- "@spectrum-css/radio" "^3.0.2"
- "@spectrum-css/search" "^3.0.2"
- "@spectrum-css/sidenav" "^3.0.2"
- "@spectrum-css/statuslight" "^3.0.2"
- "@spectrum-css/stepper" "^3.0.3"
- "@spectrum-css/switch" "^1.0.2"
- "@spectrum-css/table" "^3.0.1"
- "@spectrum-css/tabs" "^3.0.1"
- "@spectrum-css/tags" "^3.0.2"
- "@spectrum-css/textfield" "^3.0.1"
- "@spectrum-css/toast" "^3.0.1"
- "@spectrum-css/tooltip" "^3.0.3"
- "@spectrum-css/treeview" "^3.0.2"
- "@spectrum-css/typography" "^3.0.1"
- "@spectrum-css/underlay" "^2.0.9"
- "@spectrum-css/vars" "^3.0.1"
- dayjs "^1.10.4"
- easymde "^2.16.1"
- svelte-flatpickr "^3.2.3"
- svelte-portal "^1.0.0"
-
-"@budibase/handlebars-helpers@^0.11.8":
- version "0.11.8"
- resolved "https://registry.yarnpkg.com/@budibase/handlebars-helpers/-/handlebars-helpers-0.11.8.tgz#6953d29673a8c5c407e096c0a84890465c7ce841"
- integrity sha512-ggWJUt0GqsHFAEup5tlWlcrmYML57nKhpNGGLzVsqXVYN8eVmf3xluYmmMe7fDYhQH0leSprrdEXmsdFQF3HAQ==
- dependencies:
- array-sort "^1.0.0"
- define-property "^2.0.2"
- extend-shallow "^3.0.2"
- for-in "^1.0.2"
- get-object "^0.2.0"
- get-value "^3.0.1"
- handlebars "^4.7.7"
- handlebars-utils "^1.0.6"
- has-value "^2.0.2"
- helper-md "^0.2.2"
- html-tag "^2.0.0"
- is-even "^1.0.0"
- is-glob "^4.0.1"
- kind-of "^6.0.3"
- micromatch "^3.1.5"
- relative "^3.0.2"
- striptags "^3.1.1"
- to-gfm-code-block "^0.1.1"
- year "^0.2.1"
-
-"@budibase/string-templates@^1.0.84":
- version "1.0.84"
- resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-1.0.84.tgz#66669e9898ed20c6be2c46a5eb19d55003eb6bcb"
- integrity sha512-6Tv/TfGkmr3uBwNdZ3eKAPKwdsRTZbuQ+02puH+EcJK2leCerINo1SpAHf1BOmjQJynKeslKpSkUiisRVerMEg==
- dependencies:
- "@budibase/handlebars-helpers" "^0.11.8"
- dayjs "^1.10.4"
- handlebars "^4.7.6"
- handlebars-utils "^1.0.6"
- lodash "^4.17.20"
- vm2 "^3.9.4"
-
-"@spectrum-css/actionbutton@^1.0.1":
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/@spectrum-css/actionbutton/-/actionbutton-1.1.8.tgz#35c238da459844e19c3d9480566e15f5e2651071"
- integrity sha512-GhMVe9ZD5QRlcVV7asLArkVfXjFSB9ndQsO6CNnMoXBpo+2eV2Hi2xl1971mTKBEcR7OucIXk+OK02eJ6rRVTg==
-
-"@spectrum-css/actiongroup@^1.0.1":
- version "1.0.19"
- resolved "https://registry.yarnpkg.com/@spectrum-css/actiongroup/-/actiongroup-1.0.19.tgz#91bd74ce0c0221e50ca3b190bc875c8a19db4db8"
- integrity sha512-sQxodiO/EGJUWE7nHxApSncX4nDyX9exm8EIAWZ9bPSH2vPeH+Vib+tHDrWw7d1i2lGCTwzMH1wI0w2DvjsRsA==
-
-"@spectrum-css/avatar@^3.0.2":
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/@spectrum-css/avatar/-/avatar-3.0.2.tgz#4f1826223eae330e64b6d3cc899e9bc2e98dac95"
- integrity sha512-wEczvSqxttTWSiL3cOvXV/RmGRwSkw2w6+slcHhnf0kb7ovymMM+9oz8vvEpEsSeo5u598bc+7ktrKFpAd6soQ==
-
-"@spectrum-css/button@^3.0.1":
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/@spectrum-css/button/-/button-3.0.3.tgz#2df1efaab6c7e0b3b06cb4b59e1eae59c7f1fc84"
- integrity sha512-6CnLPqqtaU/PcSSIGeGRi0iFIIxIUByYLKFO6zn5NEUc12KQ28dJ4PLwB6WBa0L8vRoAGlnWWH2ZZweTijbXgg==
-
-"@spectrum-css/buttongroup@^3.0.2":
- version "3.0.10"
- resolved "https://registry.yarnpkg.com/@spectrum-css/buttongroup/-/buttongroup-3.0.10.tgz#897ea04b3ffea389fc7fe5bf67a6d1f3454b774d"
- integrity sha512-U7D24vgHYhlqOyaLJZ5LPskDAuD7cGZktmWvXtvLqG6RFyTr7JHn5oPRuo6mLzaggIHqCdJylOjZ4FHqT4LpTQ==
-
-"@spectrum-css/checkbox@^3.0.2":
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/checkbox/-/checkbox-3.0.17.tgz#8023a42e0197321c11df92fd1fb18fd81949808b"
- integrity sha512-bJlNmF7MOwKCc5YSaem4scEux76bMQmC2rPtKG63ajmd2uNkJMynCEiPtkE4tG3KBLa/qDHW3l7swyy8L04/eg==
-
-"@spectrum-css/dialog@^3.0.1":
- version "3.0.12"
- resolved "https://registry.yarnpkg.com/@spectrum-css/dialog/-/dialog-3.0.12.tgz#fc97e002ca768a3d99dd10cb6a135c2b06052004"
- integrity sha512-50rbFa+9eUKT+3uYBX7CkmI7SbQ0Z3CAFwjyjai+itYZ8kf/FcHVFwcLjgrry9scUnKhexMs94kkr0gfQpPe8Q==
-
-"@spectrum-css/divider@^1.0.3":
- version "1.0.19"
- resolved "https://registry.yarnpkg.com/@spectrum-css/divider/-/divider-1.0.19.tgz#0aa97be02148f8a4ebb778c5e9d40d20e518bf19"
- integrity sha512-vXUTfl08Txd2Rc7DsZtFDkaRSTDw1TzBwDvMJaGBl2E6cdCAXL2zXMxuXsEXN1NlPT8unpXVFYVMppcTzv/FCg==
- dependencies:
- "@spectrum-css/vars" "^7.1.0"
-
-"@spectrum-css/dropzone@^3.0.2":
- version "3.0.18"
- resolved "https://registry.yarnpkg.com/@spectrum-css/dropzone/-/dropzone-3.0.18.tgz#ed4ff37f3781fc2d30ec21fb2b3579c864b155a5"
- integrity sha512-eBqJrqy/EAERnydMRtkzRGaamvTYCD+4j2L50YA7jPp2DML+93dd5C4EkG/sBzhzCigEiNQIibXT8c3BiQKNDA==
-
-"@spectrum-css/fieldgroup@^3.0.2":
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/fieldgroup/-/fieldgroup-3.0.17.tgz#93656af3fa403f2ef4716d43b17356e99dcf524d"
- integrity sha512-eXIlK1bcUwzQK0KsZ3u1Ar6qK6tI0GX12cQpgPKxT+8Pxjk1eK5JPWH5kKepe/6i0lagrGbKBoYDv2xGJWWSUg==
-
-"@spectrum-css/fieldlabel@^3.0.1":
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/@spectrum-css/fieldlabel/-/fieldlabel-3.0.3.tgz#f73c04d20734d4718ffb620dc46458904685b449"
- integrity sha512-nEvIkEXCD5n4fW67Unq6Iu7VXoauEd/JGpfTY02VsC5p4FJLnwKfPDbJUuUsqClAxqw7nAsmXVKtn4zQFf5yPQ==
-
-"@spectrum-css/icon@^3.0.1":
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/icon/-/icon-3.0.17.tgz#952a43b8bdd451aaf54e4cd7d5fe0a156018f8c9"
- integrity sha512-O+xY3UPLgyG2VnQjGCTBadOwkqtKBRmAkRRnWIB14/O/CPVh5ca3hMGGVHql2IBH7V9I7zThH/JU3MrrE9owQQ==
-
-"@spectrum-css/illustratedmessage@^3.0.2":
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/illustratedmessage/-/illustratedmessage-3.0.17.tgz#49cb2549fda97a6812156bfba6ccdd3a18bebd11"
- integrity sha512-kpDqeq1U+rEjG1XuiXkbGvS71vn6mpFF/hiwCgFJWudVOfypDPQ4KLfYw1ditFSUzMCm5H6U/RqAShAJn8oMWA==
-
-"@spectrum-css/inlinealert@^2.0.1":
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/@spectrum-css/inlinealert/-/inlinealert-2.0.6.tgz#4c5e923a1f56a96cc1adb30ef1f06ae04f2c6376"
- integrity sha512-OpvvoWP02wWyCnF4IgG8SOPkXymovkC9cGtgMS1FdDubnG3tJZB/JeKTsRR9C9Vt3WBaOmISRdSKlZ4lC9CFzA==
-
-"@spectrum-css/inputgroup@^3.0.2":
- version "3.0.8"
- resolved "https://registry.yarnpkg.com/@spectrum-css/inputgroup/-/inputgroup-3.0.8.tgz#fc23afc8a73c24d17249c9d2337e8b42085b298b"
- integrity sha512-cmQWzFp0GU+4IMc8SSeVFdmQDlRUdPelXaQdKUR9mZuO2iYettg37s0lfBCeJyYkUNTagz0zP8O7A0iXfmeE6g==
-
-"@spectrum-css/label@^2.0.10":
- version "2.0.10"
- resolved "https://registry.yarnpkg.com/@spectrum-css/label/-/label-2.0.10.tgz#2368651d7636a19385b5d300cdf6272db1916001"
- integrity sha512-xCbtEiQkZIlLdWFikuw7ifDCC21DOC/KMgVrrVJHXFc4KRQe9LTZSqmGF3tovm+CSq1adE59mYoTbojVQ9YuEQ==
-
-"@spectrum-css/link@^3.1.1":
- version "3.1.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/link/-/link-3.1.17.tgz#efa8fd5ee8a6b291843dcaf4fa1270b81c564c48"
- integrity sha512-sWWTnDB+Yig9WmLvzcvUgSH6zZtu2tWfobMivFLjRnfQYIhxJSoj87AleLpcTbvIQIwSwytSdnbncsm4rBfDjg==
-
-"@spectrum-css/menu@^3.0.1":
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/menu/-/menu-3.0.17.tgz#251c8086ab84ca9237109e19d29f838a813b3f8a"
- integrity sha512-mCTo/JGTbpw93T6EZ+hl+OJ+6BaMbVSEy31Wy3UgYaSw61+IzVIn7cVVr/9fxmOZl/Y6zSwAq/IZl3FBnQ3zbQ==
-
-"@spectrum-css/modal@^3.0.1":
- version "3.0.16"
- resolved "https://registry.yarnpkg.com/@spectrum-css/modal/-/modal-3.0.16.tgz#a9034f6b5faf8b54850ab9ff5830cf25f37b84c8"
- integrity sha512-pmCUTUOwg8Q521ptMNpIiGOJhndFGMv8OpAPaUfCMEfVLnv5s3+GR1ciGl9NmsdibjmVXi54WnSRsZtcpe2j0A==
-
-"@spectrum-css/pagination@^3.0.3":
- version "3.0.11"
- resolved "https://registry.yarnpkg.com/@spectrum-css/pagination/-/pagination-3.0.11.tgz#68d9f34fe8eb36bf922e41b11f49eac62ac2fc41"
- integrity sha512-wjZr7NAcqHK6fxNIGKTYEVtAOJugJTbcz4d8K7DZuUDgBVwLJJHJBi4uJ4KrIRYliMWOvqWTZzCJLmmTfx4cyw==
-
-"@spectrum-css/picker@^1.0.1":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@spectrum-css/picker/-/picker-1.2.0.tgz#5e986d3b725b2f6820949fb92f6ea6262e11dda7"
- integrity sha512-NQEZUV7pnT5CliHq08g8dO6KpWgipycpa+vBw+Cqw93h8IjIHWCUU+gUo87EV+h/Z1fI1l/sWguBpwzb/nGEAg==
-
-"@spectrum-css/popover@^3.0.1":
- version "3.0.11"
- resolved "https://registry.yarnpkg.com/@spectrum-css/popover/-/popover-3.0.11.tgz#a7450c01bcf1609264b4a9df58821368b9e224d1"
- integrity sha512-bzyNQJVw6Mn1EBelTaRlXCdd0ZfykNX9O6SHx3a+jXPYu8VBrRpHm0gsfWzPAz1etd1vj1CxwG/teQt4qvyZ/Q==
-
-"@spectrum-css/progressbar@^1.0.2":
- version "1.0.21"
- resolved "https://registry.yarnpkg.com/@spectrum-css/progressbar/-/progressbar-1.0.21.tgz#892a0f3655e0e0f97734362b1e5763a6c3214dcc"
- integrity sha512-CC7QrVfFT/IwDSBkTooe8aORVG+SuXC2kxkCbRHz789W4ST/ntM5qv62Axvb9AhR0HTGdEVMJByFt6wsdB5ZpQ==
-
-"@spectrum-css/progresscircle@^1.0.2":
- version "1.0.16"
- resolved "https://registry.yarnpkg.com/@spectrum-css/progresscircle/-/progresscircle-1.0.16.tgz#b2d44b11d56f9af0047933f9ed820b8b9704af1f"
- integrity sha512-kXdepk7LQ2Chze4RTWRKECTqI4QdeAMG74sbkznUAdZj+wMAytLpWgWaH/4v+0uJ66WcFy2GDVkmy38qHJ/HwQ==
-
-"@spectrum-css/radio@^3.0.2":
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/radio/-/radio-3.0.17.tgz#7097aea15b24cdeccf19944898f9b46fcd30044c"
- integrity sha512-X2JHa/Vp/BdzOy71Kiyxg4C3Ld+YNglZ/SWMbCvlEmcJL6VcQ5druni16vgUhwmk8z3LCGN74wJB9sbNdF/UAQ==
-
-"@spectrum-css/search@^3.0.2":
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/@spectrum-css/search/-/search-3.1.2.tgz#8d43f35f884f7c190e7694c8d26a3f2cfed01ef0"
- integrity sha512-8cMK1QB07dbReZ/ECyTyoT2dELZ7hK1b3jEDiWSeLBbXcKirR1OI24sZEnewQY/XWFd/62Z1YdNaaA8S6UuXWQ==
-
-"@spectrum-css/sidenav@^3.0.2":
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/@spectrum-css/sidenav/-/sidenav-3.0.17.tgz#f3ceae802a307a6beb6663298f95451236c31a61"
- integrity sha512-zkZrI1SCT5KkNVn3cdcCs6Yw8p4F29V/4Wim/ZWp0344ymew4YpnyWTgdEtIEavGsW7ivR45GpgskZhrLOs54g==
-
-"@spectrum-css/statuslight@^3.0.2":
- version "3.0.8"
- resolved "https://registry.yarnpkg.com/@spectrum-css/statuslight/-/statuslight-3.0.8.tgz#3b0ea80712573679870a85d469850230e794a0f7"
- integrity sha512-zMTHs8lk+I7fLdi9waEEbsCmJ1FxeHcjQ0yltWxuRmGk2vl4MQdQIuHIMI63iblqEaiwnJRjXJoKnWlNvndTJQ==
-
-"@spectrum-css/stepper@^3.0.3":
- version "3.0.19"
- resolved "https://registry.yarnpkg.com/@spectrum-css/stepper/-/stepper-3.0.19.tgz#415823fdc809e002a24627b89e9e118ebcdb5ae2"
- integrity sha512-ebe+g+/0rr0FyvDNCDm2AvNqGwmuP2g1/VAIOKEx3lvmAqJaq7gdYAymJqxn6n8xn8e66X7okyAp2OpLNcLk8w==
-
-"@spectrum-css/switch@^1.0.2":
- version "1.0.16"
- resolved "https://registry.yarnpkg.com/@spectrum-css/switch/-/switch-1.0.16.tgz#1eb3cd0589a7dc663f991b9aecc811afb71e6194"
- integrity sha512-R47F1u10jfaPPZ0gZPSC6qyCOv3iIlxv+BPAwYky1h0eC/peNCSZUGSIDd6vog/TVH/t3b8q+uryxVrxwrJFBQ==
-
-"@spectrum-css/table@^3.0.1":
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/@spectrum-css/table/-/table-3.0.3.tgz#7f7f19905ef3275cbf907ce3a5818e63c30b2caf"
- integrity sha512-nxwzVjLPsXoY/v4sdxOVYLcC+cEbGgJyLcLclT5LT9MGSbngFeUMJzzVR4EvehzuN4dH7hrATG7Mbuq29Mf0Hg==
-
-"@spectrum-css/tabs@^3.0.1":
- version "3.2.7"
- resolved "https://registry.yarnpkg.com/@spectrum-css/tabs/-/tabs-3.2.7.tgz#f68a6e2a7ffb93520eb7831fe4e391d58a63d23d"
- integrity sha512-HsdUL5ytBdhjFbA6CnAnU24Fifs4qWVH0MIdKL5hqsVQOauVgul8VqqaTGIhhfvmRBl5G9GRVrpg0I30qD3iDA==
-
-"@spectrum-css/tags@^3.0.2":
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/@spectrum-css/tags/-/tags-3.0.3.tgz#fc76d2735cdc442de91b7eb3bee49a928c0767ac"
- integrity sha512-SL8vPxVDfWcY5VdIuyl0TImEXcOU1I7yCyXkk7MudMwfnYs81FaIyY32hFV9OHj0Tz/36UzRzc7AVMSuRQ53pw==
-
-"@spectrum-css/textfield@^3.0.1":
- version "3.1.8"
- resolved "https://registry.yarnpkg.com/@spectrum-css/textfield/-/textfield-3.1.8.tgz#15cb08cccd7d209767b86b4cd854ebd159bc3890"
- integrity sha512-uWF75ixdmbpfvTasBdYC0wPQvfLuk36ATy9TkmlRredp+N98QR2XU0H5kNuZnyxwahsw+9xe7K/lpFw4ZWJ3Zw==
-
-"@spectrum-css/toast@^3.0.1":
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/@spectrum-css/toast/-/toast-3.0.3.tgz#97c1527384707600832ecda35643ed304615250f"
- integrity sha512-CjLeaMs+cjUXojCCRtbj0YkD2BoZW16kjj2o5omkEpUTjA34IJ8xJ1a+CCtDILWekhXvN0MBN4sbumcnwcnx8w==
-
-"@spectrum-css/tooltip@^3.0.3":
- version "3.1.11"
- resolved "https://registry.yarnpkg.com/@spectrum-css/tooltip/-/tooltip-3.1.11.tgz#7981c988b0e20604b8018b8cc6bc6af4cac457fb"
- integrity sha512-PhxyoYNL90QxY0X6qe1tq7werNhV6HJBYe6fcf2d2cBXaM7L2htXwDfLoqnR5NXU1G4c186ZkZr7tk+flRXFGw==
-
-"@spectrum-css/treeview@^3.0.2":
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/@spectrum-css/treeview/-/treeview-3.0.3.tgz#aeda5175158b9f8d7529cb2b394428eb2a428046"
- integrity sha512-D5gGzZC/KtRArdx86Mesc9+99W9nTbUOeyYGqoJoAfJSOttoT6Tk5CrDvlCmAqjKf5rajemAkGri1ChqvUIwkw==
-
-"@spectrum-css/typography@^3.0.1":
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/@spectrum-css/typography/-/typography-3.0.2.tgz#ea3ca0a60e18064527819d48c8c4364cab4fcd38"
- integrity sha512-5ZOLmQe0edzsDMyhghUd4hBb5uxGsFrxzf+WasfcUw9klSfTsRZ09n1BsaaWbgrLjlMQ+EEHS46v5VNo0Ms2CA==
-
-"@spectrum-css/underlay@^2.0.9":
- version "2.0.25"
- resolved "https://registry.yarnpkg.com/@spectrum-css/underlay/-/underlay-2.0.25.tgz#8d390b3353e7f05b00d72fea00dbd66dea31c663"
- integrity sha512-Ht/p6g7FxP7q5lO3iPJ5y89UK20pRWDtGdqeBFxsrxVXdHYbiC3Dm2UNgvi7WRF7dWmD9gaHJmSetjmSDYtVcw==
-
-"@spectrum-css/vars@^3.0.1":
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/@spectrum-css/vars/-/vars-3.0.2.tgz#ea9062c3c98dfc6ba59e5df14a03025ad8969999"
- integrity sha512-vzS9KqYXot4J3AEER/u618MXWAS+IoMvYMNrOoscKiLLKYQWenaueakUWulFonToPd/9vIpqtdbwxznqrK5qDw==
-
-"@spectrum-css/vars@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@spectrum-css/vars/-/vars-7.1.0.tgz#6531de43d3d0dfcc96ddda4d283f656e0efb63f6"
- integrity sha512-hSn2ZZpvPOOzMCof9XWhaKNIs9yQfVkeUM0N6y99uz+9dvCyMrFlD2bvm+4IRB7yvu2xJQicd5vjVzbWyW/P6Q==
-
-"@types/codemirror@^5.60.4":
- version "5.60.5"
- resolved "https://registry.yarnpkg.com/@types/codemirror/-/codemirror-5.60.5.tgz#5b989a3b4bbe657458cf372c92b6bfda6061a2b7"
- integrity sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg==
- dependencies:
- "@types/tern" "*"
-
-"@types/estree@*":
- version "0.0.51"
- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40"
- integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
-
-"@types/marked@^4.0.1":
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/@types/marked/-/marked-4.0.2.tgz#cb2dbf10da2f41cf20bd91fb5f89b67540c282f7"
- integrity sha512-auNrZ/c0w6wsM9DccwVxWHssrMDezHUAXNesdp2RQrCVCyrQbOiSq7yqdJKrUQQpw9VTm7CGYJH2A/YG7jjrjQ==
-
-"@types/tern@*":
- version "0.23.4"
- resolved "https://registry.yarnpkg.com/@types/tern/-/tern-0.23.4.tgz#03926eb13dbeaf3ae0d390caf706b2643a0127fb"
- integrity sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==
- dependencies:
- "@types/estree" "*"
-
-acorn-walk@^8.2.0:
- version "8.2.0"
- resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
- integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
-
-acorn@^8.7.0:
- version "8.7.0"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
- integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==
-
-argparse@^1.0.10:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
- integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
- dependencies:
- sprintf-js "~1.0.2"
-
-arr-diff@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
- integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
-
-arr-flatten@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
- integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
-
-arr-union@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
- integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
-
-array-sort@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a"
- integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==
- dependencies:
- default-compare "^1.0.0"
- get-value "^2.0.6"
- kind-of "^5.0.2"
-
-array-unique@^0.3.2:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
- integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
-
-assign-symbols@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
- integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
-
-atob@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
- integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
-
-autolinker@~0.28.0:
- version "0.28.1"
- resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-0.28.1.tgz#0652b491881879f0775dace0cdca3233942a4e47"
- integrity sha1-BlK0kYgYefB3XazgzcoyM5QqTkc=
- dependencies:
- gulp-header "^1.7.1"
-
-base@^0.11.1:
- version "0.11.2"
- resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
- integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
- dependencies:
- cache-base "^1.0.1"
- class-utils "^0.3.5"
- component-emitter "^1.2.1"
- define-property "^1.0.0"
- isobject "^3.0.1"
- mixin-deep "^1.2.0"
- pascalcase "^0.1.1"
-
-braces@^2.3.1:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
- integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
- dependencies:
- arr-flatten "^1.1.0"
- array-unique "^0.3.2"
- extend-shallow "^2.0.1"
- fill-range "^4.0.0"
- isobject "^3.0.1"
- repeat-element "^1.1.2"
- snapdragon "^0.8.1"
- snapdragon-node "^2.0.1"
- split-string "^3.0.2"
- to-regex "^3.0.1"
-
-cache-base@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
- integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
- dependencies:
- collection-visit "^1.0.0"
- component-emitter "^1.2.1"
- get-value "^2.0.6"
- has-value "^1.0.0"
- isobject "^3.0.1"
- set-value "^2.0.0"
- to-object-path "^0.3.0"
- union-value "^1.0.0"
- unset-value "^1.0.0"
-
-class-utils@^0.3.5:
- version "0.3.6"
- resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
- integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
- dependencies:
- arr-union "^3.1.0"
- define-property "^0.2.5"
- isobject "^3.0.0"
- static-extend "^0.1.1"
-
-codemirror-spell-checker@1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/codemirror-spell-checker/-/codemirror-spell-checker-1.1.2.tgz#1c660f9089483ccb5113b9ba9ca19c3f4993371e"
- integrity sha1-HGYPkIlIPMtRE7m6nKGcP0mTNx4=
- dependencies:
- typo-js "*"
-
-codemirror@^5.63.1:
- version "5.65.2"
- resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.65.2.tgz#5799a70cb3d706e10f60e267245e3a75205d3dd9"
- integrity sha512-SZM4Zq7XEC8Fhroqe3LxbEEX1zUPWH1wMr5zxiBuiUF64iYOUH/JI88v4tBag8MiBS8B8gRv8O1pPXGYXQ4ErA==
-
-collection-visit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
- integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
- dependencies:
- map-visit "^1.0.0"
- object-visit "^1.0.0"
-
-component-emitter@^1.2.1:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
- integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
-
-concat-with-sourcemaps@*:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e"
- integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==
- dependencies:
- source-map "^0.6.1"
-
-copy-descriptor@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
- integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
-
-core-util-is@~1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
- integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
-
-dayjs@^1.10.4:
- version "1.10.8"
- resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.8.tgz#267df4bc6276fcb33c04a6735287e3f429abec41"
- integrity sha512-wbNwDfBHHur9UOzNUjeKUOJ0fCb0a52Wx0xInmQ7Y8FstyajiV1NmK1e00cxsr9YrE9r7yAChE0VvpuY5Rnlow==
-
-debug@^2.2.0, debug@^2.3.3:
- version "2.6.9"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
- integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
- dependencies:
- ms "2.0.0"
-
-decode-uri-component@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
- integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
-
-default-compare@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f"
- integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==
- dependencies:
- kind-of "^5.0.2"
-
-define-property@^0.2.5:
- version "0.2.5"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
- integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
- dependencies:
- is-descriptor "^0.1.0"
-
-define-property@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
- integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
- dependencies:
- is-descriptor "^1.0.0"
-
-define-property@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
- integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
- dependencies:
- is-descriptor "^1.0.2"
- isobject "^3.0.1"
-
-easymde@^2.16.1:
- version "2.16.1"
- resolved "https://registry.yarnpkg.com/easymde/-/easymde-2.16.1.tgz#f4c2380312615cb33826f1a1fecfaa4022ff551a"
- integrity sha512-FihYgjRsKfhGNk89SHSqxKLC4aJ1kfybPWW6iAmtb5GnXu+tnFPSzSaGBmk1RRlCuhFSjhF0SnIMGVPjEzkr6g==
- dependencies:
- "@types/codemirror" "^5.60.4"
- "@types/marked" "^4.0.1"
- codemirror "^5.63.1"
- codemirror-spell-checker "1.1.2"
- marked "^4.0.10"
-
-ent@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d"
- integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0=
-
-expand-brackets@^2.1.4:
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
- integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
- dependencies:
- debug "^2.3.3"
- define-property "^0.2.5"
- extend-shallow "^2.0.1"
- posix-character-classes "^0.1.0"
- regex-not "^1.0.0"
- snapdragon "^0.8.1"
- to-regex "^3.0.1"
-
-extend-shallow@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
- integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
- dependencies:
- is-extendable "^0.1.0"
-
-extend-shallow@^3.0.0, extend-shallow@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
- integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
- dependencies:
- assign-symbols "^1.0.0"
- is-extendable "^1.0.1"
-
-extglob@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
- integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
- dependencies:
- array-unique "^0.3.2"
- define-property "^1.0.0"
- expand-brackets "^2.1.4"
- extend-shallow "^2.0.1"
- fragment-cache "^0.2.1"
- regex-not "^1.0.0"
- snapdragon "^0.8.1"
- to-regex "^3.0.1"
-
-fill-range@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
- integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
- dependencies:
- extend-shallow "^2.0.1"
- is-number "^3.0.0"
- repeat-string "^1.6.1"
- to-regex-range "^2.1.0"
-
-flatpickr@^4.5.2:
- version "4.6.11"
- resolved "https://registry.yarnpkg.com/flatpickr/-/flatpickr-4.6.11.tgz#c92f5108269c551c6b5069ecd754be610574574c"
- integrity sha512-/rnbE/hu5I5zndLEyYfYvqE4vPDvI5At0lFcQA5eOPfjquZLcQ0HMKTL7rv5/+DvbPM3/vJcXpXjB/DjBh+1jw==
-
-for-in@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
- integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
-
-fragment-cache@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
- integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
- dependencies:
- map-cache "^0.2.2"
-
-fs-exists-sync@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add"
- integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=
-
-get-object@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/get-object/-/get-object-0.2.0.tgz#d92ff7d5190c64530cda0543dac63a3d47fe8c0c"
- integrity sha1-2S/31RkMZFMM2gVD2sY6PUf+jAw=
- dependencies:
- is-number "^2.0.2"
- isobject "^0.2.0"
-
-get-value@^2.0.3, get-value@^2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
- integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
-
-get-value@^3.0.0, get-value@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/get-value/-/get-value-3.0.1.tgz#5efd2a157f1d6a516d7524e124ac52d0a39ef5a8"
- integrity sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==
- dependencies:
- isobject "^3.0.1"
-
-gulp-header@^1.7.1:
- version "1.8.12"
- resolved "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.12.tgz#ad306be0066599127281c4f8786660e705080a84"
- integrity sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==
- dependencies:
- concat-with-sourcemaps "*"
- lodash.template "^4.4.0"
- through2 "^2.0.0"
-
-handlebars-utils@^1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/handlebars-utils/-/handlebars-utils-1.0.6.tgz#cb9db43362479054782d86ffe10f47abc76357f9"
- integrity sha512-d5mmoQXdeEqSKMtQQZ9WkiUcO1E3tPbWxluCK9hVgIDPzQa9WsKo3Lbe/sGflTe7TomHEeZaOgwIkyIr1kfzkw==
- dependencies:
- kind-of "^6.0.0"
- typeof-article "^0.1.1"
-
-handlebars@^4.7.6, handlebars@^4.7.7:
- version "4.7.7"
- resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
- integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==
- dependencies:
- minimist "^1.2.5"
- neo-async "^2.6.0"
- source-map "^0.6.1"
- wordwrap "^1.0.0"
- optionalDependencies:
- uglify-js "^3.1.4"
-
-has-value@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
- integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
- dependencies:
- get-value "^2.0.3"
- has-values "^0.1.4"
- isobject "^2.0.0"
-
-has-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
- integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
- dependencies:
- get-value "^2.0.6"
- has-values "^1.0.0"
- isobject "^3.0.0"
-
-has-value@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-2.0.2.tgz#d0f12e8780ba8e90e66ad1a21c707fdb67c25658"
- integrity sha512-ybKOlcRsK2MqrM3Hmz/lQxXHZ6ejzSPzpNabKB45jb5qDgJvKPa3SdapTsTLwEb9WltgWpOmNax7i+DzNOk4TA==
- dependencies:
- get-value "^3.0.0"
- has-values "^2.0.1"
-
-has-values@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
- integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
-
-has-values@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
- integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
- dependencies:
- is-number "^3.0.0"
- kind-of "^4.0.0"
-
-has-values@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-2.0.1.tgz#3876200ff86d8a8546a9264a952c17d5fc17579d"
- integrity sha512-+QdH3jOmq9P8GfdjFg0eJudqx1FqU62NQJ4P16rOEHeRdl7ckgwn6uqQjzYE0ZoHVV/e5E2esuJ5Gl5+HUW19w==
- dependencies:
- kind-of "^6.0.2"
-
-helper-md@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/helper-md/-/helper-md-0.2.2.tgz#c1f59d7e55bbae23362fd8a0e971607aec69d41f"
- integrity sha1-wfWdflW7riM2L9ig6XFgeuxp1B8=
- dependencies:
- ent "^2.2.0"
- extend-shallow "^2.0.1"
- fs-exists-sync "^0.1.0"
- remarkable "^1.6.2"
-
-html-tag@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/html-tag/-/html-tag-2.0.0.tgz#36c3bc8d816fd30b570d5764a497a641640c2fed"
- integrity sha512-XxzooSo6oBoxBEUazgjdXj7VwTn/iSTSZzTYKzYY6I916tkaYzypHxy+pbVU1h+0UQ9JlVf5XkNQyxOAiiQO1g==
- dependencies:
- is-self-closing "^1.0.1"
- kind-of "^6.0.0"
-
-inherits@~2.0.3:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
- integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-
-is-accessor-descriptor@^0.1.6:
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
- integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
- dependencies:
- kind-of "^3.0.2"
-
-is-accessor-descriptor@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
- integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
- dependencies:
- kind-of "^6.0.0"
-
-is-buffer@^1.1.5:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
- integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
-
-is-data-descriptor@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
- integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
- dependencies:
- kind-of "^3.0.2"
-
-is-data-descriptor@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
- integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
- dependencies:
- kind-of "^6.0.0"
-
-is-descriptor@^0.1.0:
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
- integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
- dependencies:
- is-accessor-descriptor "^0.1.6"
- is-data-descriptor "^0.1.4"
- kind-of "^5.0.0"
-
-is-descriptor@^1.0.0, is-descriptor@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
- integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
- dependencies:
- is-accessor-descriptor "^1.0.0"
- is-data-descriptor "^1.0.0"
- kind-of "^6.0.2"
-
-is-even@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-even/-/is-even-1.0.0.tgz#76b5055fbad8d294a86b6a949015e1c97b717c06"
- integrity sha1-drUFX7rY0pSoa2qUkBXhyXtxfAY=
- dependencies:
- is-odd "^0.1.2"
-
-is-extendable@^0.1.0, is-extendable@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
- integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
-
-is-extendable@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
- integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
- dependencies:
- is-plain-object "^2.0.4"
-
-is-extglob@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
- integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
-
-is-glob@^4.0.1:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
- integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
- dependencies:
- is-extglob "^2.1.1"
-
-is-number@^2.0.2:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
- integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=
- dependencies:
- kind-of "^3.0.2"
-
-is-number@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
- integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
- dependencies:
- kind-of "^3.0.2"
-
-is-odd@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-0.1.2.tgz#bc573b5ce371ef2aad6e6f49799b72bef13978a7"
- integrity sha1-vFc7XONx7yqtbm9JeZtyvvE5eKc=
- dependencies:
- is-number "^3.0.0"
-
-is-plain-object@^2.0.3, is-plain-object@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
- integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
- dependencies:
- isobject "^3.0.1"
-
-is-self-closing@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-self-closing/-/is-self-closing-1.0.1.tgz#5f406b527c7b12610176320338af0fa3896416e4"
- integrity sha512-E+60FomW7Blv5GXTlYee2KDrnG6srxF7Xt1SjrhWUGUEsTFIqY/nq2y3DaftCsgUMdh89V07IVfhY9KIJhLezg==
- dependencies:
- self-closing-tags "^1.0.1"
-
-is-windows@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
- integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
-
-isarray@1.0.0, isarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
- integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
-
-isobject@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-0.2.0.tgz#a3432192f39b910b5f02cc989487836ec70aa85e"
- integrity sha1-o0MhkvObkQtfAsyYlIeDbscKqF4=
-
-isobject@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
- integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
- dependencies:
- isarray "1.0.0"
-
-isobject@^3.0.0, isobject@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
- integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
-
-kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.1.0, kind-of@^3.2.0:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
- integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
- dependencies:
- is-buffer "^1.1.5"
-
-kind-of@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
- integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
- dependencies:
- is-buffer "^1.1.5"
-
-kind-of@^5.0.0, kind-of@^5.0.2:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
- integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
-
-kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3:
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
- integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
-
-lodash._reinterpolate@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
- integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
-
-lodash.template@^4.4.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
- integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==
- dependencies:
- lodash._reinterpolate "^3.0.0"
- lodash.templatesettings "^4.0.0"
-
-lodash.templatesettings@^4.0.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33"
- integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==
- dependencies:
- lodash._reinterpolate "^3.0.0"
-
-lodash@^4.17.20, lodash@^4.17.21:
+lodash@^4.17.21:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
-map-cache@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
- integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
-
-map-visit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
- integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
- dependencies:
- object-visit "^1.0.0"
-
-marked@^4.0.10:
- version "4.0.12"
- resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.12.tgz#2262a4e6fd1afd2f13557726238b69a48b982f7d"
- integrity sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==
-
-micromatch@^3.1.5:
- version "3.1.10"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
- integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
- dependencies:
- arr-diff "^4.0.0"
- array-unique "^0.3.2"
- braces "^2.3.1"
- define-property "^2.0.2"
- extend-shallow "^3.0.2"
- extglob "^2.0.4"
- fragment-cache "^0.2.1"
- kind-of "^6.0.2"
- nanomatch "^1.2.9"
- object.pick "^1.3.0"
- regex-not "^1.0.0"
- snapdragon "^0.8.1"
- to-regex "^3.0.2"
-
-minimist@^1.2.5:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
- integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
-
-mixin-deep@^1.2.0:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
- integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
- dependencies:
- for-in "^1.0.2"
- is-extendable "^1.0.1"
-
-ms@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
- integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
-
-nanomatch@^1.2.9:
- version "1.2.13"
- resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
- integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
- dependencies:
- arr-diff "^4.0.0"
- array-unique "^0.3.2"
- define-property "^2.0.2"
- extend-shallow "^3.0.2"
- fragment-cache "^0.2.1"
- is-windows "^1.0.2"
- kind-of "^6.0.2"
- object.pick "^1.3.0"
- regex-not "^1.0.0"
- snapdragon "^0.8.1"
- to-regex "^3.0.1"
-
-neo-async@^2.6.0:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
- integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
-
-object-copy@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
- integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
- dependencies:
- copy-descriptor "^0.1.0"
- define-property "^0.2.5"
- kind-of "^3.0.3"
-
-object-visit@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
- integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
- dependencies:
- isobject "^3.0.0"
-
-object.pick@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
- integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
- dependencies:
- isobject "^3.0.1"
-
-pascalcase@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
- integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
-
-posix-character-classes@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
- integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
-
-process-nextick-args@~2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
- integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
-
-readable-stream@~2.3.6:
- version "2.3.7"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
- integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.3"
- isarray "~1.0.0"
- process-nextick-args "~2.0.0"
- safe-buffer "~5.1.1"
- string_decoder "~1.1.1"
- util-deprecate "~1.0.1"
-
-regex-not@^1.0.0, regex-not@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
- integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
- dependencies:
- extend-shallow "^3.0.2"
- safe-regex "^1.1.0"
-
-relative@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/relative/-/relative-3.0.2.tgz#0dcd8ec54a5d35a3c15e104503d65375b5a5367f"
- integrity sha1-Dc2OxUpdNaPBXhBFA9ZTdbWlNn8=
- dependencies:
- isobject "^2.0.0"
-
-remarkable@^1.6.2:
- version "1.7.4"
- resolved "https://registry.yarnpkg.com/remarkable/-/remarkable-1.7.4.tgz#19073cb960398c87a7d6546eaa5e50d2022fcd00"
- integrity sha512-e6NKUXgX95whv7IgddywbeN/ItCkWbISmc2DiqHJb0wTrqZIexqdco5b8Z3XZoo/48IdNVKM9ZCvTPJ4F5uvhg==
- dependencies:
- argparse "^1.0.10"
- autolinker "~0.28.0"
-
-repeat-element@^1.1.2:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9"
- integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==
-
-repeat-string@^1.6.1:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
- integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
-
-resolve-url@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
- integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
-
-ret@~0.1.10:
- version "0.1.15"
- resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
- integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
-
-safe-buffer@~5.1.0, safe-buffer@~5.1.1:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
- integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-
-safe-regex@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
- integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
- dependencies:
- ret "~0.1.10"
-
-self-closing-tags@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/self-closing-tags/-/self-closing-tags-1.0.1.tgz#6c5fa497994bb826b484216916371accee490a5d"
- integrity sha512-7t6hNbYMxM+VHXTgJmxwgZgLGktuXtVVD5AivWzNTdJBM4DBjnDKDzkf2SrNjihaArpeJYNjxkELBu1evI4lQA==
-
-set-value@^2.0.0, set-value@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
- integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
- dependencies:
- extend-shallow "^2.0.1"
- is-extendable "^0.1.1"
- is-plain-object "^2.0.3"
- split-string "^3.0.1"
-
-snapdragon-node@^2.0.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
- integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
- dependencies:
- define-property "^1.0.0"
- isobject "^3.0.0"
- snapdragon-util "^3.0.1"
-
-snapdragon-util@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
- integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
- dependencies:
- kind-of "^3.2.0"
-
-snapdragon@^0.8.1:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
- integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
- dependencies:
- base "^0.11.1"
- debug "^2.2.0"
- define-property "^0.2.5"
- extend-shallow "^2.0.1"
- map-cache "^0.2.2"
- source-map "^0.5.6"
- source-map-resolve "^0.5.0"
- use "^3.1.0"
-
-source-map-resolve@^0.5.0:
- version "0.5.3"
- resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
- integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
- dependencies:
- atob "^2.1.2"
- decode-uri-component "^0.2.0"
- resolve-url "^0.2.1"
- source-map-url "^0.4.0"
- urix "^0.1.0"
-
-source-map-url@^0.4.0:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56"
- integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==
-
-source-map@^0.5.6:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
- integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
-
-source-map@^0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
- integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-
-split-string@^3.0.1, split-string@^3.0.2:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
- integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
- dependencies:
- extend-shallow "^3.0.0"
-
-sprintf-js@~1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
- integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
-
-static-extend@^0.1.1:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
- integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
- dependencies:
- define-property "^0.2.5"
- object-copy "^0.1.0"
-
-string_decoder@~1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
- integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
- dependencies:
- safe-buffer "~5.1.0"
-
-striptags@^3.1.1:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.2.0.tgz#cc74a137db2de8b0b9a370006334161f7dd67052"
- integrity sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==
-
-svelte-flatpickr@^3.2.3:
- version "3.2.6"
- resolved "https://registry.yarnpkg.com/svelte-flatpickr/-/svelte-flatpickr-3.2.6.tgz#595a97b2f25a669e61fe743f90a10dce783bbd49"
- integrity sha512-0ePUyE9OjInYFqQwRKOxnFSu4dQX9+/rzFMynq2fKYXx406ZUThzSx72gebtjr0DoAQbsH2///BBZa5qk4qZXg==
- dependencies:
- flatpickr "^4.5.2"
-
-svelte-portal@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/svelte-portal/-/svelte-portal-1.0.0.tgz#36a47c5578b1a4d9b4dc60fa32a904640ec4cdd3"
- integrity sha512-nHf+DS/jZ6jjnZSleBMSaZua9JlG5rZv9lOGKgJuaZStfevtjIlUJrkLc3vbV8QdBvPPVmvcjTlazAzfKu0v3Q==
-
svelte@^3.46.2:
version "3.46.2"
resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.46.2.tgz#f0ffbffaea3a9a760edcbefc0902b41998a686ad"
integrity sha512-RXSAtYNefe01Sb1lXtZ2I+gzn3t/h/59hoaRNeRrm8IkMIu6BSiAkbpi41xb+C44x54YKnbk9+dtfs3pM4hECA==
-
-through2@^2.0.0:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
- integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
- dependencies:
- readable-stream "~2.3.6"
- xtend "~4.0.1"
-
-to-gfm-code-block@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/to-gfm-code-block/-/to-gfm-code-block-0.1.1.tgz#25d045a5fae553189e9637b590900da732d8aa82"
- integrity sha1-JdBFpfrlUxielje1kJANpzLYqoI=
-
-to-object-path@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
- integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
- dependencies:
- kind-of "^3.0.2"
-
-to-regex-range@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
- integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
- dependencies:
- is-number "^3.0.0"
- repeat-string "^1.6.1"
-
-to-regex@^3.0.1, to-regex@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
- integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
- dependencies:
- define-property "^2.0.2"
- extend-shallow "^3.0.2"
- regex-not "^1.0.2"
- safe-regex "^1.1.0"
-
-typeof-article@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/typeof-article/-/typeof-article-0.1.1.tgz#9f07e733c3fbb646ffa9e61c08debacd460e06af"
- integrity sha1-nwfnM8P7tkb/qeYcCN66zUYOBq8=
- dependencies:
- kind-of "^3.1.0"
-
-typo-js@*:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/typo-js/-/typo-js-1.2.1.tgz#334a0d8c3f6c56f2f1e15fdf6c31677793cbbe9b"
- integrity sha512-bTGLjbD3WqZDR3CgEFkyi9Q/SS2oM29ipXrWfDb4M74ea69QwKAECVceYpaBu0GfdnASMg9Qfl67ttB23nePHg==
-
-uglify-js@^3.1.4:
- version "3.15.3"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.15.3.tgz#9aa82ca22419ba4c0137642ba0df800cb06e0471"
- integrity sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg==
-
-union-value@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
- integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
- dependencies:
- arr-union "^3.1.0"
- get-value "^2.0.6"
- is-extendable "^0.1.1"
- set-value "^2.0.1"
-
-unset-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
- integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
- dependencies:
- has-value "^0.3.1"
- isobject "^3.0.0"
-
-urix@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
- integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
-
-use@^3.1.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
- integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
-
-util-deprecate@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
- integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
-
-vm2@^3.9.4:
- version "3.9.9"
- resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.9.tgz#c0507bc5fbb99388fad837d228badaaeb499ddc5"
- integrity sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw==
- dependencies:
- acorn "^8.7.0"
- acorn-walk "^8.2.0"
-
-wordwrap@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
- integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
-
-xtend@~4.0.1:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
- integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
-
-year@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/year/-/year-0.2.1.tgz#4083ae520a318b23ec86037f3000cb892bdf9bb0"
- integrity sha1-QIOuUgoxiyPshgN/MADLiSvfm7A=
diff --git a/packages/server/.eslintrc b/packages/server/.eslintrc
deleted file mode 100644
index a4ad9fdb55..0000000000
--- a/packages/server/.eslintrc
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "globals": {
- "emit": true,
- "key": true
- },
- "parser": "@typescript-eslint/parser",
- "env": {
- "node": true
- },
- "extends": ["eslint:recommended"],
- "rules": {
- }
-}
\ No newline at end of file
diff --git a/packages/server/package.json b/packages/server/package.json
index f7570cc8d5..2c3fc708e5 100644
--- a/packages/server/package.json
+++ b/packages/server/package.json
@@ -1,7 +1,7 @@
{
"name": "@budibase/server",
"email": "hi@budibase.com",
- "version": "1.0.89-alpha.0",
+ "version": "1.0.104-alpha.0",
"description": "Budibase Web Server",
"main": "src/index.ts",
"repository": {
@@ -21,10 +21,7 @@
"dev:stack:down": "node scripts/dev/manage.js down",
"dev:stack:nuke": "node scripts/dev/manage.js nuke",
"dev:builder": "yarn run dev:stack:up && nodemon",
- "format": "prettier --config ../../.prettierrc.json 'src/**/*.ts' --write",
"specs": "node specs/generate.js && openapi-typescript specs/openapi.yaml --output src/definitions/openapi.ts",
- "lint": "eslint --fix src/",
- "lint:fix": "yarn run format && yarn run lint",
"initialise": "node scripts/initialise.js",
"env:multi:enable": "node scripts/multiTenancy.js enable",
"env:multi:disable": "node scripts/multiTenancy.js disable",
@@ -71,12 +68,13 @@
"license": "GPL-3.0",
"dependencies": {
"@apidevtools/swagger-parser": "^10.0.3",
- "@budibase/backend-core": "^1.0.89-alpha.0",
- "@budibase/client": "^1.0.89-alpha.0",
- "@budibase/string-templates": "^1.0.89-alpha.0",
+ "@budibase/backend-core": "^1.0.104-alpha.0",
+ "@budibase/client": "^1.0.104-alpha.0",
+ "@budibase/string-templates": "^1.0.104-alpha.0",
"@bull-board/api": "^3.7.0",
"@bull-board/koa": "^3.7.0",
"@elastic/elasticsearch": "7.10.0",
+ "@google-cloud/firestore": "^5.0.2",
"@koa/router": "8.0.0",
"@sendgrid/mail": "7.1.1",
"@sentry/node": "^6.0.0",
@@ -148,15 +146,16 @@
"@types/jest": "^26.0.23",
"@types/koa": "^2.13.3",
"@types/koa-router": "^7.4.2",
+ "@types/lodash": "4.14.180",
"@types/node": "^15.12.4",
"@types/oracledb": "^5.2.1",
"@types/redis": "^4.0.11",
- "@typescript-eslint/parser": "4.28.0",
"apidoc": "^0.50.2",
"babel-jest": "^27.0.2",
"copyfiles": "^2.4.1",
"docker-compose": "^0.23.6",
"eslint": "^6.8.0",
+ "is-wsl": "^2.2.0",
"jest": "^27.0.5",
"jest-openapi": "^0.14.2",
"nodemon": "^2.0.4",
diff --git a/packages/server/scripts/dev/manage.js b/packages/server/scripts/dev/manage.js
index 46a221ca33..03b53c8855 100644
--- a/packages/server/scripts/dev/manage.js
+++ b/packages/server/scripts/dev/manage.js
@@ -2,10 +2,11 @@
const compose = require("docker-compose")
const path = require("path")
const fs = require("fs")
+const isWsl = require("is-wsl")
const { processStringSync } = require("@budibase/string-templates")
function isLinux() {
- return process.platform !== "darwin" && process.platform !== "win32"
+ return !isWsl && process.platform !== "darwin" && process.platform !== "win32"
}
// This script wraps docker-compose allowing you to manage your dev infrastructure with simple commands.
diff --git a/packages/server/scripts/integrations/customer-categories/docker-compose.yml b/packages/server/scripts/integrations/customer-categories/docker-compose.yml
index 4dfcb0e1ad..069033001b 100644
--- a/packages/server/scripts/integrations/customer-categories/docker-compose.yml
+++ b/packages/server/scripts/integrations/customer-categories/docker-compose.yml
@@ -3,7 +3,7 @@ services:
db:
container_name: postgres
image: postgres
- restart: always
+ restart: unless-stopped
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: root
@@ -17,7 +17,7 @@ services:
pgadmin:
container_name: pgadmin-pg
image: dpage/pgadmin4
- restart: always
+ restart: unless-stopped
environment:
PGADMIN_DEFAULT_EMAIL: root@root.com
PGADMIN_DEFAULT_PASSWORD: root
diff --git a/packages/server/scripts/integrations/oracle/docker-compose.yml b/packages/server/scripts/integrations/oracle/docker-compose.yml
index c54cd0a40b..15b4c16eee 100644
--- a/packages/server/scripts/integrations/oracle/docker-compose.yml
+++ b/packages/server/scripts/integrations/oracle/docker-compose.yml
@@ -4,7 +4,7 @@
version: "3.8"
services:
db:
- restart: always
+ restart: unless-stopped
platform: linux/x86_64
image: container-registry.oracle.com/database/express:18.4.0-xe
environment:
diff --git a/packages/server/scripts/integrations/postgres/docker-compose.yml b/packages/server/scripts/integrations/postgres/docker-compose.yml
index 2323025e5e..d682ad7361 100644
--- a/packages/server/scripts/integrations/postgres/docker-compose.yml
+++ b/packages/server/scripts/integrations/postgres/docker-compose.yml
@@ -3,7 +3,7 @@ services:
db:
container_name: postgres
image: postgres
- restart: always
+ restart: unless-stopped
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: root
@@ -17,7 +17,7 @@ services:
pgadmin:
container_name: pgadmin-pg
image: dpage/pgadmin4
- restart: always
+ restart: unless-stopped
environment:
PGADMIN_DEFAULT_EMAIL: root@root.com
PGADMIN_DEFAULT_PASSWORD: root
diff --git a/packages/server/scripts/integrations/service-vehicles/docker-compose.yml b/packages/server/scripts/integrations/service-vehicles/docker-compose.yml
index 7473e540db..96141d14d8 100644
--- a/packages/server/scripts/integrations/service-vehicles/docker-compose.yml
+++ b/packages/server/scripts/integrations/service-vehicles/docker-compose.yml
@@ -3,7 +3,7 @@ services:
db:
container_name: postgres-vehicle
image: postgres
- restart: always
+ restart: unless-stopped
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: root
@@ -17,7 +17,7 @@ services:
pgadmin:
container_name: pgadmin
image: dpage/pgadmin4
- restart: always
+ restart: unless-stopped
environment:
PGADMIN_DEFAULT_EMAIL: root@root.com
PGADMIN_DEFAULT_PASSWORD: root
diff --git a/packages/server/specs/openapi.json b/packages/server/specs/openapi.json
index 6ca1a5b9fb..30ef0a8c6f 100644
--- a/packages/server/specs/openapi.json
+++ b/packages/server/specs/openapi.json
@@ -1260,10 +1260,30 @@
]
},
"executeQuery": {
- "description": "The query body must contain the required parameters for the query, this depends on query type, setup and bindings.",
+ "description": "The parameters required for executing a query.",
"type": "object",
- "additionalProperties": {
- "description": "Key value properties of any type, depending on the query output schema."
+ "properties": {
+ "parameters": {
+ "type": "object",
+ "description": "This contains the required parameters for the query, this depends on query type, setup and bindings.",
+ "additionalProperties": {
+ "description": "Key value properties of any type, depending on the query output schema."
+ }
+ },
+ "pagination": {
+ "type": "object",
+ "description": "For supported query types (currently on REST) pagination can be performed using these properties.",
+ "properties": {
+ "page": {
+ "type": "string",
+ "description": "The page which has been returned from a previous query."
+ },
+ "limit": {
+ "type": "number",
+ "description": "The number of rows to return per page."
+ }
+ }
+ }
}
},
"executeQueryOutput": {
diff --git a/packages/server/specs/openapi.yaml b/packages/server/specs/openapi.yaml
index c4d9808c86..ed55df953a 100644
--- a/packages/server/specs/openapi.yaml
+++ b/packages/server/specs/openapi.yaml
@@ -951,11 +951,27 @@ components:
required:
- data
executeQuery:
- description: The query body must contain the required parameters for the query,
- this depends on query type, setup and bindings.
+ description: The parameters required for executing a query.
type: object
- additionalProperties:
- description: Key value properties of any type, depending on the query output schema.
+ properties:
+ parameters:
+ type: object
+ description: This contains the required parameters for the query, this depends
+ on query type, setup and bindings.
+ additionalProperties:
+ description: Key value properties of any type, depending on the query output
+ schema.
+ pagination:
+ type: object
+ description: For supported query types (currently on REST) pagination can be
+ performed using these properties.
+ properties:
+ page:
+ type: string
+ description: The page which has been returned from a previous query.
+ limit:
+ type: number
+ description: The number of rows to return per page.
executeQueryOutput:
type: object
properties:
diff --git a/packages/server/specs/resources/query.js b/packages/server/specs/resources/query.js
index df532c9a3a..d4a4882fb2 100644
--- a/packages/server/specs/resources/query.js
+++ b/packages/server/specs/resources/query.js
@@ -124,12 +124,34 @@ const querySchema = object(
)
const executeQuerySchema = {
- description:
- "The query body must contain the required parameters for the query, this depends on query type, setup and bindings.",
+ description: "The parameters required for executing a query.",
type: "object",
- additionalProperties: {
- description:
- "Key value properties of any type, depending on the query output schema.",
+ properties: {
+ parameters: {
+ type: "object",
+ description:
+ "This contains the required parameters for the query, this depends on query type, setup and bindings.",
+ additionalProperties: {
+ description:
+ "Key value properties of any type, depending on the query output schema.",
+ },
+ },
+ pagination: {
+ type: "object",
+ description:
+ "For supported query types (currently on REST) pagination can be performed using these properties.",
+ properties: {
+ page: {
+ type: "string",
+ description:
+ "The page which has been returned from a previous query.",
+ },
+ limit: {
+ type: "number",
+ description: "The number of rows to return per page.",
+ },
+ },
+ },
},
}
diff --git a/packages/server/src/api/controllers/auth.js b/packages/server/src/api/controllers/auth.js
index 30c0e5d09c..03480f62fb 100644
--- a/packages/server/src/api/controllers/auth.js
+++ b/packages/server/src/api/controllers/auth.js
@@ -7,7 +7,7 @@ const { getAppDB, getAppId } = require("@budibase/backend-core/context")
exports.fetchSelf = async ctx => {
let userId = ctx.user.userId || ctx.user._id
/* istanbul ignore next */
- if (!userId) {
+ if (!userId || !ctx.isAuthenticated) {
ctx.body = {}
return
}
diff --git a/packages/server/src/api/controllers/integration.js b/packages/server/src/api/controllers/integration.js
index 75fd9ce80e..f3f3309c02 100644
--- a/packages/server/src/api/controllers/integration.js
+++ b/packages/server/src/api/controllers/integration.js
@@ -1,8 +1,24 @@
+const { cloneDeep } = require("lodash")
const { definitions } = require("../../integrations")
+const { getTenantId } = require("@budibase/backend-core/tenancy")
+const { SourceNames } = require("../../definitions/datasource")
+const googlesheets = require("../../integrations/googlesheets")
+const env = require("../../environment")
exports.fetch = async function (ctx) {
ctx.status = 200
- ctx.body = definitions
+ const defs = cloneDeep(definitions)
+
+ // for google sheets integration google verification
+ if (env.EXCLUDE_QUOTAS_TENANTS) {
+ const excludedTenants = env.EXCLUDE_QUOTAS_TENANTS.split(",")
+ const tenantId = getTenantId()
+ if (excludedTenants.includes(tenantId)) {
+ defs[SourceNames.GOOGLE_SHEETS] = googlesheets.schema
+ }
+ }
+
+ ctx.body = defs
}
exports.find = async function (ctx) {
diff --git a/packages/server/src/api/controllers/permission.js b/packages/server/src/api/controllers/permission.js
index 0e37a3e7d3..e1547eb597 100644
--- a/packages/server/src/api/controllers/permission.js
+++ b/packages/server/src/api/controllers/permission.js
@@ -4,6 +4,7 @@ const {
getDBRoleID,
getExternalRoleID,
getBuiltinRoles,
+ checkForRoleResourceArray,
} = require("@budibase/backend-core/roles")
const { getRoleParams } = require("../../db/utils")
const {
@@ -144,12 +145,11 @@ exports.getResourcePerms = async function (ctx) {
for (let level of SUPPORTED_LEVELS) {
// update the various roleIds in the resource permissions
for (let role of roles) {
- const rolePerms = role.permissions
+ const rolePerms = checkForRoleResourceArray(role.permissions, resourceId)
if (
rolePerms &&
rolePerms[resourceId] &&
- (rolePerms[resourceId] === level ||
- rolePerms[resourceId].indexOf(level) !== -1)
+ rolePerms[resourceId].indexOf(level) !== -1
) {
permissions[level] = getExternalRoleID(role._id)
}
diff --git a/packages/server/src/api/controllers/public/rows.ts b/packages/server/src/api/controllers/public/rows.ts
index 4a3b255a36..c69ad27314 100644
--- a/packages/server/src/api/controllers/public/rows.ts
+++ b/packages/server/src/api/controllers/public/rows.ts
@@ -52,16 +52,14 @@ export async function read(ctx: any, next: any) {
}
export async function update(ctx: any, next: any) {
- ctx.request.body = await addRev(fixRow(ctx.request.body, ctx.params.tableId))
+ ctx.request.body = await addRev(fixRow(ctx.request.body, ctx.params))
await rowController.save(ctx)
await next()
}
export async function destroy(ctx: any, next: any) {
// set the body as expected, with the _id and _rev fields
- ctx.request.body = await addRev(
- fixRow({ _id: ctx.params.rowId }, ctx.params.tableId)
- )
+ ctx.request.body = await addRev(fixRow({ _id: ctx.params.rowId }, ctx.params))
await rowController.destroy(ctx)
// destroy controller doesn't currently return the row as the body, need to adjust this
// in the public API to be correct
diff --git a/packages/server/src/api/controllers/query/import/index.ts b/packages/server/src/api/controllers/query/import/index.ts
index 593fb05fd3..d6f5beedf5 100644
--- a/packages/server/src/api/controllers/query/import/index.ts
+++ b/packages/server/src/api/controllers/query/import/index.ts
@@ -2,6 +2,7 @@ import { queryValidation } from "../validation"
import { generateQueryID } from "../../../../db/utils"
import { ImportInfo, ImportSource } from "./sources/base"
import { OpenAPI2 } from "./sources/openapi2"
+import { OpenAPI3 } from "./sources/openapi3"
import { Query } from "./../../../../definitions/common"
import { Curl } from "./sources/curl"
// @ts-ignore
@@ -18,7 +19,7 @@ export class RestImporter {
constructor(data: string) {
this.data = data
- this.sources = [new OpenAPI2(), new Curl()]
+ this.sources = [new OpenAPI2(), new OpenAPI3(), new Curl()]
}
init = async () => {
diff --git a/packages/server/src/api/controllers/query/import/sources/base/index.ts b/packages/server/src/api/controllers/query/import/sources/base/index.ts
index e666fdc193..5f0b203984 100644
--- a/packages/server/src/api/controllers/query/import/sources/base/index.ts
+++ b/packages/server/src/api/controllers/query/import/sources/base/index.ts
@@ -23,7 +23,7 @@ export abstract class ImportSource {
name: string,
method: string,
path: string,
- url: URL,
+ url: URL | string | undefined,
queryString: string,
headers: object = {},
parameters: QueryParameter[] = [],
@@ -34,7 +34,17 @@ export abstract class ImportSource {
const transformer = "return data"
const schema = {}
path = this.processPath(path)
- path = `${url.origin}/${path}`
+ if (url) {
+ if (typeof url === "string") {
+ path = `${url}/${path}`
+ } else {
+ let href = url.href
+ if (href.endsWith("/")) {
+ href = href.slice(0, -1)
+ }
+ path = `${href}/${path}`
+ }
+ }
queryString = this.processQuery(queryString)
const requestBody = JSON.stringify(body, null, 2)
diff --git a/packages/server/src/api/controllers/query/import/sources/curl.ts b/packages/server/src/api/controllers/query/import/sources/curl.ts
index d72441ab12..a59b036467 100644
--- a/packages/server/src/api/controllers/query/import/sources/curl.ts
+++ b/packages/server/src/api/controllers/query/import/sources/curl.ts
@@ -74,7 +74,7 @@ export class Curl extends ImportSource {
getQueries = async (datasourceId: string): Promise
=> {
const url = this.getUrl()
const name = url.pathname
- const path = url.pathname
+ const path = url.origin + url.pathname
const method = this.curl.method
const queryString = url.search
const headers = this.curl.headers
@@ -90,7 +90,7 @@ export class Curl extends ImportSource {
name,
method,
path,
- url,
+ undefined,
queryString,
headers,
[],
diff --git a/packages/server/src/api/controllers/query/import/sources/openapi3.ts b/packages/server/src/api/controllers/query/import/sources/openapi3.ts
new file mode 100644
index 0000000000..e6bdbe8682
--- /dev/null
+++ b/packages/server/src/api/controllers/query/import/sources/openapi3.ts
@@ -0,0 +1,205 @@
+import { ImportInfo } from "./base"
+import { Query, QueryParameter } from "../../../../../definitions/datasource"
+import { OpenAPIV3 } from "openapi-types"
+import { OpenAPISource } from "./base/openapi"
+import { URL } from "url"
+
+const parameterNotRef = (
+ param: OpenAPIV3.ParameterObject | OpenAPIV3.ReferenceObject
+): param is OpenAPIV3.ParameterObject => {
+ // all refs are deferenced by parser library
+ return true
+}
+
+const requestBodyNotRef = (
+ param: OpenAPIV3.RequestBodyObject | OpenAPIV3.ReferenceObject | undefined
+): param is OpenAPIV3.RequestBodyObject => {
+ // all refs are deferenced by parser library
+ return param !== undefined
+}
+
+const schemaNotRef = (
+ param: OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject | undefined
+): param is OpenAPIV3.SchemaObject => {
+ // all refs are deferenced by parser library
+ return param !== undefined
+}
+
+const isOpenAPI3 = (document: any): document is OpenAPIV3.Document => {
+ return document.openapi.includes("3.0")
+}
+
+const methods: string[] = Object.values(OpenAPIV3.HttpMethods)
+
+const isOperation = (
+ key: string,
+ pathItem: any
+): pathItem is OpenAPIV3.OperationObject => {
+ return methods.includes(key)
+}
+
+const isParameter = (
+ key: string,
+ pathItem: any
+): pathItem is OpenAPIV3.ParameterObject => {
+ return !isOperation(key, pathItem)
+}
+
+const getRequestBody = (operation: OpenAPIV3.OperationObject) => {
+ if (requestBodyNotRef(operation.requestBody)) {
+ const request: OpenAPIV3.RequestBodyObject = operation.requestBody
+ const supportedMimeTypes = getMimeTypes(operation)
+ if (supportedMimeTypes.length > 0) {
+ const mimeType = supportedMimeTypes[0]
+
+ // try get example from request
+ const content = request.content[mimeType]
+ if (content.example) {
+ return content.example
+ }
+
+ // try get example from schema
+ if (schemaNotRef(content.schema)) {
+ const schema = content.schema
+ if (schema.example) {
+ return schema.example
+ }
+ }
+ }
+ }
+ return undefined
+}
+
+const getMimeTypes = (operation: OpenAPIV3.OperationObject): string[] => {
+ if (requestBodyNotRef(operation.requestBody)) {
+ const request: OpenAPIV3.RequestBodyObject = operation.requestBody
+ return Object.keys(request.content)
+ }
+ return []
+}
+
+/**
+ * OpenAPI Version 3.0
+ * https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.0.md
+ */
+export class OpenAPI3 extends OpenAPISource {
+ document!: OpenAPIV3.Document
+
+ isSupported = async (data: string): Promise => {
+ try {
+ const document: any = await this.parseData(data)
+ if (isOpenAPI3(document)) {
+ this.document = document
+ return true
+ } else {
+ return false
+ }
+ } catch (err) {
+ return false
+ }
+ }
+
+ getInfo = async (): Promise => {
+ const name = this.document.info.title || "OpenAPI Import"
+ return {
+ name,
+ }
+ }
+
+ getQueries = async (datasourceId: string): Promise => {
+ let url: string | URL | undefined
+ if (this.document.servers?.length) {
+ url = this.document.servers[0].url
+ try {
+ url = new URL(url)
+ } catch (err) {
+ // unable to construct url, e.g. with variables
+ // proceed with string form of url
+ }
+ }
+
+ const queries: Query[] = []
+
+ for (let [path, pathItemObject] of Object.entries(this.document.paths)) {
+ // parameters that apply to every operation in the path
+ let pathParams: OpenAPIV3.ParameterObject[] = []
+
+ // pathItemObject can be undefined
+ if (!pathItemObject) {
+ continue
+ }
+
+ for (let [key, opOrParams] of Object.entries(pathItemObject)) {
+ if (isParameter(key, opOrParams)) {
+ const pathParameters = opOrParams as OpenAPIV3.ParameterObject[]
+ pathParams.push(...pathParameters)
+ continue
+ }
+ // can not be a parameter, must be an operation
+ const operation = opOrParams as OpenAPIV3.OperationObject
+
+ const methodName = key
+ const name = operation.operationId || path
+ let queryString = ""
+ const headers: any = {}
+ let requestBody = getRequestBody(operation)
+ const parameters: QueryParameter[] = []
+ const mimeTypes = getMimeTypes(operation)
+
+ if (mimeTypes.length > 0) {
+ headers["Content-Type"] = mimeTypes[0]
+ }
+
+ // combine the path parameters with the operation parameters
+ const operationParams = operation.parameters || []
+ const allParams = [...pathParams, ...operationParams]
+
+ for (let param of allParams) {
+ if (parameterNotRef(param)) {
+ switch (param.in) {
+ case "query":
+ let prefix = ""
+ if (queryString) {
+ prefix = "&"
+ }
+ queryString = `${queryString}${prefix}${param.name}={{${param.name}}}`
+ break
+ case "header":
+ headers[param.name] = `{{${param.name}}}`
+ break
+ case "path":
+ // do nothing: param is already in the path
+ break
+ case "formData":
+ // future enhancement
+ break
+ }
+
+ // add the parameter if it can be bound in our config
+ if (["query", "header", "path"].includes(param.in)) {
+ parameters.push({
+ name: param.name,
+ default: "",
+ })
+ }
+ }
+ }
+
+ const query = this.constructQuery(
+ datasourceId,
+ name,
+ methodName,
+ path,
+ url,
+ queryString,
+ headers,
+ parameters,
+ requestBody
+ )
+ queries.push(query)
+ }
+ }
+
+ return queries
+ }
+}
diff --git a/packages/server/src/api/controllers/query/import/sources/tests/openapi3/data/crud/crud.json b/packages/server/src/api/controllers/query/import/sources/tests/openapi3/data/crud/crud.json
new file mode 100644
index 0000000000..a859eec8e5
--- /dev/null
+++ b/packages/server/src/api/controllers/query/import/sources/tests/openapi3/data/crud/crud.json
@@ -0,0 +1,253 @@
+{
+ "openapi": "3.0.2",
+ "info": {
+ "description": "A basic swagger file",
+ "version": "1.0.0",
+ "title": "CRUD"
+ },
+ "servers": [
+ {
+ "url": "http://example.com"
+ }
+ ],
+ "tags": [
+ {
+ "name": "entity"
+ }
+ ],
+ "paths": {
+ "/entities": {
+ "post": {
+ "tags": [
+ "entity"
+ ],
+ "operationId": "createEntity",
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateEntity"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Entity"
+ }
+ }
+ }
+ }
+ }
+ },
+ "get": {
+ "tags": [
+ "entity"
+ ],
+ "operationId": "getEntities",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/PageParameter"
+ },
+ {
+ "$ref": "#/components/parameters/SizeParameter"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Entities"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/entities/{entityId}": {
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/EntityIdParameter"
+ }
+ ],
+ "get": {
+ "tags": [
+ "entity"
+ ],
+ "operationId": "getEntity",
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Entity"
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "tags": [
+ "entity"
+ ],
+ "operationId": "updateEntity",
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Entity"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Entity"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "entity"
+ ],
+ "operationId": "patchEntity",
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Entity"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Entity"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "entity"
+ ],
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/APIKeyParameter"
+ }
+ ],
+ "operationId": "deleteEntity",
+ "responses": {
+ "204": {
+ "description": "successful operation"
+ }
+ }
+ }
+ }
+ },
+ "components": {
+ "parameters": {
+ "EntityIdParameter": {
+ "schema": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": "entityId",
+ "in": "path",
+ "required": true
+ },
+ "PageParameter": {
+ "schema": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": "page",
+ "in": "query",
+ "required": false
+ },
+ "SizeParameter": {
+ "schema": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "name": "size",
+ "in": "query",
+ "required": false
+ },
+ "APIKeyParameter": {
+ "schema": {
+ "type": "string"
+ },
+ "name": "x-api-key",
+ "in": "header",
+ "required": false
+ }
+ },
+ "schemas": {
+ "CreateEntity": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "example": {
+ "name": "name",
+ "type": "type"
+ }
+ },
+ "Entity": {
+ "allOf": [
+ {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ {
+ "$ref": "#/components/schemas/CreateEntity"
+ }
+ ],
+ "example": {
+ "id": 1,
+ "name": "name",
+ "type": "type"
+ }
+ },
+ "Entities" : {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Entity"
+ }
+ }
+ }
+ }
+}
diff --git a/packages/server/src/api/controllers/query/import/sources/tests/openapi3/data/crud/crud.yaml b/packages/server/src/api/controllers/query/import/sources/tests/openapi3/data/crud/crud.yaml
new file mode 100644
index 0000000000..0a44a50a7b
--- /dev/null
+++ b/packages/server/src/api/controllers/query/import/sources/tests/openapi3/data/crud/crud.yaml
@@ -0,0 +1,153 @@
+---
+openapi: 3.0.2
+info:
+ description: A basic swagger file
+ version: 1.0.0
+ title: CRUD
+servers:
+ - url: http://example.com
+tags:
+ - name: entity
+paths:
+ "/entities":
+ post:
+ tags:
+ - entity
+ operationId: createEntity
+ requestBody:
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/CreateEntity"
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/Entity"
+ get:
+ tags:
+ - entity
+ operationId: getEntities
+ parameters:
+ - "$ref": "#/components/parameters/PageParameter"
+ - "$ref": "#/components/parameters/SizeParameter"
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/Entities"
+ "/entities/{entityId}":
+ parameters:
+ - "$ref": "#/components/parameters/EntityIdParameter"
+ get:
+ tags:
+ - entity
+ operationId: getEntity
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/Entity"
+ put:
+ tags:
+ - entity
+ operationId: updateEntity
+ requestBody:
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/Entity"
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/Entity"
+ patch:
+ tags:
+ - entity
+ operationId: patchEntity
+ requestBody:
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/Entity"
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/Entity"
+ delete:
+ tags:
+ - entity
+ parameters:
+ - "$ref": "#/components/parameters/APIKeyParameter"
+ operationId: deleteEntity
+ responses:
+ '204':
+ description: successful operation
+components:
+ parameters:
+ EntityIdParameter:
+ schema:
+ type: integer
+ format: int64
+ name: entityId
+ in: path
+ required: true
+ PageParameter:
+ schema:
+ type: integer
+ format: int32
+ name: page
+ in: query
+ required: false
+ SizeParameter:
+ schema:
+ type: integer
+ format: int32
+ name: size
+ in: query
+ required: false
+ APIKeyParameter:
+ schema:
+ type: string
+ name: x-api-key
+ in: header
+ required: false
+ schemas:
+ CreateEntity:
+ type: object
+ properties:
+ name:
+ type: string
+ type:
+ type: string
+ example:
+ name: name
+ type: type
+ Entity:
+ allOf:
+ - type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ - "$ref": "#/components/schemas/CreateEntity"
+ example:
+ id: 1
+ name: name
+ type: type
+ Entities:
+ type: array
+ items:
+ "$ref": "#/components/schemas/Entity"
diff --git a/packages/server/src/api/controllers/query/import/sources/tests/openapi3/data/petstore/petstore.json b/packages/server/src/api/controllers/query/import/sources/tests/openapi3/data/petstore/petstore.json
new file mode 100644
index 0000000000..14115066d6
--- /dev/null
+++ b/packages/server/src/api/controllers/query/import/sources/tests/openapi3/data/petstore/petstore.json
@@ -0,0 +1,1225 @@
+{
+ "openapi": "3.0.2",
+ "info": {
+ "title": "Swagger Petstore - OpenAPI 3.0",
+ "description": "This is a sample Pet Store Server based on the OpenAPI 3.0 specification. You can find out more about\nSwagger at [http://swagger.io](http://swagger.io). In the third iteration of the pet store, we've switched to the design first approach!\nYou can now help us improve the API whether it's by making changes to the definition itself or to the code.\nThat way, with time, we can improve the API in general, and expose some of the new features in OAS3.\n\nSome useful links:\n- [The Pet Store repository](https://github.com/swagger-api/swagger-petstore)\n- [The source API definition for the Pet Store](https://github.com/swagger-api/swagger-petstore/blob/master/src/main/resources/openapi.yaml)",
+ "termsOfService": "http://swagger.io/terms/",
+ "contact": {
+ "email": "apiteam@swagger.io"
+ },
+ "license": {
+ "name": "Apache 2.0",
+ "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
+ },
+ "version": "1.0.11"
+ },
+ "externalDocs": {
+ "description": "Find out more about Swagger",
+ "url": "http://swagger.io"
+ },
+ "servers": [
+ {
+ "url": "/api/v3"
+ }
+ ],
+ "tags": [
+ {
+ "name": "pet",
+ "description": "Everything about your Pets",
+ "externalDocs": {
+ "description": "Find out more",
+ "url": "http://swagger.io"
+ }
+ },
+ {
+ "name": "store",
+ "description": "Access to Petstore orders",
+ "externalDocs": {
+ "description": "Find out more about our store",
+ "url": "http://swagger.io"
+ }
+ },
+ {
+ "name": "user",
+ "description": "Operations about user"
+ }
+ ],
+ "paths": {
+ "/pet": {
+ "put": {
+ "tags": [
+ "pet"
+ ],
+ "summary": "Update an existing pet",
+ "description": "Update an existing pet by Id",
+ "operationId": "updatePet",
+ "requestBody": {
+ "description": "Update an existent pet in the store",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Pet"
+ }
+ },
+ "application/xml": {
+ "schema": {
+ "$ref": "#/components/schemas/Pet"
+ }
+ },
+ "application/x-www-form-urlencoded": {
+ "schema": {
+ "$ref": "#/components/schemas/Pet"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/xml": {
+ "schema": {
+ "$ref": "#/components/schemas/Pet"
+ }
+ },
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Pet"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Invalid ID supplied"
+ },
+ "404": {
+ "description": "Pet not found"
+ },
+ "405": {
+ "description": "Validation exception"
+ }
+ },
+ "security": [
+ {
+ "petstore_auth": [
+ "write:pets",
+ "read:pets"
+ ]
+ }
+ ]
+ },
+ "post": {
+ "tags": [
+ "pet"
+ ],
+ "summary": "Add a new pet to the store",
+ "description": "Add a new pet to the store",
+ "operationId": "addPet",
+ "requestBody": {
+ "description": "Create a new pet in the store",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Pet"
+ }
+ },
+ "application/xml": {
+ "schema": {
+ "$ref": "#/components/schemas/Pet"
+ }
+ },
+ "application/x-www-form-urlencoded": {
+ "schema": {
+ "$ref": "#/components/schemas/Pet"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/xml": {
+ "schema": {
+ "$ref": "#/components/schemas/Pet"
+ }
+ },
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Pet"
+ }
+ }
+ }
+ },
+ "405": {
+ "description": "Invalid input"
+ }
+ },
+ "security": [
+ {
+ "petstore_auth": [
+ "write:pets",
+ "read:pets"
+ ]
+ }
+ ]
+ }
+ },
+ "/pet/findByStatus": {
+ "get": {
+ "tags": [
+ "pet"
+ ],
+ "summary": "Finds Pets by status",
+ "description": "Multiple status values can be provided with comma separated strings",
+ "operationId": "findPetsByStatus",
+ "parameters": [
+ {
+ "name": "status",
+ "in": "query",
+ "description": "Status values that need to be considered for filter",
+ "required": false,
+ "explode": true,
+ "schema": {
+ "type": "string",
+ "default": "available",
+ "enum": [
+ "available",
+ "pending",
+ "sold"
+ ]
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "content": {
+ "application/xml": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Pet"
+ }
+ }
+ },
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Pet"
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Invalid status value"
+ }
+ },
+ "security": [
+ {
+ "petstore_auth": [
+ "write:pets",
+ "read:pets"
+ ]
+ }
+ ]
+ }
+ },
+ "/pet/findByTags": {
+ "get": {
+ "tags": [
+ "pet"
+ ],
+ "summary": "Finds Pets by tags",
+ "description": "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.",
+ "operationId": "findPetsByTags",
+ "parameters": [
+ {
+ "name": "tags",
+ "in": "query",
+ "description": "Tags to filter by",
+ "required": false,
+ "explode": true,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "content": {
+ "application/xml": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Pet"
+ }
+ }
+ },
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Pet"
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Invalid tag value"
+ }
+ },
+ "security": [
+ {
+ "petstore_auth": [
+ "write:pets",
+ "read:pets"
+ ]
+ }
+ ]
+ }
+ },
+ "/pet/{petId}": {
+ "get": {
+ "tags": [
+ "pet"
+ ],
+ "summary": "Find pet by ID",
+ "description": "Returns a single pet",
+ "operationId": "getPetById",
+ "parameters": [
+ {
+ "name": "petId",
+ "in": "path",
+ "description": "ID of pet to return",
+ "required": true,
+ "schema": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "content": {
+ "application/xml": {
+ "schema": {
+ "$ref": "#/components/schemas/Pet"
+ }
+ },
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Pet"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Invalid ID supplied"
+ },
+ "404": {
+ "description": "Pet not found"
+ }
+ },
+ "security": [
+ {
+ "api_key": []
+ },
+ {
+ "petstore_auth": [
+ "write:pets",
+ "read:pets"
+ ]
+ }
+ ]
+ },
+ "post": {
+ "tags": [
+ "pet"
+ ],
+ "summary": "Updates a pet in the store with form data",
+ "description": "",
+ "operationId": "updatePetWithForm",
+ "parameters": [
+ {
+ "name": "petId",
+ "in": "path",
+ "description": "ID of pet that needs to be updated",
+ "required": true,
+ "schema": {
+ "type": "integer",
+ "format": "int64"
+ }
+ },
+ {
+ "name": "name",
+ "in": "query",
+ "description": "Name of pet that needs to be updated",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "status",
+ "in": "query",
+ "description": "Status of pet that needs to be updated",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "405": {
+ "description": "Invalid input"
+ }
+ },
+ "security": [
+ {
+ "petstore_auth": [
+ "write:pets",
+ "read:pets"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "pet"
+ ],
+ "summary": "Deletes a pet",
+ "description": "",
+ "operationId": "deletePet",
+ "parameters": [
+ {
+ "name": "api_key",
+ "in": "header",
+ "description": "",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "petId",
+ "in": "path",
+ "description": "Pet id to delete",
+ "required": true,
+ "schema": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Invalid pet value"
+ }
+ },
+ "security": [
+ {
+ "petstore_auth": [
+ "write:pets",
+ "read:pets"
+ ]
+ }
+ ]
+ }
+ },
+ "/pet/{petId}/uploadImage": {
+ "post": {
+ "tags": [
+ "pet"
+ ],
+ "summary": "uploads an image",
+ "description": "",
+ "operationId": "uploadFile",
+ "parameters": [
+ {
+ "name": "petId",
+ "in": "path",
+ "description": "ID of pet to update",
+ "required": true,
+ "schema": {
+ "type": "integer",
+ "format": "int64"
+ }
+ },
+ {
+ "name": "additionalMetadata",
+ "in": "query",
+ "description": "Additional Metadata",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/octet-stream": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ApiResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "petstore_auth": [
+ "write:pets",
+ "read:pets"
+ ]
+ }
+ ]
+ }
+ },
+ "/store/inventory": {
+ "get": {
+ "tags": [
+ "store"
+ ],
+ "summary": "Returns pet inventories by status",
+ "description": "Returns a map of status codes to quantities",
+ "operationId": "getInventory",
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "api_key": []
+ }
+ ]
+ }
+ },
+ "/store/order": {
+ "post": {
+ "tags": [
+ "store"
+ ],
+ "summary": "Place an order for a pet",
+ "description": "Place a new order in the store",
+ "operationId": "placeOrder",
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Order"
+ }
+ },
+ "application/xml": {
+ "schema": {
+ "$ref": "#/components/schemas/Order"
+ }
+ },
+ "application/x-www-form-urlencoded": {
+ "schema": {
+ "$ref": "#/components/schemas/Order"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Order"
+ }
+ }
+ }
+ },
+ "405": {
+ "description": "Invalid input"
+ }
+ }
+ }
+ },
+ "/store/order/{orderId}": {
+ "get": {
+ "tags": [
+ "store"
+ ],
+ "summary": "Find purchase order by ID",
+ "description": "For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions.",
+ "operationId": "getOrderById",
+ "parameters": [
+ {
+ "name": "orderId",
+ "in": "path",
+ "description": "ID of order that needs to be fetched",
+ "required": true,
+ "schema": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "content": {
+ "application/xml": {
+ "schema": {
+ "$ref": "#/components/schemas/Order"
+ }
+ },
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Order"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Invalid ID supplied"
+ },
+ "404": {
+ "description": "Order not found"
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "store"
+ ],
+ "summary": "Delete purchase order by ID",
+ "description": "For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors",
+ "operationId": "deleteOrder",
+ "parameters": [
+ {
+ "name": "orderId",
+ "in": "path",
+ "description": "ID of the order that needs to be deleted",
+ "required": true,
+ "schema": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Invalid ID supplied"
+ },
+ "404": {
+ "description": "Order not found"
+ }
+ }
+ }
+ },
+ "/user": {
+ "post": {
+ "tags": [
+ "user"
+ ],
+ "summary": "Create user",
+ "description": "This can only be done by the logged in user.",
+ "operationId": "createUser",
+ "requestBody": {
+ "description": "Created user object",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/User"
+ }
+ },
+ "application/xml": {
+ "schema": {
+ "$ref": "#/components/schemas/User"
+ }
+ },
+ "application/x-www-form-urlencoded": {
+ "schema": {
+ "$ref": "#/components/schemas/User"
+ }
+ }
+ }
+ },
+ "responses": {
+ "default": {
+ "description": "successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/User"
+ }
+ },
+ "application/xml": {
+ "schema": {
+ "$ref": "#/components/schemas/User"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/user/createWithList": {
+ "post": {
+ "tags": [
+ "user"
+ ],
+ "summary": "Creates list of users with given input array",
+ "description": "Creates list of users with given input array",
+ "operationId": "createUsersWithListInput",
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/User"
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/xml": {
+ "schema": {
+ "$ref": "#/components/schemas/User"
+ }
+ },
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/User"
+ }
+ }
+ }
+ },
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/user/login": {
+ "get": {
+ "tags": [
+ "user"
+ ],
+ "summary": "Logs user into the system",
+ "description": "",
+ "operationId": "loginUser",
+ "parameters": [
+ {
+ "name": "username",
+ "in": "query",
+ "description": "The user name for login",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "password",
+ "in": "query",
+ "description": "The password for login in clear text",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "headers": {
+ "X-Rate-Limit": {
+ "description": "calls per hour allowed by the user",
+ "schema": {
+ "type": "integer",
+ "format": "int32"
+ }
+ },
+ "X-Expires-After": {
+ "description": "date in UTC when token expires",
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+ },
+ "content": {
+ "application/xml": {
+ "schema": {
+ "type": "string"
+ }
+ },
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Invalid username/password supplied"
+ }
+ }
+ }
+ },
+ "/user/logout": {
+ "get": {
+ "tags": [
+ "user"
+ ],
+ "summary": "Logs out current logged in user session",
+ "description": "",
+ "operationId": "logoutUser",
+ "parameters": [],
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/user/{username}": {
+ "get": {
+ "tags": [
+ "user"
+ ],
+ "summary": "Get user by user name",
+ "description": "",
+ "operationId": "getUserByName",
+ "parameters": [
+ {
+ "name": "username",
+ "in": "path",
+ "description": "The name that needs to be fetched. Use user1 for testing. ",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "content": {
+ "application/xml": {
+ "schema": {
+ "$ref": "#/components/schemas/User"
+ }
+ },
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/User"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Invalid username supplied"
+ },
+ "404": {
+ "description": "User not found"
+ }
+ }
+ },
+ "put": {
+ "tags": [
+ "user"
+ ],
+ "summary": "Update user",
+ "description": "This can only be done by the logged in user.",
+ "operationId": "updateUser",
+ "parameters": [
+ {
+ "name": "username",
+ "in": "path",
+ "description": "name that need to be deleted",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "description": "Update an existent user in the store",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/User"
+ }
+ },
+ "application/xml": {
+ "schema": {
+ "$ref": "#/components/schemas/User"
+ }
+ },
+ "application/x-www-form-urlencoded": {
+ "schema": {
+ "$ref": "#/components/schemas/User"
+ }
+ }
+ }
+ },
+ "responses": {
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "user"
+ ],
+ "summary": "Delete user",
+ "description": "This can only be done by the logged in user.",
+ "operationId": "deleteUser",
+ "parameters": [
+ {
+ "name": "username",
+ "in": "path",
+ "description": "The name that needs to be deleted",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Invalid username supplied"
+ },
+ "404": {
+ "description": "User not found"
+ }
+ }
+ }
+ }
+ },
+ "components": {
+ "schemas": {
+ "Order": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "format": "int64",
+ "example": 10
+ },
+ "petId": {
+ "type": "integer",
+ "format": "int64",
+ "example": 198772
+ },
+ "quantity": {
+ "type": "integer",
+ "format": "int32",
+ "example": 7
+ },
+ "shipDate": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "status": {
+ "type": "string",
+ "description": "Order Status",
+ "example": "approved",
+ "enum": [
+ "placed",
+ "approved",
+ "delivered"
+ ]
+ },
+ "complete": {
+ "type": "boolean"
+ }
+ },
+ "xml": {
+ "name": "order"
+ }
+ },
+ "Customer": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "format": "int64",
+ "example": 100000
+ },
+ "username": {
+ "type": "string",
+ "example": "fehguy"
+ },
+ "address": {
+ "type": "array",
+ "xml": {
+ "name": "addresses",
+ "wrapped": true
+ },
+ "items": {
+ "$ref": "#/components/schemas/Address"
+ }
+ }
+ },
+ "xml": {
+ "name": "customer"
+ }
+ },
+ "Address": {
+ "type": "object",
+ "properties": {
+ "street": {
+ "type": "string",
+ "example": "437 Lytton"
+ },
+ "city": {
+ "type": "string",
+ "example": "Palo Alto"
+ },
+ "state": {
+ "type": "string",
+ "example": "CA"
+ },
+ "zip": {
+ "type": "string",
+ "example": "94301"
+ }
+ },
+ "xml": {
+ "name": "address"
+ }
+ },
+ "Category": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "format": "int64",
+ "example": 1
+ },
+ "name": {
+ "type": "string",
+ "example": "Dogs"
+ }
+ },
+ "xml": {
+ "name": "category"
+ }
+ },
+ "User": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "format": "int64",
+ "example": 10
+ },
+ "username": {
+ "type": "string",
+ "example": "theUser"
+ },
+ "firstName": {
+ "type": "string",
+ "example": "John"
+ },
+ "lastName": {
+ "type": "string",
+ "example": "James"
+ },
+ "email": {
+ "type": "string",
+ "example": "john@email.com"
+ },
+ "password": {
+ "type": "string",
+ "example": "12345"
+ },
+ "phone": {
+ "type": "string",
+ "example": "12345"
+ },
+ "userStatus": {
+ "type": "integer",
+ "description": "User Status",
+ "format": "int32",
+ "example": 1
+ }
+ },
+ "xml": {
+ "name": "user"
+ }
+ },
+ "Tag": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ }
+ },
+ "xml": {
+ "name": "tag"
+ }
+ },
+ "Pet": {
+ "required": [
+ "name",
+ "photoUrls"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "format": "int64",
+ "example": 10
+ },
+ "name": {
+ "type": "string",
+ "example": "doggie"
+ },
+ "category": {
+ "$ref": "#/components/schemas/Category"
+ },
+ "photoUrls": {
+ "type": "array",
+ "xml": {
+ "wrapped": true
+ },
+ "items": {
+ "type": "string",
+ "xml": {
+ "name": "photoUrl"
+ }
+ }
+ },
+ "tags": {
+ "type": "array",
+ "xml": {
+ "wrapped": true
+ },
+ "items": {
+ "$ref": "#/components/schemas/Tag"
+ }
+ },
+ "status": {
+ "type": "string",
+ "description": "pet status in the store",
+ "enum": [
+ "available",
+ "pending",
+ "sold"
+ ]
+ }
+ },
+ "xml": {
+ "name": "pet"
+ }
+ },
+ "ApiResponse": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "type": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ },
+ "xml": {
+ "name": "##default"
+ }
+ }
+ },
+ "requestBodies": {
+ "Pet": {
+ "description": "Pet object that needs to be added to the store",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Pet"
+ }
+ },
+ "application/xml": {
+ "schema": {
+ "$ref": "#/components/schemas/Pet"
+ }
+ }
+ }
+ },
+ "UserArray": {
+ "description": "List of user object",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/User"
+ }
+ }
+ }
+ }
+ }
+ },
+ "securitySchemes": {
+ "petstore_auth": {
+ "type": "oauth2",
+ "flows": {
+ "implicit": {
+ "authorizationUrl": "https://petstore3.swagger.io/oauth/authorize",
+ "scopes": {
+ "write:pets": "modify pets in your account",
+ "read:pets": "read your pets"
+ }
+ }
+ }
+ },
+ "api_key": {
+ "type": "apiKey",
+ "name": "api_key",
+ "in": "header"
+ }
+ }
+ }
+}
diff --git a/packages/server/src/api/controllers/query/import/sources/tests/openapi3/data/petstore/petstore.yaml b/packages/server/src/api/controllers/query/import/sources/tests/openapi3/data/petstore/petstore.yaml
new file mode 100644
index 0000000000..0f39b90c16
--- /dev/null
+++ b/packages/server/src/api/controllers/query/import/sources/tests/openapi3/data/petstore/petstore.yaml
@@ -0,0 +1,804 @@
+---
+openapi: 3.0.2
+info:
+ title: Swagger Petstore - OpenAPI 3.0
+ description: |-
+ This is a sample Pet Store Server based on the OpenAPI 3.0 specification. You can find out more about
+ Swagger at [http://swagger.io](http://swagger.io). In the third iteration of the pet store, we've switched to the design first approach!
+ You can now help us improve the API whether it's by making changes to the definition itself or to the code.
+ That way, with time, we can improve the API in general, and expose some of the new features in OAS3.
+
+ Some useful links:
+ - [The Pet Store repository](https://github.com/swagger-api/swagger-petstore)
+ - [The source API definition for the Pet Store](https://github.com/swagger-api/swagger-petstore/blob/master/src/main/resources/openapi.yaml)
+ termsOfService: http://swagger.io/terms/
+ contact:
+ email: apiteam@swagger.io
+ license:
+ name: Apache 2.0
+ url: http://www.apache.org/licenses/LICENSE-2.0.html
+ version: 1.0.11
+externalDocs:
+ description: Find out more about Swagger
+ url: http://swagger.io
+servers:
+ - url: "/api/v3"
+tags:
+ - name: pet
+ description: Everything about your Pets
+ externalDocs:
+ description: Find out more
+ url: http://swagger.io
+ - name: store
+ description: Access to Petstore orders
+ externalDocs:
+ description: Find out more about our store
+ url: http://swagger.io
+ - name: user
+ description: Operations about user
+paths:
+ "/pet":
+ put:
+ tags:
+ - pet
+ summary: Update an existing pet
+ description: Update an existing pet by Id
+ operationId: updatePet
+ requestBody:
+ description: Update an existent pet in the store
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/Pet"
+ application/xml:
+ schema:
+ "$ref": "#/components/schemas/Pet"
+ application/x-www-form-urlencoded:
+ schema:
+ "$ref": "#/components/schemas/Pet"
+ required: true
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/xml:
+ schema:
+ "$ref": "#/components/schemas/Pet"
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/Pet"
+ '400':
+ description: Invalid ID supplied
+ '404':
+ description: Pet not found
+ '405':
+ description: Validation exception
+ security:
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ post:
+ tags:
+ - pet
+ summary: Add a new pet to the store
+ description: Add a new pet to the store
+ operationId: addPet
+ requestBody:
+ description: Create a new pet in the store
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/Pet"
+ application/xml:
+ schema:
+ "$ref": "#/components/schemas/Pet"
+ application/x-www-form-urlencoded:
+ schema:
+ "$ref": "#/components/schemas/Pet"
+ required: true
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/xml:
+ schema:
+ "$ref": "#/components/schemas/Pet"
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/Pet"
+ '405':
+ description: Invalid input
+ security:
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ "/pet/findByStatus":
+ get:
+ tags:
+ - pet
+ summary: Finds Pets by status
+ description: Multiple status values can be provided with comma separated strings
+ operationId: findPetsByStatus
+ parameters:
+ - name: status
+ in: query
+ description: Status values that need to be considered for filter
+ required: false
+ explode: true
+ schema:
+ type: string
+ default: available
+ enum:
+ - available
+ - pending
+ - sold
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/xml:
+ schema:
+ type: array
+ items:
+ "$ref": "#/components/schemas/Pet"
+ application/json:
+ schema:
+ type: array
+ items:
+ "$ref": "#/components/schemas/Pet"
+ '400':
+ description: Invalid status value
+ security:
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ "/pet/findByTags":
+ get:
+ tags:
+ - pet
+ summary: Finds Pets by tags
+ description: Multiple tags can be provided with comma separated strings. Use
+ tag1, tag2, tag3 for testing.
+ operationId: findPetsByTags
+ parameters:
+ - name: tags
+ in: query
+ description: Tags to filter by
+ required: false
+ explode: true
+ schema:
+ type: array
+ items:
+ type: string
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/xml:
+ schema:
+ type: array
+ items:
+ "$ref": "#/components/schemas/Pet"
+ application/json:
+ schema:
+ type: array
+ items:
+ "$ref": "#/components/schemas/Pet"
+ '400':
+ description: Invalid tag value
+ security:
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ "/pet/{petId}":
+ get:
+ tags:
+ - pet
+ summary: Find pet by ID
+ description: Returns a single pet
+ operationId: getPetById
+ parameters:
+ - name: petId
+ in: path
+ description: ID of pet to return
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/xml:
+ schema:
+ "$ref": "#/components/schemas/Pet"
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/Pet"
+ '400':
+ description: Invalid ID supplied
+ '404':
+ description: Pet not found
+ security:
+ - api_key: []
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ post:
+ tags:
+ - pet
+ summary: Updates a pet in the store with form data
+ description: ''
+ operationId: updatePetWithForm
+ parameters:
+ - name: petId
+ in: path
+ description: ID of pet that needs to be updated
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: name
+ in: query
+ description: Name of pet that needs to be updated
+ schema:
+ type: string
+ - name: status
+ in: query
+ description: Status of pet that needs to be updated
+ schema:
+ type: string
+ responses:
+ '405':
+ description: Invalid input
+ security:
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ delete:
+ tags:
+ - pet
+ summary: Deletes a pet
+ description: ''
+ operationId: deletePet
+ parameters:
+ - name: api_key
+ in: header
+ description: ''
+ required: false
+ schema:
+ type: string
+ - name: petId
+ in: path
+ description: Pet id to delete
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ '400':
+ description: Invalid pet value
+ security:
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ "/pet/{petId}/uploadImage":
+ post:
+ tags:
+ - pet
+ summary: uploads an image
+ description: ''
+ operationId: uploadFile
+ parameters:
+ - name: petId
+ in: path
+ description: ID of pet to update
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: additionalMetadata
+ in: query
+ description: Additional Metadata
+ required: false
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/octet-stream:
+ schema:
+ type: string
+ format: binary
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/ApiResponse"
+ security:
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ "/store/inventory":
+ get:
+ tags:
+ - store
+ summary: Returns pet inventories by status
+ description: Returns a map of status codes to quantities
+ operationId: getInventory
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ type: object
+ additionalProperties:
+ type: integer
+ format: int32
+ security:
+ - api_key: []
+ "/store/order":
+ post:
+ tags:
+ - store
+ summary: Place an order for a pet
+ description: Place a new order in the store
+ operationId: placeOrder
+ requestBody:
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/Order"
+ application/xml:
+ schema:
+ "$ref": "#/components/schemas/Order"
+ application/x-www-form-urlencoded:
+ schema:
+ "$ref": "#/components/schemas/Order"
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/Order"
+ '405':
+ description: Invalid input
+ "/store/order/{orderId}":
+ get:
+ tags:
+ - store
+ summary: Find purchase order by ID
+ description: For valid response try integer IDs with value <= 5 or > 10. Other
+ values will generate exceptions.
+ operationId: getOrderById
+ parameters:
+ - name: orderId
+ in: path
+ description: ID of order that needs to be fetched
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/xml:
+ schema:
+ "$ref": "#/components/schemas/Order"
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/Order"
+ '400':
+ description: Invalid ID supplied
+ '404':
+ description: Order not found
+ delete:
+ tags:
+ - store
+ summary: Delete purchase order by ID
+ description: For valid response try integer IDs with value < 1000. Anything
+ above 1000 or nonintegers will generate API errors
+ operationId: deleteOrder
+ parameters:
+ - name: orderId
+ in: path
+ description: ID of the order that needs to be deleted
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ '400':
+ description: Invalid ID supplied
+ '404':
+ description: Order not found
+ "/user":
+ post:
+ tags:
+ - user
+ summary: Create user
+ description: This can only be done by the logged in user.
+ operationId: createUser
+ requestBody:
+ description: Created user object
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/User"
+ application/xml:
+ schema:
+ "$ref": "#/components/schemas/User"
+ application/x-www-form-urlencoded:
+ schema:
+ "$ref": "#/components/schemas/User"
+ responses:
+ default:
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/User"
+ application/xml:
+ schema:
+ "$ref": "#/components/schemas/User"
+ "/user/createWithList":
+ post:
+ tags:
+ - user
+ summary: Creates list of users with given input array
+ description: Creates list of users with given input array
+ operationId: createUsersWithListInput
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ "$ref": "#/components/schemas/User"
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/xml:
+ schema:
+ "$ref": "#/components/schemas/User"
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/User"
+ default:
+ description: successful operation
+ "/user/login":
+ get:
+ tags:
+ - user
+ summary: Logs user into the system
+ description: ''
+ operationId: loginUser
+ parameters:
+ - name: username
+ in: query
+ description: The user name for login
+ required: false
+ schema:
+ type: string
+ - name: password
+ in: query
+ description: The password for login in clear text
+ required: false
+ schema:
+ type: string
+ responses:
+ '200':
+ description: successful operation
+ headers:
+ X-Rate-Limit:
+ description: calls per hour allowed by the user
+ schema:
+ type: integer
+ format: int32
+ X-Expires-After:
+ description: date in UTC when token expires
+ schema:
+ type: string
+ format: date-time
+ content:
+ application/xml:
+ schema:
+ type: string
+ application/json:
+ schema:
+ type: string
+ '400':
+ description: Invalid username/password supplied
+ "/user/logout":
+ get:
+ tags:
+ - user
+ summary: Logs out current logged in user session
+ description: ''
+ operationId: logoutUser
+ parameters: []
+ responses:
+ default:
+ description: successful operation
+ "/user/{username}":
+ get:
+ tags:
+ - user
+ summary: Get user by user name
+ description: ''
+ operationId: getUserByName
+ parameters:
+ - name: username
+ in: path
+ description: 'The name that needs to be fetched. Use user1 for testing. '
+ required: true
+ schema:
+ type: string
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/xml:
+ schema:
+ "$ref": "#/components/schemas/User"
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/User"
+ '400':
+ description: Invalid username supplied
+ '404':
+ description: User not found
+ put:
+ tags:
+ - user
+ summary: Update user
+ description: This can only be done by the logged in user.
+ operationId: updateUser
+ parameters:
+ - name: username
+ in: path
+ description: name that need to be deleted
+ required: true
+ schema:
+ type: string
+ requestBody:
+ description: Update an existent user in the store
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/User"
+ application/xml:
+ schema:
+ "$ref": "#/components/schemas/User"
+ application/x-www-form-urlencoded:
+ schema:
+ "$ref": "#/components/schemas/User"
+ responses:
+ default:
+ description: successful operation
+ delete:
+ tags:
+ - user
+ summary: Delete user
+ description: This can only be done by the logged in user.
+ operationId: deleteUser
+ parameters:
+ - name: username
+ in: path
+ description: The name that needs to be deleted
+ required: true
+ schema:
+ type: string
+ responses:
+ '400':
+ description: Invalid username supplied
+ '404':
+ description: User not found
+components:
+ schemas:
+ Order:
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ example: 10
+ petId:
+ type: integer
+ format: int64
+ example: 198772
+ quantity:
+ type: integer
+ format: int32
+ example: 7
+ shipDate:
+ type: string
+ format: date-time
+ status:
+ type: string
+ description: Order Status
+ example: approved
+ enum:
+ - placed
+ - approved
+ - delivered
+ complete:
+ type: boolean
+ xml:
+ name: order
+ Customer:
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ example: 100000
+ username:
+ type: string
+ example: fehguy
+ address:
+ type: array
+ xml:
+ name: addresses
+ wrapped: true
+ items:
+ "$ref": "#/components/schemas/Address"
+ xml:
+ name: customer
+ Address:
+ type: object
+ properties:
+ street:
+ type: string
+ example: 437 Lytton
+ city:
+ type: string
+ example: Palo Alto
+ state:
+ type: string
+ example: CA
+ zip:
+ type: string
+ example: '94301'
+ xml:
+ name: address
+ Category:
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ example: 1
+ name:
+ type: string
+ example: Dogs
+ xml:
+ name: category
+ User:
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ example: 10
+ username:
+ type: string
+ example: theUser
+ firstName:
+ type: string
+ example: John
+ lastName:
+ type: string
+ example: James
+ email:
+ type: string
+ example: john@email.com
+ password:
+ type: string
+ example: '12345'
+ phone:
+ type: string
+ example: '12345'
+ userStatus:
+ type: integer
+ description: User Status
+ format: int32
+ example: 1
+ xml:
+ name: user
+ Tag:
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ name:
+ type: string
+ xml:
+ name: tag
+ Pet:
+ required:
+ - name
+ - photoUrls
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ example: 10
+ name:
+ type: string
+ example: doggie
+ category:
+ "$ref": "#/components/schemas/Category"
+ photoUrls:
+ type: array
+ xml:
+ wrapped: true
+ items:
+ type: string
+ xml:
+ name: photoUrl
+ tags:
+ type: array
+ xml:
+ wrapped: true
+ items:
+ "$ref": "#/components/schemas/Tag"
+ status:
+ type: string
+ description: pet status in the store
+ enum:
+ - available
+ - pending
+ - sold
+ xml:
+ name: pet
+ ApiResponse:
+ type: object
+ properties:
+ code:
+ type: integer
+ format: int32
+ type:
+ type: string
+ message:
+ type: string
+ xml:
+ name: "##default"
+ requestBodies:
+ Pet:
+ description: Pet object that needs to be added to the store
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/Pet"
+ application/xml:
+ schema:
+ "$ref": "#/components/schemas/Pet"
+ UserArray:
+ description: List of user object
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ "$ref": "#/components/schemas/User"
+ securitySchemes:
+ petstore_auth:
+ type: oauth2
+ flows:
+ implicit:
+ authorizationUrl: https://petstore3.swagger.io/oauth/authorize
+ scopes:
+ write:pets: modify pets in your account
+ read:pets: read your pets
+ api_key:
+ type: apiKey
+ name: api_key
+ in: header
diff --git a/packages/server/src/api/controllers/query/import/sources/tests/openapi3/openapi3.spec.js b/packages/server/src/api/controllers/query/import/sources/tests/openapi3/openapi3.spec.js
new file mode 100644
index 0000000000..731c245d4e
--- /dev/null
+++ b/packages/server/src/api/controllers/query/import/sources/tests/openapi3/openapi3.spec.js
@@ -0,0 +1,240 @@
+const fs = require("fs")
+const path = require("path")
+
+const { OpenAPI3 } = require("../../openapi3")
+
+const getData = (file, extension) => {
+ return fs.readFileSync(
+ path.join(__dirname, `./data/${file}/${file}.${extension}`),
+ "utf8"
+ )
+}
+
+describe("OpenAPI3 Import", () => {
+ let openapi3
+
+ beforeEach(() => {
+ openapi3 = new OpenAPI3()
+ })
+
+ it("validates unsupported data", async () => {
+ let data
+ let supported
+
+ // non json / yaml
+ data = "curl http://example.com"
+ supported = await openapi3.isSupported(data)
+ expect(supported).toBe(false)
+
+ // Empty
+ data = ""
+ supported = await openapi3.isSupported(data)
+ expect(supported).toBe(false)
+ })
+
+ const runTests = async (filename, test, assertions) => {
+ for (let extension of ["json", "yaml"]) {
+ await test(filename, extension, assertions)
+ }
+ }
+
+ const testImportInfo = async (file, extension) => {
+ await openapi3.isSupported(getData(file, extension))
+ const info = await openapi3.getInfo()
+ expect(info.name).toBe("Swagger Petstore - OpenAPI 3.0")
+ }
+
+ it("returns import info", async () => {
+ await runTests("petstore", testImportInfo)
+ })
+
+ describe("Returns queries", () => {
+ const indexQueries = queries => {
+ return queries.reduce((acc, query) => {
+ acc[query.name] = query
+ return acc
+ }, {})
+ }
+
+ const getQueries = async (file, extension) => {
+ await openapi3.isSupported(getData(file, extension))
+ const queries = await openapi3.getQueries()
+ expect(queries.length).toBe(6)
+ return indexQueries(queries)
+ }
+
+ const testVerb = async (file, extension, assertions) => {
+ const queries = await getQueries(file, extension)
+ for (let [operationId, method] of Object.entries(assertions)) {
+ expect(queries[operationId].queryVerb).toBe(method)
+ }
+ }
+
+ it("populates verb", async () => {
+ const assertions = {
+ createEntity: "create",
+ getEntities: "read",
+ getEntity: "read",
+ updateEntity: "update",
+ patchEntity: "patch",
+ deleteEntity: "delete",
+ }
+ await runTests("crud", testVerb, assertions)
+ })
+
+ const testPath = async (file, extension, assertions) => {
+ const queries = await getQueries(file, extension)
+ for (let [operationId, urlPath] of Object.entries(assertions)) {
+ expect(queries[operationId].fields.path).toBe(urlPath)
+ }
+ }
+
+ it("populates path", async () => {
+ const assertions = {
+ createEntity: "http://example.com/entities",
+ getEntities: "http://example.com/entities",
+ getEntity: "http://example.com/entities/{{entityId}}",
+ updateEntity: "http://example.com/entities/{{entityId}}",
+ patchEntity: "http://example.com/entities/{{entityId}}",
+ deleteEntity: "http://example.com/entities/{{entityId}}",
+ }
+ await runTests("crud", testPath, assertions)
+ })
+
+ const testHeaders = async (file, extension, assertions) => {
+ const queries = await getQueries(file, extension)
+ for (let [operationId, headers] of Object.entries(assertions)) {
+ expect(queries[operationId].fields.headers).toStrictEqual(headers)
+ }
+ }
+
+ const contentTypeHeader = {
+ "Content-Type": "application/json",
+ }
+
+ it("populates headers", async () => {
+ const assertions = {
+ createEntity: {
+ ...contentTypeHeader,
+ },
+ getEntities: {},
+ getEntity: {},
+ updateEntity: {
+ ...contentTypeHeader,
+ },
+ patchEntity: {
+ ...contentTypeHeader,
+ },
+ deleteEntity: {
+ "x-api-key": "{{x-api-key}}",
+ },
+ }
+
+ await runTests("crud", testHeaders, assertions)
+ })
+
+ const testQuery = async (file, extension, assertions) => {
+ const queries = await getQueries(file, extension)
+ for (let [operationId, queryString] of Object.entries(assertions)) {
+ expect(queries[operationId].fields.queryString).toStrictEqual(
+ queryString
+ )
+ }
+ }
+
+ it("populates query", async () => {
+ const assertions = {
+ createEntity: "",
+ getEntities: "page={{page}}&size={{size}}",
+ getEntity: "",
+ updateEntity: "",
+ patchEntity: "",
+ deleteEntity: "",
+ }
+ await runTests("crud", testQuery, assertions)
+ })
+
+ const testParameters = async (file, extension, assertions) => {
+ const queries = await getQueries(file, extension)
+ for (let [operationId, parameters] of Object.entries(assertions)) {
+ expect(queries[operationId].parameters).toStrictEqual(parameters)
+ }
+ }
+
+ it("populates parameters", async () => {
+ const assertions = {
+ createEntity: [],
+ getEntities: [
+ {
+ name: "page",
+ default: "",
+ },
+ {
+ name: "size",
+ default: "",
+ },
+ ],
+ getEntity: [
+ {
+ name: "entityId",
+ default: "",
+ },
+ ],
+ updateEntity: [
+ {
+ name: "entityId",
+ default: "",
+ },
+ ],
+ patchEntity: [
+ {
+ name: "entityId",
+ default: "",
+ },
+ ],
+ deleteEntity: [
+ {
+ name: "entityId",
+ default: "",
+ },
+ {
+ name: "x-api-key",
+ default: "",
+ },
+ ],
+ }
+ await runTests("crud", testParameters, assertions)
+ })
+
+ const testBody = async (file, extension, assertions) => {
+ const queries = await getQueries(file, extension)
+ for (let [operationId, body] of Object.entries(assertions)) {
+ expect(queries[operationId].fields.requestBody).toStrictEqual(
+ JSON.stringify(body, null, 2)
+ )
+ }
+ }
+ it("populates body", async () => {
+ const assertions = {
+ createEntity: {
+ name: "name",
+ type: "type",
+ },
+ getEntities: undefined,
+ getEntity: undefined,
+ updateEntity: {
+ id: 1,
+ name: "name",
+ type: "type",
+ },
+ patchEntity: {
+ id: 1,
+ name: "name",
+ type: "type",
+ },
+ deleteEntity: undefined,
+ }
+ await runTests("crud", testBody, assertions)
+ })
+ })
+})
diff --git a/packages/server/src/api/controllers/query/import/tests/index.spec.js b/packages/server/src/api/controllers/query/import/tests/index.spec.js
index 8d074ea885..0cfb4f4f19 100644
--- a/packages/server/src/api/controllers/query/import/tests/index.spec.js
+++ b/packages/server/src/api/controllers/query/import/tests/index.spec.js
@@ -23,14 +23,27 @@ const oapi2CrudYaml = getData("openapi2/data/crud/crud.json")
const oapi2PetstoreJson = getData("openapi2/data/petstore/petstore.json")
const oapi2PetstoreYaml = getData("openapi2/data/petstore/petstore.json")
+// openapi3
+const oapi3CrudJson = getData("openapi3/data/crud/crud.json")
+const oapi3CrudYaml = getData("openapi3/data/crud/crud.json")
+const oapi3PetstoreJson = getData("openapi3/data/petstore/petstore.json")
+const oapi3PetstoreYaml = getData("openapi3/data/petstore/petstore.json")
+
// curl
const curl = getData("curl/data/post.txt")
const datasets = {
+ // openapi2 (swagger)
oapi2CrudJson,
oapi2CrudYaml,
oapi2PetstoreJson,
oapi2PetstoreYaml,
+ // openapi3
+ oapi3CrudJson,
+ oapi3CrudYaml,
+ oapi3PetstoreJson,
+ oapi3PetstoreYaml,
+ // curl
curl
}
@@ -56,6 +69,7 @@ describe("Rest Importer", () => {
it("gets info", async () => {
const assertions = {
+ // openapi2 (swagger)
"oapi2CrudJson" : {
name: "CRUD",
},
@@ -68,6 +82,20 @@ describe("Rest Importer", () => {
"oapi2PetstoreYaml" :{
name: "Swagger Petstore",
},
+ // openapi3
+ "oapi3CrudJson" : {
+ name: "CRUD",
+ },
+ "oapi3CrudYaml" : {
+ name: "CRUD",
+ },
+ "oapi3PetstoreJson" : {
+ name: "Swagger Petstore - OpenAPI 3.0",
+ },
+ "oapi3PetstoreYaml" :{
+ name: "Swagger Petstore - OpenAPI 3.0",
+ },
+ // curl
"curl": {
name: "example.com",
}
@@ -89,6 +117,7 @@ describe("Rest Importer", () => {
// simple sanity assertions that the whole dataset
// makes it through the importer
const assertions = {
+ // openapi2 (swagger)
"oapi2CrudJson" : {
count: 6,
},
@@ -101,6 +130,20 @@ describe("Rest Importer", () => {
"oapi2PetstoreYaml" :{
count: 20,
},
+ // openapi3
+ "oapi3CrudJson" : {
+ count: 6,
+ },
+ "oapi3CrudYaml" :{
+ count: 6,
+ },
+ "oapi3PetstoreJson" : {
+ count: 19,
+ },
+ "oapi3PetstoreYaml" :{
+ count: 19,
+ },
+ // curl
"curl": {
count: 1
}
diff --git a/packages/server/src/api/controllers/row/external.js b/packages/server/src/api/controllers/row/external.js
index aebcfce724..a8c8c0a627 100644
--- a/packages/server/src/api/controllers/row/external.js
+++ b/packages/server/src/api/controllers/row/external.js
@@ -10,6 +10,8 @@ const {
} = require("../../../integrations/utils")
const ExternalRequest = require("./ExternalRequest")
const { getAppDB } = require("@budibase/backend-core/context")
+const exporters = require("../view/exporters")
+const { apiFileReturn } = require("../../../utilities/fileSystem")
async function handleRequest(operation, tableId, opts = {}) {
// make sure the filters are cleaned up, no empty strings for equals, fuzzy or string
@@ -155,6 +157,7 @@ exports.validate = async () => {
exports.exportRows = async ctx => {
const { datasourceId, tableName } = breakExternalTableId(ctx.params.tableId)
const db = getAppDB()
+ let format = ctx.query.format
const datasource = await db.get(datasourceId)
if (!datasource || !datasource.entities) {
ctx.throw(400, "Datasource has not been configured for plus API.")
@@ -164,13 +167,22 @@ exports.exportRows = async ctx => {
ctx.request.body = {
query: {
oneOf: {
- [table.primaryDisplay]: ctx.request.body.map(
+ [table.primaryDisplay]: ctx.request.body.rows.map(
id => breakRowIdField(id)[0]
),
},
},
}
- return exports.search(ctx)
+
+ let result = await exports.search(ctx)
+
+ let headers = Object.keys(result.rows[0])
+ const exporter = exporters[format]
+ const filename = `export.${format}`
+
+ // send down the file
+ ctx.attachment(filename)
+ return apiFileReturn(exporter(headers, result.rows))
}
exports.fetchEnrichedRow = async ctx => {
diff --git a/packages/server/src/api/controllers/row/internal.js b/packages/server/src/api/controllers/row/internal.js
index 068a485a8a..68ff4ca88d 100644
--- a/packages/server/src/api/controllers/row/internal.js
+++ b/packages/server/src/api/controllers/row/internal.js
@@ -27,6 +27,8 @@ const {
const { cloneDeep } = require("lodash/fp")
const { getAppDB } = require("@budibase/backend-core/context")
const { finaliseRow, updateRelatedFormula } = require("./staticFormula")
+const exporters = require("../view/exporters")
+const { apiFileReturn } = require("../../../utilities/fileSystem")
const CALCULATION_TYPES = {
SUM: "sum",
@@ -83,7 +85,11 @@ exports.patch = async ctx => {
const isUserTable = tableId === InternalTables.USER_METADATA
let oldRow
try {
- oldRow = await db.get(inputs._id)
+ let dbTable = await db.get(tableId)
+ oldRow = await outputProcessing(
+ dbTable,
+ await findRow(ctx, tableId, inputs._id)
+ )
} catch (err) {
if (isUserTable) {
// don't include the rev, it'll be the global rev
@@ -366,6 +372,7 @@ exports.exportRows = async ctx => {
const db = getAppDB()
const table = await db.get(ctx.params.tableId)
const rowIds = ctx.request.body.rows
+ let format = ctx.query.format
let response = (
await db.allDocs({
include_docs: true,
@@ -375,7 +382,13 @@ exports.exportRows = async ctx => {
let rows = await outputProcessing(table, response)
- return rows
+ let headers = Object.keys(rows[0])
+ const exporter = exporters[format]
+ const filename = `export.${format}`
+
+ // send down the file
+ ctx.attachment(filename)
+ return apiFileReturn(exporter(headers, rows))
}
exports.fetchEnrichedRow = async ctx => {
diff --git a/packages/server/src/api/controllers/static/index.js b/packages/server/src/api/controllers/static/index.js
index 82e66ab545..2880e453ca 100644
--- a/packages/server/src/api/controllers/static/index.js
+++ b/packages/server/src/api/controllers/static/index.js
@@ -5,7 +5,6 @@ const { resolve, join } = require("../../../utilities/centralPath")
const uuid = require("uuid")
const { ObjectStoreBuckets } = require("../../../constants")
const { processString } = require("@budibase/string-templates")
-const { getAllApps } = require("@budibase/backend-core/db")
const {
loadHandlebarsFile,
NODE_MODULES_PATH,
@@ -16,7 +15,7 @@ const { clientLibraryPath } = require("../../../utilities")
const { upload } = require("../../../utilities/fileSystem")
const { attachmentsRelativeURL } = require("../../../utilities")
const { DocumentTypes } = require("../../../db/utils")
-const { getAppDB, updateAppId } = require("@budibase/backend-core/context")
+const { getAppDB, getAppId } = require("@budibase/backend-core/context")
const AWS = require("aws-sdk")
const AWS_REGION = env.AWS_REGION ? env.AWS_REGION : "eu-west-1"
@@ -39,21 +38,6 @@ async function prepareUpload({ s3Key, bucket, metadata, file }) {
}
}
-async function getAppIdFromUrl(ctx) {
- // the "appId" component of the URL can be the id or the custom url
- let possibleAppUrl = `/${encodeURI(ctx.params.appId).toLowerCase()}`
-
- // search prod apps for a url that matches, exclude dev where id is always used
- const apps = await getAllApps({ dev: false })
- const app = apps.filter(
- a => a.url && a.url.toLowerCase() === possibleAppUrl
- )[0]
-
- const appId = app && app.appId ? app.appId : ctx.params.appId
- updateAppId(appId)
- return appId
-}
-
exports.serveBuilder = async function (ctx) {
let builderPath = resolve(TOP_LEVEL_PATH, "builder")
await send(ctx, ctx.file, { root: builderPath })
@@ -81,10 +65,10 @@ exports.uploadFile = async function (ctx) {
}
exports.serveApp = async function (ctx) {
- let appId = await getAppIdFromUrl(ctx)
const App = require("./templates/BudibaseApp.svelte").default
const db = getAppDB({ skip_setup: true })
const appInfo = await db.get(DocumentTypes.APP_METADATA)
+ let appId = getAppId()
const { head, html, css } = App.render({
title: appInfo.name,
diff --git a/packages/server/src/api/controllers/table/external.js b/packages/server/src/api/controllers/table/external.js
index 86d855a28e..1263bb6216 100644
--- a/packages/server/src/api/controllers/table/external.js
+++ b/packages/server/src/api/controllers/table/external.js
@@ -118,8 +118,8 @@ function generateManyLinkSchema(datasource, column, table, relatedTable) {
},
}
column.through = junctionTable._id
- column.throughFrom = primary
- column.throughTo = relatedPrimary
+ column.throughFrom = relatedPrimary
+ column.throughTo = primary
column.fieldName = relatedPrimary
return junctionTable
}
@@ -146,7 +146,7 @@ function generateRelatedSchema(linkColumn, table, relatedTable, columnName) {
// is many to many
else {
// don't need to copy through, already got it
- relatedSchema.fieldName = linkColumn.throughFrom
+ relatedSchema.fieldName = linkColumn.throughTo
relatedSchema.throughTo = linkColumn.throughFrom
relatedSchema.throughFrom = linkColumn.throughTo
}
diff --git a/packages/server/src/api/index.js b/packages/server/src/api/index.js
index 8b0c091346..dac23e32c8 100644
--- a/packages/server/src/api/index.js
+++ b/packages/server/src/api/index.js
@@ -3,7 +3,6 @@ const {
buildAuthMiddleware,
auditLog,
buildTenancyMiddleware,
- buildAppTenancyMiddleware,
} = require("@budibase/backend-core/auth")
const currentApp = require("../middleware/currentapp")
const compress = require("koa-compress")
@@ -14,6 +13,9 @@ const env = require("../environment")
const router = new Router()
+router.get("/health", ctx => (ctx.status = 200))
+router.get("/version", ctx => (ctx.body = pkg.version))
+
router
.use(
compress({
@@ -34,8 +36,6 @@ router
}
await next()
})
- .use("/health", ctx => (ctx.status = 200))
- .use("/version", ctx => (ctx.body = pkg.version))
// re-direct before any middlewares occur
.redirect("/", "/builder")
.use(
@@ -52,8 +52,6 @@ router
})
)
.use(currentApp)
- // this middleware will try to use the app ID to determine the tenancy
- .use(buildAppTenancyMiddleware())
.use(auditLog)
// error handling middleware
@@ -74,8 +72,6 @@ router.use(async (ctx, next) => {
}
})
-router.get("/health", ctx => (ctx.status = 200))
-
// authenticated routes
for (let route of mainRoutes) {
router.use(route.routes())
diff --git a/packages/server/src/api/routes/analytics.js b/packages/server/src/api/routes/analytics.js
index be27e7d19b..c9a678d3ac 100644
--- a/packages/server/src/api/routes/analytics.js
+++ b/packages/server/src/api/routes/analytics.js
@@ -4,7 +4,7 @@ const controller = require("../controllers/analytics")
const router = Router()
router
- .get("/api/analytics", controller.isEnabled)
- .post("/api/analytics/ping", controller.endUserPing)
+ .get("/api/bbtel", controller.isEnabled)
+ .post("/api/bbtel/ping", controller.endUserPing)
module.exports = router
diff --git a/packages/server/src/api/routes/public/index.ts b/packages/server/src/api/routes/public/index.ts
index 04446d543f..57436def1d 100644
--- a/packages/server/src/api/routes/public/index.ts
+++ b/packages/server/src/api/routes/public/index.ts
@@ -5,6 +5,7 @@ import rowEndpoints from "./rows"
import userEndpoints from "./users"
import usage from "../../../middleware/usageQuota"
import authorized from "../../../middleware/authorized"
+import publicApi from "../../../middleware/publicApi"
import { paramResource, paramSubResource } from "../../../middleware/resourceId"
import { CtxFn } from "./utils/Endpoint"
import mapperMiddleware from "./middleware/mapper"
@@ -101,6 +102,12 @@ function applyRoutes(
const paramMiddleware = subResource
? paramSubResource(resource, subResource)
: paramResource(resource)
+ const publicApiMiddleware = publicApi({
+ requiresAppId:
+ permType !== PermissionTypes.APP && permType !== PermissionTypes.USER,
+ })
+ addMiddleware(endpoints.read, publicApiMiddleware)
+ addMiddleware(endpoints.write, publicApiMiddleware)
// add the parameter capture middleware
addMiddleware(endpoints.read, paramMiddleware)
addMiddleware(endpoints.write, paramMiddleware)
diff --git a/packages/server/src/api/routes/static.js b/packages/server/src/api/routes/static.js
index 8a1e529a59..b9081d375e 100644
--- a/packages/server/src/api/routes/static.js
+++ b/packages/server/src/api/routes/static.js
@@ -44,8 +44,8 @@ router
authorized(PermissionTypes.TABLE, PermissionLevels.WRITE),
controller.uploadFile
)
- // TODO: this likely needs to be secured in some way
.get("/:appId/:path*", controller.serveApp)
+ .get("/app/:appUrl/:path*", controller.serveApp)
.post(
"/api/attachments/:datasourceId/url",
authorized(PermissionTypes.TABLE, PermissionLevels.READ),
diff --git a/packages/server/src/api/routes/table.js b/packages/server/src/api/routes/table.js
index 4d20b98962..5d2378710d 100644
--- a/packages/server/src/api/routes/table.js
+++ b/packages/server/src/api/routes/table.js
@@ -40,7 +40,7 @@ router
.get(
"/api/tables/:tableId",
paramResource("tableId"),
- authorized(PermissionTypes.TABLE, PermissionLevels.READ),
+ authorized(PermissionTypes.TABLE, PermissionLevels.READ, { schema: true }),
tableController.find
)
/**
diff --git a/packages/server/src/api/routes/tests/misc.spec.js b/packages/server/src/api/routes/tests/misc.spec.js
index e5b87543d2..475176759c 100644
--- a/packages/server/src/api/routes/tests/misc.spec.js
+++ b/packages/server/src/api/routes/tests/misc.spec.js
@@ -11,10 +11,10 @@ describe("run misc tests", () => {
await config.init()
})
- describe("/analytics", () => {
+ describe("/bbtel", () => {
it("check if analytics enabled", async () => {
const res = await request
- .get(`/api/analytics`)
+ .get(`/api/bbtel`)
.set(config.defaultHeaders())
.expect("Content-Type", /json/)
.expect(200)
diff --git a/packages/server/src/automations/steps/queryRows.js b/packages/server/src/automations/steps/queryRows.js
index 5bc19d0022..62f7659589 100644
--- a/packages/server/src/automations/steps/queryRows.js
+++ b/packages/server/src/automations/steps/queryRows.js
@@ -85,7 +85,7 @@ exports.run = async function ({ inputs, appId }) {
const { tableId, filters, sortColumn, sortOrder, limit } = inputs
const table = await getTable(appId, tableId)
let sortType = FieldTypes.STRING
- if (table && table.schema && sortColumn) {
+ if (table && table.schema && table.schema[sortColumn] && sortColumn) {
const fieldType = table.schema[sortColumn].type
sortType =
fieldType === FieldTypes.NUMBER ? FieldTypes.NUMBER : FieldTypes.STRING
diff --git a/packages/server/src/automations/utils.js b/packages/server/src/automations/utils.js
index 4ae6e5eb29..425ccec9de 100644
--- a/packages/server/src/automations/utils.js
+++ b/packages/server/src/automations/utils.js
@@ -17,11 +17,16 @@ const Runner = new Thread(ThreadType.AUTOMATION)
exports.processEvent = async job => {
try {
// need to actually await these so that an error can be captured properly
+ console.log(
+ `${job.data.automation.appId} automation ${job.data.automation._id} running`
+ )
return await Runner.run(job)
} catch (err) {
+ const errJson = JSON.stringify(err)
console.error(
- `${job.data.automation.appId} automation ${job.data.automation._id} was unable to run - ${err}`
+ `${job.data.automation.appId} automation ${job.data.automation._id} was unable to run - ${errJson}`
)
+ console.trace(err)
return { err }
}
}
diff --git a/packages/server/src/db/views/staticViews.js b/packages/server/src/db/views/staticViews.js
index fa0b1f3605..5cfae746df 100644
--- a/packages/server/src/db/views/staticViews.js
+++ b/packages/server/src/db/views/staticViews.js
@@ -33,6 +33,7 @@ exports.createLinkView = async () => {
if (doc.type === "link") {
let doc1 = doc.doc1
let doc2 = doc.doc2
+ // eslint-disable-next-line no-undef
emit([doc1.tableId, doc1.rowId], {
id: doc2.rowId,
thisId: doc1.rowId,
@@ -40,6 +41,7 @@ exports.createLinkView = async () => {
})
// if linking to same table can't emit twice
if (doc1.tableId !== doc2.tableId) {
+ // eslint-disable-next-line no-undef
emit([doc2.tableId, doc2.rowId], {
id: doc1.rowId,
thisId: doc2.rowId,
diff --git a/packages/server/src/definitions/datasource.ts b/packages/server/src/definitions/datasource.ts
index 2e2ad25f58..4df08683f0 100644
--- a/packages/server/src/definitions/datasource.ts
+++ b/packages/server/src/definitions/datasource.ts
@@ -48,6 +48,7 @@ export enum SourceNames {
REST = "REST",
ORACLE = "ORACLE",
GOOGLE_SHEETS = "GOOGLE_SHEETS",
+ FIREBASE = "FIREBASE",
}
export enum IncludeRelationships {
@@ -181,11 +182,7 @@ export interface QueryJson {
export interface SqlQuery {
sql: string
- bindings?:
- | string[]
- | {
- [key: string]: any
- }
+ bindings?: string[]
}
export interface QueryOptions {
diff --git a/packages/server/src/definitions/openapi.ts b/packages/server/src/definitions/openapi.ts
index c8b518107c..0fef60f4a0 100644
--- a/packages/server/src/definitions/openapi.ts
+++ b/packages/server/src/definitions/openapi.ts
@@ -9,79 +9,79 @@ export interface paths {
parameters: {
header: {
/** The ID of the app which this request is targeting. */
- "x-budibase-app-id": components["parameters"]["appId"];
- };
- };
+ "x-budibase-app-id": components["parameters"]["appId"]
+ }
+ }
responses: {
/** Returns the created application. */
200: {
content: {
- "application/json": components["schemas"]["applicationOutput"];
- };
- };
- };
+ "application/json": components["schemas"]["applicationOutput"]
+ }
+ }
+ }
requestBody: {
content: {
- "application/json": components["schemas"]["application"];
- };
- };
- };
- };
+ "application/json": components["schemas"]["application"]
+ }
+ }
+ }
+ }
"/applications/{appId}": {
get: {
parameters: {
path: {
/** The ID of the app which this request is targeting. */
- appId: components["parameters"]["appIdUrl"];
- };
- };
+ appId: components["parameters"]["appIdUrl"]
+ }
+ }
responses: {
/** Returns the retrieved application. */
200: {
content: {
- "application/json": components["schemas"]["applicationOutput"];
- };
- };
- };
- };
+ "application/json": components["schemas"]["applicationOutput"]
+ }
+ }
+ }
+ }
put: {
parameters: {
path: {
/** The ID of the app which this request is targeting. */
- appId: components["parameters"]["appIdUrl"];
- };
- };
+ appId: components["parameters"]["appIdUrl"]
+ }
+ }
responses: {
/** Returns the updated application. */
200: {
content: {
- "application/json": components["schemas"]["applicationOutput"];
- };
- };
- };
+ "application/json": components["schemas"]["applicationOutput"]
+ }
+ }
+ }
requestBody: {
content: {
- "application/json": components["schemas"]["application"];
- };
- };
- };
+ "application/json": components["schemas"]["application"]
+ }
+ }
+ }
delete: {
parameters: {
path: {
/** The ID of the app which this request is targeting. */
- appId: components["parameters"]["appIdUrl"];
- };
- };
+ appId: components["parameters"]["appIdUrl"]
+ }
+ }
responses: {
/** Returns the deleted application. */
200: {
content: {
- "application/json": components["schemas"]["applicationOutput"];
- };
- };
- };
- };
- };
+ "application/json": components["schemas"]["applicationOutput"]
+ }
+ }
+ }
+ }
+ }
"/applications/search": {
/** Based on application properties (currently only name) search for applications. */
post: {
@@ -89,193 +89,193 @@ export interface paths {
/** Returns the applications that were found based on the search parameters. */
200: {
content: {
- "application/json": components["schemas"]["applicationSearch"];
- };
- };
- };
+ "application/json": components["schemas"]["applicationSearch"]
+ }
+ }
+ }
requestBody: {
content: {
- "application/json": components["schemas"]["nameSearch"];
- };
- };
- };
- };
+ "application/json": components["schemas"]["nameSearch"]
+ }
+ }
+ }
+ }
"/queries/{queryId}": {
/** Queries which have been created within a Budibase app can be executed using this, */
post: {
parameters: {
path: {
/** The ID of the query which this request is targeting. */
- queryId: components["parameters"]["queryId"];
- };
+ queryId: components["parameters"]["queryId"]
+ }
header: {
/** The ID of the app which this request is targeting. */
- "x-budibase-app-id": components["parameters"]["appId"];
- };
- };
+ "x-budibase-app-id": components["parameters"]["appId"]
+ }
+ }
responses: {
/** Returns the result of the query execution. */
200: {
content: {
- "application/json": components["schemas"]["executeQueryOutput"];
- };
- };
- };
+ "application/json": components["schemas"]["executeQueryOutput"]
+ }
+ }
+ }
requestBody: {
content: {
- "application/json": components["schemas"]["executeQuery"];
- };
- };
- };
- };
+ "application/json": components["schemas"]["executeQuery"]
+ }
+ }
+ }
+ }
"/queries/search": {
/** Based on query properties (currently only name) search for queries. */
post: {
parameters: {
header: {
/** The ID of the app which this request is targeting. */
- "x-budibase-app-id": components["parameters"]["appId"];
- };
- };
+ "x-budibase-app-id": components["parameters"]["appId"]
+ }
+ }
responses: {
/** Returns the queries found based on the search parameters. */
200: {
content: {
- "application/json": components["schemas"]["querySearch"];
- };
- };
- };
+ "application/json": components["schemas"]["querySearch"]
+ }
+ }
+ }
requestBody: {
content: {
- "application/json": components["schemas"]["nameSearch"];
- };
- };
- };
- };
+ "application/json": components["schemas"]["nameSearch"]
+ }
+ }
+ }
+ }
"/tables/{tableId}/rows": {
/** Creates a row within the specified table. */
post: {
parameters: {
path: {
/** The ID of the table which this request is targeting. */
- tableId: components["parameters"]["tableId"];
- };
+ tableId: components["parameters"]["tableId"]
+ }
header: {
/** The ID of the app which this request is targeting. */
- "x-budibase-app-id": components["parameters"]["appId"];
- };
- };
+ "x-budibase-app-id": components["parameters"]["appId"]
+ }
+ }
responses: {
/** Returns the created row, including the ID which has been generated for it. This can be found in the Budibase portal, viewed under the developer information. */
200: {
content: {
- "application/json": components["schemas"]["rowOutput"];
- };
- };
- };
+ "application/json": components["schemas"]["rowOutput"]
+ }
+ }
+ }
requestBody: {
content: {
- "application/json": components["schemas"]["row"];
- };
- };
- };
- };
+ "application/json": components["schemas"]["row"]
+ }
+ }
+ }
+ }
"/tables/{tableId}/rows/{rowId}": {
/** This gets a single row, it will be enriched with the full related rows, rather than the squashed "primaryDisplay" format returned by the search endpoint. */
get: {
parameters: {
path: {
/** The ID of the table which this request is targeting. */
- tableId: components["parameters"]["tableId"];
+ tableId: components["parameters"]["tableId"]
/** The ID of the row which this request is targeting. */
- rowId: components["parameters"]["rowId"];
- };
+ rowId: components["parameters"]["rowId"]
+ }
header: {
/** The ID of the app which this request is targeting. */
- "x-budibase-app-id": components["parameters"]["appId"];
- };
- };
+ "x-budibase-app-id": components["parameters"]["appId"]
+ }
+ }
responses: {
/** Returns the retrieved row. */
200: {
content: {
- "application/json": components["schemas"]["rowOutput"];
- };
- };
- };
- };
+ "application/json": components["schemas"]["rowOutput"]
+ }
+ }
+ }
+ }
/** Updates a row within the specified table. */
put: {
parameters: {
path: {
/** The ID of the table which this request is targeting. */
- tableId: components["parameters"]["tableId"];
+ tableId: components["parameters"]["tableId"]
/** The ID of the row which this request is targeting. */
- rowId: components["parameters"]["rowId"];
- };
+ rowId: components["parameters"]["rowId"]
+ }
header: {
/** The ID of the app which this request is targeting. */
- "x-budibase-app-id": components["parameters"]["appId"];
- };
- };
+ "x-budibase-app-id": components["parameters"]["appId"]
+ }
+ }
responses: {
/** Returns the created row, including the ID which has been generated for it. */
200: {
content: {
- "application/json": components["schemas"]["rowOutput"];
- };
- };
- };
+ "application/json": components["schemas"]["rowOutput"]
+ }
+ }
+ }
requestBody: {
content: {
- "application/json": components["schemas"]["row"];
- };
- };
- };
+ "application/json": components["schemas"]["row"]
+ }
+ }
+ }
/** Deletes a row within the specified table. */
delete: {
parameters: {
path: {
/** The ID of the table which this request is targeting. */
- tableId: components["parameters"]["tableId"];
+ tableId: components["parameters"]["tableId"]
/** The ID of the row which this request is targeting. */
- rowId: components["parameters"]["rowId"];
- };
+ rowId: components["parameters"]["rowId"]
+ }
header: {
/** The ID of the app which this request is targeting. */
- "x-budibase-app-id": components["parameters"]["appId"];
- };
- };
+ "x-budibase-app-id": components["parameters"]["appId"]
+ }
+ }
responses: {
/** Returns the deleted row, including the ID which has been generated for it. */
200: {
content: {
- "application/json": components["schemas"]["rowOutput"];
- };
- };
- };
- };
- };
+ "application/json": components["schemas"]["rowOutput"]
+ }
+ }
+ }
+ }
+ }
"/tables/{tableId}/rows/search": {
post: {
parameters: {
path: {
/** The ID of the table which this request is targeting. */
- tableId: components["parameters"]["tableId"];
- };
+ tableId: components["parameters"]["tableId"]
+ }
header: {
/** The ID of the app which this request is targeting. */
- "x-budibase-app-id": components["parameters"]["appId"];
- };
- };
+ "x-budibase-app-id": components["parameters"]["appId"]
+ }
+ }
responses: {
/** The response will contain an array of rows that match the search parameters. */
200: {
content: {
- "application/json": components["schemas"]["searchOutput"];
- };
- };
- };
+ "application/json": components["schemas"]["searchOutput"]
+ }
+ }
+ }
requestBody: {
content: {
"application/json": {
@@ -284,244 +284,244 @@ export interface paths {
* @description A map of field name to the string to search for, this will look for rows that have a value starting with the string value.
* @example [object Object]
*/
- string?: { [key: string]: string };
+ string?: { [key: string]: string }
/** @description A fuzzy search, only supported by internal tables. */
- fuzzy?: { [key: string]: unknown };
+ fuzzy?: { [key: string]: unknown }
/**
* @description Searches within a range, the format of this must be columnName -> [low, high].
* @example [object Object]
*/
- range?: { [key: string]: unknown };
+ range?: { [key: string]: unknown }
/** @description Searches for rows that have a column value that is exactly the value set. */
- equal?: { [key: string]: unknown };
+ equal?: { [key: string]: unknown }
/** @description Searches for any row which does not contain the specified column value. */
- notEqual?: { [key: string]: unknown };
+ notEqual?: { [key: string]: unknown }
/**
* @description Searches for rows which do not contain the specified column. The object should simply contain keys of the column names, these can map to any value.
* @example [object Object]
*/
- empty?: { [key: string]: unknown };
+ empty?: { [key: string]: unknown }
/** @description Searches for rows which have the specified column. */
- notEmpty?: { [key: string]: unknown };
+ notEmpty?: { [key: string]: unknown }
/** @description Searches for rows which have a column value that is any of the specified values. The format of this must be columnName -> [value1, value2]. */
- oneOf?: { [key: string]: unknown };
- };
+ oneOf?: { [key: string]: unknown }
+ }
/** @description Enables pagination, by default this is disabled. */
- paginate?: boolean;
+ paginate?: boolean
/** @description If retrieving another page, the bookmark from the previous request must be supplied. */
- bookmark?: string | number;
+ bookmark?: string | number
/** @description The maximum number of rows to return, useful when paginating, for internal tables this will be limited to 1000, for SQL tables it will be 5000. */
- limit?: number;
+ limit?: number
/** @description A set of parameters describing the sort behaviour of the search. */
sort?: {
/**
* @description The order of the sort, by default this is ascending.
* @enum {string}
*/
- order?: "ascending" | "descending";
+ order?: "ascending" | "descending"
/** @description The name of the column by which the rows will be sorted. */
- column?: string;
+ column?: string
/**
* @description Defines whether the column should be treated as a string or as numbers when sorting.
* @enum {string}
*/
- type?: "string" | "number";
- };
- };
- };
- };
- };
- };
+ type?: "string" | "number"
+ }
+ }
+ }
+ }
+ }
+ }
"/tables": {
/** Create a table, this could be internal or external. */
post: {
parameters: {
header: {
/** The ID of the app which this request is targeting. */
- "x-budibase-app-id": components["parameters"]["appId"];
- };
- };
+ "x-budibase-app-id": components["parameters"]["appId"]
+ }
+ }
responses: {
/** Returns the created table, including the ID which has been generated for it. This can be internal or external data sources. */
200: {
content: {
- "application/json": components["schemas"]["tableOutput"];
- };
- };
- };
+ "application/json": components["schemas"]["tableOutput"]
+ }
+ }
+ }
requestBody: {
content: {
- "application/json": components["schemas"]["table"];
- };
- };
- };
- };
+ "application/json": components["schemas"]["table"]
+ }
+ }
+ }
+ }
"/tables/{tableId}": {
/** Lookup a table, this could be internal or external. */
get: {
parameters: {
path: {
/** The ID of the table which this request is targeting. */
- tableId: components["parameters"]["tableId"];
- };
+ tableId: components["parameters"]["tableId"]
+ }
header: {
/** The ID of the app which this request is targeting. */
- "x-budibase-app-id": components["parameters"]["appId"];
- };
- };
+ "x-budibase-app-id": components["parameters"]["appId"]
+ }
+ }
responses: {
/** Returns the retrieved table. */
200: {
content: {
- "application/json": components["schemas"]["tableOutput"];
- };
- };
- };
- };
+ "application/json": components["schemas"]["tableOutput"]
+ }
+ }
+ }
+ }
/** Update a table, this could be internal or external. */
put: {
parameters: {
path: {
/** The ID of the table which this request is targeting. */
- tableId: components["parameters"]["tableId"];
- };
+ tableId: components["parameters"]["tableId"]
+ }
header: {
/** The ID of the app which this request is targeting. */
- "x-budibase-app-id": components["parameters"]["appId"];
- };
- };
+ "x-budibase-app-id": components["parameters"]["appId"]
+ }
+ }
responses: {
/** Returns the updated table. */
200: {
content: {
- "application/json": components["schemas"]["tableOutput"];
- };
- };
- };
+ "application/json": components["schemas"]["tableOutput"]
+ }
+ }
+ }
requestBody: {
content: {
- "application/json": components["schemas"]["table"];
- };
- };
- };
+ "application/json": components["schemas"]["table"]
+ }
+ }
+ }
/** Delete a table, this could be internal or external. */
delete: {
parameters: {
path: {
/** The ID of the table which this request is targeting. */
- tableId: components["parameters"]["tableId"];
- };
+ tableId: components["parameters"]["tableId"]
+ }
header: {
/** The ID of the app which this request is targeting. */
- "x-budibase-app-id": components["parameters"]["appId"];
- };
- };
+ "x-budibase-app-id": components["parameters"]["appId"]
+ }
+ }
responses: {
/** Returns the deleted table. */
200: {
content: {
- "application/json": components["schemas"]["tableOutput"];
- };
- };
- };
- };
- };
+ "application/json": components["schemas"]["tableOutput"]
+ }
+ }
+ }
+ }
+ }
"/tables/search": {
/** Based on table properties (currently only name) search for tables. This could be an internal or an external table. */
post: {
parameters: {
header: {
/** The ID of the app which this request is targeting. */
- "x-budibase-app-id": components["parameters"]["appId"];
- };
- };
+ "x-budibase-app-id": components["parameters"]["appId"]
+ }
+ }
responses: {
/** Returns the found tables, based on the search parameters. */
200: {
content: {
- "application/json": components["schemas"]["tableSearch"];
- };
- };
- };
+ "application/json": components["schemas"]["tableSearch"]
+ }
+ }
+ }
requestBody: {
content: {
- "application/json": components["schemas"]["nameSearch"];
- };
- };
- };
- };
+ "application/json": components["schemas"]["nameSearch"]
+ }
+ }
+ }
+ }
"/users": {
post: {
responses: {
/** Returns the created user. */
200: {
content: {
- "application/json": components["schemas"]["userOutput"];
- };
- };
- };
+ "application/json": components["schemas"]["userOutput"]
+ }
+ }
+ }
requestBody: {
content: {
- "application/json": components["schemas"]["user"];
- };
- };
- };
- };
+ "application/json": components["schemas"]["user"]
+ }
+ }
+ }
+ }
"/users/{userId}": {
get: {
parameters: {
path: {
/** The ID of the user which this request is targeting. */
- userId: components["parameters"]["userId"];
- };
- };
+ userId: components["parameters"]["userId"]
+ }
+ }
responses: {
/** Returns the retrieved user. */
200: {
content: {
- "application/json": components["schemas"]["userOutput"];
- };
- };
- };
- };
+ "application/json": components["schemas"]["userOutput"]
+ }
+ }
+ }
+ }
put: {
parameters: {
path: {
/** The ID of the user which this request is targeting. */
- userId: components["parameters"]["userId"];
- };
- };
+ userId: components["parameters"]["userId"]
+ }
+ }
responses: {
/** Returns the updated user. */
200: {
content: {
- "application/json": components["schemas"]["userOutput"];
- };
- };
- };
+ "application/json": components["schemas"]["userOutput"]
+ }
+ }
+ }
requestBody: {
content: {
- "application/json": components["schemas"]["user"];
- };
- };
- };
+ "application/json": components["schemas"]["user"]
+ }
+ }
+ }
delete: {
parameters: {
path: {
/** The ID of the user which this request is targeting. */
- userId: components["parameters"]["userId"];
- };
- };
+ userId: components["parameters"]["userId"]
+ }
+ }
responses: {
/** Returns the deleted user. */
200: {
content: {
- "application/json": components["schemas"]["userOutput"];
- };
- };
- };
- };
- };
+ "application/json": components["schemas"]["userOutput"]
+ }
+ }
+ }
+ }
+ }
"/users/search": {
/** Based on user properties (currently only name) search for users. */
post: {
@@ -529,102 +529,102 @@ export interface paths {
/** Returns the found users based on search parameters. */
200: {
content: {
- "application/json": components["schemas"]["userSearch"];
- };
- };
- };
+ "application/json": components["schemas"]["userSearch"]
+ }
+ }
+ }
requestBody: {
content: {
- "application/json": components["schemas"]["nameSearch"];
- };
- };
- };
- };
+ "application/json": components["schemas"]["nameSearch"]
+ }
+ }
+ }
+ }
}
export interface components {
schemas: {
application: {
/** @description The name of the app. */
- name: string;
+ name: string
/** @description The URL by which the app is accessed, this must be URL encoded. */
- url?: string;
- };
+ url?: string
+ }
applicationOutput: {
data: {
/** @description The name of the app. */
- name: string;
+ name: string
/** @description The URL by which the app is accessed, this must be URL encoded. */
- url: string;
+ url: string
/** @description The ID of the app. */
- _id: string;
+ _id: string
/**
* @description The status of the app, stating it if is the development or published version.
* @enum {string}
*/
- status: "development" | "published";
+ status: "development" | "published"
/** @description States when the app was created, will be constant. Stored in ISO format. */
- createdAt: string;
+ createdAt: string
/** @description States the last time the app was updated - stored in ISO format. */
- updatedAt: string;
+ updatedAt: string
/** @description States the version of the Budibase client this app is currently based on. */
- version: string;
+ version: string
/** @description In a multi-tenant environment this will state the tenant this app is within. */
- tenantId?: string;
+ tenantId?: string
/** @description The user this app is currently being built by. */
- lockedBy?: { [key: string]: unknown };
- };
- };
+ lockedBy?: { [key: string]: unknown }
+ }
+ }
applicationSearch: {
data: {
/** @description The name of the app. */
- name: string;
+ name: string
/** @description The URL by which the app is accessed, this must be URL encoded. */
- url: string;
+ url: string
/** @description The ID of the app. */
- _id: string;
+ _id: string
/**
* @description The status of the app, stating it if is the development or published version.
* @enum {string}
*/
- status: "development" | "published";
+ status: "development" | "published"
/** @description States when the app was created, will be constant. Stored in ISO format. */
- createdAt: string;
+ createdAt: string
/** @description States the last time the app was updated - stored in ISO format. */
- updatedAt: string;
+ updatedAt: string
/** @description States the version of the Budibase client this app is currently based on. */
- version: string;
+ version: string
/** @description In a multi-tenant environment this will state the tenant this app is within. */
- tenantId?: string;
+ tenantId?: string
/** @description The user this app is currently being built by. */
- lockedBy?: { [key: string]: unknown };
- }[];
- };
+ lockedBy?: { [key: string]: unknown }
+ }[]
+ }
/** @description The row to be created/updated, based on the table schema. */
- row: { [key: string]: unknown };
+ row: { [key: string]: unknown }
searchOutput: {
/** @description An array of rows, these will each contain an _id field which can be used to update or delete them. */
- data: { [key: string]: unknown }[];
+ data: { [key: string]: unknown }[]
/** @description If pagination in use, this should be provided. */
- bookmark?: string | number;
+ bookmark?: string | number
/** @description If pagination in use, this will determine if there is another page to fetch. */
- hasNextPage?: boolean;
- };
+ hasNextPage?: boolean
+ }
rowOutput: {
/** @description The row to be created/updated, based on the table schema. */
data: {
/** @description The ID of the row. */
- _id: string;
+ _id: string
/** @description The ID of the table this row comes from. */
- tableId: string;
- } & { [key: string]: unknown };
- };
+ tableId: string
+ } & { [key: string]: unknown }
+ }
/** @description The table to be created/updated. */
table: {
/** @description The name of the table. */
- name: string;
+ name: string
/** @description The name of the column which should be used in relationship tags when relating to this table. */
- primaryDisplay?: string;
+ primaryDisplay?: string
schema: {
[key: string]:
| {
@@ -632,60 +632,60 @@ export interface components {
* @description A relationship column.
* @enum {string}
*/
- type?: "link";
+ type?: "link"
/** @description A constraint can be applied to the column which will be validated against when a row is saved. */
constraints?: {
/** @enum {string} */
- type?: "string" | "number" | "object" | "boolean";
+ type?: "string" | "number" | "object" | "boolean"
/** @description Defines whether the column is required or not. */
- presence?: boolean;
- };
+ presence?: boolean
+ }
/** @description The name of the column. */
- name?: string;
+ name?: string
/** @description Defines whether the column is automatically generated. */
- autocolumn?: boolean;
+ autocolumn?: boolean
/** @description The name of the column which a relationship column is related to in another table. */
- fieldName?: string;
+ fieldName?: string
/** @description The ID of the table which a relationship column is related to. */
- tableId?: string;
+ tableId?: string
/**
* @description Defines the type of relationship that this column will be used for.
* @enum {string}
*/
- relationshipType?: "one-to-many" | "many-to-one" | "many-to-many";
+ relationshipType?: "one-to-many" | "many-to-one" | "many-to-many"
/** @description When using a SQL table that contains many to many relationships this defines the table the relationships are linked through. */
- through?: string;
+ through?: string
/** @description When using a SQL table that contains a one to many relationship this defines the foreign key. */
- foreignKey?: string;
+ foreignKey?: string
/** @description When using a SQL table that utilises a through table, this defines the primary key in the through table for this table. */
- throughFrom?: string;
+ throughFrom?: string
/** @description When using a SQL table that utilises a through table, this defines the primary key in the through table for the related table. */
- throughTo?: string;
+ throughTo?: string
}
| {
/**
* @description A formula column.
* @enum {string}
*/
- type?: "formula";
+ type?: "formula"
/** @description A constraint can be applied to the column which will be validated against when a row is saved. */
constraints?: {
/** @enum {string} */
- type?: "string" | "number" | "object" | "boolean";
+ type?: "string" | "number" | "object" | "boolean"
/** @description Defines whether the column is required or not. */
- presence?: boolean;
- };
+ presence?: boolean
+ }
/** @description The name of the column. */
- name?: string;
+ name?: string
/** @description Defines whether the column is automatically generated. */
- autocolumn?: boolean;
+ autocolumn?: boolean
/** @description Defines a Handlebars or JavaScript formula to use, note that Javascript formulas are expected to be provided in the base64 format. */
- formula?: string;
+ formula?: string
/**
* @description Defines whether this is a static or dynamic formula.
* @enum {string}
*/
- formulaType?: "static" | "dynamic";
+ formulaType?: "static" | "dynamic"
}
| {
/**
@@ -705,28 +705,28 @@ export interface components {
| "formula"
| "auto"
| "json"
- | "internal";
+ | "internal"
/** @description A constraint can be applied to the column which will be validated against when a row is saved. */
constraints?: {
/** @enum {string} */
- type?: "string" | "number" | "object" | "boolean";
+ type?: "string" | "number" | "object" | "boolean"
/** @description Defines whether the column is required or not. */
- presence?: boolean;
- };
+ presence?: boolean
+ }
/** @description The name of the column. */
- name?: string;
+ name?: string
/** @description Defines whether the column is automatically generated. */
- autocolumn?: boolean;
- };
- };
- };
+ autocolumn?: boolean
+ }
+ }
+ }
tableOutput: {
/** @description The table to be created/updated. */
data: {
/** @description The name of the table. */
- name: string;
+ name: string
/** @description The name of the column which should be used in relationship tags when relating to this table. */
- primaryDisplay?: string;
+ primaryDisplay?: string
schema: {
[key: string]:
| {
@@ -734,22 +734,22 @@ export interface components {
* @description A relationship column.
* @enum {string}
*/
- type?: "link";
+ type?: "link"
/** @description A constraint can be applied to the column which will be validated against when a row is saved. */
constraints?: {
/** @enum {string} */
- type?: "string" | "number" | "object" | "boolean";
+ type?: "string" | "number" | "object" | "boolean"
/** @description Defines whether the column is required or not. */
- presence?: boolean;
- };
+ presence?: boolean
+ }
/** @description The name of the column. */
- name?: string;
+ name?: string
/** @description Defines whether the column is automatically generated. */
- autocolumn?: boolean;
+ autocolumn?: boolean
/** @description The name of the column which a relationship column is related to in another table. */
- fieldName?: string;
+ fieldName?: string
/** @description The ID of the table which a relationship column is related to. */
- tableId?: string;
+ tableId?: string
/**
* @description Defines the type of relationship that this column will be used for.
* @enum {string}
@@ -757,40 +757,40 @@ export interface components {
relationshipType?:
| "one-to-many"
| "many-to-one"
- | "many-to-many";
+ | "many-to-many"
/** @description When using a SQL table that contains many to many relationships this defines the table the relationships are linked through. */
- through?: string;
+ through?: string
/** @description When using a SQL table that contains a one to many relationship this defines the foreign key. */
- foreignKey?: string;
+ foreignKey?: string
/** @description When using a SQL table that utilises a through table, this defines the primary key in the through table for this table. */
- throughFrom?: string;
+ throughFrom?: string
/** @description When using a SQL table that utilises a through table, this defines the primary key in the through table for the related table. */
- throughTo?: string;
+ throughTo?: string
}
| {
/**
* @description A formula column.
* @enum {string}
*/
- type?: "formula";
+ type?: "formula"
/** @description A constraint can be applied to the column which will be validated against when a row is saved. */
constraints?: {
/** @enum {string} */
- type?: "string" | "number" | "object" | "boolean";
+ type?: "string" | "number" | "object" | "boolean"
/** @description Defines whether the column is required or not. */
- presence?: boolean;
- };
+ presence?: boolean
+ }
/** @description The name of the column. */
- name?: string;
+ name?: string
/** @description Defines whether the column is automatically generated. */
- autocolumn?: boolean;
+ autocolumn?: boolean
/** @description Defines a Handlebars or JavaScript formula to use, note that Javascript formulas are expected to be provided in the base64 format. */
- formula?: string;
+ formula?: string
/**
* @description Defines whether this is a static or dynamic formula.
* @enum {string}
*/
- formulaType?: "static" | "dynamic";
+ formulaType?: "static" | "dynamic"
}
| {
/**
@@ -810,30 +810,30 @@ export interface components {
| "formula"
| "auto"
| "json"
- | "internal";
+ | "internal"
/** @description A constraint can be applied to the column which will be validated against when a row is saved. */
constraints?: {
/** @enum {string} */
- type?: "string" | "number" | "object" | "boolean";
+ type?: "string" | "number" | "object" | "boolean"
/** @description Defines whether the column is required or not. */
- presence?: boolean;
- };
+ presence?: boolean
+ }
/** @description The name of the column. */
- name?: string;
+ name?: string
/** @description Defines whether the column is automatically generated. */
- autocolumn?: boolean;
- };
- };
+ autocolumn?: boolean
+ }
+ }
/** @description The ID of the table. */
- _id: string;
- };
- };
+ _id: string
+ }
+ }
tableSearch: {
data: {
/** @description The name of the table. */
- name: string;
+ name: string
/** @description The name of the column which should be used in relationship tags when relating to this table. */
- primaryDisplay?: string;
+ primaryDisplay?: string
schema: {
[key: string]:
| {
@@ -841,22 +841,22 @@ export interface components {
* @description A relationship column.
* @enum {string}
*/
- type?: "link";
+ type?: "link"
/** @description A constraint can be applied to the column which will be validated against when a row is saved. */
constraints?: {
/** @enum {string} */
- type?: "string" | "number" | "object" | "boolean";
+ type?: "string" | "number" | "object" | "boolean"
/** @description Defines whether the column is required or not. */
- presence?: boolean;
- };
+ presence?: boolean
+ }
/** @description The name of the column. */
- name?: string;
+ name?: string
/** @description Defines whether the column is automatically generated. */
- autocolumn?: boolean;
+ autocolumn?: boolean
/** @description The name of the column which a relationship column is related to in another table. */
- fieldName?: string;
+ fieldName?: string
/** @description The ID of the table which a relationship column is related to. */
- tableId?: string;
+ tableId?: string
/**
* @description Defines the type of relationship that this column will be used for.
* @enum {string}
@@ -864,40 +864,40 @@ export interface components {
relationshipType?:
| "one-to-many"
| "many-to-one"
- | "many-to-many";
+ | "many-to-many"
/** @description When using a SQL table that contains many to many relationships this defines the table the relationships are linked through. */
- through?: string;
+ through?: string
/** @description When using a SQL table that contains a one to many relationship this defines the foreign key. */
- foreignKey?: string;
+ foreignKey?: string
/** @description When using a SQL table that utilises a through table, this defines the primary key in the through table for this table. */
- throughFrom?: string;
+ throughFrom?: string
/** @description When using a SQL table that utilises a through table, this defines the primary key in the through table for the related table. */
- throughTo?: string;
+ throughTo?: string
}
| {
/**
* @description A formula column.
* @enum {string}
*/
- type?: "formula";
+ type?: "formula"
/** @description A constraint can be applied to the column which will be validated against when a row is saved. */
constraints?: {
/** @enum {string} */
- type?: "string" | "number" | "object" | "boolean";
+ type?: "string" | "number" | "object" | "boolean"
/** @description Defines whether the column is required or not. */
- presence?: boolean;
- };
+ presence?: boolean
+ }
/** @description The name of the column. */
- name?: string;
+ name?: string
/** @description Defines whether the column is automatically generated. */
- autocolumn?: boolean;
+ autocolumn?: boolean
/** @description Defines a Handlebars or JavaScript formula to use, note that Javascript formulas are expected to be provided in the base64 format. */
- formula?: string;
+ formula?: string
/**
* @description Defines whether this is a static or dynamic formula.
* @enum {string}
*/
- formulaType?: "static" | "dynamic";
+ formulaType?: "static" | "dynamic"
}
| {
/**
@@ -917,201 +917,211 @@ export interface components {
| "formula"
| "auto"
| "json"
- | "internal";
+ | "internal"
/** @description A constraint can be applied to the column which will be validated against when a row is saved. */
constraints?: {
/** @enum {string} */
- type?: "string" | "number" | "object" | "boolean";
+ type?: "string" | "number" | "object" | "boolean"
/** @description Defines whether the column is required or not. */
- presence?: boolean;
- };
+ presence?: boolean
+ }
/** @description The name of the column. */
- name?: string;
+ name?: string
/** @description Defines whether the column is automatically generated. */
- autocolumn?: boolean;
- };
- };
+ autocolumn?: boolean
+ }
+ }
/** @description The ID of the table. */
_id: string;
}[];
};
- /** @description The query body must contain the required parameters for the query, this depends on query type, setup and bindings. */
- executeQuery: { [key: string]: unknown };
+ /** @description The parameters required for executing a query. */
+ executeQuery: {
+ /** @description This contains the required parameters for the query, this depends on query type, setup and bindings. */
+ parameters?: { [key: string]: unknown };
+ /** @description For supported query types (currently on REST) pagination can be performed using these properties. */
+ pagination?: {
+ /** @description The page which has been returned from a previous query. */
+ page?: string;
+ /** @description The number of rows to return per page. */
+ limit?: number;
+ };
+ };
executeQueryOutput: {
/** @description The data response from the query. */
- data: { [key: string]: unknown }[];
+ data: { [key: string]: unknown }[]
/** @description Extra information that is not part of the main data, e.g. headers. */
extra?: {
/** @description If carrying out a REST request, this will contain the response headers. */
- headers?: { [key: string]: unknown };
+ headers?: { [key: string]: unknown }
/** @description The raw query response, as a string. */
- raw?: string;
- };
+ raw?: string
+ }
/** @description If pagination is supported, this will contain the bookmark/anchor information for it. */
- pagination?: { [key: string]: unknown };
- };
+ pagination?: { [key: string]: unknown }
+ }
query: {
/** @description The ID of the query. */
- _id: string;
+ _id: string
/** @description The ID of the data source the query belongs to. */
- datasourceId?: string;
+ datasourceId?: string
/** @description The bindings which are required to perform this query. */
- parameters?: string[];
+ parameters?: string[]
/** @description The fields that are used to perform this query, e.g. the sql statement */
- fields?: { [key: string]: unknown };
+ fields?: { [key: string]: unknown }
/**
* @description The verb that describes this query.
* @enum {undefined}
*/
- queryVerb?: "create" | "read" | "update" | "delete";
+ queryVerb?: "create" | "read" | "update" | "delete"
/** @description The name of the query. */
- name: string;
+ name: string
/** @description The schema of the data returned when the query is executed. */
- schema: { [key: string]: unknown };
+ schema: { [key: string]: unknown }
/** @description The JavaScript transformer function, applied after the query responds with data. */
- transformer?: string;
+ transformer?: string
/** @description Whether the query has readable data. */
- readable?: boolean;
- };
+ readable?: boolean
+ }
querySearch: {
data: {
/** @description The ID of the query. */
- _id: string;
+ _id: string
/** @description The ID of the data source the query belongs to. */
- datasourceId?: string;
+ datasourceId?: string
/** @description The bindings which are required to perform this query. */
- parameters?: string[];
+ parameters?: string[]
/** @description The fields that are used to perform this query, e.g. the sql statement */
- fields?: { [key: string]: unknown };
+ fields?: { [key: string]: unknown }
/**
* @description The verb that describes this query.
* @enum {undefined}
*/
- queryVerb?: "create" | "read" | "update" | "delete";
+ queryVerb?: "create" | "read" | "update" | "delete"
/** @description The name of the query. */
- name: string;
+ name: string
/** @description The schema of the data returned when the query is executed. */
- schema: { [key: string]: unknown };
+ schema: { [key: string]: unknown }
/** @description The JavaScript transformer function, applied after the query responds with data. */
- transformer?: string;
+ transformer?: string
/** @description Whether the query has readable data. */
- readable?: boolean;
- }[];
- };
+ readable?: boolean
+ }[]
+ }
user: {
/** @description The email address of the user, this must be unique. */
- email: string;
+ email: string
/** @description The password of the user if using password based login - this will never be returned. This can be left out of subsequent requests (updates) and will be enriched back into the user structure. */
- password?: string;
+ password?: string
/**
* @description The status of the user, if they are active.
* @enum {string}
*/
- status?: "active";
+ status?: "active"
/** @description The first name of the user */
- firstName?: string;
+ firstName?: string
/** @description The last name of the user */
- lastName?: string;
+ lastName?: string
/** @description If set to true forces the user to reset their password on first login. */
- forceResetPassword?: boolean;
+ forceResetPassword?: boolean
/** @description Describes if the user is a builder user or not. */
builder?: {
/** @description If set to true the user will be able to build any app in the system. */
- global?: boolean;
- };
+ global?: boolean
+ }
/** @description Describes if the user is an admin user or not. */
admin?: {
/** @description If set to true the user will be able to administrate the system. */
- global?: boolean;
- };
+ global?: boolean
+ }
/** @description Contains the roles of the user per app (assuming they are not a builder user). */
- roles: { [key: string]: string };
- };
+ roles: { [key: string]: string }
+ }
userOutput: {
data: {
/** @description The email address of the user, this must be unique. */
- email: string;
+ email: string
/** @description The password of the user if using password based login - this will never be returned. This can be left out of subsequent requests (updates) and will be enriched back into the user structure. */
- password?: string;
+ password?: string
/**
* @description The status of the user, if they are active.
* @enum {string}
*/
- status?: "active";
+ status?: "active"
/** @description The first name of the user */
- firstName?: string;
+ firstName?: string
/** @description The last name of the user */
- lastName?: string;
+ lastName?: string
/** @description If set to true forces the user to reset their password on first login. */
- forceResetPassword?: boolean;
+ forceResetPassword?: boolean
/** @description Describes if the user is a builder user or not. */
builder?: {
/** @description If set to true the user will be able to build any app in the system. */
- global?: boolean;
- };
+ global?: boolean
+ }
/** @description Describes if the user is an admin user or not. */
admin?: {
/** @description If set to true the user will be able to administrate the system. */
- global?: boolean;
- };
+ global?: boolean
+ }
/** @description Contains the roles of the user per app (assuming they are not a builder user). */
- roles: { [key: string]: string };
+ roles: { [key: string]: string }
/** @description The ID of the user. */
- _id: string;
- };
- };
+ _id: string
+ }
+ }
userSearch: {
data: {
/** @description The email address of the user, this must be unique. */
- email: string;
+ email: string
/** @description The password of the user if using password based login - this will never be returned. This can be left out of subsequent requests (updates) and will be enriched back into the user structure. */
- password?: string;
+ password?: string
/**
* @description The status of the user, if they are active.
* @enum {string}
*/
- status?: "active";
+ status?: "active"
/** @description The first name of the user */
- firstName?: string;
+ firstName?: string
/** @description The last name of the user */
- lastName?: string;
+ lastName?: string
/** @description If set to true forces the user to reset their password on first login. */
- forceResetPassword?: boolean;
+ forceResetPassword?: boolean
/** @description Describes if the user is a builder user or not. */
builder?: {
/** @description If set to true the user will be able to build any app in the system. */
- global?: boolean;
- };
+ global?: boolean
+ }
/** @description Describes if the user is an admin user or not. */
admin?: {
/** @description If set to true the user will be able to administrate the system. */
- global?: boolean;
- };
+ global?: boolean
+ }
/** @description Contains the roles of the user per app (assuming they are not a builder user). */
- roles: { [key: string]: string };
+ roles: { [key: string]: string }
/** @description The ID of the user. */
- _id: string;
- }[];
- };
+ _id: string
+ }[]
+ }
nameSearch: {
/** @description The name to be used when searching - this will be used in a case insensitive starts with match. */
- name: string;
- };
- };
+ name: string
+ }
+ }
parameters: {
/** @description The ID of the table which this request is targeting. */
- tableId: string;
+ tableId: string
/** @description The ID of the row which this request is targeting. */
- rowId: string;
+ rowId: string
/** @description The ID of the app which this request is targeting. */
- appId: string;
+ appId: string
/** @description The ID of the app which this request is targeting. */
- appIdUrl: string;
+ appIdUrl: string
/** @description The ID of the query which this request is targeting. */
- queryId: string;
+ queryId: string
/** @description The ID of the user which this request is targeting. */
- userId: string;
- };
+ userId: string
+ }
}
export interface operations {}
diff --git a/packages/server/src/environment.js b/packages/server/src/environment.js
index 312ecf313d..bdbbbde79f 100644
--- a/packages/server/src/environment.js
+++ b/packages/server/src/environment.js
@@ -46,6 +46,8 @@ module.exports = {
MULTI_TENANCY: process.env.MULTI_TENANCY,
HTTP_MIGRATIONS: process.env.HTTP_MIGRATIONS,
API_REQ_LIMIT_PER_SEC: process.env.API_REQ_LIMIT_PER_SEC,
+ GOOGLE_CLIENT_ID: process.env.GOOGLE_CLIENT_ID,
+ GOOGLE_CLIENT_SECRET: process.env.GOOGLE_CLIENT_SECRET,
// environment
NODE_ENV: process.env.NODE_ENV,
JEST_WORKER_ID: process.env.JEST_WORKER_ID,
@@ -70,6 +72,7 @@ module.exports = {
ALLOW_DEV_AUTOMATIONS: process.env.ALLOW_DEV_AUTOMATIONS,
DISABLE_THREADING: process.env.DISABLE_THREADING,
QUERY_THREAD_TIMEOUT: process.env.QUERY_THREAD_TIMEOUT,
+ SQL_MAX_ROWS: process.env.SQL_MAX_ROWS,
_set(key, value) {
process.env[key] = value
module.exports[key] = value
diff --git a/packages/server/src/integrations/base/sql.ts b/packages/server/src/integrations/base/sql.ts
index ffa405f016..2e14eae870 100644
--- a/packages/server/src/integrations/base/sql.ts
+++ b/packages/server/src/integrations/base/sql.ts
@@ -9,8 +9,12 @@ import {
} from "../../definitions/datasource"
import { isIsoDateString, SqlClients } from "../utils"
import SqlTableQueryBuilder from "./sqlTable"
+import environment from "../../environment"
-const BASE_LIMIT = 5000
+const envLimit = environment.SQL_MAX_ROWS
+ ? parseInt(environment.SQL_MAX_ROWS)
+ : null
+const BASE_LIMIT = envLimit || 5000
type KnexQuery = Knex.QueryBuilder | Knex
// these are invalid dates sent by the client, need to convert them to a real max date
@@ -27,11 +31,8 @@ function parse(input: any) {
if (typeof input !== "string") {
return input
}
- if (input === MAX_ISO_DATE) {
- return new Date(8640000000000000)
- }
- if (input === MIN_ISO_DATE) {
- return new Date(-8640000000000000)
+ if (input === MAX_ISO_DATE || input === MIN_ISO_DATE) {
+ return null
}
if (isIsoDateString(input)) {
return new Date(input)
@@ -130,11 +131,19 @@ class InternalBuilder {
}
if (filters.range) {
iterate(filters.range, (key, value) => {
- if (!value.high || !value.low) {
- return
+ if (value.low && value.high) {
+ // Use a between operator if we have 2 valid range values
+ const fnc = allOr ? "orWhereBetween" : "whereBetween"
+ query = query[fnc](key, [value.low, value.high])
+ } else if (value.low) {
+ // Use just a single greater than operator if we only have a low
+ const fnc = allOr ? "orWhere" : "where"
+ query = query[fnc](key, ">", value.low)
+ } else if (value.high) {
+ // Use just a single less than operator if we only have a high
+ const fnc = allOr ? "orWhere" : "where"
+ query = query[fnc](key, "<", value.high)
}
- const fnc = allOr ? "orWhereBetween" : "whereBetween"
- query = query[fnc](key, [value.low, value.high])
})
}
if (filters.equal) {
diff --git a/packages/server/src/integrations/dynamodb.ts b/packages/server/src/integrations/dynamodb.ts
index 841dd6ff0d..be3668a08a 100644
--- a/packages/server/src/integrations/dynamodb.ts
+++ b/packages/server/src/integrations/dynamodb.ts
@@ -131,7 +131,9 @@ module DynamoModule {
constructor(config: DynamoDBConfig) {
this.config = config
- this.connect()
+ if (!this.config.endpoint) {
+ this.connect()
+ }
let options = {
correctClockSkew: true,
endpoint: config.endpoint ? config.endpoint : undefined,
diff --git a/packages/server/src/integrations/firebase.ts b/packages/server/src/integrations/firebase.ts
new file mode 100644
index 0000000000..503dae5c95
--- /dev/null
+++ b/packages/server/src/integrations/firebase.ts
@@ -0,0 +1,205 @@
+import {
+ DatasourceFieldTypes,
+ Integration,
+ QueryTypes,
+} from "../definitions/datasource"
+import { IntegrationBase } from "./base/IntegrationBase"
+import { Firestore, WhereFilterOp } from "@google-cloud/firestore"
+
+module Firebase {
+ interface FirebaseConfig {
+ email: string
+ privateKey: string
+ projectId: string
+ serviceAccount?: string
+ }
+
+ const SCHEMA: Integration = {
+ docs: "https://firebase.google.com/docs/firestore/quickstart",
+ friendlyName: "Firestore",
+ description:
+ "Cloud Firestore is a flexible, scalable database for mobile, web, and server development from Firebase and Google Cloud.",
+ datasource: {
+ email: {
+ type: DatasourceFieldTypes.STRING,
+ required: true,
+ },
+ privateKey: {
+ type: DatasourceFieldTypes.STRING,
+ required: true,
+ },
+ projectId: {
+ type: DatasourceFieldTypes.STRING,
+ required: true,
+ },
+ serviceAccount: {
+ type: DatasourceFieldTypes.JSON,
+ required: false,
+ },
+ },
+ query: {
+ create: {
+ type: QueryTypes.JSON,
+ },
+ read: {
+ type: QueryTypes.JSON,
+ },
+ update: {
+ type: QueryTypes.JSON,
+ },
+ delete: {
+ type: QueryTypes.JSON,
+ },
+ },
+ extra: {
+ collection: {
+ displayName: "Collection",
+ type: DatasourceFieldTypes.STRING,
+ required: true,
+ },
+ filterField: {
+ displayName: "Filter field",
+ type: DatasourceFieldTypes.STRING,
+ required: false,
+ },
+ filter: {
+ displayName: "Filter comparison",
+ type: DatasourceFieldTypes.LIST,
+ required: false,
+ data: {
+ read: [
+ "==",
+ "<",
+ "<=",
+ "==",
+ "!=",
+ ">=",
+ ">",
+ "array-contains",
+ "in",
+ "not-in",
+ "array-contains-any",
+ ],
+ },
+ },
+ filterValue: {
+ displayName: "Filter value",
+ type: DatasourceFieldTypes.STRING,
+ required: false,
+ },
+ },
+ }
+
+ class FirebaseIntegration implements IntegrationBase {
+ private config: FirebaseConfig
+ private db: Firestore
+
+ constructor(config: FirebaseConfig) {
+ this.config = config
+ if (config.serviceAccount) {
+ const serviceAccount = JSON.parse(config.serviceAccount)
+ this.db = new Firestore({
+ projectId: serviceAccount.project_id,
+ credentials: {
+ client_email: serviceAccount.client_email,
+ private_key: serviceAccount.private_key,
+ },
+ })
+ } else {
+ this.db = new Firestore({
+ projectId: config.projectId,
+ credentials: {
+ client_email: config.email,
+ private_key: config.privateKey,
+ },
+ })
+ }
+ }
+
+ async create(query: { json: object; extra: { [key: string]: string } }) {
+ try {
+ const documentReference = this.db
+ .collection(query.extra.collection)
+ .doc()
+ await documentReference.set({ ...query.json, id: documentReference.id })
+ const snapshot = await documentReference.get()
+ return snapshot.data()
+ } catch (err) {
+ console.error("Error writing to Firestore", err)
+ throw err
+ }
+ }
+
+ async read(query: { json: object; extra: { [key: string]: string } }) {
+ try {
+ let snapshot
+ const collectionRef = this.db.collection(query.extra.collection)
+ if (
+ query.extra.filterField &&
+ query.extra.filter &&
+ query.extra.filterValue
+ ) {
+ snapshot = await collectionRef
+ .where(
+ query.extra.filterField,
+ query.extra.filter as WhereFilterOp,
+ query.extra.filterValue
+ )
+ .get()
+ } else {
+ snapshot = await collectionRef.get()
+ }
+ const result: any[] = []
+ snapshot.forEach(doc => result.push(doc.data()))
+
+ return result
+ } catch (err) {
+ console.error("Error querying Firestore", err)
+ throw err
+ }
+ }
+
+ async update(query: {
+ json: Record
+ extra: { [key: string]: string }
+ }) {
+ try {
+ await this.db
+ .collection(query.extra.collection)
+ .doc(query.json.id)
+ .update(query.json)
+
+ return (
+ await this.db
+ .collection(query.extra.collection)
+ .doc(query.json.id)
+ .get()
+ ).data()
+ } catch (err) {
+ console.error("Error writing to firebase", err)
+ throw err
+ }
+ }
+
+ async delete(query: {
+ json: { id: string }
+ extra: { [key: string]: string }
+ }) {
+ try {
+ await this.db
+ .collection(query.extra.collection)
+ .doc(query.json.id)
+ .delete()
+ return true
+ } catch (err) {
+ console.error("Error writing to mongodb", err)
+ throw err
+ }
+ }
+ }
+
+ module.exports = {
+ schema: SCHEMA,
+ integration: FirebaseIntegration,
+ }
+}
diff --git a/packages/server/src/integrations/googlesheets.ts b/packages/server/src/integrations/googlesheets.ts
index bb2de26f5d..c58fdea551 100644
--- a/packages/server/src/integrations/googlesheets.ts
+++ b/packages/server/src/integrations/googlesheets.ts
@@ -10,6 +10,7 @@ import { Table, TableSchema } from "../definitions/common"
import { buildExternalTableId } from "./utils"
import { DataSourceOperation, FieldTypes } from "../constants"
import { GoogleSpreadsheet } from "google-spreadsheet"
+import env from "../environment"
module GoogleSheetsModule {
const { getGlobalDB } = require("@budibase/backend-core/tenancy")
@@ -138,13 +139,27 @@ module GoogleSheetsModule {
try {
// Initialise oAuth client
const db = getGlobalDB()
- const googleConfig = await getScopedConfig(db, {
+ let googleConfig = await getScopedConfig(db, {
type: Configs.GOOGLE,
})
+
+ if (!googleConfig) {
+ googleConfig = {
+ clientID: env.GOOGLE_CLIENT_ID,
+ clientSecret: env.GOOGLE_CLIENT_SECRET,
+ }
+ }
+
const oauthClient = new OAuth2Client({
clientId: googleConfig.clientID,
clientSecret: googleConfig.clientSecret,
})
+ oauthClient.on("tokens", tokens => {
+ oauthClient.setCredentials({
+ refresh_token: googleConfig.refreshToken,
+ access_token: tokens.access_token,
+ })
+ })
oauthClient.credentials.access_token = this.config.auth.accessToken
oauthClient.credentials.refresh_token = this.config.auth.refreshToken
this.client.useOAuth2Client(oauthClient)
diff --git a/packages/server/src/integrations/index.ts b/packages/server/src/integrations/index.ts
index 00b00c25fb..7408c6e001 100644
--- a/packages/server/src/integrations/index.ts
+++ b/packages/server/src/integrations/index.ts
@@ -10,6 +10,7 @@ const mysql = require("./mysql")
const arangodb = require("./arangodb")
const rest = require("./rest")
const googlesheets = require("./googlesheets")
+const firebase = require("./firebase")
const { SourceNames } = require("../definitions/datasource")
const environment = require("../environment")
@@ -39,6 +40,8 @@ const INTEGRATIONS = {
[SourceNames.MYSQL]: mysql.integration,
[SourceNames.ARANGODB]: arangodb.integration,
[SourceNames.REST]: rest.integration,
+ [SourceNames.FIREBASE]: firebase.integration,
+ [SourceNames.GOOGLE_SHEETS]: googlesheets.integration,
}
// optionally add oracle integration if the oracle binary can be installed
@@ -50,7 +53,6 @@ if (!(process.arch === "arm64" && process.platform === "darwin")) {
if (environment.SELF_HOSTED) {
DEFINITIONS[SourceNames.GOOGLE_SHEETS] = googlesheets.schema
- INTEGRATIONS[SourceNames.GOOGLE_SHEETS] = googlesheets.integration
}
module.exports = {
diff --git a/packages/server/src/integrations/mysql.ts b/packages/server/src/integrations/mysql.ts
index 8b2c9ac944..6f009bbd4a 100644
--- a/packages/server/src/integrations/mysql.ts
+++ b/packages/server/src/integrations/mysql.ts
@@ -80,6 +80,20 @@ module MySQLModule {
},
}
+ function bindingTypeCoerce(bindings: any[]) {
+ for (let i = 0; i < bindings.length; i++) {
+ const binding = bindings[i]
+ if (typeof binding !== "string") {
+ continue
+ }
+ const matches = binding.match(/^\d*/g)
+ if (matches && matches[0] !== "" && !isNaN(Number(matches[0]))) {
+ bindings[i] = parseFloat(binding)
+ }
+ }
+ return bindings
+ }
+
class MySQLIntegration extends Sql implements DatasourcePlus {
private config: MySQLConfig
private client: any
@@ -122,7 +136,7 @@ module MySQLModule {
// Node MySQL is callback based, so we must wrap our call in a promise
const response = await this.client.query(
query.sql,
- query.bindings || []
+ bindingTypeCoerce(query.bindings || [])
)
return response[0]
} finally {
diff --git a/packages/server/src/integrations/rest.ts b/packages/server/src/integrations/rest.ts
index ea40dfb609..6174613fc8 100644
--- a/packages/server/src/integrations/rest.ts
+++ b/packages/server/src/integrations/rest.ts
@@ -11,6 +11,7 @@ import {
PaginationValues,
} from "../definitions/datasource"
import { IntegrationBase } from "./base/IntegrationBase"
+import { get } from "lodash"
const BodyTypes = {
NONE: "none",
@@ -163,7 +164,7 @@ module RestModule {
// Check if a pagination cursor exists in the response
let nextCursor = null
if (pagination?.responseParam) {
- nextCursor = data?.[pagination.responseParam]
+ nextCursor = get(data, pagination.responseParam)
}
return {
diff --git a/packages/server/src/integrations/tests/sql.spec.js b/packages/server/src/integrations/tests/sql.spec.js
index 6ef82f0113..c2e65c56b7 100644
--- a/packages/server/src/integrations/tests/sql.spec.js
+++ b/packages/server/src/integrations/tests/sql.spec.js
@@ -187,4 +187,55 @@ describe("SQL query builder", () => {
sql: `select * from (select * from \`${TABLE_NAME}\` limit ?) as \`${TABLE_NAME}\``
})
})
+
+ it("should use greater than when only low range specified", () => {
+ const date = new Date()
+ const query = sql._query(generateReadJson({
+ filters: {
+ range: {
+ property: {
+ low: date,
+ }
+ }
+ }
+ }))
+ expect(query).toEqual({
+ bindings: [date, limit],
+ sql: `select * from (select * from "${TABLE_NAME}" where "${TABLE_NAME}"."property" > $1 limit $2) as "${TABLE_NAME}"`
+ })
+ })
+
+ it("should use less than when only high range specified", () => {
+ const date = new Date()
+ const query = sql._query(generateReadJson({
+ filters: {
+ range: {
+ property: {
+ high: date,
+ }
+ }
+ }
+ }))
+ expect(query).toEqual({
+ bindings: [date, limit],
+ sql: `select * from (select * from "${TABLE_NAME}" where "${TABLE_NAME}"."property" < $1 limit $2) as "${TABLE_NAME}"`
+ })
+ })
+
+ it("should use greater than when only low range specified", () => {
+ const date = new Date()
+ const query = sql._query(generateReadJson({
+ filters: {
+ range: {
+ property: {
+ low: date,
+ }
+ }
+ }
+ }))
+ expect(query).toEqual({
+ bindings: [date, limit],
+ sql: `select * from (select * from "${TABLE_NAME}" where "${TABLE_NAME}"."property" > $1 limit $2) as "${TABLE_NAME}"`
+ })
+ })
})
diff --git a/packages/server/src/middleware/authorized.js b/packages/server/src/middleware/authorized.js
index c8d6497ca3..d6f904290a 100644
--- a/packages/server/src/middleware/authorized.js
+++ b/packages/server/src/middleware/authorized.js
@@ -5,6 +5,7 @@ const {
} = require("@budibase/backend-core/roles")
const {
PermissionTypes,
+ PermissionLevels,
doesHaveBasePermission,
} = require("@budibase/backend-core/permissions")
const builderMiddleware = require("./builder")
@@ -64,7 +65,7 @@ const checkAuthorizedResource = async (
}
module.exports =
- (permType, permLevel = null) =>
+ (permType, permLevel = null, opts = { schema: false }) =>
async (ctx, next) => {
// webhooks don't need authentication, each webhook unique
// also internal requests (between services) don't need authorized
@@ -81,15 +82,25 @@ module.exports =
await builderMiddleware(ctx, permType)
// get the resource roles
- let resourceRoles = []
+ let resourceRoles = [],
+ otherLevelRoles
+ const otherLevel =
+ permLevel === PermissionLevels.READ
+ ? PermissionLevels.WRITE
+ : PermissionLevels.READ
const appId = getAppId()
if (appId && hasResource(ctx)) {
resourceRoles = await getRequiredResourceRole(permLevel, ctx)
+ if (opts && opts.schema) {
+ otherLevelRoles = await getRequiredResourceRole(otherLevel, ctx)
+ }
}
// if the resource is public, proceed
- const isPublicResource = resourceRoles.includes(BUILTIN_ROLE_IDS.PUBLIC)
- if (isPublicResource) {
+ if (
+ resourceRoles.includes(BUILTIN_ROLE_IDS.PUBLIC) ||
+ (otherLevelRoles && otherLevelRoles.includes(BUILTIN_ROLE_IDS.PUBLIC))
+ ) {
return next()
}
@@ -98,8 +109,17 @@ module.exports =
return ctx.throw(403, "Session not authenticated")
}
- // check authorized
- await checkAuthorized(ctx, resourceRoles, permType, permLevel)
+ try {
+ // check authorized
+ await checkAuthorized(ctx, resourceRoles, permType, permLevel)
+ } catch (err) {
+ // this is a schema, check if
+ if (opts && opts.schema && permLevel) {
+ await checkAuthorized(ctx, otherLevelRoles, permType, otherLevel)
+ } else {
+ throw err
+ }
+ }
// csrf protection
return csrf(ctx, next)
diff --git a/packages/server/src/middleware/currentapp.js b/packages/server/src/middleware/currentapp.js
index 70dd1bf578..bc9462759c 100644
--- a/packages/server/src/middleware/currentapp.js
+++ b/packages/server/src/middleware/currentapp.js
@@ -1,5 +1,5 @@
const {
- getAppId,
+ getAppIdFromCtx,
setCookie,
getCookie,
clearCookie,
@@ -17,7 +17,7 @@ const { doInAppContext } = require("@budibase/backend-core/context")
module.exports = async (ctx, next) => {
// try to get the appID from the request
- let requestAppId = getAppId(ctx)
+ let requestAppId = await getAppIdFromCtx(ctx)
// get app cookie if it exists
let appCookie = null
try {
@@ -71,21 +71,22 @@ module.exports = async (ctx, next) => {
}
return doInAppContext(appId, async () => {
- let noCookieSet = false
+ let skipCookie = false
// if the user not in the right tenant then make sure they have no permissions
// need to judge this only based on the request app ID,
if (
env.MULTI_TENANCY &&
ctx.user &&
requestAppId &&
- !isUserInAppTenant(requestAppId)
+ !isUserInAppTenant(requestAppId, ctx.user)
) {
// don't error, simply remove the users rights (they are a public user)
delete ctx.user.builder
delete ctx.user.admin
delete ctx.user.roles
+ ctx.isAuthenticated = false
roleId = BUILTIN_ROLE_IDS.PUBLIC
- noCookieSet = true
+ skipCookie = true
}
ctx.appId = appId
@@ -105,7 +106,7 @@ module.exports = async (ctx, next) => {
(requestAppId !== appId ||
appCookie == null ||
appCookie.appId !== requestAppId) &&
- !noCookieSet
+ !skipCookie
) {
setCookie(ctx, { appId }, Cookies.CurrentApp)
}
diff --git a/packages/server/src/middleware/publicApi.js b/packages/server/src/middleware/publicApi.js
new file mode 100644
index 0000000000..241873f5f9
--- /dev/null
+++ b/packages/server/src/middleware/publicApi.js
@@ -0,0 +1,21 @@
+const { Headers } = require("@budibase/backend-core/constants")
+const { getAppIdFromCtx } = require("@budibase/backend-core/utils")
+
+module.exports = function ({ requiresAppId } = {}) {
+ return async (ctx, next) => {
+ const appId = await getAppIdFromCtx(ctx)
+ if (requiresAppId && !appId) {
+ ctx.throw(
+ 400,
+ `Invalid app ID provided, please check the ${Headers.APP_ID} header.`
+ )
+ }
+ if (!ctx.headers[Headers.API_KEY]) {
+ ctx.throw(
+ 400,
+ `Invalid API key provided, please check the ${Headers.API_KEY} header.`
+ )
+ }
+ return next()
+ }
+}
diff --git a/packages/server/src/middleware/tests/authorized.spec.js b/packages/server/src/middleware/tests/authorized.spec.js
index 9cfa9d368f..cf15b28458 100644
--- a/packages/server/src/middleware/tests/authorized.spec.js
+++ b/packages/server/src/middleware/tests/authorized.spec.js
@@ -35,9 +35,7 @@ class TestConfiguration {
}
executeMiddleware() {
- return doInAppContext(APP_ID, () => {
- return this.middleware(this.ctx, this.next)
- })
+ return this.middleware(this.ctx, this.next)
}
setUser(user) {
diff --git a/packages/server/src/middleware/tests/currentapp.spec.js b/packages/server/src/middleware/tests/currentapp.spec.js
index 4e53a6a4c0..bee07cbf91 100644
--- a/packages/server/src/middleware/tests/currentapp.spec.js
+++ b/packages/server/src/middleware/tests/currentapp.spec.js
@@ -38,7 +38,7 @@ function mockAuthWithNoCookie() {
},
}))
jest.mock("@budibase/backend-core/utils", () => ({
- getAppId: jest.fn(),
+ getAppIdFromCtx: jest.fn(),
setCookie: jest.fn(),
getCookie: jest.fn(),
}))
@@ -51,7 +51,7 @@ function mockAuthWithCookie() {
jest.resetModules()
mockWorker()
jest.mock("@budibase/backend-core/utils", () => ({
- getAppId: () => {
+ getAppIdFromCtx: () => {
return "app_test"
},
setCookie: jest.fn(),
@@ -143,7 +143,7 @@ describe("Current app middleware", () => {
it("should perform correct when no cookie exists", async () => {
mockReset()
jest.mock("@budibase/backend-core/utils", () => ({
- getAppId: () => {
+ getAppIdFromCtx: () => {
return "app_test"
},
setCookie: jest.fn(),
@@ -158,7 +158,7 @@ describe("Current app middleware", () => {
it("lastly check what occurs when cookie doesn't need updated", async () => {
mockReset()
jest.mock("@budibase/backend-core/utils", () => ({
- getAppId: () => {
+ getAppIdFromCtx: () => {
return "app_test"
},
setCookie: jest.fn(),
diff --git a/packages/server/src/tests/utilities/TestConfiguration.js b/packages/server/src/tests/utilities/TestConfiguration.js
index 1d280fdd4b..6ebafa8421 100644
--- a/packages/server/src/tests/utilities/TestConfiguration.js
+++ b/packages/server/src/tests/utilities/TestConfiguration.js
@@ -80,7 +80,7 @@ class TestConfiguration {
return request.body
}
// check if already in a context
- if (context.getAppId() == null) {
+ if (context.getAppId() == null && this.appId !== null) {
return context.doInAppContext(this.appId, async () => {
return run()
})
diff --git a/packages/server/src/threads/automation.js b/packages/server/src/threads/automation.js
index c0843a286c..f1df5c3dab 100644
--- a/packages/server/src/threads/automation.js
+++ b/packages/server/src/threads/automation.js
@@ -1,13 +1,11 @@
require("./utils").threadSetup()
-const env = require("../environment")
const actions = require("../automations/actions")
const automationUtils = require("../automations/automationUtils")
const AutomationEmitter = require("../events/AutomationEmitter")
const { processObject } = require("@budibase/string-templates")
const { DEFAULT_TENANT_ID } = require("@budibase/backend-core/constants")
-const { DocumentTypes, isDevAppID } = require("../db/utils")
+const { DocumentTypes } = require("../db/utils")
const { doInTenant } = require("@budibase/backend-core/tenancy")
-const usage = require("../utilities/usageQuota")
const { definitions: triggerDefs } = require("../automations/triggerInfo")
const { doInAppContext, getAppDB } = require("@budibase/backend-core/context")
@@ -120,11 +118,6 @@ class Orchestrator {
return err
}
}
-
- // Increment quota for automation runs
- if (!env.SELF_HOSTED && !isDevAppID(this._appId)) {
- await usage.update(usage.Properties.AUTOMATION, 1)
- }
return this.executionOutput
}
}
diff --git a/packages/server/src/threads/query.js b/packages/server/src/threads/query.js
index 3ce138b72f..270c2cc713 100644
--- a/packages/server/src/threads/query.js
+++ b/packages/server/src/threads/query.js
@@ -33,10 +33,12 @@ class QueryRunner {
return fields
}
const bindings = findHBSBlocks(sql)
- let variables = []
+ let variables = [],
+ arrays = []
for (let binding of bindings) {
- let variable = integration.getBindingIdentifier()
- variables.push(binding)
+ // look for array/list operations in the SQL statement, which will need handled later
+ const listRegex = new RegExp(`(in|IN|In|iN)( )+${binding}`)
+ const listRegexMatch = sql.match(listRegex)
// check if the variable was used as part of a string concat e.g. 'Hello {{binding}}'
const charConstRegex = new RegExp(`'[^']*${binding}[^']*'`)
const charConstMatch = sql.match(charConstRegex)
@@ -46,15 +48,45 @@ class QueryRunner {
part2 = `'${part2.substring(0, part2.length - 1)}'`
sql = sql.replace(
charConstMatch[0],
- integration.getStringConcat([part1, variable, part2])
+ integration.getStringConcat([
+ part1,
+ integration.getBindingIdentifier(),
+ part2,
+ ])
+ )
+ }
+ // generate SQL parameterised array
+ else if (listRegexMatch) {
+ arrays.push(binding)
+ // determine the length of the array
+ const value = this.enrichQueryFields([binding], parameters)[0].split(
+ ","
+ )
+ // build a string like ($1, $2, $3)
+ sql = sql.replace(
+ binding,
+ `(${Array.apply(null, Array(value.length))
+ .map(() => integration.getBindingIdentifier())
+ .join(",")})`
)
} else {
- sql = sql.replace(binding, variable)
+ sql = sql.replace(binding, integration.getBindingIdentifier())
}
+ variables.push(binding)
}
// replicate the knex structure
fields.sql = sql
fields.bindings = this.enrichQueryFields(variables, parameters)
+ // check for arrays in the data
+ let updated = []
+ for (let i = 0; i < variables.length; i++) {
+ if (arrays.includes(variables[i])) {
+ updated = updated.concat(fields.bindings[i].split(","))
+ } else {
+ updated.push(fields.bindings[i])
+ }
+ }
+ fields.bindings = updated
return fields
}
diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock
index 8aa64db0c2..0ad1593a13 100644
--- a/packages/server/yarn.lock
+++ b/packages/server/yarn.lock
@@ -995,10 +995,10 @@
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
-"@budibase/backend-core@^1.0.84":
- version "1.0.84"
- resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.84.tgz#9fb01669129838419c57f1723e9274cb4bb9dfd5"
- integrity sha512-8hqRxSHO8A46f/hyzcqCdlku05yXBVEea1/FJdkoEDoCPhbuv04VHQ/f/dwkWctQ/oL8fm8MHpCA4ApyO7bnJA==
+"@budibase/backend-core@^1.0.97":
+ version "1.0.97"
+ resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.97.tgz#32bd09324437256bcfedda11d34fc4c4cb1a5b9b"
+ integrity sha512-NLH6fbWpU0Ej0dTL37PoEAMRMI8zYVwnJI1b74VqWFmyR/moOmyPcptfLnysY1aD5hizHgz+P8sFYsSGKiMozg==
dependencies:
"@techpass/passport-openidconnect" "^0.3.0"
aws-sdk "^2.901.0"
@@ -1068,13 +1068,13 @@
svelte-flatpickr "^3.2.3"
svelte-portal "^1.0.0"
-"@budibase/bbui@^1.0.84":
- version "1.0.84"
- resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-1.0.84.tgz#8bf2f3d93aaf71ae353f93b10cb34e06c99d8176"
- integrity sha512-GO2qXq5wJ00YCdgl93fP1y9eLwAbX0fpt9WVqNYWcgUzAMkeQAOPr7S0ud05GwLZPo736exxqh6RzSwo5H73sg==
+"@budibase/bbui@^1.0.97":
+ version "1.0.97"
+ resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-1.0.97.tgz#6d36cdbeeaaf3a7b299a8a677f0739b682b49bf3"
+ integrity sha512-AMwDCz0qm4rZp50TY83JJTjqOAlZPdirzsLM4Iydn2dWlaqpcwnB3VZOzgb+mC72uH5eKeqI74Nu7hh3CvtXBw==
dependencies:
"@adobe/spectrum-css-workflow-icons" "^1.2.1"
- "@budibase/string-templates" "^1.0.84"
+ "@budibase/string-templates" "^1.0.97"
"@spectrum-css/actionbutton" "^1.0.1"
"@spectrum-css/actiongroup" "^1.0.1"
"@spectrum-css/avatar" "^3.0.2"
@@ -1120,14 +1120,14 @@
svelte-flatpickr "^3.2.3"
svelte-portal "^1.0.0"
-"@budibase/client@^1.0.84":
- version "1.0.84"
- resolved "https://registry.yarnpkg.com/@budibase/client/-/client-1.0.84.tgz#7d29cd03a3611fb580ced1bb911b45e73a8c7832"
- integrity sha512-sZC3/7KQXPHS/jDyeTiPKK8Ri81JgtgInIfEvpd45V5jeg5kNo0L1m37xZgQEzQCqSqr47veM6WN7Kl3WYZr0g==
+"@budibase/client@^1.0.97":
+ version "1.0.97"
+ resolved "https://registry.yarnpkg.com/@budibase/client/-/client-1.0.97.tgz#e110737c98fb0f7145cf1f5ec41912ff46fc0c3f"
+ integrity sha512-bdXVVZe6m+P4azdGvU2AoVMDC+bQ2MUkot5hTcRTfyCAwqCQABlkL/t+iA4Zv8feFc5ZUtfrsCIm+jOKGEUUow==
dependencies:
- "@budibase/bbui" "^1.0.84"
- "@budibase/frontend-core" "^1.0.84"
- "@budibase/string-templates" "^1.0.84"
+ "@budibase/bbui" "^1.0.97"
+ "@budibase/frontend-core" "^1.0.97"
+ "@budibase/string-templates" "^1.0.97"
"@spectrum-css/button" "^3.0.3"
"@spectrum-css/card" "^3.0.3"
"@spectrum-css/divider" "^1.0.3"
@@ -1147,12 +1147,12 @@
svelte-flatpickr "^3.1.0"
svelte-spa-router "^3.0.5"
-"@budibase/frontend-core@^1.0.84":
- version "1.0.84"
- resolved "https://registry.yarnpkg.com/@budibase/frontend-core/-/frontend-core-1.0.84.tgz#d21594ddb521b79e2ac1b5322903887268f8a9aa"
- integrity sha512-v6vTIVq8p+1ytnCWckYUqzzJ4Ylo6DF4C/pi2x5UrZxZuU7tQPMYGktHGQOouosHoGoZXsnPXJooeFHy43j0OQ==
+"@budibase/frontend-core@^1.0.97":
+ version "1.0.97"
+ resolved "https://registry.yarnpkg.com/@budibase/frontend-core/-/frontend-core-1.0.97.tgz#530a0c716fbc93dd38d7abcc22b3131030f9cd16"
+ integrity sha512-B2LG9UIEKSLE0NBhPlVLYXAypjBZgiPdqGwoNm7xcWZHG12YzYWqflV3NLwaDx9Qt3UTIaRzXqBGoNNQCGdUdQ==
dependencies:
- "@budibase/bbui" "^1.0.84"
+ "@budibase/bbui" "^1.0.97"
lodash "^4.17.21"
svelte "^3.46.2"
@@ -1199,10 +1199,10 @@
svelte-apexcharts "^1.0.2"
svelte-flatpickr "^3.1.0"
-"@budibase/string-templates@^1.0.84":
- version "1.0.84"
- resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-1.0.84.tgz#66669e9898ed20c6be2c46a5eb19d55003eb6bcb"
- integrity sha512-6Tv/TfGkmr3uBwNdZ3eKAPKwdsRTZbuQ+02puH+EcJK2leCerINo1SpAHf1BOmjQJynKeslKpSkUiisRVerMEg==
+"@budibase/string-templates@^1.0.97":
+ version "1.0.97"
+ resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-1.0.97.tgz#b7485cb8774d6dff8280fbf411c6383b82add72d"
+ integrity sha512-8NfpYzDJgSkic3E0ARfNsPsFEMmOcH+kEeTioLkNnkKrviIRhSQ9Oa3S87QIYo5WGYxpEFEfhYutXsbp3GTLbg==
dependencies:
"@budibase/handlebars-helpers" "^0.11.8"
dayjs "^1.10.4"
@@ -1302,6 +1302,35 @@
pump "^3.0.0"
secure-json-parse "^2.1.0"
+"@google-cloud/firestore@^5.0.2":
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-5.0.2.tgz#36923fde45987f928a220d347f341c5602f9e340"
+ integrity sha512-xlGcNYaW0nvUMzNn2+pLfbEBVt6oysVqtM89faMgZWkWfEtvIQGS0h5PRdLlcqufNzRCX3yIGv29Pb+03ys+VA==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ functional-red-black-tree "^1.0.1"
+ google-gax "^2.24.1"
+ protobufjs "^6.8.6"
+
+"@grpc/grpc-js@~1.5.0":
+ version "1.5.9"
+ resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.5.9.tgz#df44b3d6bc1d5eb4779aab96e00f6084fd07a3c8"
+ integrity sha512-un+cXqErq5P4p3+WgYVNVh7FB51MSnaoRef7QWDcMXKR6FX2R6Z/bltcJMxNNdTUMC85lkOQcpnAAetFziPSng==
+ dependencies:
+ "@grpc/proto-loader" "^0.6.4"
+ "@types/node" ">=12.12.47"
+
+"@grpc/proto-loader@^0.6.1", "@grpc/proto-loader@^0.6.4":
+ version "0.6.9"
+ resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.9.tgz#4014eef366da733f8e04a9ddd7376fe8a58547b7"
+ integrity sha512-UlcCS8VbsU9d3XTXGiEVFonN7hXk+oMXZtoHHG2oSA1/GcDP1q6OUgs20PzHDGizzyi8ufGSUDlk3O2NyY7leg==
+ dependencies:
+ "@types/long" "^4.0.1"
+ lodash.camelcase "^4.3.0"
+ long "^4.0.0"
+ protobufjs "^6.10.0"
+ yargs "^16.2.0"
+
"@hapi/address@^4.1.0":
version "4.1.0"
resolved "https://registry.yarnpkg.com/@hapi/address/-/address-4.1.0.tgz#d60c5c0d930e77456fdcde2598e77302e2955e1d"
@@ -1961,26 +1990,58 @@
resolved "https://registry.yarnpkg.com/@node-redis/time-series/-/time-series-1.0.2.tgz#5dd3638374edd85ebe0aa6b0e87addc88fb9df69"
integrity sha512-HGQ8YooJ8Mx7l28tD7XjtB3ImLEjlUxG1wC1PAjxu6hPJqjPshUZxAICzDqDjtIbhDTf48WXXUcx8TQJB1XTKA==
-"@nodelib/fs.scandir@2.1.5":
- version "2.1.5"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
- integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
- dependencies:
- "@nodelib/fs.stat" "2.0.5"
- run-parallel "^1.1.9"
+"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
+ integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78=
-"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
- integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+"@protobufjs/base64@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735"
+ integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==
-"@nodelib/fs.walk@^1.2.3":
- version "1.2.8"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
- integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+"@protobufjs/codegen@^2.0.4":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb"
+ integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==
+
+"@protobufjs/eventemitter@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70"
+ integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A=
+
+"@protobufjs/fetch@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45"
+ integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=
dependencies:
- "@nodelib/fs.scandir" "2.1.5"
- fastq "^1.6.0"
+ "@protobufjs/aspromise" "^1.1.1"
+ "@protobufjs/inquire" "^1.1.0"
+
+"@protobufjs/float@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1"
+ integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=
+
+"@protobufjs/inquire@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089"
+ integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=
+
+"@protobufjs/path@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d"
+ integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=
+
+"@protobufjs/pool@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54"
+ integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=
+
+"@protobufjs/utf8@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
+ integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=
"@rollup/plugin-inject@^4.0.0":
version "4.0.4"
@@ -2290,9 +2351,9 @@
integrity sha512-UtfW8bA1quYnJM6v/lp6AVYGnQFkiUix2FHAf/4VHVrk4mh7ydtLiXS0IR3Kx+t/S8FWdSdSQHDZ8tHbY1ZLZg==
"@spectrum-css/tag@^3.1.4":
- version "3.3.5"
- resolved "https://registry.yarnpkg.com/@spectrum-css/tag/-/tag-3.3.5.tgz#f83ded301c8ed334d2c9a33f586807a3d423e588"
- integrity sha512-KhUZ75xzjnbYPg1ztwWp5xvWYVkG5+KH/2OiTsE5vA9LXZ3Z1O21c5YpFg5FVCvAWN/fwfwpxsi7sp38x7FlLg==
+ version "3.3.7"
+ resolved "https://registry.yarnpkg.com/@spectrum-css/tag/-/tag-3.3.7.tgz#4d7ade045697c2f9f1dec9d8664d73ddb35ec047"
+ integrity sha512-7Mgssli+z8vhb42SzdFQhI3v1y3RYn1B/QrVSguPjNc/18/EW+tupS6JTmh0afkXrJOdJO3BCJVoDCmAozZwog==
"@spectrum-css/tags@^3.0.2":
version "3.0.3"
@@ -2635,10 +2696,20 @@
"@types/koa-compose" "*"
"@types/node" "*"
+"@types/lodash@4.14.180":
+ version "4.14.180"
+ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.180.tgz#4ab7c9ddfc92ec4a887886483bc14c79fb380670"
+ integrity sha512-XOKXa1KIxtNXgASAnwj7cnttJxS4fksBRywK/9LzRV5YxrF80BXZIGeQSuoESQ/VkUj30Ae0+YcuHc15wJCB2g==
+
+"@types/long@^4.0.0", "@types/long@^4.0.1":
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9"
+ integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==
+
"@types/marked@^4.0.1":
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/@types/marked/-/marked-4.0.2.tgz#cb2dbf10da2f41cf20bd91fb5f89b67540c282f7"
- integrity sha512-auNrZ/c0w6wsM9DccwVxWHssrMDezHUAXNesdp2RQrCVCyrQbOiSq7yqdJKrUQQpw9VTm7CGYJH2A/YG7jjrjQ==
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/@types/marked/-/marked-4.0.3.tgz#2098f4a77adaba9ce881c9e0b6baf29116e5acc4"
+ integrity sha512-HnMWQkLJEf/PnxZIfbm0yGJRRZYYMhb++O9M36UCTA9z53uPvVoSlAwJr3XOpDEryb7Hwl1qAx/MV6YIW1RXxg==
"@types/mime@^1":
version "1.3.2"
@@ -2650,6 +2721,11 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.7.tgz#36820945061326978c42a01e56b61cd223dfdc42"
integrity sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==
+"@types/node@>=12.12.47", "@types/node@>=13.7.0":
+ version "17.0.23"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da"
+ integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==
+
"@types/node@>=8.0.0 <15":
version "14.17.33"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.33.tgz#011ee28e38dc7aee1be032ceadf6332a0ab15b12"
@@ -2777,50 +2853,6 @@
dependencies:
"@types/yargs-parser" "*"
-"@typescript-eslint/parser@4.28.0":
- version "4.28.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.28.0.tgz#2404c16751a28616ef3abab77c8e51d680a12caa"
- integrity sha512-7x4D22oPY8fDaOCvkuXtYYTQ6mTMmkivwEzS+7iml9F9VkHGbbZ3x4fHRwxAb5KeuSkLqfnYjs46tGx2Nour4A==
- dependencies:
- "@typescript-eslint/scope-manager" "4.28.0"
- "@typescript-eslint/types" "4.28.0"
- "@typescript-eslint/typescript-estree" "4.28.0"
- debug "^4.3.1"
-
-"@typescript-eslint/scope-manager@4.28.0":
- version "4.28.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.28.0.tgz#6a3009d2ab64a30fc8a1e257a1a320067f36a0ce"
- integrity sha512-eCALCeScs5P/EYjwo6se9bdjtrh8ByWjtHzOkC4Tia6QQWtQr3PHovxh3TdYTuFcurkYI4rmFsRFpucADIkseg==
- dependencies:
- "@typescript-eslint/types" "4.28.0"
- "@typescript-eslint/visitor-keys" "4.28.0"
-
-"@typescript-eslint/types@4.28.0":
- version "4.28.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.0.tgz#a33504e1ce7ac51fc39035f5fe6f15079d4dafb0"
- integrity sha512-p16xMNKKoiJCVZY5PW/AfILw2xe1LfruTcfAKBj3a+wgNYP5I9ZEKNDOItoRt53p4EiPV6iRSICy8EPanG9ZVA==
-
-"@typescript-eslint/typescript-estree@4.28.0":
- version "4.28.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.0.tgz#e66d4e5aa2ede66fec8af434898fe61af10c71cf"
- integrity sha512-m19UQTRtxMzKAm8QxfKpvh6OwQSXaW1CdZPoCaQuLwAq7VZMNuhJmZR4g5281s2ECt658sldnJfdpSZZaxUGMQ==
- dependencies:
- "@typescript-eslint/types" "4.28.0"
- "@typescript-eslint/visitor-keys" "4.28.0"
- debug "^4.3.1"
- globby "^11.0.3"
- is-glob "^4.0.1"
- semver "^7.3.5"
- tsutils "^3.21.0"
-
-"@typescript-eslint/visitor-keys@4.28.0":
- version "4.28.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.0.tgz#255c67c966ec294104169a6939d96f91c8a89434"
- integrity sha512-PjJyTWwrlrvM5jazxYF5ZPs/nl0kHDZMVbuIcbpawVXaDPelp3+S9zpOz5RmVUfS/fD5l5+ZXNKnWhNYjPzCvw==
- dependencies:
- "@typescript-eslint/types" "4.28.0"
- eslint-visitor-keys "^2.0.0"
-
"@webassemblyjs/ast@1.11.1":
version "1.11.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
@@ -3363,11 +3395,6 @@ array-sort@^1.0.0:
get-value "^2.0.6"
kind-of "^5.0.2"
-array-union@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
- integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
-
array-unique@^0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
@@ -3494,9 +3521,9 @@ aws-sdk@^2.767.0:
xml2js "0.4.19"
aws-sdk@^2.901.0:
- version "2.1090.0"
- resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1090.0.tgz#c30e4cbc177e4c3b7792020cc79dfaf155cc8197"
- integrity sha512-oHdfbiuSjK9mn6rrm5fsitdwv7jEiYzaYB0Xz1kqjIczcVX3JEc+9ySdxlueQf4o5G3RVUcLRF2pIc5j9vcHSg==
+ version "2.1100.0"
+ resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1100.0.tgz#20bbabc12fbc316067ba02af66bf371a455af9e3"
+ integrity sha512-StLSQCYFmFPxjoMntIb+8jUZ0vzmq3xkrwG5e/4qU1bSGWCmhhjvz6c+4j38AnIy8MFV1+tV8RArbhLUEV2dGw==
dependencies:
buffer "4.9.2"
events "1.1.1"
@@ -4944,13 +4971,6 @@ diff@^4.0.1:
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
-dir-glob@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
- integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
- dependencies:
- path-type "^4.0.0"
-
docker-compose@^0.23.6:
version "0.23.13"
resolved "https://registry.yarnpkg.com/docker-compose/-/docker-compose-0.23.13.tgz#77d37bd05b6a966345f631e6d05e961c79514f06"
@@ -5033,6 +5053,16 @@ duplexer3@^0.1.4:
resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
+duplexify@^4.0.0:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0"
+ integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==
+ dependencies:
+ end-of-stream "^1.4.1"
+ inherits "^2.0.3"
+ readable-stream "^3.1.1"
+ stream-shift "^1.0.0"
+
easymde@^2.16.1:
version "2.16.1"
resolved "https://registry.yarnpkg.com/easymde/-/easymde-2.16.1.tgz#f4c2380312615cb33826f1a1fecfaa4022ff551a"
@@ -5447,11 +5477,6 @@ eslint-visitor-keys@^1.1.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
-eslint-visitor-keys@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
- integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
-
eslint@^6.8.0:
version "6.8.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb"
@@ -5774,17 +5799,6 @@ fast-deep-equal@^3.1.1:
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
-fast-glob@^3.1.1:
- version "3.2.7"
- resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1"
- integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==
- dependencies:
- "@nodelib/fs.stat" "^2.0.2"
- "@nodelib/fs.walk" "^1.2.3"
- glob-parent "^5.1.2"
- merge2 "^1.3.0"
- micromatch "^4.0.4"
-
fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
@@ -5805,7 +5819,7 @@ fast-safe-stringify@^2.0.7, fast-safe-stringify@^2.0.8:
resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884"
integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==
-fast-text-encoding@^1.0.0:
+fast-text-encoding@^1.0.0, fast-text-encoding@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz#ec02ac8e01ab8a319af182dae2681213cfe9ce53"
integrity sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==
@@ -5827,13 +5841,6 @@ fastify-warning@^0.2.0:
resolved "https://registry.yarnpkg.com/fastify-warning/-/fastify-warning-0.2.0.tgz#e717776026a4493dc9a2befa44db6d17f618008f"
integrity sha512-s1EQguBw/9qtc1p/WTY4eq9WMRIACkj+HTcOIK1in4MV5aFaQC9ZCIt0dJ7pr5bIf4lPpHvAtP2ywpTNgs7hqw==
-fastq@^1.6.0:
- version "1.13.0"
- resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
- integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
- dependencies:
- reusify "^1.0.4"
-
fb-watchman@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85"
@@ -6317,7 +6324,7 @@ gifwrap@^0.9.2:
image-q "^1.1.1"
omggif "^1.0.10"
-glob-parent@^5.0.0, glob-parent@^5.1.2, glob-parent@~5.1.2:
+glob-parent@^5.0.0, glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
@@ -6396,18 +6403,6 @@ globalyzer@0.1.0:
resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465"
integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==
-globby@^11.0.3:
- version "11.0.4"
- resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5"
- integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==
- dependencies:
- array-union "^2.1.0"
- dir-glob "^3.0.1"
- fast-glob "^3.1.1"
- ignore "^5.1.4"
- merge2 "^1.3.0"
- slash "^3.0.0"
-
globrex@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098"
@@ -6443,6 +6438,21 @@ google-auth-library@^7.11.0:
jws "^4.0.0"
lru-cache "^6.0.0"
+google-auth-library@^7.14.0:
+ version "7.14.1"
+ resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-7.14.1.tgz#e3483034162f24cc71b95c8a55a210008826213c"
+ integrity sha512-5Rk7iLNDFhFeBYc3s8l1CqzbEBcdhwR193RlD4vSNFajIcINKI8W8P0JLmBpwymHqqWbX34pJDQu39cSy/6RsA==
+ dependencies:
+ arrify "^2.0.0"
+ base64-js "^1.3.0"
+ ecdsa-sig-formatter "^1.0.11"
+ fast-text-encoding "^1.0.0"
+ gaxios "^4.0.0"
+ gcp-metadata "^4.2.0"
+ gtoken "^5.0.4"
+ jws "^4.0.0"
+ lru-cache "^6.0.0"
+
google-auth-library@~0.10.0:
version "0.10.0"
resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-0.10.0.tgz#6e15babee85fd1dd14d8d128a295b6838d52136e"
@@ -6453,6 +6463,25 @@ google-auth-library@~0.10.0:
lodash.noop "^3.0.1"
request "^2.74.0"
+google-gax@^2.24.1:
+ version "2.30.1"
+ resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-2.30.1.tgz#57a2826d53837bc74b071c3d27355c7bed5a9939"
+ integrity sha512-AR00wrunctUqwKQFl15Yq5bo9NuFLnT0zguZYCf8eAqoOUMbxn9V1L0ONCtV4+P9z7sLu+cjtgl+5b4eRZvktg==
+ dependencies:
+ "@grpc/grpc-js" "~1.5.0"
+ "@grpc/proto-loader" "^0.6.1"
+ "@types/long" "^4.0.0"
+ abort-controller "^3.0.0"
+ duplexify "^4.0.0"
+ fast-text-encoding "^1.0.3"
+ google-auth-library "^7.14.0"
+ is-stream-ended "^0.1.4"
+ node-fetch "^2.6.1"
+ object-hash "^3.0.0"
+ proto3-json-serializer "^0.1.8"
+ protobufjs "6.11.2"
+ retry-request "^4.0.0"
+
google-p12-pem@^0.1.0:
version "0.1.2"
resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-0.1.2.tgz#33c46ab021aa734fa0332b3960a9a3ffcb2f3177"
@@ -6841,11 +6870,6 @@ ignore@^4.0.6:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
-ignore@^5.1.4:
- version "5.1.9"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.9.tgz#9ec1a5cbe8e1446ec60d4420060d43aa6e7382fb"
- integrity sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==
-
image-q@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/image-q/-/image-q-1.1.1.tgz#fc84099664460b90ca862d9300b6bfbbbfbf8056"
@@ -7328,6 +7352,11 @@ is-shared-array-buffer@^1.0.1:
resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6"
integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==
+is-stream-ended@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/is-stream-ended/-/is-stream-ended-0.1.4.tgz#f50224e95e06bce0e356d440a4827cd35b267eda"
+ integrity sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==
+
is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
@@ -9085,6 +9114,11 @@ lodash._reinterpolate@^3.0.0:
resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
+lodash.camelcase@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+ integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
+
lodash.debounce@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
@@ -9414,11 +9448,6 @@ merge-stream@^2.0.0:
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
-merge2@^1.3.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
- integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-
methods@^1.0.1, methods@^1.1.1, methods@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
@@ -9518,9 +9547,9 @@ min-document@^2.19.0:
brace-expansion "^1.1.7"
minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
- integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
+ integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
mixin-deep@^1.2.0:
version "1.3.2"
@@ -9894,6 +9923,11 @@ object-copy@^0.1.0:
define-property "^0.2.5"
kind-of "^3.0.3"
+object-hash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9"
+ integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==
+
object-inspect@^1.11.0, object-inspect@^1.9.0:
version "1.11.0"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1"
@@ -10366,11 +10400,6 @@ path-type@^3.0.0:
dependencies:
pify "^3.0.0"
-path-type@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
- integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
-
pause@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d"
@@ -10936,6 +10965,32 @@ proto-list@~1.2.1:
resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=
+proto3-json-serializer@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/proto3-json-serializer/-/proto3-json-serializer-0.1.8.tgz#f80f9afc1efe5ed9a9856bbbd17dc7cabd7ce9a3"
+ integrity sha512-ACilkB6s1U1gWnl5jtICpnDai4VCxmI9GFxuEaYdxtDG2oVI3sVFIUsvUZcQbJgtPM6p+zqKbjTKQZp6Y4FpQw==
+ dependencies:
+ protobufjs "^6.11.2"
+
+protobufjs@6.11.2, protobufjs@^6.10.0, protobufjs@^6.11.2, protobufjs@^6.8.6:
+ version "6.11.2"
+ resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.2.tgz#de39fabd4ed32beaa08e9bb1e30d08544c1edf8b"
+ integrity sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==
+ dependencies:
+ "@protobufjs/aspromise" "^1.1.2"
+ "@protobufjs/base64" "^1.1.2"
+ "@protobufjs/codegen" "^2.0.4"
+ "@protobufjs/eventemitter" "^1.1.0"
+ "@protobufjs/fetch" "^1.1.0"
+ "@protobufjs/float" "^1.0.2"
+ "@protobufjs/inquire" "^1.1.0"
+ "@protobufjs/path" "^1.1.2"
+ "@protobufjs/pool" "^1.1.0"
+ "@protobufjs/utf8" "^1.1.0"
+ "@types/long" "^4.0.1"
+ "@types/node" ">=13.7.0"
+ long "^4.0.0"
+
prr@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
@@ -11025,11 +11080,6 @@ querystringify@^2.1.1:
resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6"
integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
-queue-microtask@^1.2.2:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
- integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
-
quick-format-unescaped@^4.0.3:
version "4.0.4"
resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7"
@@ -11493,10 +11543,13 @@ ret@~0.1.10:
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
-reusify@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
- integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+retry-request@^4.0.0:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-4.2.2.tgz#b7d82210b6d2651ed249ba3497f07ea602f1a903"
+ integrity sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg==
+ dependencies:
+ debug "^4.1.1"
+ extend "^3.0.2"
rimraf@2.6.3:
version "2.6.3"
@@ -11529,13 +11582,6 @@ run-async@^2.4.0:
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
-run-parallel@^1.1.9:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
- integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
- dependencies:
- queue-microtask "^1.2.2"
-
rxjs@^6.6.0:
version "6.6.7"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
@@ -12116,6 +12162,11 @@ step@0.0.x:
resolved "https://registry.yarnpkg.com/step/-/step-0.0.6.tgz#143e7849a5d7d3f4a088fe29af94915216eeede2"
integrity sha1-FD54SaXX0/SgiP4pr5SRUhbu7eI=
+stream-shift@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
+ integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
+
strict-uri-encode@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
@@ -12877,7 +12928,7 @@ ts-node@^10.0.0:
make-error "^1.1.1"
yn "3.1.1"
-tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
+tslib@^1.10.0, tslib@^1.9.0, tslib@^1.9.3:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
@@ -12892,13 +12943,6 @@ tsscmp@1.0.6:
resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb"
integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==
-tsutils@^3.21.0:
- version "3.21.0"
- resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
- integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
- dependencies:
- tslib "^1.8.1"
-
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json
index 8b01a2ab1a..484b275923 100644
--- a/packages/string-templates/package.json
+++ b/packages/string-templates/package.json
@@ -1,6 +1,6 @@
{
"name": "@budibase/string-templates",
- "version": "1.0.89-alpha.0",
+ "version": "1.0.104-alpha.0",
"description": "Handlebars wrapper for Budibase templating.",
"main": "src/index.cjs",
"module": "dist/bundle.mjs",
diff --git a/packages/string-templates/yarn.lock b/packages/string-templates/yarn.lock
index e3a1790ef1..c6b43afe42 100644
--- a/packages/string-templates/yarn.lock
+++ b/packages/string-templates/yarn.lock
@@ -3145,9 +3145,9 @@ minimatch@^3.0.4:
brace-expansion "^1.1.7"
minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
- integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
+ integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
mixin-deep@^1.2.0:
version "1.3.2"
diff --git a/packages/worker/.eslintrc b/packages/worker/.eslintrc
deleted file mode 100644
index d94766fc59..0000000000
--- a/packages/worker/.eslintrc
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "globals": {
- "emit": true,
- "key": true
- },
- "parser": "@typescript-eslint/parser",
- "env": {
- "node": true
- },
- "extends": ["eslint:recommended"],
- "rules": {
- }
-}
diff --git a/packages/worker/.vscode/launch.json b/packages/worker/.vscode/launch.json
index 7417938376..a07cf96b80 100644
--- a/packages/worker/.vscode/launch.json
+++ b/packages/worker/.vscode/launch.json
@@ -5,10 +5,13 @@
"version": "0.2.0",
"configurations": [
{
+ "name": "Start Server",
"type": "node",
"request": "launch",
- "name": "Start Server",
- "program": "${workspaceFolder}/src/index.js"
+ "runtimeExecutable": "node",
+ "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"],
+ "args": ["src/index.ts"],
+ "cwd": "${workspaceRoot}",
},
{
"type": "node",
diff --git a/packages/worker/package.json b/packages/worker/package.json
index e85178027f..1a8e32d641 100644
--- a/packages/worker/package.json
+++ b/packages/worker/package.json
@@ -1,7 +1,7 @@
{
"name": "@budibase/worker",
"email": "hi@budibase.com",
- "version": "1.0.89-alpha.0",
+ "version": "1.0.104-alpha.0",
"description": "Budibase background service",
"main": "src/index.ts",
"repository": {
@@ -18,9 +18,6 @@
"build:docker": "docker build . -t worker-service --label version=$BUDIBASE_RELEASE_VERSION",
"dev:stack:init": "node ./scripts/dev/manage.js init",
"dev:builder": "npm run dev:stack:init && nodemon",
- "format": "prettier --config ../../.prettierrc.json 'src/**/*.ts' --write",
- "lint": "eslint --fix src/",
- "lint:fix": "yarn run format && yarn run lint",
"test": "jest --runInBand",
"env:multi:enable": "node scripts/multiTenancy.js enable",
"env:multi:disable": "node scripts/multiTenancy.js disable",
@@ -34,8 +31,8 @@
"author": "Budibase",
"license": "GPL-3.0",
"dependencies": {
- "@budibase/backend-core": "^1.0.89-alpha.0",
- "@budibase/string-templates": "^1.0.89-alpha.0",
+ "@budibase/backend-core": "^1.0.104-alpha.0",
+ "@budibase/string-templates": "^1.0.104-alpha.0",
"@koa/router": "^8.0.0",
"@sentry/node": "^6.0.0",
"@techpass/passport-openidconnect": "^0.3.0",
@@ -67,7 +64,6 @@
"@types/koa": "^2.13.3",
"@types/koa-router": "^7.4.2",
"@types/node": "^15.12.4",
- "@typescript-eslint/parser": "4.28.0",
"copyfiles": "^2.4.1",
"eslint": "^6.8.0",
"jest": "^27.0.5",
diff --git a/packages/worker/src/api/routes/tests/realEmail.spec.js b/packages/worker/src/api/routes/tests/realEmail.spec.js
index d0cfd24010..28d0151284 100644
--- a/packages/worker/src/api/routes/tests/realEmail.spec.js
+++ b/packages/worker/src/api/routes/tests/realEmail.spec.js
@@ -3,6 +3,9 @@ const { EmailTemplatePurpose } = require("../../../constants")
const nodemailer = require("nodemailer")
const fetch = require("node-fetch")
+// for the real email tests give them a long time to try complete/fail
+jest.setTimeout(30000)
+
describe("/api/global/email", () => {
let request = setup.getRequest()
let config = setup.getConfig()
@@ -27,6 +30,7 @@ describe("/api/global/email", () => {
userId: user._id,
})
.set(config.defaultHeaders())
+ .timeout(20000)
// ethereal hiccup, can't test right now
if (res.status >= 300) {
return
@@ -39,7 +43,7 @@ describe("/api/global/email", () => {
text = await response.text()
} catch (err) {
// ethereal hiccup, can't test right now
- if (parseInt(err.status) >= 300) {
+ if (parseInt(err.status) >= 300 || (err && err.errno === "ETIME")) {
return
} else {
throw err
diff --git a/packages/worker/yarn.lock b/packages/worker/yarn.lock
index 50c407ad15..b2a8a1c9f5 100644
--- a/packages/worker/yarn.lock
+++ b/packages/worker/yarn.lock
@@ -286,10 +286,10 @@
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
-"@budibase/backend-core@^1.0.84":
- version "1.0.84"
- resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.84.tgz#9fb01669129838419c57f1723e9274cb4bb9dfd5"
- integrity sha512-8hqRxSHO8A46f/hyzcqCdlku05yXBVEea1/FJdkoEDoCPhbuv04VHQ/f/dwkWctQ/oL8fm8MHpCA4ApyO7bnJA==
+"@budibase/backend-core@^1.0.98-alpha.2":
+ version "1.0.98"
+ resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.98.tgz#8845bca2438408483374a74088332bdaae70771c"
+ integrity sha512-aWKZBS/72w4PuTUCBl4Ogq0Vp0GPbn0Od/XL8CwrpXwuAlpqt1Bm5DOMGfG8iBmkC5uZRCwfhhzsoZruBpBTTQ==
dependencies:
"@techpass/passport-openidconnect" "^0.3.0"
aws-sdk "^2.901.0"
@@ -335,10 +335,10 @@
to-gfm-code-block "^0.1.1"
year "^0.2.1"
-"@budibase/string-templates@^1.0.84":
- version "1.0.84"
- resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-1.0.84.tgz#66669e9898ed20c6be2c46a5eb19d55003eb6bcb"
- integrity sha512-6Tv/TfGkmr3uBwNdZ3eKAPKwdsRTZbuQ+02puH+EcJK2leCerINo1SpAHf1BOmjQJynKeslKpSkUiisRVerMEg==
+"@budibase/string-templates@^1.0.98-alpha.2":
+ version "1.0.98"
+ resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-1.0.98.tgz#a00f97b7a899ac1f5a4efbe39c0ac6ee99e1ab59"
+ integrity sha512-8u9WQAm+EVfTfb75bn8n0d86EtSevwkEEm7e7vaLPnq7vFHB7IjHyRiBiV4TuyVPXeq4qSlCdXYDosECaG3gLg==
dependencies:
"@budibase/handlebars-helpers" "^0.11.8"
dayjs "^1.10.4"
@@ -584,27 +584,6 @@
path-to-regexp "1.x"
urijs "^1.19.2"
-"@nodelib/fs.scandir@2.1.5":
- version "2.1.5"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
- integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
- dependencies:
- "@nodelib/fs.stat" "2.0.5"
- run-parallel "^1.1.9"
-
-"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
- integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
-
-"@nodelib/fs.walk@^1.2.3":
- version "1.2.8"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
- integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
- dependencies:
- "@nodelib/fs.scandir" "2.1.5"
- fastq "^1.6.0"
-
"@sentry/core@6.17.3":
version "6.17.3"
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.17.3.tgz#44375d8e9f4857bb630d7aebaecc97cfe42052df"
@@ -1028,50 +1007,6 @@
dependencies:
"@types/yargs-parser" "*"
-"@typescript-eslint/parser@4.28.0":
- version "4.28.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.28.0.tgz#2404c16751a28616ef3abab77c8e51d680a12caa"
- integrity sha512-7x4D22oPY8fDaOCvkuXtYYTQ6mTMmkivwEzS+7iml9F9VkHGbbZ3x4fHRwxAb5KeuSkLqfnYjs46tGx2Nour4A==
- dependencies:
- "@typescript-eslint/scope-manager" "4.28.0"
- "@typescript-eslint/types" "4.28.0"
- "@typescript-eslint/typescript-estree" "4.28.0"
- debug "^4.3.1"
-
-"@typescript-eslint/scope-manager@4.28.0":
- version "4.28.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.28.0.tgz#6a3009d2ab64a30fc8a1e257a1a320067f36a0ce"
- integrity sha512-eCALCeScs5P/EYjwo6se9bdjtrh8ByWjtHzOkC4Tia6QQWtQr3PHovxh3TdYTuFcurkYI4rmFsRFpucADIkseg==
- dependencies:
- "@typescript-eslint/types" "4.28.0"
- "@typescript-eslint/visitor-keys" "4.28.0"
-
-"@typescript-eslint/types@4.28.0":
- version "4.28.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.0.tgz#a33504e1ce7ac51fc39035f5fe6f15079d4dafb0"
- integrity sha512-p16xMNKKoiJCVZY5PW/AfILw2xe1LfruTcfAKBj3a+wgNYP5I9ZEKNDOItoRt53p4EiPV6iRSICy8EPanG9ZVA==
-
-"@typescript-eslint/typescript-estree@4.28.0":
- version "4.28.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.0.tgz#e66d4e5aa2ede66fec8af434898fe61af10c71cf"
- integrity sha512-m19UQTRtxMzKAm8QxfKpvh6OwQSXaW1CdZPoCaQuLwAq7VZMNuhJmZR4g5281s2ECt658sldnJfdpSZZaxUGMQ==
- dependencies:
- "@typescript-eslint/types" "4.28.0"
- "@typescript-eslint/visitor-keys" "4.28.0"
- debug "^4.3.1"
- globby "^11.0.3"
- is-glob "^4.0.1"
- semver "^7.3.5"
- tsutils "^3.21.0"
-
-"@typescript-eslint/visitor-keys@4.28.0":
- version "4.28.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.0.tgz#255c67c966ec294104169a6939d96f91c8a89434"
- integrity sha512-PjJyTWwrlrvM5jazxYF5ZPs/nl0kHDZMVbuIcbpawVXaDPelp3+S9zpOz5RmVUfS/fD5l5+ZXNKnWhNYjPzCvw==
- dependencies:
- "@typescript-eslint/types" "4.28.0"
- eslint-visitor-keys "^2.0.0"
-
abab@^2.0.3, abab@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a"
@@ -1201,9 +1136,9 @@ ansi-escapes@^4.2.1:
type-fest "^0.21.3"
ansi-regex@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
- integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed"
+ integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==
ansi-regex@^5.0.0, ansi-regex@^5.0.1:
version "5.0.1"
@@ -1288,11 +1223,6 @@ array-sort@^1.0.0:
get-value "^2.0.6"
kind-of "^5.0.2"
-array-union@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
- integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
-
array-unique@^0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
@@ -1382,9 +1312,9 @@ aws-sdk@^2.811.0:
xml2js "0.4.19"
aws-sdk@^2.901.0:
- version "2.1092.0"
- resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1092.0.tgz#79452dee35ab35b8c1de63340a0bd697fa8db3e8"
- integrity sha512-8PH2rOgZazGT3VfGPkKcvzz2K9ylVfDniJH4WfJXHEBGxu0+XEMDbjuYpe8k/L1C7w0UTP6CuChjqCxgJznrxg==
+ version "2.1101.0"
+ resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1101.0.tgz#67b685436d909bbe5c608ca890a4abe1128dd573"
+ integrity sha512-7lyVb7GXGl8yyu954Qxf6vU6MrcgFlmKyTLBVXJyo3Phn1OB+qOExA55WtSC6gQiQ7e5TeWOn1RUHLg30ywTBA==
dependencies:
buffer "4.9.2"
events "1.1.1"
@@ -2115,11 +2045,11 @@ dateformat@^4.5.1:
integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==
dayjs@^1.10.4:
- version "1.10.8"
- resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.8.tgz#267df4bc6276fcb33c04a6735287e3f429abec41"
- integrity sha512-wbNwDfBHHur9UOzNUjeKUOJ0fCb0a52Wx0xInmQ7Y8FstyajiV1NmK1e00cxsr9YrE9r7yAChE0VvpuY5Rnlow==
+ version "1.11.0"
+ resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.0.tgz#009bf7ef2e2ea2d5db2e6583d2d39a4b5061e805"
+ integrity sha512-JLC809s6Y948/FuCZPm5IX8rRhQwOiyMb2TfVVQEixG7P8Lm/gt5S7yoQZmC8x1UehI9Pb7sksEt4xx14m+7Ug==
-debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3:
+debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3:
version "4.3.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
@@ -2140,6 +2070,13 @@ debug@^3.1.0, debug@^3.2.7:
dependencies:
ms "^2.1.1"
+debug@^4.3.1:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
decimal.js@^10.2.1:
version "10.3.1"
resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783"
@@ -2307,13 +2244,6 @@ diff@^4.0.1:
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
-dir-glob@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
- integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
- dependencies:
- path-type "^4.0.0"
-
doctrine@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
@@ -2504,11 +2434,6 @@ eslint-visitor-keys@^1.1.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
-eslint-visitor-keys@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
- integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
-
eslint@^6.8.0:
version "6.8.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb"
@@ -2721,17 +2646,6 @@ fast-deep-equal@^3.1.1:
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
-fast-glob@^3.2.9:
- version "3.2.11"
- resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9"
- integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
- dependencies:
- "@nodelib/fs.stat" "^2.0.2"
- "@nodelib/fs.walk" "^1.2.3"
- glob-parent "^5.1.2"
- merge2 "^1.3.0"
- micromatch "^4.0.4"
-
fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
@@ -2759,13 +2673,6 @@ fast-url-parser@^1.1.3:
dependencies:
punycode "^1.3.2"
-fastq@^1.6.0:
- version "1.13.0"
- resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
- integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
- dependencies:
- reusify "^1.0.4"
-
fb-watchman@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85"
@@ -3002,7 +2909,7 @@ getpass@^0.1.1:
dependencies:
assert-plus "^1.0.0"
-glob-parent@^5.0.0, glob-parent@^5.1.2, glob-parent@~5.1.2:
+glob-parent@^5.0.0, glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
@@ -3051,18 +2958,6 @@ globals@^12.1.0:
dependencies:
type-fest "^0.8.1"
-globby@^11.0.3:
- version "11.1.0"
- resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
- integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
- dependencies:
- array-union "^2.1.0"
- dir-glob "^3.0.1"
- fast-glob "^3.2.9"
- ignore "^5.2.0"
- merge2 "^1.4.1"
- slash "^3.0.0"
-
google-auth-library@~0.10.0:
version "0.10.0"
resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-0.10.0.tgz#6e15babee85fd1dd14d8d128a295b6838d52136e"
@@ -3395,11 +3290,6 @@ ignore@^4.0.6:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
-ignore@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
- integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
-
immediate@3.3.0, immediate@^3.2.3:
version "3.3.0"
resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266"
@@ -4854,11 +4744,6 @@ merge-stream@^2.0.0:
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
-merge2@^1.3.0, merge2@^1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
- integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-
methods@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
@@ -5389,11 +5274,6 @@ path-to-regexp@1.x:
dependencies:
isarray "0.0.1"
-path-type@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
- integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
-
pause@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d"
@@ -5753,11 +5633,6 @@ querystring@0.2.0:
resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
-queue-microtask@^1.2.2:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
- integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
-
quick-format-unescaped@^4.0.3:
version "4.0.4"
resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7"
@@ -6033,11 +5908,6 @@ ret@~0.1.10:
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
-reusify@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
- integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
-
rfdc@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b"
@@ -6062,13 +5932,6 @@ run-async@^2.4.0:
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
-run-parallel@^1.1.9:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
- integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
- dependencies:
- queue-microtask "^1.2.2"
-
rxjs@^6.6.0:
version "6.6.7"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
@@ -6778,7 +6641,7 @@ ts-node@^10.0.0:
make-error "^1.1.1"
yn "3.1.1"
-tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
+tslib@^1.9.0, tslib@^1.9.3:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
@@ -6788,13 +6651,6 @@ tsscmp@1.0.6:
resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb"
integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==
-tsutils@^3.21.0:
- version "3.21.0"
- resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
- integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
- dependencies:
- tslib "^1.8.1"
-
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
diff --git a/yarn.lock b/yarn.lock
index 628e48bd0c..edd24a3907 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -796,11 +796,32 @@
call-me-maybe "^1.0.1"
glob-to-regexp "^0.3.0"
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
"@nodelib/fs.stat@^1.1.2":
version "1.1.3"
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
+"@nodelib/fs.walk@^1.2.3":
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
"@octokit/auth-token@^2.4.0":
version "2.5.0"
resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36"
@@ -949,6 +970,50 @@
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301"
integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==
+"@typescript-eslint/parser@4.28.0":
+ version "4.28.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.28.0.tgz#2404c16751a28616ef3abab77c8e51d680a12caa"
+ integrity sha512-7x4D22oPY8fDaOCvkuXtYYTQ6mTMmkivwEzS+7iml9F9VkHGbbZ3x4fHRwxAb5KeuSkLqfnYjs46tGx2Nour4A==
+ dependencies:
+ "@typescript-eslint/scope-manager" "4.28.0"
+ "@typescript-eslint/types" "4.28.0"
+ "@typescript-eslint/typescript-estree" "4.28.0"
+ debug "^4.3.1"
+
+"@typescript-eslint/scope-manager@4.28.0":
+ version "4.28.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.28.0.tgz#6a3009d2ab64a30fc8a1e257a1a320067f36a0ce"
+ integrity sha512-eCALCeScs5P/EYjwo6se9bdjtrh8ByWjtHzOkC4Tia6QQWtQr3PHovxh3TdYTuFcurkYI4rmFsRFpucADIkseg==
+ dependencies:
+ "@typescript-eslint/types" "4.28.0"
+ "@typescript-eslint/visitor-keys" "4.28.0"
+
+"@typescript-eslint/types@4.28.0":
+ version "4.28.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.0.tgz#a33504e1ce7ac51fc39035f5fe6f15079d4dafb0"
+ integrity sha512-p16xMNKKoiJCVZY5PW/AfILw2xe1LfruTcfAKBj3a+wgNYP5I9ZEKNDOItoRt53p4EiPV6iRSICy8EPanG9ZVA==
+
+"@typescript-eslint/typescript-estree@4.28.0":
+ version "4.28.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.0.tgz#e66d4e5aa2ede66fec8af434898fe61af10c71cf"
+ integrity sha512-m19UQTRtxMzKAm8QxfKpvh6OwQSXaW1CdZPoCaQuLwAq7VZMNuhJmZR4g5281s2ECt658sldnJfdpSZZaxUGMQ==
+ dependencies:
+ "@typescript-eslint/types" "4.28.0"
+ "@typescript-eslint/visitor-keys" "4.28.0"
+ debug "^4.3.1"
+ globby "^11.0.3"
+ is-glob "^4.0.1"
+ semver "^7.3.5"
+ tsutils "^3.21.0"
+
+"@typescript-eslint/visitor-keys@4.28.0":
+ version "4.28.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.0.tgz#255c67c966ec294104169a6939d96f91c8a89434"
+ integrity sha512-PjJyTWwrlrvM5jazxYF5ZPs/nl0kHDZMVbuIcbpawVXaDPelp3+S9zpOz5RmVUfS/fD5l5+ZXNKnWhNYjPzCvw==
+ dependencies:
+ "@typescript-eslint/types" "4.28.0"
+ eslint-visitor-keys "^2.0.0"
+
JSONStream@^1.0.4, JSONStream@^1.3.4:
version "1.3.5"
resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
@@ -1124,6 +1189,11 @@ array-union@^1.0.1:
dependencies:
array-uniq "^1.0.1"
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
array-uniq@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
@@ -1262,6 +1332,13 @@ braces@^2.3.1:
split-string "^3.0.2"
to-regex "^3.0.1"
+braces@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
btoa-lite@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337"
@@ -1803,6 +1880,13 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
dependencies:
ms "2.1.2"
+debug@^4.3.1:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
debuglog@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
@@ -1908,6 +1992,13 @@ dir-glob@2.0.0:
arrify "^1.0.1"
path-type "^3.0.0"
+dir-glob@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+ dependencies:
+ path-type "^4.0.0"
+
doctrine@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
@@ -2278,6 +2369,17 @@ fast-glob@^2.0.2:
merge2 "^1.2.3"
micromatch "^3.1.10"
+fast-glob@^3.2.9:
+ version "3.2.11"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9"
+ integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.2"
+ merge2 "^1.3.0"
+ micromatch "^4.0.4"
+
fast-json-stable-stringify@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
@@ -2288,6 +2390,13 @@ fast-levenshtein@^2.0.6:
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+fastq@^1.6.0:
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
+ integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
+ dependencies:
+ reusify "^1.0.4"
+
figgy-pudding@^3.4.1, figgy-pudding@^3.5.1:
version "3.5.2"
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
@@ -2317,6 +2426,13 @@ fill-range@^4.0.0:
repeat-string "^1.6.1"
to-regex-range "^2.1.0"
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
filter-obj@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b"
@@ -2627,6 +2743,18 @@ globals@^13.6.0, globals@^13.9.0:
dependencies:
type-fest "^0.20.2"
+globby@^11.0.3:
+ version "11.1.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
+ integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
+ dependencies:
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.2.9"
+ ignore "^5.2.0"
+ merge2 "^1.4.1"
+ slash "^3.0.0"
+
globby@^8.0.1:
version "8.0.2"
resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d"
@@ -2835,6 +2963,11 @@ ignore@^4.0.6:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
+ignore@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
+ integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
+
import-fresh@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
@@ -3130,6 +3263,11 @@ is-number@^3.0.0:
dependencies:
kind-of "^3.0.2"
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
is-obj@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
@@ -3714,7 +3852,7 @@ meow@^8.0.0:
type-fest "^0.18.0"
yargs-parser "^20.2.3"
-merge2@^1.2.3:
+merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
@@ -3738,6 +3876,14 @@ micromatch@^3.1.10:
snapdragon "^0.8.1"
to-regex "^3.0.2"
+micromatch@^4.0.4:
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
+ integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
+ dependencies:
+ braces "^3.0.2"
+ picomatch "^2.3.1"
+
mime-db@1.51.0:
version "1.51.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c"
@@ -4469,6 +4615,11 @@ path-type@^3.0.0:
dependencies:
pify "^3.0.0"
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
performance-now@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
@@ -4479,6 +4630,11 @@ picomatch@^2.2.2:
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
+picomatch@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
pify@^2.0.0, pify@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
@@ -4637,6 +4793,11 @@ query-string@^6.13.8:
split-on-first "^1.0.0"
strict-uri-encode "^2.0.0"
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
quick-lru@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8"
@@ -4908,6 +5069,11 @@ retry@^0.10.0:
resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4"
integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
rimraf@2, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3:
version "2.7.1"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
@@ -4942,6 +5108,13 @@ run-async@^2.2.0:
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
run-queue@^1.0.0, run-queue@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
@@ -4988,7 +5161,7 @@ semver@^6.0.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
-semver@^7.2.1, semver@^7.3.4:
+semver@^7.2.1, semver@^7.3.4, semver@^7.3.5:
version "7.3.5"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
@@ -5063,6 +5236,11 @@ slash@^1.0.0:
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
slice-ansi@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
@@ -5530,6 +5708,13 @@ to-regex-range@^2.1.0:
is-number "^3.0.0"
repeat-string "^1.6.1"
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
to-regex@^3.0.1, to-regex@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
@@ -5575,11 +5760,18 @@ trim-newlines@^3.0.0:
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144"
integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==
-tslib@^1.9.0:
+tslib@^1.8.1, tslib@^1.9.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
+tsutils@^3.21.0:
+ version "3.21.0"
+ resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
+ integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
+ dependencies:
+ tslib "^1.8.1"
+
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
@@ -5624,6 +5816,11 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+typescript@4.5.5:
+ version "4.5.5"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3"
+ integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==
+
uglify-js@^3.1.4:
version "3.14.3"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.3.tgz#c0f25dfea1e8e5323eccf59610be08b6043c15cf"