appwrite-cli 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/npm-publish.yml +41 -0
- package/Formula/appwrite.rb +19 -0
- package/LICENSE.md +12 -0
- package/README.md +102 -0
- package/docs/examples/account/create-anonymous-session.md +1 -0
- package/docs/examples/account/create-j-w-t.md +1 -0
- package/docs/examples/account/create-magic-u-r-l-session.md +4 -0
- package/docs/examples/account/create-o-auth2session.md +5 -0
- package/docs/examples/account/create-recovery.md +3 -0
- package/docs/examples/account/create-session.md +3 -0
- package/docs/examples/account/create-verification.md +2 -0
- package/docs/examples/account/create.md +5 -0
- package/docs/examples/account/delete-session.md +2 -0
- package/docs/examples/account/delete-sessions.md +1 -0
- package/docs/examples/account/delete.md +1 -0
- package/docs/examples/account/get-logs.md +3 -0
- package/docs/examples/account/get-prefs.md +1 -0
- package/docs/examples/account/get-session.md +2 -0
- package/docs/examples/account/get-sessions.md +1 -0
- package/docs/examples/account/get.md +1 -0
- package/docs/examples/account/update-email.md +3 -0
- package/docs/examples/account/update-magic-u-r-l-session.md +3 -0
- package/docs/examples/account/update-name.md +2 -0
- package/docs/examples/account/update-password.md +3 -0
- package/docs/examples/account/update-prefs.md +2 -0
- package/docs/examples/account/update-recovery.md +5 -0
- package/docs/examples/account/update-session.md +2 -0
- package/docs/examples/account/update-verification.md +3 -0
- package/docs/examples/avatars/get-browser.md +5 -0
- package/docs/examples/avatars/get-credit-card.md +5 -0
- package/docs/examples/avatars/get-favicon.md +2 -0
- package/docs/examples/avatars/get-flag.md +5 -0
- package/docs/examples/avatars/get-image.md +4 -0
- package/docs/examples/avatars/get-initials.md +6 -0
- package/docs/examples/avatars/get-q-r.md +5 -0
- package/docs/examples/database/create-boolean-attribute.md +6 -0
- package/docs/examples/database/create-collection.md +6 -0
- package/docs/examples/database/create-document.md +6 -0
- package/docs/examples/database/create-email-attribute.md +6 -0
- package/docs/examples/database/create-enum-attribute.md +7 -0
- package/docs/examples/database/create-float-attribute.md +8 -0
- package/docs/examples/database/create-index.md +6 -0
- package/docs/examples/database/create-integer-attribute.md +8 -0
- package/docs/examples/database/create-ip-attribute.md +6 -0
- package/docs/examples/database/create-string-attribute.md +7 -0
- package/docs/examples/database/create-url-attribute.md +6 -0
- package/docs/examples/database/delete-attribute.md +3 -0
- package/docs/examples/database/delete-collection.md +2 -0
- package/docs/examples/database/delete-document.md +3 -0
- package/docs/examples/database/delete-index.md +3 -0
- package/docs/examples/database/get-attribute.md +3 -0
- package/docs/examples/database/get-collection-usage.md +3 -0
- package/docs/examples/database/get-collection.md +2 -0
- package/docs/examples/database/get-document.md +3 -0
- package/docs/examples/database/get-index.md +3 -0
- package/docs/examples/database/get-usage.md +2 -0
- package/docs/examples/database/list-attributes.md +2 -0
- package/docs/examples/database/list-collection-logs.md +4 -0
- package/docs/examples/database/list-collections.md +7 -0
- package/docs/examples/database/list-document-logs.md +5 -0
- package/docs/examples/database/list-documents.md +9 -0
- package/docs/examples/database/list-indexes.md +2 -0
- package/docs/examples/database/update-collection.md +7 -0
- package/docs/examples/database/update-document.md +6 -0
- package/docs/examples/functions/create-deployment.md +5 -0
- package/docs/examples/functions/create-execution.md +4 -0
- package/docs/examples/functions/create.md +9 -0
- package/docs/examples/functions/delete-deployment.md +3 -0
- package/docs/examples/functions/delete.md +2 -0
- package/docs/examples/functions/get-deployment.md +3 -0
- package/docs/examples/functions/get-execution.md +3 -0
- package/docs/examples/functions/get-usage.md +3 -0
- package/docs/examples/functions/get.md +2 -0
- package/docs/examples/functions/list-deployments.md +8 -0
- package/docs/examples/functions/list-executions.md +7 -0
- package/docs/examples/functions/list-runtimes.md +1 -0
- package/docs/examples/functions/list.md +7 -0
- package/docs/examples/functions/retry-build.md +4 -0
- package/docs/examples/functions/update-deployment.md +3 -0
- package/docs/examples/functions/update.md +8 -0
- package/docs/examples/health/get-antivirus.md +1 -0
- package/docs/examples/health/get-cache.md +1 -0
- package/docs/examples/health/get-d-b.md +1 -0
- package/docs/examples/health/get-queue-certificates.md +1 -0
- package/docs/examples/health/get-queue-functions.md +1 -0
- package/docs/examples/health/get-queue-logs.md +1 -0
- package/docs/examples/health/get-queue-usage.md +1 -0
- package/docs/examples/health/get-queue-webhooks.md +1 -0
- package/docs/examples/health/get-storage-local.md +1 -0
- package/docs/examples/health/get-time.md +1 -0
- package/docs/examples/health/get.md +1 -0
- package/docs/examples/locale/get-continents.md +1 -0
- package/docs/examples/locale/get-countries-e-u.md +1 -0
- package/docs/examples/locale/get-countries-phones.md +1 -0
- package/docs/examples/locale/get-countries.md +1 -0
- package/docs/examples/locale/get-currencies.md +1 -0
- package/docs/examples/locale/get-languages.md +1 -0
- package/docs/examples/locale/get.md +1 -0
- package/docs/examples/projects/create-domain.md +3 -0
- package/docs/examples/projects/create-key.md +4 -0
- package/docs/examples/projects/create-platform.md +7 -0
- package/docs/examples/projects/create-webhook.md +8 -0
- package/docs/examples/projects/create.md +13 -0
- package/docs/examples/projects/delete-domain.md +3 -0
- package/docs/examples/projects/delete-key.md +3 -0
- package/docs/examples/projects/delete-platform.md +3 -0
- package/docs/examples/projects/delete-webhook.md +3 -0
- package/docs/examples/projects/delete.md +3 -0
- package/docs/examples/projects/get-domain.md +3 -0
- package/docs/examples/projects/get-key.md +3 -0
- package/docs/examples/projects/get-platform.md +3 -0
- package/docs/examples/projects/get-usage.md +3 -0
- package/docs/examples/projects/get-webhook.md +3 -0
- package/docs/examples/projects/get.md +2 -0
- package/docs/examples/projects/list-domains.md +2 -0
- package/docs/examples/projects/list-keys.md +2 -0
- package/docs/examples/projects/list-platforms.md +2 -0
- package/docs/examples/projects/list-webhooks.md +2 -0
- package/docs/examples/projects/list.md +7 -0
- package/docs/examples/projects/update-auth-limit.md +3 -0
- package/docs/examples/projects/update-auth-status.md +4 -0
- package/docs/examples/projects/update-domain-verification.md +3 -0
- package/docs/examples/projects/update-key.md +5 -0
- package/docs/examples/projects/update-o-auth2.md +5 -0
- package/docs/examples/projects/update-platform.md +7 -0
- package/docs/examples/projects/update-service-status.md +4 -0
- package/docs/examples/projects/update-webhook.md +9 -0
- package/docs/examples/projects/update.md +12 -0
- package/docs/examples/storage/create-bucket.md +11 -0
- package/docs/examples/storage/create-file.md +6 -0
- package/docs/examples/storage/delete-bucket.md +2 -0
- package/docs/examples/storage/delete-file.md +3 -0
- package/docs/examples/storage/get-bucket-usage.md +3 -0
- package/docs/examples/storage/get-bucket.md +2 -0
- package/docs/examples/storage/get-file-download.md +3 -0
- package/docs/examples/storage/get-file-preview.md +14 -0
- package/docs/examples/storage/get-file-view.md +3 -0
- package/docs/examples/storage/get-file.md +3 -0
- package/docs/examples/storage/get-usage.md +2 -0
- package/docs/examples/storage/list-buckets.md +7 -0
- package/docs/examples/storage/list-files.md +8 -0
- package/docs/examples/storage/update-bucket.md +11 -0
- package/docs/examples/storage/update-file.md +5 -0
- package/docs/examples/teams/create-membership.md +6 -0
- package/docs/examples/teams/create.md +4 -0
- package/docs/examples/teams/delete-membership.md +3 -0
- package/docs/examples/teams/delete.md +2 -0
- package/docs/examples/teams/get-membership.md +3 -0
- package/docs/examples/teams/get-memberships.md +8 -0
- package/docs/examples/teams/get.md +2 -0
- package/docs/examples/teams/list.md +7 -0
- package/docs/examples/teams/update-membership-roles.md +4 -0
- package/docs/examples/teams/update-membership-status.md +5 -0
- package/docs/examples/teams/update.md +3 -0
- package/docs/examples/users/create.md +5 -0
- package/docs/examples/users/delete-session.md +3 -0
- package/docs/examples/users/delete-sessions.md +2 -0
- package/docs/examples/users/delete.md +2 -0
- package/docs/examples/users/get-logs.md +4 -0
- package/docs/examples/users/get-prefs.md +2 -0
- package/docs/examples/users/get-sessions.md +2 -0
- package/docs/examples/users/get-usage.md +3 -0
- package/docs/examples/users/get.md +2 -0
- package/docs/examples/users/list.md +7 -0
- package/docs/examples/users/update-email.md +3 -0
- package/docs/examples/users/update-name.md +3 -0
- package/docs/examples/users/update-password.md +3 -0
- package/docs/examples/users/update-prefs.md +3 -0
- package/docs/examples/users/update-status.md +3 -0
- package/docs/examples/users/update-verification.md +3 -0
- package/index.js +49 -0
- package/install.sh +165 -0
- package/ldid/COPYING +661 -0
- package/ldid/Makefile +51 -0
- package/ldid/control +12 -0
- package/ldid/control.sh +5 -0
- package/ldid/deb.sh +10 -0
- package/ldid/ios.sh +2 -0
- package/ldid/ldid.cpp +3253 -0
- package/ldid/ldid.hpp +164 -0
- package/ldid/libplist/.github/workflows/build.yml +62 -0
- package/ldid/libplist/.github/workflows/codeql-analysis.yml +71 -0
- package/ldid/libplist/AUTHORS +28 -0
- package/ldid/libplist/COPYING +340 -0
- package/ldid/libplist/COPYING.LESSER +502 -0
- package/ldid/libplist/Makefile.am +20 -0
- package/ldid/libplist/NEWS +252 -0
- package/ldid/libplist/README.md +114 -0
- package/ldid/libplist/aclocal.m4 +1729 -0
- package/ldid/libplist/autogen.sh +26 -0
- package/ldid/libplist/configure.ac +292 -0
- package/ldid/libplist/cython/Makefile.am +53 -0
- package/ldid/libplist/cython/plist.pxd +78 -0
- package/ldid/libplist/cython/plist.pyx +947 -0
- package/ldid/libplist/cython/plist_util.c +40 -0
- package/ldid/libplist/cython/plist_util.h +5 -0
- package/ldid/libplist/docs/Makefile.am +3 -0
- package/ldid/libplist/docs/plistutil.1 +62 -0
- package/ldid/libplist/fuzz/Makefile.am +43 -0
- package/ldid/libplist/fuzz/bplist-crashes/clusterfuzz-testcase-4766291097288704 +0 -0
- package/ldid/libplist/fuzz/bplist-crashes/clusterfuzz-testcase-4930725262393344 +0 -0
- package/ldid/libplist/fuzz/bplist-crashes/clusterfuzz-testcase-5421965105954816 +0 -0
- package/ldid/libplist/fuzz/bplist-crashes/clusterfuzz-testcase-5556177727389696 +0 -0
- package/ldid/libplist/fuzz/bplist-crashes/clusterfuzz-testcase-6557963011489792 +0 -0
- package/ldid/libplist/fuzz/bplist-crashes/clusterfuzz-testcase-6605859144597504 +0 -0
- package/ldid/libplist/fuzz/bplist-crashes/crash-0ce4dd483b645bc05ec45a97d285dcf1933ee840 +0 -0
- package/ldid/libplist/fuzz/bplist-crashes/crash-0d59cdcb5c3416c2790612b78a631ce9f5622800 +0 -0
- package/ldid/libplist/fuzz/bplist-crashes/crash-17d635ab460fef74df1ac7561f1253533a6359c5 +0 -0
- package/ldid/libplist/fuzz/bplist-crashes/crash-33a67313fa7864cd627ef92d12017a127d342f28 +0 -0
- package/ldid/libplist/fuzz/bplist-crashes/crash-39f1347115f8fe9ac25cdc9332e3fc5cd32c7f7b +0 -0
- package/ldid/libplist/fuzz/bplist-crashes/crash-4bd78175fe01d07c5ee90104fbc68d95dd092210 +0 -0
- package/ldid/libplist/fuzz/bplist-crashes/crash-4c5404453bb7425aef9b953a5f6f3f0afcc48392 +0 -0
- package/ldid/libplist/fuzz/bplist-crashes/crash-52775e25f6af20af351cd616834e602fc988a032 +0 -0
- package/ldid/libplist/fuzz/bplist-crashes/crash-6d1399685b745d3d49fadc91072fabcdde8d16fa +0 -0
- package/ldid/libplist/fuzz/bplist-crashes/crash-94b3725900d63c6258448fd757559c81002de9c9 +0 -0
- package/ldid/libplist/fuzz/bplist-crashes/crash-a47195acbabc3f5b2cda9c6ebda42f2afc1cc5af +0 -0
- package/ldid/libplist/fuzz/bplist-crashes/crash-ce852bae6aeeffc4698a93660236f1b995ce966e +0 -0
- package/ldid/libplist/fuzz/bplist-crashes/crash-daddb6e82e3d1ed76e20e4131462f5247a6fb131 +0 -0
- package/ldid/libplist/fuzz/bplist-crashes/crash-f21be4ebce7f9c337bf96b93cec7e252f5c75a21 +0 -0
- package/ldid/libplist/fuzz/bplist-crashes/crash-f779dafccc0164684d1a264976e56037188b40e2 +0 -0
- package/ldid/libplist/fuzz/bplist-leaks/leak-96fb453b3ba18d31e164831795a708183b5a0dac +0 -0
- package/ldid/libplist/fuzz/bplist-leaks/leak-acb3c00a83d7635638a476a4e70fc1f1caa1a5b1 +0 -0
- package/ldid/libplist/fuzz/bplist-leaks/leak-fe2cd4b1f67e0c9b21e6225a4fb4ca19eab80074 +0 -0
- package/ldid/libplist/fuzz/bplist.dict +1 -0
- package/ldid/libplist/fuzz/bplist_fuzzer.cc +32 -0
- package/ldid/libplist/fuzz/bplist_fuzzer.options +3 -0
- package/ldid/libplist/fuzz/fuzzers.test +8 -0
- package/ldid/libplist/fuzz/init-fuzzers.sh +23 -0
- package/ldid/libplist/fuzz/test-fuzzers.sh +33 -0
- package/ldid/libplist/fuzz/xplist-crashes/clusterfuzz-testcase-4516959125241856 +0 -0
- package/ldid/libplist/fuzz/xplist-crashes/clusterfuzz-testcase-4663876528373760 +5 -0
- package/ldid/libplist/fuzz/xplist-crashes/clusterfuzz-testcase-5799076113154048 +45 -0
- package/ldid/libplist/fuzz/xplist-crashes/clusterfuzz-testcase-5922404220010496 +0 -0
- package/ldid/libplist/fuzz/xplist-crashes/clusterfuzz-testcase-6015098361479168 +0 -0
- package/ldid/libplist/fuzz/xplist-crashes/clusterfuzz-testcase-6043836860071936 +0 -0
- package/ldid/libplist/fuzz/xplist-crashes/clusterfuzz-testcase-6047509906456576 +10050 -0
- package/ldid/libplist/fuzz/xplist-crashes/clusterfuzz-testcase-6482601374121984 +0 -0
- package/ldid/libplist/fuzz/xplist-crashes/crash-09788d7acb46b4b177422f9c4ee54556a3ad1f17 +53 -0
- package/ldid/libplist/fuzz/xplist-crashes/crash-155c60d5c4b2778110fb4a633caa7d64eb9b99c1 +9 -0
- package/ldid/libplist/fuzz/xplist-crashes/crash-348c909a0b3532977185f551eb5d2ed04e694883 +11 -0
- package/ldid/libplist/fuzz/xplist-crashes/crash-7bc172e27a2b1d4fcaf031f59d1f08fb83081e4a +8 -0
- package/ldid/libplist/fuzz/xplist-crashes/crash-80c28b0e2a446665e68927dd4441c10c9a68e64e +0 -0
- package/ldid/libplist/fuzz/xplist-crashes/crash-8acf177da60ecf13c36d0da1b8e25de891980ea6 +5 -0
- package/ldid/libplist/fuzz/xplist-crashes/crash-94276cf69a50e78dd6cdf079c208cb80f357cd33 +0 -0
- package/ldid/libplist/fuzz/xplist-crashes/crash-9ddb891a0ec42401eb4629e6b99e01aef7909eb9 +0 -0
- package/ldid/libplist/fuzz/xplist-crashes/crash-a8b44e1f5be4f75f00a937016ec5405bce77a0f9 +0 -0
- package/ldid/libplist/fuzz/xplist-crashes/crash-da39a3ee5e6b4b0d3255bfef95601890afd80709 +0 -0
- package/ldid/libplist/fuzz/xplist-crashes/crash-f03c680ee1c4d84c28e731752df77a61e213a24d +72 -0
- package/ldid/libplist/fuzz/xplist-leaks/clusterfuzz-testcase-4634751103139840 +187 -0
- package/ldid/libplist/fuzz/xplist-leaks/clusterfuzz-testcase-6056412121661440 +12 -0
- package/ldid/libplist/fuzz/xplist-leaks/leak-47b0a9f21d3affab6cfc898e5140bb53265ada07 +0 -0
- package/ldid/libplist/fuzz/xplist-leaks/leak-4c81aae70b20d9b9408b78d40999a54205bdcfb7 +0 -0
- package/ldid/libplist/fuzz/xplist-leaks/leak-53bc466851eda790bd891733da5db0a7482886bf +6 -0
- package/ldid/libplist/fuzz/xplist.dict +51 -0
- package/ldid/libplist/fuzz/xplist_fuzzer.cc +32 -0
- package/ldid/libplist/fuzz/xplist_fuzzer.options +3 -0
- package/ldid/libplist/include/Makefile.am +15 -0
- package/ldid/libplist/include/plist/Array.h +55 -0
- package/ldid/libplist/include/plist/Boolean.h +48 -0
- package/ldid/libplist/include/plist/Data.h +49 -0
- package/ldid/libplist/include/plist/Date.h +50 -0
- package/ldid/libplist/include/plist/Dictionary.h +68 -0
- package/ldid/libplist/include/plist/Integer.h +48 -0
- package/ldid/libplist/include/plist/Key.h +49 -0
- package/ldid/libplist/include/plist/Node.h +57 -0
- package/ldid/libplist/include/plist/Real.h +48 -0
- package/ldid/libplist/include/plist/String.h +49 -0
- package/ldid/libplist/include/plist/Structure.h +59 -0
- package/ldid/libplist/include/plist/Uid.h +48 -0
- package/ldid/libplist/include/plist/plist++.h +39 -0
- package/ldid/libplist/include/plist/plist.h +953 -0
- package/ldid/libplist/libcnary/COPYING +502 -0
- package/ldid/libplist/libcnary/Makefile.am +15 -0
- package/ldid/libplist/libcnary/README +5 -0
- package/ldid/libplist/libcnary/cnary.c +46 -0
- package/ldid/libplist/libcnary/include/node.h +65 -0
- package/ldid/libplist/libcnary/include/node_list.h +47 -0
- package/ldid/libplist/libcnary/include/object.h +41 -0
- package/ldid/libplist/libcnary/node.c +216 -0
- package/ldid/libplist/libcnary/node_list.c +157 -0
- package/ldid/libplist/m4/ac_pkg_cython.m4 +67 -0
- package/ldid/libplist/m4/as-compiler-flag.m4 +62 -0
- package/ldid/libplist/m4/ax_pthread.m4 +485 -0
- package/ldid/libplist/m4/ax_python_devel.m4 +327 -0
- package/ldid/libplist/m4/cython_python.m4 +7 -0
- package/ldid/libplist/src/Array.cpp +148 -0
- package/ldid/libplist/src/Boolean.cpp +73 -0
- package/ldid/libplist/src/Data.cpp +79 -0
- package/ldid/libplist/src/Date.cpp +76 -0
- package/ldid/libplist/src/Dictionary.cpp +182 -0
- package/ldid/libplist/src/Integer.cpp +73 -0
- package/ldid/libplist/src/Key.cpp +80 -0
- package/ldid/libplist/src/Makefile.am +63 -0
- package/ldid/libplist/src/Node.cpp +166 -0
- package/ldid/libplist/src/Real.cpp +73 -0
- package/ldid/libplist/src/String.cpp +80 -0
- package/ldid/libplist/src/Structure.cpp +123 -0
- package/ldid/libplist/src/Uid.cpp +73 -0
- package/ldid/libplist/src/base64.c +119 -0
- package/ldid/libplist/src/base64.h +28 -0
- package/ldid/libplist/src/bplist.c +1381 -0
- package/ldid/libplist/src/bytearray.c +61 -0
- package/ldid/libplist/src/bytearray.h +36 -0
- package/ldid/libplist/src/hashtable.c +140 -0
- package/ldid/libplist/src/hashtable.h +50 -0
- package/ldid/libplist/src/plist.c +1356 -0
- package/ldid/libplist/src/plist.h +74 -0
- package/ldid/libplist/src/ptrarray.c +96 -0
- package/ldid/libplist/src/ptrarray.h +40 -0
- package/ldid/libplist/src/strbuf.h +34 -0
- package/ldid/libplist/src/time64.c +814 -0
- package/ldid/libplist/src/time64.h +81 -0
- package/ldid/libplist/src/time64_limits.h +97 -0
- package/ldid/libplist/src/xplist.c +1435 -0
- package/ldid/libplist/test/Makefile.am +93 -0
- package/ldid/libplist/test/amp.test +14 -0
- package/ldid/libplist/test/bigarray.test +15 -0
- package/ldid/libplist/test/cdata.test +12 -0
- package/ldid/libplist/test/data/1.plist +35 -0
- package/ldid/libplist/test/data/2.plist +100 -0
- package/ldid/libplist/test/data/3.plist +420 -0
- package/ldid/libplist/test/data/4.plist +5037 -0
- package/ldid/libplist/test/data/5.plist +55053 -0
- package/ldid/libplist/test/data/6.plist +4006 -0
- package/ldid/libplist/test/data/7.plist +14 -0
- package/ldid/libplist/test/data/amp.plist +6 -0
- package/ldid/libplist/test/data/cdata.plist +6 -0
- package/ldid/libplist/test/data/dictref1byte.bplist +0 -0
- package/ldid/libplist/test/data/dictref2bytes.bplist +0 -0
- package/ldid/libplist/test/data/dictref3bytes.bplist +0 -0
- package/ldid/libplist/test/data/dictref4bytes.bplist +0 -0
- package/ldid/libplist/test/data/dictref5bytes.bplist +0 -0
- package/ldid/libplist/test/data/dictref6bytes.bplist +0 -0
- package/ldid/libplist/test/data/dictref7bytes.bplist +0 -0
- package/ldid/libplist/test/data/dictref8bytes.bplist +0 -0
- package/ldid/libplist/test/data/empty_keys.plist +8 -0
- package/ldid/libplist/test/data/entities.plist +57 -0
- package/ldid/libplist/test/data/hex.plist +5 -0
- package/ldid/libplist/test/data/invalid_tag.plist +6 -0
- package/ldid/libplist/test/data/malformed_dict.bplist +0 -0
- package/ldid/libplist/test/data/off1byte.bplist +0 -0
- package/ldid/libplist/test/data/off2bytes.bplist +0 -0
- package/ldid/libplist/test/data/off3bytes.bplist +0 -0
- package/ldid/libplist/test/data/off4bytes.bplist +0 -0
- package/ldid/libplist/test/data/off5bytes.bplist +0 -0
- package/ldid/libplist/test/data/off6bytes.bplist +0 -0
- package/ldid/libplist/test/data/off7bytes.bplist +0 -0
- package/ldid/libplist/test/data/off8bytes.bplist +0 -0
- package/ldid/libplist/test/data/offxml.plist +8 -0
- package/ldid/libplist/test/data/order.bplist +0 -0
- package/ldid/libplist/test/data/order.plist +27 -0
- package/ldid/libplist/test/data/recursion.bplist +0 -0
- package/ldid/libplist/test/data/signed.bplist +0 -0
- package/ldid/libplist/test/data/signed.plist +5 -0
- package/ldid/libplist/test/data/signedunsigned.bplist +0 -0
- package/ldid/libplist/test/data/signedunsigned.plist +11 -0
- package/ldid/libplist/test/data/unsigned.bplist +0 -0
- package/ldid/libplist/test/data/unsigned.plist +5 -0
- package/ldid/libplist/test/dates.test +15 -0
- package/ldid/libplist/test/empty.test +15 -0
- package/ldid/libplist/test/empty_keys.test +12 -0
- package/ldid/libplist/test/entities.test +12 -0
- package/ldid/libplist/test/hex.test +12 -0
- package/ldid/libplist/test/huge.test +15 -0
- package/ldid/libplist/test/invalid_tag.test +14 -0
- package/ldid/libplist/test/large.test +15 -0
- package/ldid/libplist/test/malformed_dict.test +11 -0
- package/ldid/libplist/test/medium.test +15 -0
- package/ldid/libplist/test/offsetsize.test +12 -0
- package/ldid/libplist/test/order.test +13 -0
- package/ldid/libplist/test/plist_cmp.c +158 -0
- package/ldid/libplist/test/plist_test.c +135 -0
- package/ldid/libplist/test/recursion.test +11 -0
- package/ldid/libplist/test/refsize.test +12 -0
- package/ldid/libplist/test/signedunsigned1.test +23 -0
- package/ldid/libplist/test/signedunsigned2.test +23 -0
- package/ldid/libplist/test/signedunsigned3.test +23 -0
- package/ldid/libplist/test/small.test +15 -0
- package/ldid/libplist/test/timezone1.test +17 -0
- package/ldid/libplist/test/timezone2.test +21 -0
- package/ldid/libplist/tools/Makefile.am +10 -0
- package/ldid/libplist/tools/plistutil.c +299 -0
- package/ldid/lookup2.c +416 -0
- package/ldid/make.sh +90 -0
- package/ldid/minimal/hexdump.h +76 -0
- package/ldid/minimal/mapping.h +72 -0
- package/ldid/minimal/sqlite3.h +71 -0
- package/ldid/minimal/stdlib.h +129 -0
- package/ldid/minimal/string.h +51 -0
- package/ldid/plist.sh +2 -0
- package/ldid/sha1.h +64 -0
- package/ldid/sysroot.sh +31 -0
- package/ldid/version.sh +2 -0
- package/lib/client.js +243 -0
- package/lib/commands/account.js +785 -0
- package/lib/commands/avatars.js +349 -0
- package/lib/commands/database.js +1238 -0
- package/lib/commands/deploy.js +477 -0
- package/lib/commands/functions.js +689 -0
- package/lib/commands/generic.js +106 -0
- package/lib/commands/health.js +269 -0
- package/lib/commands/init.js +148 -0
- package/lib/commands/locale.js +177 -0
- package/lib/commands/projects.js +1191 -0
- package/lib/commands/storage.js +743 -0
- package/lib/commands/teams.js +435 -0
- package/lib/commands/users.js +542 -0
- package/lib/config.js +264 -0
- package/lib/exception.js +9 -0
- package/lib/parser.js +179 -0
- package/lib/questions.js +223 -0
- package/lib/sdks.js +82 -0
- package/package.json +41 -0
package/lib/config.js
ADDED
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
const os = require('os');
|
|
2
|
+
const fs = require("fs");
|
|
3
|
+
const _path = require("path");
|
|
4
|
+
const process = require("process");
|
|
5
|
+
|
|
6
|
+
class Config {
|
|
7
|
+
constructor(path) {
|
|
8
|
+
this.path = path;
|
|
9
|
+
this.read();
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
read() {
|
|
13
|
+
try {
|
|
14
|
+
this.data = require(this.path);
|
|
15
|
+
} catch (e) {
|
|
16
|
+
// console.log(`${this.path} not found. Empty data`);
|
|
17
|
+
this.data = {};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
write() {
|
|
22
|
+
let dir = _path.dirname(this.path)
|
|
23
|
+
if (!fs.existsSync(dir)){
|
|
24
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
25
|
+
}
|
|
26
|
+
fs.writeFileSync(this.path, JSON.stringify(this.data, null, 4));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
get(key) {
|
|
30
|
+
return this.data[key];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
set(key, value) {
|
|
34
|
+
this.data[key] = value;
|
|
35
|
+
this.write();
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
delete(key) {
|
|
39
|
+
delete this.data[key];
|
|
40
|
+
this.write();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
clear() {
|
|
44
|
+
this.data = {};
|
|
45
|
+
this.write();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
has(key) {
|
|
49
|
+
return this.data.hasOwnProperty(key);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
keys() {
|
|
53
|
+
return Object.keys(this.data);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
values() {
|
|
57
|
+
return Object.values(this.data);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
toString() {
|
|
61
|
+
return JSON.stringify(this.data, null, 4);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
class Local extends Config {
|
|
66
|
+
static CONFIG_FILE_PATH = "appwrite.json";
|
|
67
|
+
|
|
68
|
+
constructor(path = Local.CONFIG_FILE_PATH) {
|
|
69
|
+
let absolutePath = `${process.cwd()}/${path}`;
|
|
70
|
+
super(absolutePath);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
getFunctions() {
|
|
74
|
+
if (!this.has("functions")) {
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
return this.get("functions");
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
getFunction($id) {
|
|
81
|
+
if (!this.has("functions")) {
|
|
82
|
+
return {};
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
let functions = this.get("functions");
|
|
86
|
+
for (let i = 0; i < functions.length; i++) {
|
|
87
|
+
if (functions[i]['$id'] == $id) {
|
|
88
|
+
return functions[i];
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return {};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
addFunction(props) {
|
|
96
|
+
if (!this.has("functions")) {
|
|
97
|
+
this.set("functions", []);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
let functions = this.get("functions");
|
|
101
|
+
for (let i = 0; i < functions.length; i++) {
|
|
102
|
+
if (functions[i]['$id'] == props['$id']) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
functions.push(props);
|
|
107
|
+
this.set("functions", functions);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
updateFunction(id, props) {
|
|
111
|
+
if (!this.has("functions")) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
let functions = this.get("functions");
|
|
116
|
+
for (let i = 0; i < functions.length; i++) {
|
|
117
|
+
if (functions[i]['$id'] == id) {
|
|
118
|
+
functions[i] = {
|
|
119
|
+
...functions[i],
|
|
120
|
+
...props
|
|
121
|
+
};
|
|
122
|
+
this.set("functions", functions);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
getCollections() {
|
|
129
|
+
if (!this.has("collections")) {
|
|
130
|
+
return [];
|
|
131
|
+
}
|
|
132
|
+
return this.get("collections");
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
getCollection($id) {
|
|
136
|
+
if (!this.has("collection")) {
|
|
137
|
+
return {};
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
let collections = this.get("collections");
|
|
141
|
+
for (let i = 0; i < collections.length; i++) {
|
|
142
|
+
if (collections[i]['$id'] == $id) {
|
|
143
|
+
return collections[i];
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return {};
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
addCollection(props) {
|
|
151
|
+
if (!this.has("collections")) {
|
|
152
|
+
this.set("collections", []);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
let collections = this.get("collections");
|
|
156
|
+
for (let i = 0; i < collections.length; i++) {
|
|
157
|
+
if (collections[i]['$id'] == props['$id']) {
|
|
158
|
+
collections[i] = props;
|
|
159
|
+
this.set("collections", collections);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
collections.push(props);
|
|
164
|
+
this.set("collections", collections);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
getProject() {
|
|
168
|
+
if (!this.has("projectId") || !this.has("projectName")) {
|
|
169
|
+
return {};
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
return {
|
|
173
|
+
projectId: this.get("projectId"),
|
|
174
|
+
projectName: this.get("projectName"),
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
setProject(projectId, projectName) {
|
|
179
|
+
this.set("projectId", projectId);
|
|
180
|
+
this.set("projectName", projectName);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
class Global extends Config {
|
|
185
|
+
static CONFIG_FILE_PATH = ".appwrite/prefs.json";
|
|
186
|
+
|
|
187
|
+
static PREFERENCE_ENDPOINT = "endpoint";
|
|
188
|
+
static PREFERENCE_SELF_SIGNED = "selfSigned";
|
|
189
|
+
static PREFERENCE_COOKIE = "cookie";
|
|
190
|
+
static PREFERENCE_PROJECT = "project";
|
|
191
|
+
static PREFERENCE_KEY = "key";
|
|
192
|
+
static PREFERENCE_LOCALE = "locale";
|
|
193
|
+
static PREFERENCE_MODE = "mode";
|
|
194
|
+
|
|
195
|
+
static MODE_ADMIN = "admin";
|
|
196
|
+
static MODE_DEFAULT = "default";
|
|
197
|
+
|
|
198
|
+
static PROJECT_CONSOLE = "console";
|
|
199
|
+
|
|
200
|
+
constructor(path = Global.CONFIG_FILE_PATH) {
|
|
201
|
+
const homeDir = os.homedir();
|
|
202
|
+
super(`${homeDir}/${path}`);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
getEndpoint() {
|
|
206
|
+
if (!this.has(Global.PREFERENCE_ENDPOINT)) {
|
|
207
|
+
return "";
|
|
208
|
+
}
|
|
209
|
+
return this.get(Global.PREFERENCE_ENDPOINT);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
setEndpoint(endpoint) {
|
|
213
|
+
this.set(Global.PREFERENCE_ENDPOINT, endpoint);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
getSelfSigned() {
|
|
217
|
+
if (!this.has(Global.PREFERENCE_SELF_SIGNED)) {
|
|
218
|
+
return false;
|
|
219
|
+
}
|
|
220
|
+
return this.get(Global.PREFERENCE_SELF_SIGNED);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
setSelfSigned(selfSigned) {
|
|
224
|
+
this.set(Global.PREFERENCE_SELF_SIGNED, selfSigned);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
getCookie() {
|
|
228
|
+
if (!this.has(Global.PREFERENCE_COOKIE)) {
|
|
229
|
+
return "";
|
|
230
|
+
}
|
|
231
|
+
return this.get(Global.PREFERENCE_COOKIE);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
setCookie(cookie) {
|
|
235
|
+
this.set(Global.PREFERENCE_COOKIE, cookie);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
getProject() {
|
|
239
|
+
if (!this.has(Global.PREFERENCE_PROJECT)) {
|
|
240
|
+
return "";
|
|
241
|
+
}
|
|
242
|
+
return this.get(Global.PREFERENCE_PROJECT);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
setProject(project) {
|
|
246
|
+
this.set(Global.PREFERENCE_PROJECT, project);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
getKey() {
|
|
250
|
+
if (!this.has(Global.PREFERENCE_KEY)) {
|
|
251
|
+
return "";
|
|
252
|
+
}
|
|
253
|
+
return this.get(Global.PREFERENCE_KEY);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
setKey(key) {
|
|
257
|
+
this.set(Global.PREFERENCE_KEY, key);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
module.exports = {
|
|
262
|
+
localConfig : new Local(),
|
|
263
|
+
globalConfig : new Global(),
|
|
264
|
+
};
|
package/lib/exception.js
ADDED
package/lib/parser.js
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
const chalk = require('chalk');
|
|
2
|
+
const commander = require('commander');
|
|
3
|
+
const Table = require('cli-table3');
|
|
4
|
+
const { description } = require('../package.json');
|
|
5
|
+
|
|
6
|
+
const cliConfig = {
|
|
7
|
+
verbose: false,
|
|
8
|
+
json: false
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const parse = (data) => {
|
|
12
|
+
if (cliConfig.json) {
|
|
13
|
+
drawJSON(data);
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
for (let key in data) {
|
|
18
|
+
if (Array.isArray(data[key])) {
|
|
19
|
+
console.log(`${chalk.yellow.bold.underline(key)}`);
|
|
20
|
+
if (typeof data[key][0] === 'object') {
|
|
21
|
+
drawTable(data[key]);
|
|
22
|
+
} else {
|
|
23
|
+
drawJSON(data[key]);
|
|
24
|
+
}
|
|
25
|
+
} else if (typeof data[key] === 'object') {
|
|
26
|
+
console.log(`${chalk.yellow.bold.underline(key)}`)
|
|
27
|
+
parse(data[key]);
|
|
28
|
+
} else {
|
|
29
|
+
console.log(`${chalk.yellow.bold(key)} : ${data[key]}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const drawTable = (data) => {
|
|
35
|
+
if (data.length == 0) {
|
|
36
|
+
console.log("[]")
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Create an object with all the keys in it
|
|
41
|
+
let obj = data.reduce((res, item) => ({ ...res, ...item }));
|
|
42
|
+
// Get those keys as an array
|
|
43
|
+
let keys = Object.keys(obj);
|
|
44
|
+
// Create an object with all keys set to the default value ''
|
|
45
|
+
let def = keys.reduce((result, key) => {
|
|
46
|
+
result[key] = '-'
|
|
47
|
+
return result;
|
|
48
|
+
}, {});
|
|
49
|
+
// Use object destrucuring to replace all default values with the ones we have
|
|
50
|
+
data = data.map((item) => ({ ...def, ...item }));
|
|
51
|
+
|
|
52
|
+
let columns = Object.keys(data[0]);
|
|
53
|
+
|
|
54
|
+
let table = new Table({
|
|
55
|
+
head: columns.map(c => chalk.cyan.italic.bold(c)),
|
|
56
|
+
chars: {
|
|
57
|
+
'top': ' ',
|
|
58
|
+
'top-mid': ' ',
|
|
59
|
+
'top-left': ' ',
|
|
60
|
+
'top-right': ' ',
|
|
61
|
+
'bottom': ' ',
|
|
62
|
+
'bottom-mid': ' ',
|
|
63
|
+
'bottom-left': ' ',
|
|
64
|
+
'bottom-right': ' ',
|
|
65
|
+
'left': ' ',
|
|
66
|
+
'left-mid': ' ',
|
|
67
|
+
'mid': chalk.cyan('─'),
|
|
68
|
+
'mid-mid': chalk.cyan('┼'),
|
|
69
|
+
'right': ' ',
|
|
70
|
+
'right-mid': ' ',
|
|
71
|
+
'middle': chalk.cyan('│')
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
data.forEach(row => {
|
|
76
|
+
let rowValues = [];
|
|
77
|
+
for (let key in row) {
|
|
78
|
+
if (row[key] === null) {
|
|
79
|
+
rowValues.push("-");
|
|
80
|
+
} else if (Array.isArray(row[key])) {
|
|
81
|
+
switch (row[key].length) {
|
|
82
|
+
case 1:
|
|
83
|
+
if (typeof row[key][0] === 'object') {
|
|
84
|
+
rowValues.push(`array(${row[key].length})`);
|
|
85
|
+
} else {
|
|
86
|
+
rowValues.push(row[key][0]);
|
|
87
|
+
}
|
|
88
|
+
break;
|
|
89
|
+
default:
|
|
90
|
+
rowValues.push(`array(${row[key].length})`);
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
} else if (typeof row[key] === 'object') {
|
|
94
|
+
rowValues.push("object");
|
|
95
|
+
} else {
|
|
96
|
+
rowValues.push(row[key]);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
table.push(rowValues);
|
|
100
|
+
});
|
|
101
|
+
console.log(table.toString());
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const drawJSON = (data) => {
|
|
105
|
+
console.log(JSON.stringify(data, null, 2));
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const parseError = (err) => {
|
|
109
|
+
if(cliConfig.verbose) {
|
|
110
|
+
console.error(err);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
error(err.message);
|
|
114
|
+
|
|
115
|
+
process.exit(1)
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const actionRunner = (fn) => {
|
|
119
|
+
return (...args) => fn(...args).catch(parseError);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const parseInteger = (value) => {
|
|
123
|
+
const parsedValue = parseInt(value, 10);
|
|
124
|
+
if (isNaN(parsedValue)) {
|
|
125
|
+
throw new commander.InvalidArgumentError('Not a number.');
|
|
126
|
+
}
|
|
127
|
+
return parsedValue;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const parseBool = (value) => {
|
|
131
|
+
if (value === 'true') return true;
|
|
132
|
+
if (value === 'false') return false;
|
|
133
|
+
throw new commander.InvalidArgumentError('Not a boolean.');
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
const log = (message) => {
|
|
137
|
+
console.log(`${chalk.cyan.bold("ℹ Info")} ${chalk.cyan(message ?? "")}`);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const success = (message) => {
|
|
141
|
+
console.log(`${chalk.green.bold("✓ Success")} ${chalk.green(message ?? "")}`);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
const error = (message) => {
|
|
145
|
+
console.error(`${chalk.red.bold("✗ Error")} ${chalk.red(message ?? "")}`);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
const logo = "\n _ _ _ ___ __ _____ \n \/_\\ _ __ _ ____ ___ __(_) |_ ___ \/ __\\ \/ \/ \\_ \\\n \/\/_\\\\| '_ \\| '_ \\ \\ \/\\ \/ \/ '__| | __\/ _ \\ \/ \/ \/ \/ \/ \/\\\/\n \/ _ \\ |_) | |_) \\ V V \/| | | | || __\/ \/ \/___\/ \/___\/\\\/ \/_ \n \\_\/ \\_\/ .__\/| .__\/ \\_\/\\_\/ |_| |_|\\__\\___| \\____\/\\____\/\\____\/ \n |_| |_| \n\n";
|
|
149
|
+
|
|
150
|
+
const commandDescriptions = {
|
|
151
|
+
"account": `The account command allows you to authenticate and manage a user account.`,
|
|
152
|
+
"avatars": `The avatars command aims to help you complete everyday tasks related to your app image, icons, and avatars.`,
|
|
153
|
+
"database": `The database command allows you to create structured collections of documents, query and filter lists of documents.`,
|
|
154
|
+
"deploy": `The deploy command provides a convenient wrapper for deploying your functions and collections.`,
|
|
155
|
+
"functions": `The functions command allows you view, create and manage your Cloud Functions.`,
|
|
156
|
+
"health": `The health command allows you to both validate and monitor your Appwrite server's health.`,
|
|
157
|
+
"init": `The init command helps you initialize your Appwrite project, functions and collections`,
|
|
158
|
+
"locale": `The locale command allows you to customize your app based on your users' location.`,
|
|
159
|
+
"projects": `The projects command allows you to view, create and manage your Appwrite projects.`,
|
|
160
|
+
"storage": `The storage command allows you to manage your project files.`,
|
|
161
|
+
"teams": `The teams command allows you to group users of your project and to enable them to share read and write access to your project resources`,
|
|
162
|
+
"users": `The users command allows you to manage your project users.`,
|
|
163
|
+
"client": `The client command allows you to configure your CLI`,
|
|
164
|
+
"login": `The login command allows you to authenticate and manage a user account.`,
|
|
165
|
+
"logout": `The logout command allows you to logout of your Appwrite account.`,
|
|
166
|
+
"main": chalk.redBright(`${logo}${description}`),
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
module.exports = {
|
|
170
|
+
parse,
|
|
171
|
+
actionRunner,
|
|
172
|
+
parseInteger,
|
|
173
|
+
parseBool,
|
|
174
|
+
log,
|
|
175
|
+
success,
|
|
176
|
+
error,
|
|
177
|
+
commandDescriptions,
|
|
178
|
+
cliConfig
|
|
179
|
+
}
|
package/lib/questions.js
ADDED
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
const { localConfig } = require('./config');
|
|
2
|
+
const { projectsList } = require('./commands/projects');
|
|
3
|
+
const { functionsListRuntimes } = require('./commands/functions');
|
|
4
|
+
|
|
5
|
+
const getEntrypoint = (runtime) => {
|
|
6
|
+
const languge = runtime.split('-')[0];
|
|
7
|
+
|
|
8
|
+
switch (languge) {
|
|
9
|
+
case 'dart':
|
|
10
|
+
return 'lib/main.dart';
|
|
11
|
+
case 'deno':
|
|
12
|
+
return 'src/mod.ts';
|
|
13
|
+
case 'node':
|
|
14
|
+
return 'src/index.js';
|
|
15
|
+
case 'php':
|
|
16
|
+
return 'src/index.php';
|
|
17
|
+
case 'python':
|
|
18
|
+
return 'src/index.py';
|
|
19
|
+
case 'ruby':
|
|
20
|
+
return 'src/index.rb';
|
|
21
|
+
case 'rust':
|
|
22
|
+
return 'main.rs';
|
|
23
|
+
case 'swift':
|
|
24
|
+
return 'Sources/swift-5.5/main.swift';
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return undefined;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const questionsInitProject = [
|
|
31
|
+
{
|
|
32
|
+
type: "confirm",
|
|
33
|
+
name: "override",
|
|
34
|
+
message:
|
|
35
|
+
`An Appwrite project ( ${localConfig.getProject()['projectName']} ) is already associated with the current directory. Would you like to override`,
|
|
36
|
+
when() {
|
|
37
|
+
return Object.keys(localConfig.getProject()).length !== 0;
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
type: "list",
|
|
42
|
+
name: "start",
|
|
43
|
+
when(answers) {
|
|
44
|
+
if (answers.override == undefined) {
|
|
45
|
+
return true
|
|
46
|
+
}
|
|
47
|
+
return answers.override;
|
|
48
|
+
},
|
|
49
|
+
message: "How would you like to start?",
|
|
50
|
+
choices: [
|
|
51
|
+
{
|
|
52
|
+
name: "Create a new Appwrite project",
|
|
53
|
+
value: "new",
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: "Link this directory to an existing Appwrite project",
|
|
57
|
+
value: "existing",
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: "input",
|
|
63
|
+
name: "project",
|
|
64
|
+
message: "What would you like to name your project?",
|
|
65
|
+
default: "My Awesome Project",
|
|
66
|
+
when(answers) {
|
|
67
|
+
return answers.start == "new";
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
type: "list",
|
|
72
|
+
name: "project",
|
|
73
|
+
message: "Choose your Appwrite project.",
|
|
74
|
+
when(answers) {
|
|
75
|
+
return answers.start == "existing";
|
|
76
|
+
},
|
|
77
|
+
choices: async () => {
|
|
78
|
+
let response = await projectsList({
|
|
79
|
+
parseOutput: false
|
|
80
|
+
})
|
|
81
|
+
let projects = response["projects"]
|
|
82
|
+
let choices = projects.map((project, idx) => {
|
|
83
|
+
return {
|
|
84
|
+
name: `${project.name} (${project['$id']})`,
|
|
85
|
+
value: {
|
|
86
|
+
name: project.name,
|
|
87
|
+
id: project['$id']
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
if (choices.length == 0) {
|
|
93
|
+
throw new Error("No projects found. Please create a new project.")
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return choices;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
];
|
|
100
|
+
|
|
101
|
+
const questionsInitFunction = [
|
|
102
|
+
{
|
|
103
|
+
type: "input",
|
|
104
|
+
name: "name",
|
|
105
|
+
message: "What would you like to name your function?",
|
|
106
|
+
default: "My Awesome Function"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
type: "list",
|
|
110
|
+
name: "runtime",
|
|
111
|
+
message: "What runtime would you like to use?",
|
|
112
|
+
choices: async () => {
|
|
113
|
+
let response = await functionsListRuntimes({
|
|
114
|
+
parseOutput: false
|
|
115
|
+
})
|
|
116
|
+
let runtimes = response["runtimes"]
|
|
117
|
+
let choices = runtimes.map((runtime, idx) => {
|
|
118
|
+
return {
|
|
119
|
+
name: `${runtime.name} (${runtime['$id']})`,
|
|
120
|
+
value: { id: runtime['$id'], entrypoint: getEntrypoint(runtime['$id'])}
|
|
121
|
+
}
|
|
122
|
+
})
|
|
123
|
+
return choices;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
];
|
|
127
|
+
|
|
128
|
+
const questionsLogin = [
|
|
129
|
+
{
|
|
130
|
+
type: "input",
|
|
131
|
+
name: "email",
|
|
132
|
+
message: "Enter your email",
|
|
133
|
+
validate(value) {
|
|
134
|
+
if (!value) {
|
|
135
|
+
return "Please enter your email";
|
|
136
|
+
}
|
|
137
|
+
return true;
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: "password",
|
|
142
|
+
name: "password",
|
|
143
|
+
message: "Enter your password",
|
|
144
|
+
mask: "*",
|
|
145
|
+
validate(value) {
|
|
146
|
+
if (!value) {
|
|
147
|
+
return "Please enter your password";
|
|
148
|
+
}
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
];
|
|
153
|
+
|
|
154
|
+
const questionsDeployFunctions = [
|
|
155
|
+
{
|
|
156
|
+
type: "checkbox",
|
|
157
|
+
name: "functions",
|
|
158
|
+
message: "Which functions would you like to deploy?",
|
|
159
|
+
choices: () => {
|
|
160
|
+
let functions = localConfig.getFunctions();
|
|
161
|
+
if (functions.length === 0) {
|
|
162
|
+
throw new Error("No functions found in the current directory.");
|
|
163
|
+
}
|
|
164
|
+
let choices = functions.map((func, idx) => {
|
|
165
|
+
return {
|
|
166
|
+
name: `${func.name} (${func['$id']})`,
|
|
167
|
+
value: func
|
|
168
|
+
}
|
|
169
|
+
})
|
|
170
|
+
return choices;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
]
|
|
174
|
+
|
|
175
|
+
const questionsDeployCollections = [
|
|
176
|
+
{
|
|
177
|
+
type: "checkbox",
|
|
178
|
+
name: "collections",
|
|
179
|
+
message: "Which collections would you like to deploy?",
|
|
180
|
+
choices: () => {
|
|
181
|
+
let collections = localConfig.getCollections();
|
|
182
|
+
if (collections.length === 0) {
|
|
183
|
+
throw new Error("No collections found in the current directory. Run `appwrite init collection` to fetch all your collections.");
|
|
184
|
+
}
|
|
185
|
+
let choices = collections.map((collection, idx) => {
|
|
186
|
+
return {
|
|
187
|
+
name: `${collection.name} (${collection['$id']})`,
|
|
188
|
+
value: collection
|
|
189
|
+
}
|
|
190
|
+
})
|
|
191
|
+
return choices;
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
type: "input",
|
|
196
|
+
name: "override",
|
|
197
|
+
message: 'Are you sure you want to override this collection? This can lead to loss of data! Type "YES" to confirm.'
|
|
198
|
+
},
|
|
199
|
+
]
|
|
200
|
+
|
|
201
|
+
const questionsGetEntrypoint = [
|
|
202
|
+
{
|
|
203
|
+
type: "input",
|
|
204
|
+
name: "entrypoint",
|
|
205
|
+
message: "Enter the entrypoint",
|
|
206
|
+
default: null,
|
|
207
|
+
validate(value) {
|
|
208
|
+
if (!value) {
|
|
209
|
+
return "Please enter your enrtypoint";
|
|
210
|
+
}
|
|
211
|
+
return true;
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
]
|
|
215
|
+
|
|
216
|
+
module.exports = {
|
|
217
|
+
questionsInitProject,
|
|
218
|
+
questionsLogin,
|
|
219
|
+
questionsInitFunction,
|
|
220
|
+
questionsDeployFunctions,
|
|
221
|
+
questionsDeployCollections,
|
|
222
|
+
questionsGetEntrypoint
|
|
223
|
+
};
|