@convex-dev/cli
Advanced tools
Comparing version 0.0.45 to 0.0.48
@@ -5,16 +5,18 @@ { | ||
"@convex-dev/cli/bin/main.js": "021b6dbb88cbe0c24ef561550c1e2285d244af2d", | ||
"@convex-dev/cli/package-lock.json": "bcf9d9af1cbe0a0c052dc052cd86d1581900e279", | ||
"@convex-dev/cli/package.json": "bc2a2fe4b6e0ee1543444b57c2c74d7ca97b6f28", | ||
"@convex-dev/cli/src/config.ts": "c57c5d92a448dc484f1ba269fa0c8fb482a84462", | ||
"@convex-dev/cli/src/dashboard.ts": "3c63b54007ffc59973fd1e8fa130c72aaf71a5bc", | ||
"@convex-dev/cli/src/deactivate.ts": "c285728d53fcb2624ed41e9b0a765e6afa5efbeb", | ||
"@convex-dev/cli/src/index.ts": "72adfaf5fbc60ff2fae008e13e6728fbdb4a02d0", | ||
"@convex-dev/cli/src/init.ts": "12a686d44e3c49e9a7fb9ee5c5d7776e93cdcaa9", | ||
"@convex-dev/cli/src/push.ts": "62d466e02ce1e840c885e307c6b58ab487bdb9a7", | ||
"@convex-dev/cli/package.json": "61da290dbde8acb0aeb26a093feb805ad728c491", | ||
"@convex-dev/cli/src/auth.ts": "196fb5e9e9a4b68551f9e1334508d6d295eca3cb", | ||
"@convex-dev/cli/src/config.ts": "269369c2a165b5fcb71c07490cf57b76fb64abf6", | ||
"@convex-dev/cli/src/dashboard.ts": "f1a4d9da9b2c52f8d330c82141b6fd42b6d4cbf0", | ||
"@convex-dev/cli/src/deactivate.ts": "db6abf3d37698183a3c429c131194a536169ac26", | ||
"@convex-dev/cli/src/index.ts": "e9937a4fcd1b470e20ee5f53d69d63329fe00ccc", | ||
"@convex-dev/cli/src/init.ts": "306bbb8f043998d69c3d8a4d9bffe297674f2673", | ||
"@convex-dev/cli/src/list_instances.ts": "c53161b43b33ab2118eeac8d898a02b3d130e2ab", | ||
"@convex-dev/cli/src/push.ts": "46f10deced1b9f3acf5d598c571dee1bff6f2b9d", | ||
"@convex-dev/cli/src/reinit.ts": "91e49b1f9ae5b70e798ca60348f2ef167ea36343", | ||
"@convex-dev/cli/src/utils.ts": "5791efae8a7fd5d83c7d7fa1a141fe117a0c7e33", | ||
"@convex-dev/cli/src/watch.ts": "06b8434eb2dccd7ec7dc50f18b95fa776288a934", | ||
"@convex-dev/cli/tsconfig.json": "a25a789051a68ad6839f4921ee9cf80af1a88bf8", | ||
"@convex-dev/cli/.rush/temp/shrinkwrap-deps.json": "d4d9101e59fd10997fa0fdbf60e3e9c7458aba82" | ||
"@convex-dev/cli/.rush/temp/shrinkwrap-deps.json": "92136465f6bcddf1b166d1b2a827fa2ec6a0aeb9" | ||
}, | ||
"arguments": "tsc -noEmit && esbuild src/index.ts --bundle --platform=node --target=node16 --external:esbuild --external:fsevents --outfile=dist/index.js --log-level=silent " | ||
} |
{ | ||
"@babel/runtime@7.16.5": "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==", | ||
"@babel/runtime@7.17.0": "sha512-etcO/ohMNaNA2UBdaXBBSX/3aEzFMRrVfaPv8Ptc0k+cWpWW0QFiGZ2XnVqQZI1Cf734LbPGmqBKWESfW4x/dQ==", | ||
"@types/deep-equal@1.0.1": "sha512-mMUu4nWHLBlHtxXY17Fg6+ucS/MnndyOWyOe7MmwkoMYxvfQU2ajtRaEvqSUv+aVkMqH/C0NCI8UoVfRNQ10yg==", | ||
"@types/node@16.11.17": "sha512-C1vTZME8cFo8uxY2ui41xcynEotVkczIVI5AjLmy5pkpBv/FtG+jhtOlfcPysI8VRVwoOMv6NJm44LGnoMSWkw==", | ||
"@types/inquirer@8.2.0": "sha512-BNoMetRf3gmkpAlV5we+kxyZTle7YibdOntIZbU5pyIfMdcwy784KfeZDAcuyMznkh5OLa17RVXZOGA5LTlkgQ==", | ||
"@types/node@16.11.22": "sha512-DYNtJWauMQ9RNpesl4aVothr97/tIJM8HbyOXJ0AYT1Z2bEjLHyfjOBPAQQVMLf8h3kSShYfNk8Wnto8B2zHUA==", | ||
"@types/through@0.0.30": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", | ||
"ansi-escapes@4.3.2": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", | ||
"ansi-regex@5.0.1": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", | ||
"ansi-styles@4.3.0": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", | ||
"anymatch@3.1.2": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", | ||
"available-typed-arrays@1.0.5": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", | ||
"axios-case-converter@0.9.0_axios@0.24.0": "sha512-G6tOanR1cdIrBtRyiPvR+xXyWCCZacSw8LtT8bmImvpye+XiyoOlLluz0N61IfetznNQ9BeMi5yA0rIyYDr8mQ==", | ||
"axios-case-converter@0.9.0_axios@0.25.0": "sha512-G6tOanR1cdIrBtRyiPvR+xXyWCCZacSw8LtT8bmImvpye+XiyoOlLluz0N61IfetznNQ9BeMi5yA0rIyYDr8mQ==", | ||
"axios-retry@3.2.4": "sha512-Co3UXiv4npi6lM963mfnuH90/YFLKWWDmoBYfxkHT5xtkSSWNqK9zdG3fw5/CP/dsoKB5aMMJCsgab+tp1OxLQ==", | ||
"axios@0.24.0": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", | ||
"axios@0.25.0": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", | ||
"base64-js@1.5.1": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", | ||
"binary-extensions@2.2.0": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", | ||
"bl@4.1.0": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", | ||
"braces@3.0.2": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", | ||
"buffer@5.7.1": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", | ||
"call-bind@1.0.2": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", | ||
@@ -17,3 +24,8 @@ "camel-case@4.1.2": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", | ||
"chalk@4.1.2": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | ||
"chardet@0.7.0": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", | ||
"chokidar@3.5.2": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", | ||
"cli-cursor@3.1.0": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", | ||
"cli-spinners@2.6.1": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", | ||
"cli-width@3.0.0": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", | ||
"clone@1.0.4": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", | ||
"color-convert@2.0.1": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", | ||
@@ -23,5 +35,7 @@ "color-name@1.1.4": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", | ||
"deep-equal@2.0.5": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", | ||
"defaults@1.0.3": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", | ||
"define-lazy-prop@2.0.0": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", | ||
"define-properties@1.1.3": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", | ||
"dot-case@3.0.4": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", | ||
"emoji-regex@8.0.0": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", | ||
"envfile@6.17.0": "sha512-RnhtVw3auDZeeh5VtaNrbE7s6Kq8BoRtGIzcbMpMsJ+wIpRgs5jiDG4gQjW+vfws5QPlizE57/fUU0Tj6Nrs8A==", | ||
@@ -31,23 +45,26 @@ "es-abstract@1.19.1": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", | ||
"es-to-primitive@1.2.1": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", | ||
"esbuild-android-arm64@0.14.8": "sha512-tAEoSHnPBSH0cCAFa/aYs3LPsoTY4SwsP6wDKi4PaelbQYNJjqNpAeweyJ8l98g1D6ZkLyqsHbkYj+209sezkA==", | ||
"esbuild-darwin-64@0.14.8": "sha512-t7p7WzTb+ybiD/irkMt5j/NzB+jY+8yPTsrXk5zCOH1O7DdthRnAUJ7pJPwImdL7jAGRbLtYRxUPgCHs/0qUPw==", | ||
"esbuild-darwin-arm64@0.14.8": "sha512-5FeaT2zMUajKnBwUMSsjZev5iA38YHrDmXhkOCwZQIFUvhqojinqCrvv/X7dyxb1987bcY9KGwJ+EwDwd922HQ==", | ||
"esbuild-freebsd-64@0.14.8": "sha512-pGHBLSf7ynfyDZXUtbq/GsA2VIwQlWXrUj1AMcE0id47mRdEUM8/1ZuqMGZx63hRnNgtK9zNJ8OIu2c7qq76Qw==", | ||
"esbuild-freebsd-arm64@0.14.8": "sha512-g4GgAnrx6Gh1BjKJjJWgPnOR4tW2FcAx9wFvyUjRsIjB35gT+aAFR+P/zStu5OG9LnbS8Pvjd4wS68QIXk+2dA==", | ||
"esbuild-linux-32@0.14.8": "sha512-wPfQJadF5vTzriw/B8Ide74PeAJlZW7czNx3NIUHkHlXb+En1SeIqNzl6jG9DuJUl57xD9Ucl9YJFEkFeX8eLg==", | ||
"esbuild-linux-64@0.14.8": "sha512-+RNuLk9RhRDL2kG+KTEYl5cIgF6AGLkRnKKWEu9DpCZaickONEqrKyQSVn410Hj105DLdW6qvIXQQHPycJhExg==", | ||
"esbuild-linux-arm64@0.14.8": "sha512-BtWoKNYul9UoxUvQUSdSrvSmJyFL1sGnNPTSqWCg1wMe4kmc8UY2yVsXSSkKO8N2jtHxlgFyz/XhvNBzEwGVcw==", | ||
"esbuild-linux-arm@0.14.8": "sha512-HIct38SvUAIJbiTwV/PVQroimQo96TGtzRDAEZxTorB4vsAj1r8bd0keXExPU4RH7G0zIqC4loQQpWYL+nH4Vg==", | ||
"esbuild-linux-mips64le@0.14.8": "sha512-0DxnCl9XTvaQtsX6Qa+Phr5i9b04INwwSv2RbQ2UWRLoQ/037iaFzbmuhgrcmaGOcRwPkCa+4Qo5EgI01MUgsQ==", | ||
"esbuild-linux-ppc64le@0.14.8": "sha512-Uzr/OMj97Q0qoWLXCvXCKUY/z1SNI4iSZEuYylM5Nd71HGStL32XWq/MReJ0PYMvUMKKJicKSKw2jWM1uBQ84Q==", | ||
"esbuild-linux-s390x@0.14.8": "sha512-vURka7aCA5DrRoOqOn6pXYwFlDSoQ4qnqam8AC0Ikn6tibutuhgar6M3Ek2DCuz9yqd396mngdYr5A8x2TPkww==", | ||
"esbuild-netbsd-64@0.14.8": "sha512-tjyDak2/pp0VUAhBW6/ueuReMd5qLHNlisXl5pq0Xn0z+kH9urA/t1igm0JassWbdMz123td5ZEQWoD9KbtOAw==", | ||
"esbuild-openbsd-64@0.14.8": "sha512-zAKKV15fIyAuDDga5rQv0lW2ufBWj/OCjqjDBb3dJf5SfoAi/DMIHuzmkKQeDQ+oxt9Rp1D7ZOlOBVflutFTqQ==", | ||
"esbuild-sunos-64@0.14.8": "sha512-xV41Wa8imziM/2dbWZjLKQbIETRgo5dE0oc/uPsgaecJhsrdA0VkGa/V432LJSUYv967xHDQdoRRl5tr80+NnQ==", | ||
"esbuild-windows-32@0.14.8": "sha512-AxpdeLKQSyCZo7MzdOyV4OgEbEJcjnrS/2niAjbHESbjuS5P1DN/5vZoJ/JSWDVa/40OkBuHBhAXMx1HK3UDsg==", | ||
"esbuild-windows-64@0.14.8": "sha512-/3pllNoy8mrz/E1rYalwiwwhzJBrYQhEapwAteHZbFVhGzYuB8F80e8x5eA8dhFHxDiZh1VzK+hREwwSt8UTQA==", | ||
"esbuild-windows-arm64@0.14.8": "sha512-lTm5naoNgaUvzIiax3XYIEebqwr3bIIEEtqUhzQ2UQ+JMBmvhr02w3sJIJqF3axTX6TgWrC1OtM7DYNvFG+aXA==", | ||
"esbuild@0.14.8": "sha512-stMsCBmxwaMpeK8GC/49L/cRGIwsHwoEN7Twk5zDTHlm/63c0KXFKzDC8iM2Mi3fyCKwS002TAH6IlAvqR6t3g==", | ||
"esbuild-android-arm64@0.14.18": "sha512-AuE8vIwc6QLquwykyscFk0Ji3RFczoOvjka64FJlcjLLhD6VsS584RYlQrSnPpRkv69PunUvyrBoEF7JFTJijg==", | ||
"esbuild-darwin-64@0.14.18": "sha512-nN1XziZtDy8QYOggaXC3zu0vVh8YJpS8Bol7bHaxx0enTLDSFBCXUUJEKYpmAAJ4OZRPgjXv8NzEHHQWQvLzXg==", | ||
"esbuild-darwin-arm64@0.14.18": "sha512-v0i2n6TCsbxco/W1fN8RgQt3RW00Q9zJO2eqiAdmLWg6Hx0HNHloZyfhF11i7nMUUgW8r5n++ZweIXjAFPE/gQ==", | ||
"esbuild-freebsd-64@0.14.18": "sha512-XLyJZTWbSuQJOqw867tBxvto6GjxULvWZYKs6RFHYQPCqgQ0ODLRtBmp4Fqqpde52yOe45npaaoup9IXNfr32A==", | ||
"esbuild-freebsd-arm64@0.14.18": "sha512-0ItfrR8hePnDcUXxUQxY+VfICcBfeMJCdK6mcNUXnXw6LyHjyUYXWpFXF+J18pg1/YUWRWO1HbsJ7FEwELcQIA==", | ||
"esbuild-linux-32@0.14.18": "sha512-mnG84D9NsEsoQdBpBT0IsFjm5iAwnd81SP4tRMXZLl09lPvIWjHHSq6LDlb4+L5H5K5y68WC//X5Dr2MtNY3DQ==", | ||
"esbuild-linux-64@0.14.18": "sha512-HvExRtkeA8l/p+7Lf6aBrnLH+jTCFJTUMJxGKExh2RD8lCXGTeDJFyP+BOEetP80fuuH+Syj79+LVQ9MihdBsg==", | ||
"esbuild-linux-arm64@0.14.18": "sha512-CCWmilODE1ckw+M7RVqoqKWA4UB0alCyK2bv0ikEeEAwkzinlJeoe94t9CnT/ECSQ2sL+C16idsr+aUviGp7sg==", | ||
"esbuild-linux-arm@0.14.18": "sha512-+ZL8xfXVNaeaZ2Kxqlw2VYZWRDZ7NSK4zOV9GKNAtkkWURLsPUU84aUOBatRe9BH1O5FDo3LLQSlaA04ed6lhA==", | ||
"esbuild-linux-mips64le@0.14.18": "sha512-8LjO4+6Vxz5gbyCHO4OONYMF689nLderCtzb8lG1Bncs4ZXHpo6bjvuWeTMRbGUkvAhp+P6hMTzia7RHOC53wQ==", | ||
"esbuild-linux-ppc64le@0.14.18": "sha512-0OJk/6iYEmF1J7LXY6+cqf6Ga5vG4an7n1nubTKce7kYqaTyNGfYcTjDZce6lnDVlZTJtwntIMszq1+ZX7Kenw==", | ||
"esbuild-linux-s390x@0.14.18": "sha512-UNY7YKZHjY31KcNanJK4QaT2/aoIQyS+jViP3QuDRIoYAogRnc6WydylzIkkEzGMaC4fzaXOmQ8fxwpLAXK4Yg==", | ||
"esbuild-netbsd-64@0.14.18": "sha512-wE/2xT9KNzLCfEBw24YbVmMmXH92cFIzrRPUlwWH9dIizjvEYYcyQ+peTMVkqzUum7pdlVLZ2CDDqAaZo/nW/w==", | ||
"esbuild-openbsd-64@0.14.18": "sha512-vdymE2jyuH/FRmTvrguCYSrq81/rUwuhMYyvt/6ibv9ac7xQ674c8qTdT+RH73sR9/2WUD/NsYxrBA/wUVTxcg==", | ||
"esbuild-sunos-64@0.14.18": "sha512-X/Tesy6K1MdJF1d5cbzFDxrIMMn0ye+VgTQRI8P5Vo2CcKxOdckwsKUwpRAvg+VDZ6MxrSOTYS9OOoggPUjxTg==", | ||
"esbuild-windows-32@0.14.18": "sha512-glG23I/JzCL4lu7DWFUtVwqFwNwlL0g+ks+mcjjUisHcINoSXTeCNToUN0bHhzn6IlXXnggNQ38Ew/idHPM8+g==", | ||
"esbuild-windows-64@0.14.18": "sha512-zEiFKHgV/3z14wsVamV98/5mxeOwz+ecyg0pD3fWcBz9j4EOIT1Tg47axypD4QLwiKFvve9mUBYX1cD99qxOyw==", | ||
"esbuild-windows-arm64@0.14.18": "sha512-Mh8lZFcPLat13dABN7lZThGUOn9YxoH5RYkhBq0U3WqQohHzKRhllYh7ibFixnkpMLnv8OZEbl8bGLMy03MpfA==", | ||
"esbuild@0.14.18": "sha512-vCUoISSltnX7ax01w70pWOSQT+e55o+2P/a+A9MSTukJAt3T4aDZajcjeG4fnZbkvOEv+dkKgdkvljz6vVQD4A==", | ||
"escape-string-regexp@1.0.5": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", | ||
"external-editor@3.1.0": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", | ||
"figures@3.2.0": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", | ||
"fill-range@7.0.1": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", | ||
"follow-redirects@1.14.6": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==", | ||
"follow-redirects@1.14.7": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", | ||
"foreach@2.0.5": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", | ||
@@ -65,2 +82,6 @@ "fsevents@2.3.2": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", | ||
"header-case@2.0.4": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", | ||
"iconv-lite@0.4.24": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", | ||
"ieee754@1.2.1": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", | ||
"inherits@2.0.4": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", | ||
"inquirer@8.2.0": "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==", | ||
"internal-slot@1.0.3": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", | ||
@@ -75,3 +96,5 @@ "is-arguments@1.1.1": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", | ||
"is-extglob@2.1.1": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", | ||
"is-fullwidth-code-point@3.0.0": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", | ||
"is-glob@4.0.3": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", | ||
"is-interactive@1.0.0": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", | ||
"is-map@2.0.2": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", | ||
@@ -88,2 +111,3 @@ "is-negative-zero@2.0.2": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", | ||
"is-typed-array@1.1.8": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", | ||
"is-unicode-supported@0.1.0": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", | ||
"is-weakmap@2.0.1": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", | ||
@@ -94,3 +118,7 @@ "is-weakref@1.0.2": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", | ||
"isarray@2.0.5": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", | ||
"lodash@4.17.21": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", | ||
"log-symbols@4.1.0": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", | ||
"lower-case@2.0.2": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", | ||
"mimic-fn@2.1.0": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", | ||
"mute-stream@0.0.8": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", | ||
"no-case@3.0.4": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", | ||
@@ -102,18 +130,36 @@ "normalize-path@3.0.0": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", | ||
"object.assign@4.1.2": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", | ||
"onetime@5.1.2": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", | ||
"open@8.4.0": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", | ||
"ora@5.4.1": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", | ||
"os-tmpdir@1.0.2": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", | ||
"pascal-case@3.1.2": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", | ||
"picomatch@2.3.0": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", | ||
"picomatch@2.3.1": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", | ||
"readable-stream@3.6.0": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", | ||
"readdirp@3.6.0": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", | ||
"regenerator-runtime@0.13.9": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", | ||
"regexp.prototype.flags@1.3.1": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", | ||
"regexp.prototype.flags@1.4.1": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", | ||
"restore-cursor@3.1.0": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", | ||
"run-async@2.4.1": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", | ||
"rxjs@7.5.2": "sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w==", | ||
"safe-buffer@5.2.1": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", | ||
"safer-buffer@2.1.2": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", | ||
"side-channel@1.0.4": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", | ||
"signal-exit@3.0.7": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", | ||
"snake-case@3.0.4": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", | ||
"string-width@4.2.3": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", | ||
"string.prototype.trimend@1.0.4": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", | ||
"string.prototype.trimstart@1.0.4": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", | ||
"string_decoder@1.3.0": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", | ||
"strip-ansi@6.0.1": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", | ||
"supports-color@7.2.0": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", | ||
"through@2.3.8": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", | ||
"tmp@0.0.33": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", | ||
"to-regex-range@5.0.1": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", | ||
"tslib@2.3.1": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", | ||
"typescript@4.5.4": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", | ||
"type-fest@0.21.3": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", | ||
"typescript@4.5.5": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", | ||
"unbox-primitive@1.0.1": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", | ||
"upper-case-first@2.0.2": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", | ||
"util-deprecate@1.0.2": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", | ||
"wcwidth@1.0.1": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", | ||
"which-boxed-primitive@1.0.2": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", | ||
@@ -120,0 +166,0 @@ "which-collection@1.0.1": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", |
{ | ||
"name": "@convex-dev/cli", | ||
"description": "Command-line interface for Convex Cloud backend.", | ||
"version": "0.0.45", | ||
"author": "Convex, Inc. <team@convex.dev>", | ||
"homepage": "https://convex.dev", | ||
"license": "MIT", | ||
"bin": { | ||
"convex": "bin/main.js" | ||
}, | ||
"dependencies": { | ||
"axios-case-converter": "~0.9.0", | ||
"axios-retry": "~3.2.4", | ||
"esbuild": "~0.14.8" | ||
}, | ||
"devDependencies": { | ||
"@convex-dev/bundler": "0.0.45", | ||
"@convex-dev/common": "0.0.45", | ||
"@types/deep-equal": "1.0.1", | ||
"@types/node": "^16.11.7", | ||
"axios": "~0.24.0", | ||
"chalk": "4", | ||
"chokidar": "3.5.2", | ||
"commander": "8.1.0", | ||
"deep-equal": "2.0.5", | ||
"envfile": "6.17.0", | ||
"open": "^8.3.0", | ||
"typescript": "^4.5.4" | ||
}, | ||
"scripts": { | ||
"build": "tsc -noEmit && esbuild src/index.ts --bundle --platform=node --target=node16 --external:esbuild --external:fsevents --outfile=dist/index.js --log-level=silent", | ||
"clean": "rm -rf dist" | ||
} | ||
} | ||
"name": "@convex-dev/cli", | ||
"description": "Command-line interface for Convex Cloud backend.", | ||
"version": "0.0.48", | ||
"author": "Convex, Inc. <team@convex.dev>", | ||
"homepage": "https://convex.dev", | ||
"license": "MIT", | ||
"bin": { | ||
"convex": "bin/main.js" | ||
}, | ||
"dependencies": { | ||
"axios-case-converter": "~0.9.0", | ||
"axios-retry": "~3.2.4", | ||
"esbuild": "~0.14.16" | ||
}, | ||
"devDependencies": { | ||
"@convex-dev/bundler": "0.0.48", | ||
"@convex-dev/common": "0.0.48", | ||
"@types/deep-equal": "1.0.1", | ||
"@types/node": "~16.11.12", | ||
"axios": "0.25.0", | ||
"chalk": "4", | ||
"chokidar": "3.5.2", | ||
"commander": "8.1.0", | ||
"deep-equal": "2.0.5", | ||
"envfile": "6.17.0", | ||
"open": "^8.3.0", | ||
"typescript": "^4.5.4", | ||
"inquirer": "~8.2.0", | ||
"@types/inquirer": "~8.2.0", | ||
"esbuild": "~0.14.16" | ||
}, | ||
"engines": { | ||
"npm": ">=7.0.0", | ||
"node": ">=16.0.0" | ||
}, | ||
"scripts": { | ||
"build": "tsc -noEmit && esbuild src/index.ts --bundle --platform=node --target=node16 --external:esbuild --external:fsevents --outfile=dist/index.js --log-level=silent", | ||
"clean": "rm -rf dist" | ||
}, | ||
"readme": "# @convex-dev/cli\n\nCommand line utility for provisioning and syncing Convex Cloud instances.\n\nConvex is a platform for building dynamic applications without the complexity of\nmanaging a backend or interacting with a database. Data access functions run on\nthe Convex Cloud platform and use the\n[@convex-dev/server](https://www.npmjs.com/package/@convex-dev/server) libraries\nto read and manipulate data. The\n[@convex-dev/browser](https://www.npmjs.com/package/@convex-dev/browser) or\n[@convex-dev/react](https://www.npmjs.com/package/@convex-dev/react) packages\nare used in frontend code to interact with these functions. This package is used\nto provision new Convex Cloud instances and to sync cloud functions.\n\n## Usage\n\nSee\n[the Convex documentation](https://docs.convex.dev/getting-started/hello-convex)\nto get started!\n\n## See Also\n\n- [@convex-dev/browser](https://www.npmjs.com/package/@convex-dev/browser) is\n the library used by browser JavaScript/TypeScript code to interact with Convex\n server functions.\n- [@convex-dev/react](https://www.npmjs.com/package/@convex-dev/react) is layer\n on top of\n [@convex-dev/browser](https://www.npmjs.com/package/@convex-dev/browser) that\n provides more convenient binding with React components.\n- [@convex-dev/server](https://www.npmjs.com/package/@convex-dev/server) is the\n library used by Convex server functions to interact with data.\n" | ||
} |
@@ -103,6 +103,9 @@ import chalk from "chalk"; | ||
export function configFilename(deployment: string): string { | ||
if (deployment == "") { | ||
export function configFilename(deployment: string | null): string { | ||
if (deployment == null) { | ||
return "convex.json"; | ||
} else { | ||
if (deployment == "") { | ||
throw new Error("Can't have empty string for deployment"); | ||
} | ||
return `convex.${deployment}.json`; | ||
@@ -114,3 +117,3 @@ } | ||
export async function readConfig( | ||
deployment: string, | ||
deployment: string | null, | ||
verbose: boolean | ||
@@ -171,3 +174,3 @@ ): Promise<{ | ||
const env = await readEnv(deployment); | ||
if (env != undefined) { | ||
if (env != null) { | ||
return env; | ||
@@ -191,6 +194,9 @@ } | ||
export function envFilename(deployment: string): string { | ||
if (deployment == "") { | ||
export function envFilename(deployment: string | null): string { | ||
if (deployment == null) { | ||
return ".env.local"; | ||
} else { | ||
if (deployment == "") { | ||
throw new Error("Can't have empty string for deployment"); | ||
} | ||
return `.env.${deployment}.local`; | ||
@@ -200,3 +206,3 @@ } | ||
export async function readEnv(deployment: string): Promise<Env | undefined> { | ||
export async function readEnv(deployment: string): Promise<Env | null> { | ||
if (process.env.CONVEX_ADMIN_KEY) { | ||
@@ -212,3 +218,3 @@ return { adminKey: process.env.CONVEX_ADMIN_KEY }; | ||
} catch (err) { | ||
return undefined; | ||
return null; | ||
} | ||
@@ -218,3 +224,3 @@ const envFile = envfileParse(envContents); | ||
if (!adminKey || adminKey == "undefined") { | ||
return undefined; | ||
return null; | ||
} | ||
@@ -326,9 +332,12 @@ return { adminKey }; | ||
} | ||
// If the list of indexes is empty, filter out the key so it won't be serialized into the JSON output. | ||
// There's no need to filter out AuthInfo when unset, as JSON.stringify will skip over values that are `undefined`. | ||
let keys = Object.keys(instanceConfig).filter( | ||
(key) => !(key == "indexes" && instanceConfig.indexes.length == 0) | ||
); | ||
// If the list of indexes is empty, remove it from the object to be written out. | ||
let toWrite = {}; | ||
if (instanceConfig.indexes.length == 0) { | ||
let { indexes, ...rest } = instanceConfig; | ||
Object.assign(toWrite, rest); | ||
} else { | ||
Object.assign(toWrite, instanceConfig); | ||
} | ||
try { | ||
await configFile.writeFile(JSON.stringify(instanceConfig, keys, 2) + "\n"); | ||
await configFile.writeFile(JSON.stringify(toWrite, undefined, 2) + "\n"); | ||
} catch (err) { | ||
@@ -461,5 +470,12 @@ console.error( | ||
function renderModule(functions: string, module: Bundle): String { | ||
function renderModule( | ||
functions: string, | ||
module: Bundle, | ||
verbose: boolean | ||
): String { | ||
const relPath = path.join(functions, module.path); | ||
return relPath + "\n" + module.source; | ||
if (verbose) { | ||
return relPath + "\n" + module.source; | ||
} | ||
return relPath; | ||
} | ||
@@ -472,3 +488,4 @@ | ||
newConfig: InstanceConfig, | ||
newModules: Bundle[] | ||
newModules: Bundle[], | ||
verbose: boolean | ||
): String { | ||
@@ -535,3 +552,4 @@ var diff = ""; | ||
for (const module of droppedModules) { | ||
diff += "[-] " + renderModule(oldConfig.functions, module) + "\n"; | ||
diff += | ||
"[-] " + renderModule(oldConfig.functions, module, verbose) + "\n"; | ||
} | ||
@@ -558,8 +576,47 @@ } | ||
for (const module of addedModules) { | ||
diff += "[+] " + renderModule(newConfig.functions, module) + "\n"; | ||
diff += | ||
"[+] " + renderModule(newConfig.functions, module, verbose) + "\n"; | ||
} | ||
} | ||
// TODO: Consider printing out changes to `InstanceConfig.authInfo` here as well. | ||
let droppedAuth = []; | ||
for (const oldAuth of oldConfig.authInfo) { | ||
var matches = false; | ||
for (const newAuth of newConfig.authInfo) { | ||
if (equal(oldAuth, newAuth)) { | ||
matches = true; | ||
break; | ||
} | ||
} | ||
if (!matches) { | ||
droppedAuth.push(oldAuth); | ||
} | ||
} | ||
if (droppedAuth.length > 0) { | ||
diff += "Remove the following auth providers:\n"; | ||
for (const authInfo of droppedAuth) { | ||
diff += "[-] " + JSON.stringify(authInfo) + "\n"; | ||
} | ||
} | ||
let addedAuth = []; | ||
for (const newAuth of newConfig.authInfo) { | ||
var matches = false; | ||
for (const oldAuth of oldConfig.authInfo) { | ||
if (equal(newAuth, oldAuth)) { | ||
matches = true; | ||
break; | ||
} | ||
} | ||
if (!matches) { | ||
addedAuth.push(newAuth); | ||
} | ||
} | ||
if (addedAuth.length > 0) { | ||
diff += "Add the following auth providers:\n"; | ||
for (const auth of addedAuth) { | ||
diff += "[+] " + JSON.stringify(auth) + "\n"; | ||
} | ||
} | ||
return diff; | ||
} |
@@ -19,9 +19,7 @@ import { Command } from "commander"; | ||
"--deployment <name>", | ||
"Name of deployment to show dashboard for (`convex.<name>.json`). Defaults to `convex.json`)", | ||
"" | ||
"Name of deployment to show dashboard for (`convex.<name>.json`). Defaults to `convex.json`)" | ||
) | ||
.action(async (options) => { | ||
const deployment = ""; | ||
const adminKey = (await mustReadEnv(deployment)).adminKey; | ||
const { instanceConfig } = await readConfig(deployment, false); | ||
const adminKey = (await mustReadEnv(options.deployment)).adminKey; | ||
const { instanceConfig } = await readConfig(options.deployment, false); | ||
const loginUrl = await dashboardLogin(instanceConfig.origin, adminKey); | ||
@@ -28,0 +26,0 @@ |
@@ -19,3 +19,3 @@ import { Command } from "commander"; | ||
"Deactivate an existing instance associated with the Convex app in current directory, " + | ||
"returning your beta-key redemption. The data still lives on convex servers. If you " + | ||
"returning your beta-key redemption. The data still lives on Convex's servers. If you " + | ||
"really want all data purged, please contact support@convex.dev" | ||
@@ -29,4 +29,3 @@ ) | ||
"--deployment <name>", | ||
"Name of deployment to deactivate (`convex.<name>.json`). Defaults to `convex.json`)", | ||
"" | ||
"Name of deployment to deactivate (`convex.<name>.json`). Defaults to `convex.json`)" | ||
) | ||
@@ -33,0 +32,0 @@ .action(async (options) => { |
@@ -8,3 +8,39 @@ #!/usr/bin/env node | ||
import { version } from "@convex-dev/common"; | ||
import { auth } from "./auth"; | ||
import { listInstances } from "./list_instances"; | ||
import { reinit } from "./reinit"; | ||
import chalk from "chalk"; | ||
const MINIMUM_MAJOR_VERSION = 16; | ||
const nodeVersion = process.versions.node; | ||
const majorVersion = parseInt(nodeVersion.split(".")[0], 10); | ||
if (majorVersion < MINIMUM_MAJOR_VERSION) { | ||
console.log( | ||
chalk.red( | ||
`Your Node version ${nodeVersion} is too old. Convex requires at least Node v${MINIMUM_MAJOR_VERSION}.` | ||
) | ||
); | ||
console.log( | ||
chalk.gray( | ||
`You can use ${chalk.bold( | ||
"nvm" | ||
)} (https://github.com/nvm-sh/nvm#installing-and-updating) to manage different versions of Node.` | ||
) | ||
); | ||
console.log( | ||
chalk.gray( | ||
"After installing `nvm`, install the latest version of Node with " + | ||
chalk.bold("`nvm install node`.") | ||
) | ||
); | ||
console.log( | ||
chalk.gray( | ||
"Then, activate the installed version in your terminal with " + | ||
chalk.bold("`nvm use`.") | ||
) | ||
); | ||
process.exit(1); | ||
} | ||
const program = new Command(); | ||
@@ -17,5 +53,8 @@ program.name("convex"); | ||
program.addCommand(dashboard); | ||
program.addCommand(listInstances); | ||
program.addCommand(reinit); | ||
program.addCommand(deactivate); | ||
program.addCommand(auth); | ||
program.version(version); | ||
program.parseAsync(process.argv); |
@@ -12,2 +12,3 @@ import { Command } from "commander"; | ||
envFilename, | ||
readConfig, | ||
} from "./config"; | ||
@@ -27,4 +28,3 @@ import { version } from "@convex-dev/common"; | ||
"--deployment <name>", | ||
"Name of deployment to create (`convex.<name>.json`). Defaults to `convex.json`)", | ||
"" | ||
"Name of deployment to create (`convex.<name>.json`). Defaults to `convex.json`" | ||
) | ||
@@ -53,5 +53,16 @@ .action(async (options) => { | ||
} | ||
const existingConfig = fs | ||
.readdirSync(".") | ||
.find((e) => e.match("^convex.*.json")); | ||
var existingInstanceName; | ||
if (existingConfig != undefined) { | ||
const matches = existingConfig.match("^convex.(.*).json$"); | ||
const existingDeployment = matches && matches[1]; | ||
const { instanceConfig } = await readConfig(existingDeployment, false); | ||
existingInstanceName = instanceConfig.instanceName; | ||
} | ||
const envFn = envFilename(options.deployment); | ||
const env = await readEnv(options.deployment); | ||
if (env != undefined) { | ||
if (env != null) { | ||
console.error(chalk.red(`File "${envFn}" already exists.`)); | ||
@@ -75,3 +86,5 @@ console.error("Remove this file to create a new project."); | ||
const { instanceOrigin, adminKey, redemptionsRemaining } = await provision( | ||
betaKey | ||
betaKey, | ||
existingInstanceName, | ||
options.deployment | ||
); | ||
@@ -127,6 +140,12 @@ // Clear spinner. | ||
betaKey?: string; | ||
existingInstanceName?: string; | ||
deployment?: string; | ||
} | ||
/** Provision a new empty server instance and return the origin. */ | ||
async function provision(betaKey?: string): Promise<{ | ||
async function provision( | ||
betaKey?: string, | ||
existingInstanceName?: string, | ||
deployment?: string | ||
): Promise<{ | ||
instanceName: string; | ||
@@ -140,2 +159,4 @@ instanceOrigin: string; | ||
betaKey, | ||
existingInstanceName, | ||
deployment, | ||
}; | ||
@@ -156,3 +177,3 @@ const provisionUrl = `${provisionHost}/api/${version}/provision`; | ||
chalk.gray( | ||
"Pass it with --beta-key; if you don't have one, sign up at https://convex.dev" | ||
"Pass it in with --beta-key; if you don't have one, sign up at https://convex.dev" | ||
) | ||
@@ -159,0 +180,0 @@ ); |
@@ -16,3 +16,4 @@ import { Command } from "commander"; | ||
.description("Push local instance config to Convex Cloud") | ||
.option("-v, --verbose", "Show changes and prompt for confirmation") | ||
.option("-v, --verbose", "Show full listing of changes") | ||
.option("-p, --prompt", "Prompt for confirmation") | ||
.option( | ||
@@ -24,4 +25,3 @@ "--dry-run", | ||
"--deployment <name>", | ||
"Name of deployment to push to (`convex.<name>.json`). Defaults to `convex.json`)", | ||
"" | ||
"Name of deployment to push to (`convex.<name>.json`). Defaults to `convex.json`" | ||
) | ||
@@ -46,3 +46,4 @@ .action(async (options) => { | ||
localConfig, | ||
localModules | ||
localModules, | ||
options.verbose | ||
); | ||
@@ -54,9 +55,9 @@ if (diff == "") { | ||
if (options.verbose) { | ||
console.log( | ||
chalk.bold( | ||
"Remote instance config will be overwritten with the following changes:" | ||
) | ||
); | ||
console.log(diff); | ||
console.log( | ||
chalk.bold( | ||
"Remote instance config will be overwritten with the following changes:" | ||
) | ||
); | ||
console.log(diff); | ||
if (options.prompt) { | ||
await prompt("Press enter to continue or ctrl-C to abort.\n"); | ||
@@ -63,0 +64,0 @@ } |
Sorry, the diff of this file is too big to display
Deprecated
MaintenanceThe maintainer of the package marked it as deprecated. This could indicate that a single version should not be used, or that the package is no longer maintained and any new vulnerabilities will not be fixed.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
Deprecated
MaintenanceThe maintainer of the package marked it as deprecated. This could indicate that a single version should not be used, or that the package is no longer maintained and any new vulnerabilities will not be fixed.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 2 instances in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses eval() which is a dangerous function. This prevents the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 2 instances in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 10 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 2 instances in 1 package
1953495
19
44437
1
2
15
Updatedesbuild@~0.14.16