chirag-appwrite-cli 0.2.1 → 0.3.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 → publish.yml} +1 -1
- package/CHANGELOG.md +1 -190
- package/Formula/appwrite.rb +3 -3
- package/LICENSE.md +1 -12
- package/README.md +18 -185
- package/cli.ts +140 -146
- package/dist/bundle.cjs +74100 -86261
- package/dist/cli.js +63 -59
- package/dist/cli.js.map +1 -1
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +8 -7
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/commands/config.d.ts +23 -12
- package/dist/lib/commands/config.d.ts.map +1 -1
- package/dist/lib/commands/config.js +17 -6
- package/dist/lib/commands/config.js.map +1 -1
- package/dist/lib/commands/generate.d.ts +6 -0
- package/dist/lib/commands/generate.d.ts.map +1 -0
- package/dist/lib/commands/generate.js +53 -0
- package/dist/lib/commands/generate.js.map +1 -0
- package/dist/lib/commands/generators/databases.d.ts +25 -0
- package/dist/lib/commands/generators/databases.d.ts.map +1 -0
- package/dist/lib/commands/generators/databases.js +405 -0
- package/dist/lib/commands/generators/databases.js.map +1 -0
- package/dist/lib/commands/init.d.ts.map +1 -1
- package/dist/lib/commands/init.js +15 -14
- package/dist/lib/commands/init.js.map +1 -1
- package/dist/lib/commands/pull.d.ts.map +1 -1
- package/dist/lib/commands/pull.js +181 -155
- package/dist/lib/commands/pull.js.map +1 -1
- package/dist/lib/commands/push.d.ts +32 -4
- package/dist/lib/commands/push.d.ts.map +1 -1
- package/dist/lib/commands/push.js +272 -106
- package/dist/lib/commands/push.js.map +1 -1
- package/dist/lib/commands/run.js +1 -1
- package/dist/lib/commands/run.js.map +1 -1
- package/dist/lib/commands/schema.d.ts +8 -6
- package/dist/lib/commands/schema.d.ts.map +1 -1
- package/dist/lib/commands/schema.js +20 -9
- package/dist/lib/commands/schema.js.map +1 -1
- package/dist/lib/commands/services/account.d.ts.map +1 -1
- package/dist/lib/commands/services/account.js +86 -64
- package/dist/lib/commands/services/account.js.map +1 -1
- package/dist/lib/commands/services/console.d.ts.map +1 -1
- package/dist/lib/commands/services/console.js +4 -17
- package/dist/lib/commands/services/console.js.map +1 -1
- package/dist/lib/commands/services/databases.d.ts.map +1 -1
- package/dist/lib/commands/services/databases.js +160 -152
- package/dist/lib/commands/services/databases.js.map +1 -1
- package/dist/lib/commands/services/functions.d.ts.map +1 -1
- package/dist/lib/commands/services/functions.js +41 -33
- package/dist/lib/commands/services/functions.js.map +1 -1
- package/dist/lib/commands/services/graphql.d.ts.map +1 -1
- package/dist/lib/commands/services/graphql.js +3 -3
- package/dist/lib/commands/services/graphql.js.map +1 -1
- package/dist/lib/commands/services/health.d.ts.map +1 -1
- package/dist/lib/commands/services/health.js +24 -24
- package/dist/lib/commands/services/health.js.map +1 -1
- package/dist/lib/commands/services/locale.d.ts.map +1 -1
- package/dist/lib/commands/services/locale.js +9 -9
- package/dist/lib/commands/services/locale.js.map +1 -1
- package/dist/lib/commands/services/messaging.d.ts.map +1 -1
- package/dist/lib/commands/services/messaging.js +59 -59
- package/dist/lib/commands/services/messaging.js.map +1 -1
- package/dist/lib/commands/services/migrations.d.ts.map +1 -1
- package/dist/lib/commands/services/migrations.js +19 -19
- package/dist/lib/commands/services/migrations.js.map +1 -1
- package/dist/lib/commands/services/project.d.ts.map +1 -1
- package/dist/lib/commands/services/project.js +8 -8
- package/dist/lib/commands/services/project.js.map +1 -1
- package/dist/lib/commands/services/projects.d.ts.map +1 -1
- package/dist/lib/commands/services/projects.js +71 -65
- package/dist/lib/commands/services/projects.js.map +1 -1
- package/dist/lib/commands/services/proxy.d.ts.map +1 -1
- package/dist/lib/commands/services/proxy.js +11 -11
- package/dist/lib/commands/services/proxy.js.map +1 -1
- package/dist/lib/commands/services/sites.d.ts.map +1 -1
- package/dist/lib/commands/services/sites.js +41 -33
- package/dist/lib/commands/services/sites.js.map +1 -1
- package/dist/lib/commands/services/storage.d.ts.map +1 -1
- package/dist/lib/commands/services/storage.js +40 -18
- package/dist/lib/commands/services/storage.js.map +1 -1
- package/dist/lib/commands/services/tables-db.d.ts +3 -0
- package/dist/lib/commands/services/tables-db.d.ts.map +1 -0
- package/dist/lib/commands/services/{tablesdb.js → tables-db.js} +171 -163
- package/dist/lib/commands/services/tables-db.js.map +1 -0
- package/dist/lib/commands/services/teams.d.ts.map +1 -1
- package/dist/lib/commands/services/teams.js +16 -16
- package/dist/lib/commands/services/teams.js.map +1 -1
- package/dist/lib/commands/services/tokens.d.ts.map +1 -1
- package/dist/lib/commands/services/tokens.js +6 -6
- package/dist/lib/commands/services/tokens.js.map +1 -1
- package/dist/lib/commands/services/users.d.ts.map +1 -1
- package/dist/lib/commands/services/users.js +54 -54
- package/dist/lib/commands/services/users.js.map +1 -1
- package/dist/lib/commands/services/vcs.d.ts.map +1 -1
- package/dist/lib/commands/services/vcs.js +13 -13
- package/dist/lib/commands/services/vcs.js.map +1 -1
- package/dist/lib/commands/types.d.ts.map +1 -1
- package/dist/lib/commands/types.js +1 -1
- package/dist/lib/commands/types.js.map +1 -1
- package/dist/lib/commands/update.d.ts.map +1 -1
- package/dist/lib/commands/update.js +8 -7
- package/dist/lib/commands/update.js.map +1 -1
- package/dist/lib/commands/utils/attributes.d.ts +2 -1
- package/dist/lib/commands/utils/attributes.d.ts.map +1 -1
- package/dist/lib/commands/utils/attributes.js +32 -34
- package/dist/lib/commands/utils/attributes.js.map +1 -1
- package/dist/lib/commands/utils/deployment.d.ts.map +1 -1
- package/dist/lib/commands/utils/deployment.js +3 -2
- package/dist/lib/commands/utils/deployment.js.map +1 -1
- package/dist/lib/commands/utils/pools.d.ts.map +1 -1
- package/dist/lib/commands/utils/pools.js +7 -6
- package/dist/lib/commands/utils/pools.js.map +1 -1
- package/dist/lib/config.d.ts +1 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +45 -4
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/constants.d.ts +14 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +19 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/emulation/docker.d.ts.map +1 -1
- package/dist/lib/emulation/docker.js +80 -67
- package/dist/lib/emulation/docker.js.map +1 -1
- package/dist/lib/parser.d.ts.map +1 -1
- package/dist/lib/parser.js +11 -10
- package/dist/lib/parser.js.map +1 -1
- package/dist/lib/questions.d.ts +2 -0
- package/dist/lib/questions.d.ts.map +1 -1
- package/dist/lib/questions.js +34 -20
- package/dist/lib/questions.js.map +1 -1
- package/dist/lib/sdks.d.ts.map +1 -1
- package/dist/lib/sdks.js +10 -11
- package/dist/lib/sdks.js.map +1 -1
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +29 -2
- package/dist/lib/utils.js.map +1 -1
- package/dist/package.json +4 -4
- package/docs/examples/account/create-anonymous-session.md +1 -0
- package/docs/examples/account/create-email-password-session.md +3 -0
- package/docs/examples/account/create-email-token.md +3 -0
- package/docs/examples/account/create-email-verification.md +2 -0
- package/docs/examples/account/create-jwt.md +1 -0
- package/docs/examples/account/create-magic-url-token.md +3 -0
- package/docs/examples/account/create-mfa-authenticator.md +2 -0
- package/docs/examples/account/create-mfa-challenge.md +2 -0
- package/docs/examples/account/create-mfa-recovery-codes.md +1 -0
- package/docs/examples/account/create-o-auth-2-session.md +2 -0
- package/docs/examples/account/create-o-auth-2-token.md +2 -0
- package/docs/examples/account/create-phone-token.md +3 -0
- package/docs/examples/account/create-phone-verification.md +1 -0
- package/docs/examples/account/create-push-target.md +3 -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 +4 -0
- package/docs/examples/account/delete-identity.md +2 -0
- package/docs/examples/account/delete-mfa-authenticator.md +2 -0
- package/docs/examples/account/delete-push-target.md +2 -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-mfa-recovery-codes.md +1 -0
- package/docs/examples/account/get-prefs.md +1 -0
- package/docs/examples/account/get-session.md +2 -0
- package/docs/examples/account/get.md +1 -0
- package/docs/examples/account/list-identities.md +1 -0
- package/docs/examples/account/list-logs.md +1 -0
- package/docs/examples/account/list-mfa-factors.md +1 -0
- package/docs/examples/account/list-sessions.md +1 -0
- package/docs/examples/account/update-email-verification.md +3 -0
- package/docs/examples/account/update-email.md +3 -0
- package/docs/examples/account/update-magic-url-session.md +3 -0
- package/docs/examples/account/update-mfa-authenticator.md +3 -0
- package/docs/examples/account/update-mfa-challenge.md +3 -0
- package/docs/examples/account/update-mfa-recovery-codes.md +1 -0
- package/docs/examples/account/update-mfa.md +2 -0
- package/docs/examples/account/update-name.md +2 -0
- package/docs/examples/account/update-password.md +2 -0
- package/docs/examples/account/update-phone-session.md +3 -0
- package/docs/examples/account/update-phone-verification.md +3 -0
- package/docs/examples/account/update-phone.md +3 -0
- package/docs/examples/account/update-prefs.md +2 -0
- package/docs/examples/account/update-push-target.md +3 -0
- package/docs/examples/account/update-recovery.md +4 -0
- package/docs/examples/account/update-session.md +2 -0
- package/docs/examples/account/update-status.md +1 -0
- package/docs/examples/account/update-verification.md +3 -0
- package/docs/examples/console/get-resource.md +3 -0
- package/docs/examples/console/variables.md +1 -0
- package/docs/examples/databases/create-boolean-attribute.md +5 -0
- package/docs/examples/databases/create-collection.md +4 -0
- package/docs/examples/databases/create-datetime-attribute.md +5 -0
- package/docs/examples/databases/create-document.md +5 -0
- package/docs/examples/databases/create-documents.md +4 -0
- package/docs/examples/databases/create-email-attribute.md +5 -0
- package/docs/examples/databases/create-enum-attribute.md +6 -0
- package/docs/examples/databases/create-float-attribute.md +5 -0
- package/docs/examples/databases/create-index.md +6 -0
- package/docs/examples/databases/create-integer-attribute.md +5 -0
- package/docs/examples/databases/create-ip-attribute.md +5 -0
- package/docs/examples/databases/create-line-attribute.md +5 -0
- package/docs/examples/databases/create-operations.md +2 -0
- package/docs/examples/databases/create-point-attribute.md +5 -0
- package/docs/examples/databases/create-polygon-attribute.md +5 -0
- package/docs/examples/databases/create-relationship-attribute.md +5 -0
- package/docs/examples/databases/create-string-attribute.md +6 -0
- package/docs/examples/databases/create-transaction.md +1 -0
- package/docs/examples/databases/create-url-attribute.md +5 -0
- package/docs/examples/databases/create.md +3 -0
- package/docs/examples/databases/decrement-document-attribute.md +5 -0
- package/docs/examples/databases/delete-attribute.md +4 -0
- package/docs/examples/databases/delete-collection.md +3 -0
- package/docs/examples/databases/delete-document.md +4 -0
- package/docs/examples/databases/delete-documents.md +3 -0
- package/docs/examples/databases/delete-index.md +4 -0
- package/docs/examples/databases/delete-transaction.md +2 -0
- package/docs/examples/databases/delete.md +2 -0
- package/docs/examples/databases/get-attribute.md +4 -0
- package/docs/examples/databases/get-collection-usage.md +3 -0
- package/docs/examples/databases/get-collection.md +3 -0
- package/docs/examples/databases/get-document.md +4 -0
- package/docs/examples/databases/get-index.md +4 -0
- package/docs/examples/databases/get-transaction.md +2 -0
- package/docs/examples/databases/get-usage.md +2 -0
- package/docs/examples/databases/get.md +2 -0
- package/docs/examples/databases/increment-document-attribute.md +5 -0
- package/docs/examples/databases/list-attributes.md +3 -0
- package/docs/examples/databases/list-collection-logs.md +3 -0
- package/docs/examples/databases/list-collections.md +2 -0
- package/docs/examples/databases/list-document-logs.md +4 -0
- package/docs/examples/databases/list-documents.md +3 -0
- package/docs/examples/databases/list-indexes.md +3 -0
- package/docs/examples/databases/list-logs.md +2 -0
- package/docs/examples/databases/list-transactions.md +1 -0
- package/docs/examples/databases/list-usage.md +1 -0
- package/docs/examples/databases/list.md +1 -0
- package/docs/examples/databases/update-boolean-attribute.md +6 -0
- package/docs/examples/databases/update-collection.md +4 -0
- package/docs/examples/databases/update-datetime-attribute.md +6 -0
- package/docs/examples/databases/update-document.md +4 -0
- package/docs/examples/databases/update-documents.md +3 -0
- package/docs/examples/databases/update-email-attribute.md +6 -0
- package/docs/examples/databases/update-enum-attribute.md +7 -0
- package/docs/examples/databases/update-float-attribute.md +6 -0
- package/docs/examples/databases/update-integer-attribute.md +6 -0
- package/docs/examples/databases/update-ip-attribute.md +6 -0
- package/docs/examples/databases/update-line-attribute.md +5 -0
- package/docs/examples/databases/update-point-attribute.md +5 -0
- package/docs/examples/databases/update-polygon-attribute.md +5 -0
- package/docs/examples/databases/update-relationship-attribute.md +4 -0
- package/docs/examples/databases/update-string-attribute.md +6 -0
- package/docs/examples/databases/update-transaction.md +2 -0
- package/docs/examples/databases/update-url-attribute.md +6 -0
- package/docs/examples/databases/update.md +3 -0
- package/docs/examples/databases/upsert-document.md +4 -0
- package/docs/examples/databases/upsert-documents.md +4 -0
- package/docs/examples/functions/create-deployment.md +4 -0
- package/docs/examples/functions/create-duplicate-deployment.md +3 -0
- package/docs/examples/functions/create-execution.md +2 -0
- package/docs/examples/functions/create-template-deployment.md +7 -0
- package/docs/examples/functions/create-variable.md +4 -0
- package/docs/examples/functions/create-vcs-deployment.md +4 -0
- package/docs/examples/functions/create.md +4 -0
- package/docs/examples/functions/delete-deployment.md +3 -0
- package/docs/examples/functions/delete-execution.md +3 -0
- package/docs/examples/functions/delete-variable.md +3 -0
- package/docs/examples/functions/delete.md +2 -0
- package/docs/examples/functions/get-deployment-download.md +3 -0
- package/docs/examples/functions/get-deployment.md +3 -0
- package/docs/examples/functions/get-execution.md +3 -0
- package/docs/examples/functions/get-template.md +2 -0
- package/docs/examples/functions/get-usage.md +2 -0
- package/docs/examples/functions/get-variable.md +3 -0
- package/docs/examples/functions/get.md +2 -0
- package/docs/examples/functions/list-deployments.md +2 -0
- package/docs/examples/functions/list-executions.md +2 -0
- package/docs/examples/functions/list-runtimes.md +1 -0
- package/docs/examples/functions/list-specifications.md +1 -0
- package/docs/examples/functions/list-templates.md +1 -0
- package/docs/examples/functions/list-usage.md +1 -0
- package/docs/examples/functions/list-variables.md +2 -0
- package/docs/examples/functions/list.md +1 -0
- package/docs/examples/functions/update-deployment-status.md +3 -0
- package/docs/examples/functions/update-function-deployment.md +3 -0
- package/docs/examples/functions/update-variable.md +4 -0
- package/docs/examples/functions/update.md +3 -0
- package/docs/examples/graphql/mutation.md +2 -0
- package/docs/examples/graphql/query.md +2 -0
- package/docs/examples/health/get-antivirus.md +1 -0
- package/docs/examples/health/get-cache.md +1 -0
- package/docs/examples/health/get-certificate.md +1 -0
- package/docs/examples/health/get-db.md +1 -0
- package/docs/examples/health/get-failed-jobs.md +2 -0
- package/docs/examples/health/get-pub-sub.md +1 -0
- package/docs/examples/health/get-queue-builds.md +1 -0
- package/docs/examples/health/get-queue-certificates.md +1 -0
- package/docs/examples/health/get-queue-databases.md +1 -0
- package/docs/examples/health/get-queue-deletes.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-mails.md +1 -0
- package/docs/examples/health/get-queue-messaging.md +1 -0
- package/docs/examples/health/get-queue-migrations.md +1 -0
- package/docs/examples/health/get-queue-stats-resources.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-storage.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.md +1 -0
- package/docs/examples/locale/list-codes.md +1 -0
- package/docs/examples/locale/list-continents.md +1 -0
- package/docs/examples/locale/list-countries-eu.md +1 -0
- package/docs/examples/locale/list-countries-phones.md +1 -0
- package/docs/examples/locale/list-countries.md +1 -0
- package/docs/examples/locale/list-currencies.md +1 -0
- package/docs/examples/locale/list-languages.md +1 -0
- package/docs/examples/messaging/create-apns-provider.md +3 -0
- package/docs/examples/messaging/create-email.md +4 -0
- package/docs/examples/messaging/create-fcm-provider.md +3 -0
- package/docs/examples/messaging/create-mailgun-provider.md +3 -0
- package/docs/examples/messaging/create-msg-91-provider.md +3 -0
- package/docs/examples/messaging/create-push.md +2 -0
- package/docs/examples/messaging/create-resend-provider.md +3 -0
- package/docs/examples/messaging/create-sendgrid-provider.md +3 -0
- package/docs/examples/messaging/create-sms.md +3 -0
- package/docs/examples/messaging/create-smtp-provider.md +4 -0
- package/docs/examples/messaging/create-subscriber.md +4 -0
- package/docs/examples/messaging/create-telesign-provider.md +3 -0
- package/docs/examples/messaging/create-textmagic-provider.md +3 -0
- package/docs/examples/messaging/create-topic.md +3 -0
- package/docs/examples/messaging/create-twilio-provider.md +3 -0
- package/docs/examples/messaging/create-vonage-provider.md +3 -0
- package/docs/examples/messaging/delete-provider.md +2 -0
- package/docs/examples/messaging/delete-subscriber.md +3 -0
- package/docs/examples/messaging/delete-topic.md +2 -0
- package/docs/examples/messaging/delete.md +2 -0
- package/docs/examples/messaging/get-message.md +2 -0
- package/docs/examples/messaging/get-provider.md +2 -0
- package/docs/examples/messaging/get-subscriber.md +3 -0
- package/docs/examples/messaging/get-topic.md +2 -0
- package/docs/examples/messaging/list-message-logs.md +2 -0
- package/docs/examples/messaging/list-messages.md +1 -0
- package/docs/examples/messaging/list-provider-logs.md +2 -0
- package/docs/examples/messaging/list-providers.md +1 -0
- package/docs/examples/messaging/list-subscriber-logs.md +2 -0
- package/docs/examples/messaging/list-subscribers.md +2 -0
- package/docs/examples/messaging/list-targets.md +2 -0
- package/docs/examples/messaging/list-topic-logs.md +2 -0
- package/docs/examples/messaging/list-topics.md +1 -0
- package/docs/examples/messaging/update-apns-provider.md +2 -0
- package/docs/examples/messaging/update-email.md +2 -0
- package/docs/examples/messaging/update-fcm-provider.md +2 -0
- package/docs/examples/messaging/update-mailgun-provider.md +2 -0
- package/docs/examples/messaging/update-msg-91-provider.md +2 -0
- package/docs/examples/messaging/update-push.md +2 -0
- package/docs/examples/messaging/update-resend-provider.md +2 -0
- package/docs/examples/messaging/update-sendgrid-provider.md +2 -0
- package/docs/examples/messaging/update-sms.md +2 -0
- package/docs/examples/messaging/update-smtp-provider.md +2 -0
- package/docs/examples/messaging/update-telesign-provider.md +2 -0
- package/docs/examples/messaging/update-textmagic-provider.md +2 -0
- package/docs/examples/messaging/update-topic.md +2 -0
- package/docs/examples/messaging/update-twilio-provider.md +2 -0
- package/docs/examples/messaging/update-vonage-provider.md +2 -0
- package/docs/examples/migrations/create-appwrite-migration.md +5 -0
- package/docs/examples/migrations/create-csv-export.md +3 -0
- package/docs/examples/migrations/create-csv-import.md +4 -0
- package/docs/examples/migrations/create-firebase-migration.md +3 -0
- package/docs/examples/migrations/create-n-host-migration.md +8 -0
- package/docs/examples/migrations/create-supabase-migration.md +7 -0
- package/docs/examples/migrations/delete.md +2 -0
- package/docs/examples/migrations/get-appwrite-report.md +5 -0
- package/docs/examples/migrations/get-firebase-report.md +3 -0
- package/docs/examples/migrations/get-n-host-report.md +8 -0
- package/docs/examples/migrations/get-supabase-report.md +7 -0
- package/docs/examples/migrations/get.md +2 -0
- package/docs/examples/migrations/list.md +1 -0
- package/docs/examples/migrations/retry.md +2 -0
- package/docs/examples/project/create-variable.md +3 -0
- package/docs/examples/project/delete-variable.md +2 -0
- package/docs/examples/project/get-usage.md +3 -0
- package/docs/examples/project/get-variable.md +2 -0
- package/docs/examples/project/list-variables.md +1 -0
- package/docs/examples/project/update-variable.md +3 -0
- package/docs/examples/projects/create-dev-key.md +4 -0
- package/docs/examples/projects/create-jwt.md +3 -0
- package/docs/examples/projects/create-key.md +4 -0
- package/docs/examples/projects/create-platform.md +4 -0
- package/docs/examples/projects/create-smtp-test.md +6 -0
- package/docs/examples/projects/create-webhook.md +6 -0
- package/docs/examples/projects/create.md +4 -0
- package/docs/examples/projects/delete-dev-key.md +3 -0
- package/docs/examples/projects/delete-email-template.md +4 -0
- package/docs/examples/projects/delete-key.md +3 -0
- package/docs/examples/projects/delete-platform.md +3 -0
- package/docs/examples/projects/delete-sms-template.md +4 -0
- package/docs/examples/projects/delete-webhook.md +3 -0
- package/docs/examples/projects/delete.md +2 -0
- package/docs/examples/projects/get-dev-key.md +3 -0
- package/docs/examples/projects/get-email-template.md +4 -0
- package/docs/examples/projects/get-key.md +3 -0
- package/docs/examples/projects/get-platform.md +3 -0
- package/docs/examples/projects/get-sms-template.md +4 -0
- package/docs/examples/projects/get-webhook.md +3 -0
- package/docs/examples/projects/get.md +2 -0
- package/docs/examples/projects/list-dev-keys.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 +1 -0
- package/docs/examples/projects/update-api-status-all.md +3 -0
- package/docs/examples/projects/update-api-status.md +4 -0
- package/docs/examples/projects/update-auth-duration.md +3 -0
- package/docs/examples/projects/update-auth-limit.md +3 -0
- package/docs/examples/projects/update-auth-password-dictionary.md +3 -0
- package/docs/examples/projects/update-auth-password-history.md +3 -0
- package/docs/examples/projects/update-auth-sessions-limit.md +3 -0
- package/docs/examples/projects/update-auth-status.md +4 -0
- package/docs/examples/projects/update-dev-key.md +5 -0
- package/docs/examples/projects/update-email-template.md +6 -0
- package/docs/examples/projects/update-key.md +5 -0
- package/docs/examples/projects/update-labels.md +3 -0
- package/docs/examples/projects/update-memberships-privacy.md +5 -0
- package/docs/examples/projects/update-mock-numbers.md +3 -0
- package/docs/examples/projects/update-o-auth-2.md +3 -0
- package/docs/examples/projects/update-personal-data-check.md +3 -0
- package/docs/examples/projects/update-platform.md +4 -0
- package/docs/examples/projects/update-service-status-all.md +3 -0
- package/docs/examples/projects/update-service-status.md +4 -0
- package/docs/examples/projects/update-session-alerts.md +3 -0
- package/docs/examples/projects/update-session-invalidation.md +3 -0
- package/docs/examples/projects/update-sms-template.md +5 -0
- package/docs/examples/projects/update-smtp.md +3 -0
- package/docs/examples/projects/update-team.md +3 -0
- package/docs/examples/projects/update-webhook-signature.md +3 -0
- package/docs/examples/projects/update-webhook.md +7 -0
- package/docs/examples/projects/update.md +3 -0
- package/docs/examples/proxy/create-api-rule.md +2 -0
- package/docs/examples/proxy/create-function-rule.md +3 -0
- package/docs/examples/proxy/create-redirect-rule.md +6 -0
- package/docs/examples/proxy/create-site-rule.md +3 -0
- package/docs/examples/proxy/delete-rule.md +2 -0
- package/docs/examples/proxy/get-rule.md +2 -0
- package/docs/examples/proxy/list-rules.md +1 -0
- package/docs/examples/proxy/update-rule-verification.md +2 -0
- package/docs/examples/sites/create-deployment.md +4 -0
- package/docs/examples/sites/create-duplicate-deployment.md +3 -0
- package/docs/examples/sites/create-template-deployment.md +7 -0
- package/docs/examples/sites/create-variable.md +4 -0
- package/docs/examples/sites/create-vcs-deployment.md +4 -0
- package/docs/examples/sites/create.md +5 -0
- package/docs/examples/sites/delete-deployment.md +3 -0
- package/docs/examples/sites/delete-log.md +3 -0
- package/docs/examples/sites/delete-variable.md +3 -0
- package/docs/examples/sites/delete.md +2 -0
- package/docs/examples/sites/get-deployment-download.md +3 -0
- package/docs/examples/sites/get-deployment.md +3 -0
- package/docs/examples/sites/get-log.md +3 -0
- package/docs/examples/sites/get-template.md +2 -0
- package/docs/examples/sites/get-usage.md +2 -0
- package/docs/examples/sites/get-variable.md +3 -0
- package/docs/examples/sites/get.md +2 -0
- package/docs/examples/sites/list-deployments.md +2 -0
- package/docs/examples/sites/list-frameworks.md +1 -0
- package/docs/examples/sites/list-logs.md +2 -0
- package/docs/examples/sites/list-specifications.md +1 -0
- package/docs/examples/sites/list-templates.md +1 -0
- package/docs/examples/sites/list-usage.md +1 -0
- package/docs/examples/sites/list-variables.md +2 -0
- package/docs/examples/sites/list.md +1 -0
- package/docs/examples/sites/update-deployment-status.md +3 -0
- package/docs/examples/sites/update-site-deployment.md +3 -0
- package/docs/examples/sites/update-variable.md +4 -0
- package/docs/examples/sites/update.md +4 -0
- package/docs/examples/storage/create-bucket.md +3 -0
- package/docs/examples/storage/create-file.md +4 -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 +2 -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 +3 -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 +1 -0
- package/docs/examples/storage/list-buckets.md +1 -0
- package/docs/examples/storage/list-files.md +2 -0
- package/docs/examples/storage/update-bucket.md +3 -0
- package/docs/examples/storage/update-file.md +3 -0
- package/docs/examples/tablesdb/create-boolean-column.md +5 -0
- package/docs/examples/tablesdb/create-datetime-column.md +5 -0
- package/docs/examples/tablesdb/create-email-column.md +5 -0
- package/docs/examples/tablesdb/create-enum-column.md +6 -0
- package/docs/examples/tablesdb/create-float-column.md +5 -0
- package/docs/examples/tablesdb/create-index.md +6 -0
- package/docs/examples/tablesdb/create-integer-column.md +5 -0
- package/docs/examples/tablesdb/create-ip-column.md +5 -0
- package/docs/examples/tablesdb/create-line-column.md +5 -0
- package/docs/examples/tablesdb/create-operations.md +2 -0
- package/docs/examples/tablesdb/create-point-column.md +5 -0
- package/docs/examples/tablesdb/create-polygon-column.md +5 -0
- package/docs/examples/tablesdb/create-relationship-column.md +5 -0
- package/docs/examples/tablesdb/create-row.md +5 -0
- package/docs/examples/tablesdb/create-rows.md +4 -0
- package/docs/examples/tablesdb/create-string-column.md +6 -0
- package/docs/examples/tablesdb/create-table.md +4 -0
- package/docs/examples/tablesdb/create-transaction.md +1 -0
- package/docs/examples/tablesdb/create-url-column.md +5 -0
- package/docs/examples/tablesdb/create.md +3 -0
- package/docs/examples/tablesdb/decrement-row-column.md +5 -0
- package/docs/examples/tablesdb/delete-column.md +4 -0
- package/docs/examples/tablesdb/delete-index.md +4 -0
- package/docs/examples/tablesdb/delete-row.md +4 -0
- package/docs/examples/tablesdb/delete-rows.md +3 -0
- package/docs/examples/tablesdb/delete-table.md +3 -0
- package/docs/examples/tablesdb/delete-transaction.md +2 -0
- package/docs/examples/tablesdb/delete.md +2 -0
- package/docs/examples/tablesdb/get-column.md +4 -0
- package/docs/examples/tablesdb/get-index.md +4 -0
- package/docs/examples/tablesdb/get-row.md +4 -0
- package/docs/examples/tablesdb/get-table-usage.md +3 -0
- package/docs/examples/tablesdb/get-table.md +3 -0
- package/docs/examples/tablesdb/get-transaction.md +2 -0
- package/docs/examples/tablesdb/get-usage.md +2 -0
- package/docs/examples/tablesdb/get.md +2 -0
- package/docs/examples/tablesdb/increment-row-column.md +5 -0
- package/docs/examples/tablesdb/list-columns.md +3 -0
- package/docs/examples/tablesdb/list-indexes.md +3 -0
- package/docs/examples/tablesdb/list-row-logs.md +4 -0
- package/docs/examples/tablesdb/list-rows.md +3 -0
- package/docs/examples/tablesdb/list-table-logs.md +3 -0
- package/docs/examples/tablesdb/list-tables.md +2 -0
- package/docs/examples/tablesdb/list-transactions.md +1 -0
- package/docs/examples/tablesdb/list-usage.md +1 -0
- package/docs/examples/tablesdb/list.md +1 -0
- package/docs/examples/tablesdb/update-boolean-column.md +6 -0
- package/docs/examples/tablesdb/update-datetime-column.md +6 -0
- package/docs/examples/tablesdb/update-email-column.md +6 -0
- package/docs/examples/tablesdb/update-enum-column.md +7 -0
- package/docs/examples/tablesdb/update-float-column.md +6 -0
- package/docs/examples/tablesdb/update-integer-column.md +6 -0
- package/docs/examples/tablesdb/update-ip-column.md +6 -0
- package/docs/examples/tablesdb/update-line-column.md +5 -0
- package/docs/examples/tablesdb/update-point-column.md +5 -0
- package/docs/examples/tablesdb/update-polygon-column.md +5 -0
- package/docs/examples/tablesdb/update-relationship-column.md +4 -0
- package/docs/examples/tablesdb/update-row.md +4 -0
- package/docs/examples/tablesdb/update-rows.md +3 -0
- package/docs/examples/tablesdb/update-string-column.md +6 -0
- package/docs/examples/tablesdb/update-table.md +4 -0
- package/docs/examples/tablesdb/update-transaction.md +2 -0
- package/docs/examples/tablesdb/update-url-column.md +6 -0
- package/docs/examples/tablesdb/update.md +3 -0
- package/docs/examples/tablesdb/upsert-row.md +4 -0
- package/docs/examples/tablesdb/upsert-rows.md +4 -0
- package/docs/examples/teams/create-membership.md +3 -0
- package/docs/examples/teams/create.md +3 -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-prefs.md +2 -0
- package/docs/examples/teams/get.md +2 -0
- package/docs/examples/teams/list-logs.md +2 -0
- package/docs/examples/teams/list-memberships.md +2 -0
- package/docs/examples/teams/list.md +1 -0
- package/docs/examples/teams/update-membership-status.md +5 -0
- package/docs/examples/teams/update-membership.md +4 -0
- package/docs/examples/teams/update-name.md +3 -0
- package/docs/examples/teams/update-prefs.md +3 -0
- package/docs/examples/tokens/create-file-token.md +3 -0
- package/docs/examples/tokens/delete.md +2 -0
- package/docs/examples/tokens/get.md +2 -0
- package/docs/examples/tokens/list.md +3 -0
- package/docs/examples/tokens/update.md +2 -0
- package/docs/examples/users/create-argon-2-user.md +4 -0
- package/docs/examples/users/create-bcrypt-user.md +4 -0
- package/docs/examples/users/create-jwt.md +2 -0
- package/docs/examples/users/create-md-5-user.md +4 -0
- package/docs/examples/users/create-mfa-recovery-codes.md +2 -0
- package/docs/examples/users/create-ph-pass-user.md +4 -0
- package/docs/examples/users/create-scrypt-modified-user.md +7 -0
- package/docs/examples/users/create-scrypt-user.md +9 -0
- package/docs/examples/users/create-session.md +2 -0
- package/docs/examples/users/create-sha-user.md +4 -0
- package/docs/examples/users/create-target.md +5 -0
- package/docs/examples/users/create-token.md +2 -0
- package/docs/examples/users/create.md +2 -0
- package/docs/examples/users/delete-identity.md +2 -0
- package/docs/examples/users/delete-mfa-authenticator.md +3 -0
- package/docs/examples/users/delete-session.md +3 -0
- package/docs/examples/users/delete-sessions.md +2 -0
- package/docs/examples/users/delete-target.md +3 -0
- package/docs/examples/users/delete.md +2 -0
- package/docs/examples/users/get-mfa-recovery-codes.md +2 -0
- package/docs/examples/users/get-prefs.md +2 -0
- package/docs/examples/users/get-target.md +3 -0
- package/docs/examples/users/get-usage.md +1 -0
- package/docs/examples/users/get.md +2 -0
- package/docs/examples/users/list-identities.md +1 -0
- package/docs/examples/users/list-logs.md +2 -0
- package/docs/examples/users/list-memberships.md +2 -0
- package/docs/examples/users/list-mfa-factors.md +2 -0
- package/docs/examples/users/list-sessions.md +2 -0
- package/docs/examples/users/list-targets.md +2 -0
- package/docs/examples/users/list.md +1 -0
- package/docs/examples/users/update-email-verification.md +3 -0
- package/docs/examples/users/update-email.md +3 -0
- package/docs/examples/users/update-labels.md +3 -0
- package/docs/examples/users/update-mfa-recovery-codes.md +2 -0
- package/docs/examples/users/update-mfa.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-phone-verification.md +3 -0
- package/docs/examples/users/update-phone.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-target.md +3 -0
- package/docs/examples/vcs/create-repository-detection.md +4 -0
- package/docs/examples/vcs/create-repository.md +4 -0
- package/docs/examples/vcs/delete-installation.md +2 -0
- package/docs/examples/vcs/get-installation.md +2 -0
- package/docs/examples/vcs/get-repository-contents.md +3 -0
- package/docs/examples/vcs/get-repository.md +3 -0
- package/docs/examples/vcs/list-installations.md +1 -0
- package/docs/examples/vcs/list-repositories.md +3 -0
- package/docs/examples/vcs/list-repository-branches.md +3 -0
- package/docs/examples/vcs/update-external-deployments.md +4 -0
- package/install.ps1 +3 -3
- package/install.sh +3 -3
- package/lib/client.ts +15 -7
- package/lib/commands/config.ts +22 -6
- package/lib/commands/generate.ts +76 -0
- package/lib/commands/generators/databases.ts +508 -0
- package/lib/commands/init.ts +25 -14
- package/lib/commands/pull.ts +245 -193
- package/lib/commands/push.ts +336 -130
- package/lib/commands/run.ts +1 -1
- package/lib/commands/schema.ts +30 -11
- package/lib/commands/services/account.ts +200 -385
- package/lib/commands/services/console.ts +13 -34
- package/lib/commands/services/databases.ts +298 -1215
- package/lib/commands/services/functions.ts +115 -434
- package/lib/commands/services/graphql.ts +5 -2
- package/lib/commands/services/health.ts +87 -149
- package/lib/commands/services/locale.ts +36 -33
- package/lib/commands/services/messaging.ts +180 -999
- package/lib/commands/services/migrations.ts +54 -226
- package/lib/commands/services/project.ts +19 -23
- package/lib/commands/services/projects.ts +194 -714
- package/lib/commands/services/proxy.ts +30 -58
- package/lib/commands/services/sites.ts +107 -379
- package/lib/commands/services/storage.ts +93 -302
- package/lib/commands/services/tables-db.ts +1150 -0
- package/lib/commands/services/teams.ts +48 -110
- package/lib/commands/services/tokens.ts +16 -28
- package/lib/commands/services/users.ts +133 -403
- package/lib/commands/services/vcs.ts +48 -151
- package/lib/commands/types.ts +1 -1
- package/lib/commands/update.ts +12 -11
- package/lib/commands/utils/attributes.ts +44 -53
- package/lib/commands/utils/deployment.ts +6 -2
- package/lib/commands/utils/pools.ts +7 -6
- package/lib/config.ts +51 -4
- package/lib/constants.ts +22 -0
- package/lib/emulation/docker.ts +97 -83
- package/lib/parser.ts +16 -11
- package/lib/questions.ts +36 -21
- package/lib/sdks.ts +15 -11
- package/lib/utils.ts +35 -4
- package/package.json +4 -4
- package/scoop/appwrite.config.json +29 -19
- package/.github/workflows/build-verify.yml +0 -71
- package/bun.lock +0 -627
- package/dist/lib/commands/db.d.ts +0 -34
- package/dist/lib/commands/db.d.ts.map +0 -1
- package/dist/lib/commands/db.js +0 -247
- package/dist/lib/commands/db.js.map +0 -1
- package/dist/lib/commands/services/avatars.d.ts +0 -3
- package/dist/lib/commands/services/avatars.d.ts.map +0 -1
- package/dist/lib/commands/services/avatars.js +0 -118
- package/dist/lib/commands/services/avatars.js.map +0 -1
- package/dist/lib/commands/services/tablesdb.d.ts +0 -3
- package/dist/lib/commands/services/tablesdb.d.ts.map +0 -1
- package/dist/lib/commands/services/tablesdb.js.map +0 -1
- package/dist/scripts/generate-commands.d.ts +0 -2
- package/dist/scripts/generate-commands.d.ts.map +0 -1
- package/dist/scripts/generate-commands.js +0 -398
- package/dist/scripts/generate-commands.js.map +0 -1
- package/dist/sites/profile-website/src/lib/utils.d.ts +0 -4
- package/dist/sites/profile-website/src/lib/utils.d.ts.map +0 -1
- package/dist/sites/profile-website/src/lib/utils.js +0 -32
- package/dist/sites/profile-website/src/lib/utils.js.map +0 -1
- package/dist/sites/profile-website/tailwind.config.d.ts +0 -3
- package/dist/sites/profile-website/tailwind.config.d.ts.map +0 -1
- package/dist/sites/profile-website/tailwind.config.js +0 -110
- package/dist/sites/profile-website/tailwind.config.js.map +0 -1
- package/dist/test.d.ts +0 -2
- package/dist/test.d.ts.map +0 -1
- package/dist/test.js +0 -38
- package/dist/test.js.map +0 -1
- package/lib/commands/db.ts +0 -324
- package/lib/commands/services/avatars.ts +0 -400
- package/lib/commands/services/tablesdb.ts +0 -1928
- package/scripts/generate-commands.ts +0 -539
package/lib/commands/push.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
2
3
|
import { parse as parseDotenv } from "dotenv";
|
|
3
4
|
import chalk from "chalk";
|
|
4
5
|
import inquirer from "inquirer";
|
|
5
6
|
import { Command } from "commander";
|
|
6
7
|
import ID from "../id.js";
|
|
8
|
+
import { EXECUTABLE_NAME } from "../constants.js";
|
|
7
9
|
import {
|
|
8
10
|
localConfig,
|
|
9
11
|
globalConfig,
|
|
@@ -15,7 +17,8 @@ import {
|
|
|
15
17
|
KeysCollection,
|
|
16
18
|
KeysTable,
|
|
17
19
|
} from "../config.js";
|
|
18
|
-
import type
|
|
20
|
+
import { ConfigSchema, type SettingsType, type ConfigType } from "./config.js";
|
|
21
|
+
import { parseWithBetterErrors } from "./utils/error-formatter.js";
|
|
19
22
|
import { createSettingsObject } from "../utils.js";
|
|
20
23
|
import { Spinner, SPINNER_DOTS } from "../spinner.js";
|
|
21
24
|
import { paginate } from "../paginate.js";
|
|
@@ -24,7 +27,9 @@ import {
|
|
|
24
27
|
questionsPushBuckets,
|
|
25
28
|
questionsPushTeams,
|
|
26
29
|
questionsPushFunctions,
|
|
30
|
+
questionsPushFunctionsCode,
|
|
27
31
|
questionsPushSites,
|
|
32
|
+
questionsPushSitesCode,
|
|
28
33
|
questionsGetEntrypoint,
|
|
29
34
|
questionsPushCollections,
|
|
30
35
|
questionsPushTables,
|
|
@@ -74,6 +79,7 @@ import { checkAndApplyTablesDBChanges } from "./utils/database-sync.js";
|
|
|
74
79
|
|
|
75
80
|
const POLL_DEBOUNCE = 2000; // Milliseconds
|
|
76
81
|
const POLL_DEFAULT_VALUE = 30;
|
|
82
|
+
const DEPLOYMENT_TIMEOUT_MS = 10 * 60 * 1000; // 10 minutes
|
|
77
83
|
|
|
78
84
|
export interface PushOptions {
|
|
79
85
|
all?: boolean;
|
|
@@ -86,6 +92,7 @@ export interface PushOptions {
|
|
|
86
92
|
teams?: boolean;
|
|
87
93
|
topics?: boolean;
|
|
88
94
|
skipDeprecated?: boolean;
|
|
95
|
+
skipConfirmation?: boolean;
|
|
89
96
|
functionOptions?: {
|
|
90
97
|
async?: boolean;
|
|
91
98
|
code?: boolean;
|
|
@@ -96,6 +103,9 @@ export interface PushOptions {
|
|
|
96
103
|
code?: boolean;
|
|
97
104
|
withVariables?: boolean;
|
|
98
105
|
};
|
|
106
|
+
tableOptions?: {
|
|
107
|
+
attempts?: number;
|
|
108
|
+
};
|
|
99
109
|
}
|
|
100
110
|
|
|
101
111
|
interface PushSiteOptions {
|
|
@@ -114,15 +124,54 @@ interface PushFunctionOptions {
|
|
|
114
124
|
|
|
115
125
|
interface PushTableOptions {
|
|
116
126
|
attempts?: number;
|
|
127
|
+
skipConfirmation?: boolean;
|
|
117
128
|
}
|
|
118
129
|
|
|
119
130
|
export class Push {
|
|
120
131
|
private projectClient: Client;
|
|
121
132
|
private consoleClient: Client;
|
|
133
|
+
private silent: boolean;
|
|
122
134
|
|
|
123
|
-
constructor(projectClient: Client, consoleClient: Client) {
|
|
135
|
+
constructor(projectClient: Client, consoleClient: Client, silent = false) {
|
|
124
136
|
this.projectClient = projectClient;
|
|
125
137
|
this.consoleClient = consoleClient;
|
|
138
|
+
this.silent = silent;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Log a message (respects silent mode)
|
|
143
|
+
*/
|
|
144
|
+
private log(message: string): void {
|
|
145
|
+
if (!this.silent) {
|
|
146
|
+
log(message);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Log a success message (respects silent mode)
|
|
152
|
+
*/
|
|
153
|
+
private success(message: string): void {
|
|
154
|
+
if (!this.silent) {
|
|
155
|
+
success(message);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Log a warning message (respects silent mode)
|
|
161
|
+
*/
|
|
162
|
+
private warn(message: string): void {
|
|
163
|
+
if (!this.silent) {
|
|
164
|
+
warn(message);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Log an error message (respects silent mode)
|
|
170
|
+
*/
|
|
171
|
+
private error(message: string): void {
|
|
172
|
+
if (!this.silent) {
|
|
173
|
+
error(message);
|
|
174
|
+
}
|
|
126
175
|
}
|
|
127
176
|
|
|
128
177
|
public async pushResources(
|
|
@@ -143,12 +192,15 @@ export class Push {
|
|
|
143
192
|
(config.projectName || config.settings)
|
|
144
193
|
) {
|
|
145
194
|
try {
|
|
146
|
-
log("Pushing settings ...");
|
|
195
|
+
this.log("Pushing settings ...");
|
|
147
196
|
await this.pushSettings({
|
|
148
197
|
projectId: config.projectId,
|
|
149
198
|
projectName: config.projectName,
|
|
150
199
|
settings: config.settings,
|
|
151
200
|
});
|
|
201
|
+
this.success(
|
|
202
|
+
`Successfully pushed ${chalk.bold("all")} project settings.`,
|
|
203
|
+
);
|
|
152
204
|
results.settings = { success: true };
|
|
153
205
|
} catch (e: any) {
|
|
154
206
|
allErrors.push(e);
|
|
@@ -163,8 +215,11 @@ export class Push {
|
|
|
163
215
|
config.buckets.length > 0
|
|
164
216
|
) {
|
|
165
217
|
try {
|
|
166
|
-
log("Pushing buckets ...");
|
|
218
|
+
this.log("Pushing buckets ...");
|
|
167
219
|
const result = await this.pushBuckets(config.buckets);
|
|
220
|
+
this.success(
|
|
221
|
+
`Successfully pushed ${chalk.bold(result.successfullyPushed)} buckets.`,
|
|
222
|
+
);
|
|
168
223
|
results.buckets = result;
|
|
169
224
|
allErrors.push(...result.errors);
|
|
170
225
|
} catch (e: any) {
|
|
@@ -180,8 +235,11 @@ export class Push {
|
|
|
180
235
|
config.teams.length > 0
|
|
181
236
|
) {
|
|
182
237
|
try {
|
|
183
|
-
log("Pushing teams ...");
|
|
238
|
+
this.log("Pushing teams ...");
|
|
184
239
|
const result = await this.pushTeams(config.teams);
|
|
240
|
+
this.success(
|
|
241
|
+
`Successfully pushed ${chalk.bold(result.successfullyPushed)} teams.`,
|
|
242
|
+
);
|
|
185
243
|
results.teams = result;
|
|
186
244
|
allErrors.push(...result.errors);
|
|
187
245
|
} catch (e: any) {
|
|
@@ -197,8 +255,11 @@ export class Push {
|
|
|
197
255
|
config.topics.length > 0
|
|
198
256
|
) {
|
|
199
257
|
try {
|
|
200
|
-
log("Pushing topics ...");
|
|
258
|
+
this.log("Pushing topics ...");
|
|
201
259
|
const result = await this.pushMessagingTopics(config.topics);
|
|
260
|
+
this.success(
|
|
261
|
+
`Successfully pushed ${chalk.bold(result.successfullyPushed)} topics.`,
|
|
262
|
+
);
|
|
202
263
|
results.topics = result;
|
|
203
264
|
allErrors.push(...result.errors);
|
|
204
265
|
} catch (e: any) {
|
|
@@ -214,11 +275,14 @@ export class Push {
|
|
|
214
275
|
config.functions.length > 0
|
|
215
276
|
) {
|
|
216
277
|
try {
|
|
217
|
-
log("Pushing functions ...");
|
|
278
|
+
this.log("Pushing functions ...");
|
|
218
279
|
const result = await this.pushFunctions(
|
|
219
280
|
config.functions,
|
|
220
281
|
options.functionOptions,
|
|
221
282
|
);
|
|
283
|
+
this.success(
|
|
284
|
+
`Successfully pushed ${chalk.bold(result.successfullyPushed)} functions.`,
|
|
285
|
+
);
|
|
222
286
|
results.functions = result;
|
|
223
287
|
allErrors.push(...result.errors);
|
|
224
288
|
} catch (e: any) {
|
|
@@ -239,8 +303,11 @@ export class Push {
|
|
|
239
303
|
config.sites.length > 0
|
|
240
304
|
) {
|
|
241
305
|
try {
|
|
242
|
-
log("Pushing sites ...");
|
|
306
|
+
this.log("Pushing sites ...");
|
|
243
307
|
const result = await this.pushSites(config.sites, options.siteOptions);
|
|
308
|
+
this.success(
|
|
309
|
+
`Successfully pushed ${chalk.bold(result.successfullyPushed)} sites.`,
|
|
310
|
+
);
|
|
244
311
|
results.sites = result;
|
|
245
312
|
allErrors.push(...result.errors);
|
|
246
313
|
} catch (e: any) {
|
|
@@ -261,8 +328,14 @@ export class Push {
|
|
|
261
328
|
config.tables.length > 0
|
|
262
329
|
) {
|
|
263
330
|
try {
|
|
264
|
-
log("Pushing tables ...");
|
|
265
|
-
const result = await this.pushTables(config.tables
|
|
331
|
+
this.log("Pushing tables ...");
|
|
332
|
+
const result = await this.pushTables(config.tables, {
|
|
333
|
+
attempts: options.tableOptions?.attempts,
|
|
334
|
+
skipConfirmation: options.skipConfirmation,
|
|
335
|
+
});
|
|
336
|
+
this.success(
|
|
337
|
+
`Successfully pushed ${chalk.bold(result.successfullyPushed)} tables.`,
|
|
338
|
+
);
|
|
266
339
|
results.tables = result;
|
|
267
340
|
allErrors.push(...result.errors);
|
|
268
341
|
} catch (e: any) {
|
|
@@ -271,15 +344,14 @@ export class Push {
|
|
|
271
344
|
}
|
|
272
345
|
}
|
|
273
346
|
|
|
274
|
-
// Push collections (
|
|
347
|
+
// Push collections (skipDeprecated only applies when pushing all, explicit collections option takes precedence)
|
|
275
348
|
if (
|
|
276
|
-
!skipDeprecated &&
|
|
277
|
-
(shouldPushAll || options.collections) &&
|
|
349
|
+
(options.collections || (shouldPushAll && !skipDeprecated)) &&
|
|
278
350
|
config.collections &&
|
|
279
351
|
config.collections.length > 0
|
|
280
352
|
) {
|
|
281
353
|
try {
|
|
282
|
-
log("Pushing collections ...");
|
|
354
|
+
this.log("Pushing collections ...");
|
|
283
355
|
// Add database names to collections
|
|
284
356
|
const collectionsWithDbNames = config.collections.map(
|
|
285
357
|
(collection: any) => {
|
|
@@ -292,7 +364,12 @@ export class Push {
|
|
|
292
364
|
};
|
|
293
365
|
},
|
|
294
366
|
);
|
|
295
|
-
const result = await this.pushCollections(collectionsWithDbNames
|
|
367
|
+
const result = await this.pushCollections(collectionsWithDbNames, {
|
|
368
|
+
skipConfirmation: options.skipConfirmation,
|
|
369
|
+
});
|
|
370
|
+
this.success(
|
|
371
|
+
`Successfully pushed ${chalk.bold(result.successfullyPushed)} collections.`,
|
|
372
|
+
);
|
|
296
373
|
results.collections = result;
|
|
297
374
|
allErrors.push(...result.errors);
|
|
298
375
|
} catch (e: any) {
|
|
@@ -318,6 +395,7 @@ export class Push {
|
|
|
318
395
|
const settings = config.settings ?? {};
|
|
319
396
|
|
|
320
397
|
if (projectName) {
|
|
398
|
+
this.log("Applying project name ...");
|
|
321
399
|
await projectsService.update({
|
|
322
400
|
projectId: projectId,
|
|
323
401
|
name: projectName,
|
|
@@ -325,6 +403,7 @@ export class Push {
|
|
|
325
403
|
}
|
|
326
404
|
|
|
327
405
|
if (settings.services) {
|
|
406
|
+
this.log("Applying service statuses ...");
|
|
328
407
|
for (let [service, status] of Object.entries(settings.services)) {
|
|
329
408
|
await projectsService.updateServiceStatus({
|
|
330
409
|
projectId: projectId,
|
|
@@ -336,17 +415,18 @@ export class Push {
|
|
|
336
415
|
|
|
337
416
|
if (settings.auth) {
|
|
338
417
|
if (settings.auth.security) {
|
|
418
|
+
this.log("Applying auth security settings ...");
|
|
339
419
|
await projectsService.updateAuthDuration({
|
|
340
420
|
projectId,
|
|
341
|
-
duration: settings.auth.security.duration,
|
|
421
|
+
duration: Number(settings.auth.security.duration),
|
|
342
422
|
});
|
|
343
423
|
await projectsService.updateAuthLimit({
|
|
344
424
|
projectId,
|
|
345
|
-
limit: settings.auth.security.limit,
|
|
425
|
+
limit: Number(settings.auth.security.limit),
|
|
346
426
|
});
|
|
347
427
|
await projectsService.updateAuthSessionsLimit({
|
|
348
428
|
projectId,
|
|
349
|
-
limit: settings.auth.security.sessionsLimit,
|
|
429
|
+
limit: Number(settings.auth.security.sessionsLimit),
|
|
350
430
|
});
|
|
351
431
|
await projectsService.updateAuthPasswordDictionary({
|
|
352
432
|
projectId,
|
|
@@ -354,7 +434,7 @@ export class Push {
|
|
|
354
434
|
});
|
|
355
435
|
await projectsService.updateAuthPasswordHistory({
|
|
356
436
|
projectId,
|
|
357
|
-
limit: settings.auth.security.passwordHistory,
|
|
437
|
+
limit: Number(settings.auth.security.passwordHistory),
|
|
358
438
|
});
|
|
359
439
|
await projectsService.updatePersonalDataCheck({
|
|
360
440
|
projectId,
|
|
@@ -371,6 +451,7 @@ export class Push {
|
|
|
371
451
|
}
|
|
372
452
|
|
|
373
453
|
if (settings.auth.methods) {
|
|
454
|
+
this.log("Applying auth methods statuses ...");
|
|
374
455
|
for (let [method, status] of Object.entries(settings.auth.methods)) {
|
|
375
456
|
await projectsService.updateAuthStatus({
|
|
376
457
|
projectId,
|
|
@@ -391,7 +472,7 @@ export class Push {
|
|
|
391
472
|
|
|
392
473
|
for (const bucket of buckets) {
|
|
393
474
|
try {
|
|
394
|
-
log(`Pushing bucket ${chalk.bold(bucket["name"])} ...`);
|
|
475
|
+
this.log(`Pushing bucket ${chalk.bold(bucket["name"])} ...`);
|
|
395
476
|
const storageService = await getStorageService(this.projectClient);
|
|
396
477
|
|
|
397
478
|
try {
|
|
@@ -430,7 +511,7 @@ export class Push {
|
|
|
430
511
|
successfullyPushed++;
|
|
431
512
|
} catch (e: any) {
|
|
432
513
|
errors.push(e);
|
|
433
|
-
error(`Failed to push bucket ${bucket["name"]}: ${e.message}`);
|
|
514
|
+
this.error(`Failed to push bucket ${bucket["name"]}: ${e.message}`);
|
|
434
515
|
}
|
|
435
516
|
}
|
|
436
517
|
|
|
@@ -449,7 +530,7 @@ export class Push {
|
|
|
449
530
|
|
|
450
531
|
for (const team of teams) {
|
|
451
532
|
try {
|
|
452
|
-
log(`Pushing team ${chalk.bold(team["name"])} ...`);
|
|
533
|
+
this.log(`Pushing team ${chalk.bold(team["name"])} ...`);
|
|
453
534
|
const teamsService = await getTeamsService(this.projectClient);
|
|
454
535
|
|
|
455
536
|
try {
|
|
@@ -472,7 +553,7 @@ export class Push {
|
|
|
472
553
|
successfullyPushed++;
|
|
473
554
|
} catch (e: any) {
|
|
474
555
|
errors.push(e);
|
|
475
|
-
error(`Failed to push team ${team["name"]}: ${e.message}`);
|
|
556
|
+
this.error(`Failed to push team ${team["name"]}: ${e.message}`);
|
|
476
557
|
}
|
|
477
558
|
}
|
|
478
559
|
|
|
@@ -491,7 +572,7 @@ export class Push {
|
|
|
491
572
|
|
|
492
573
|
for (const topic of topics) {
|
|
493
574
|
try {
|
|
494
|
-
log(`Pushing topic ${chalk.bold(topic["name"])} ...`);
|
|
575
|
+
this.log(`Pushing topic ${chalk.bold(topic["name"])} ...`);
|
|
495
576
|
const messagingService = await getMessagingService(this.projectClient);
|
|
496
577
|
|
|
497
578
|
try {
|
|
@@ -513,11 +594,11 @@ export class Push {
|
|
|
513
594
|
}
|
|
514
595
|
}
|
|
515
596
|
|
|
516
|
-
success(`
|
|
597
|
+
this.success(`Pushed ${topic.name} ( ${topic["$id"]} )`);
|
|
517
598
|
successfullyPushed++;
|
|
518
599
|
} catch (e: any) {
|
|
519
600
|
errors.push(e);
|
|
520
|
-
error(`Failed to push topic ${topic["name"]}: ${e.message}`);
|
|
601
|
+
this.error(`Failed to push topic ${topic["name"]}: ${e.message}`);
|
|
521
602
|
}
|
|
522
603
|
}
|
|
523
604
|
|
|
@@ -632,21 +713,21 @@ export class Push {
|
|
|
632
713
|
let domain = "";
|
|
633
714
|
try {
|
|
634
715
|
const consoleService = await getConsoleService(
|
|
635
|
-
this.
|
|
716
|
+
this.consoleClient,
|
|
636
717
|
);
|
|
637
718
|
const variables = await consoleService.variables();
|
|
638
719
|
domain = ID.unique() + "." + variables["_APP_DOMAIN_FUNCTIONS"];
|
|
639
|
-
} catch (
|
|
640
|
-
|
|
641
|
-
throw
|
|
720
|
+
} catch (err) {
|
|
721
|
+
this.error("Error fetching console variables.");
|
|
722
|
+
throw err;
|
|
642
723
|
}
|
|
643
724
|
|
|
644
725
|
try {
|
|
645
726
|
const proxyService = await getProxyService(this.projectClient);
|
|
646
727
|
await proxyService.createFunctionRule(domain, func.$id);
|
|
647
|
-
} catch (
|
|
648
|
-
|
|
649
|
-
throw
|
|
728
|
+
} catch (err) {
|
|
729
|
+
this.error("Error creating function rule.");
|
|
730
|
+
throw err;
|
|
650
731
|
}
|
|
651
732
|
|
|
652
733
|
updaterRow.update({ status: "Created" });
|
|
@@ -730,6 +811,29 @@ export class Push {
|
|
|
730
811
|
return;
|
|
731
812
|
}
|
|
732
813
|
|
|
814
|
+
if (!func.path) {
|
|
815
|
+
errors.push(
|
|
816
|
+
new Error(`Function '${func.name}' has no path configured`),
|
|
817
|
+
);
|
|
818
|
+
updaterRow.fail({
|
|
819
|
+
errorMessage: `No path configured for function`,
|
|
820
|
+
});
|
|
821
|
+
return;
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
if (
|
|
825
|
+
!fs.existsSync(func.path) ||
|
|
826
|
+
fs.readdirSync(func.path).length === 0
|
|
827
|
+
) {
|
|
828
|
+
errors.push(
|
|
829
|
+
new Error(`Deployment not found or empty at path: ${func.path}`),
|
|
830
|
+
);
|
|
831
|
+
updaterRow.fail({
|
|
832
|
+
errorMessage: `path not found or empty: ${path.relative(process.cwd(), path.resolve(func.path))}`,
|
|
833
|
+
});
|
|
834
|
+
return;
|
|
835
|
+
}
|
|
836
|
+
|
|
733
837
|
try {
|
|
734
838
|
updaterRow.update({ status: "Pushing" }).replaceSpinner(SPINNER_DOTS);
|
|
735
839
|
const functionsServiceDeploy = await getFunctionsService(
|
|
@@ -761,7 +865,7 @@ export class Push {
|
|
|
761
865
|
switch (e.code) {
|
|
762
866
|
case "ENOENT":
|
|
763
867
|
updaterRow.fail({
|
|
764
|
-
errorMessage:
|
|
868
|
+
errorMessage: `Deployment not found at path: ${path.resolve(func.path)}`,
|
|
765
869
|
});
|
|
766
870
|
break;
|
|
767
871
|
default:
|
|
@@ -780,7 +884,21 @@ export class Push {
|
|
|
780
884
|
end: "Checking deployment status...",
|
|
781
885
|
});
|
|
782
886
|
|
|
887
|
+
const timeoutDeadline = Date.now() + DEPLOYMENT_TIMEOUT_MS;
|
|
888
|
+
|
|
783
889
|
while (true) {
|
|
890
|
+
if (Date.now() > timeoutDeadline) {
|
|
891
|
+
failedDeployments.push({
|
|
892
|
+
name: func["name"],
|
|
893
|
+
$id: func["$id"],
|
|
894
|
+
deployment: deploymentId,
|
|
895
|
+
});
|
|
896
|
+
updaterRow.fail({
|
|
897
|
+
errorMessage: "Deployment timed out after 10 minutes",
|
|
898
|
+
});
|
|
899
|
+
break;
|
|
900
|
+
}
|
|
901
|
+
|
|
784
902
|
const functionsServicePoll = await getFunctionsService(
|
|
785
903
|
this.projectClient,
|
|
786
904
|
);
|
|
@@ -830,7 +948,7 @@ export class Push {
|
|
|
830
948
|
}
|
|
831
949
|
|
|
832
950
|
await new Promise((resolve) =>
|
|
833
|
-
setTimeout(resolve, POLL_DEBOUNCE
|
|
951
|
+
setTimeout(resolve, POLL_DEBOUNCE),
|
|
834
952
|
);
|
|
835
953
|
}
|
|
836
954
|
} catch (e: any) {
|
|
@@ -960,21 +1078,21 @@ export class Push {
|
|
|
960
1078
|
let domain = "";
|
|
961
1079
|
try {
|
|
962
1080
|
const consoleService = await getConsoleService(
|
|
963
|
-
this.
|
|
1081
|
+
this.consoleClient,
|
|
964
1082
|
);
|
|
965
1083
|
const variables = await consoleService.variables();
|
|
966
1084
|
domain = ID.unique() + "." + variables["_APP_DOMAIN_SITES"];
|
|
967
|
-
} catch (
|
|
968
|
-
|
|
969
|
-
throw
|
|
1085
|
+
} catch (err) {
|
|
1086
|
+
this.error("Error fetching console variables.");
|
|
1087
|
+
throw err;
|
|
970
1088
|
}
|
|
971
1089
|
|
|
972
1090
|
try {
|
|
973
1091
|
const proxyService = await getProxyService(this.projectClient);
|
|
974
1092
|
await proxyService.createSiteRule(domain, site.$id);
|
|
975
|
-
} catch (
|
|
976
|
-
|
|
977
|
-
throw
|
|
1093
|
+
} catch (err) {
|
|
1094
|
+
this.error("Error creating site rule.");
|
|
1095
|
+
throw err;
|
|
978
1096
|
}
|
|
979
1097
|
|
|
980
1098
|
updaterRow.update({ status: "Created" });
|
|
@@ -1054,6 +1172,27 @@ export class Push {
|
|
|
1054
1172
|
return;
|
|
1055
1173
|
}
|
|
1056
1174
|
|
|
1175
|
+
if (!site.path) {
|
|
1176
|
+
errors.push(new Error(`Site '${site.name}' has no path configured`));
|
|
1177
|
+
updaterRow.fail({
|
|
1178
|
+
errorMessage: `No path configured for site`,
|
|
1179
|
+
});
|
|
1180
|
+
return;
|
|
1181
|
+
}
|
|
1182
|
+
|
|
1183
|
+
if (
|
|
1184
|
+
!fs.existsSync(site.path) ||
|
|
1185
|
+
fs.readdirSync(site.path).length === 0
|
|
1186
|
+
) {
|
|
1187
|
+
errors.push(
|
|
1188
|
+
new Error(`Deployment not found or empty at path: ${site.path}`),
|
|
1189
|
+
);
|
|
1190
|
+
updaterRow.fail({
|
|
1191
|
+
errorMessage: `path not found or empty: ${path.relative(process.cwd(), path.resolve(site.path))}`,
|
|
1192
|
+
});
|
|
1193
|
+
return;
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1057
1196
|
try {
|
|
1058
1197
|
updaterRow.update({ status: "Pushing" }).replaceSpinner(SPINNER_DOTS);
|
|
1059
1198
|
const sitesServiceDeploy = await getSitesService(this.projectClient);
|
|
@@ -1083,7 +1222,7 @@ export class Push {
|
|
|
1083
1222
|
switch (e.code) {
|
|
1084
1223
|
case "ENOENT":
|
|
1085
1224
|
updaterRow.fail({
|
|
1086
|
-
errorMessage:
|
|
1225
|
+
errorMessage: `Deployment not found at path: ${path.resolve(site.path)}`,
|
|
1087
1226
|
});
|
|
1088
1227
|
break;
|
|
1089
1228
|
default:
|
|
@@ -1102,7 +1241,21 @@ export class Push {
|
|
|
1102
1241
|
end: "Checking deployment status...",
|
|
1103
1242
|
});
|
|
1104
1243
|
|
|
1244
|
+
const timeoutDeadline = Date.now() + DEPLOYMENT_TIMEOUT_MS;
|
|
1245
|
+
|
|
1105
1246
|
while (true) {
|
|
1247
|
+
if (Date.now() > timeoutDeadline) {
|
|
1248
|
+
failedDeployments.push({
|
|
1249
|
+
name: site["name"],
|
|
1250
|
+
$id: site["$id"],
|
|
1251
|
+
deployment: deploymentId,
|
|
1252
|
+
});
|
|
1253
|
+
updaterRow.fail({
|
|
1254
|
+
errorMessage: "Deployment timed out after 10 minutes",
|
|
1255
|
+
});
|
|
1256
|
+
break;
|
|
1257
|
+
}
|
|
1258
|
+
|
|
1106
1259
|
const sitesServicePoll = await getSitesService(
|
|
1107
1260
|
this.projectClient,
|
|
1108
1261
|
);
|
|
@@ -1119,12 +1272,14 @@ export class Push {
|
|
|
1119
1272
|
const proxyServiceUrl = await getProxyService(
|
|
1120
1273
|
this.projectClient,
|
|
1121
1274
|
);
|
|
1122
|
-
const res = await proxyServiceUrl.listRules(
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1275
|
+
const res = await proxyServiceUrl.listRules({
|
|
1276
|
+
queries: [
|
|
1277
|
+
Query.limit(1),
|
|
1278
|
+
Query.equal("deploymentResourceType", "site"),
|
|
1279
|
+
Query.equal("deploymentResourceId", site["$id"]),
|
|
1280
|
+
Query.equal("trigger", "manual"),
|
|
1281
|
+
],
|
|
1282
|
+
});
|
|
1128
1283
|
|
|
1129
1284
|
if (Number(res.total) === 1) {
|
|
1130
1285
|
url = `https://${res.rules[0].domain}`;
|
|
@@ -1150,7 +1305,7 @@ export class Push {
|
|
|
1150
1305
|
}
|
|
1151
1306
|
|
|
1152
1307
|
await new Promise((resolve) =>
|
|
1153
|
-
setTimeout(resolve, POLL_DEBOUNCE
|
|
1308
|
+
setTimeout(resolve, POLL_DEBOUNCE),
|
|
1154
1309
|
);
|
|
1155
1310
|
}
|
|
1156
1311
|
} catch (e: any) {
|
|
@@ -1178,14 +1333,15 @@ export class Push {
|
|
|
1178
1333
|
|
|
1179
1334
|
public async pushTables(
|
|
1180
1335
|
tables: any[],
|
|
1181
|
-
|
|
1336
|
+
options: PushTableOptions = {},
|
|
1182
1337
|
): Promise<{
|
|
1183
1338
|
successfullyPushed: number;
|
|
1184
1339
|
errors: any[];
|
|
1185
1340
|
}> {
|
|
1341
|
+
const { attempts, skipConfirmation = false } = options;
|
|
1186
1342
|
const pollMaxDebounces = attempts ?? POLL_DEFAULT_VALUE;
|
|
1187
1343
|
const pools = new Pools(pollMaxDebounces);
|
|
1188
|
-
const attributes = new Attributes(pools);
|
|
1344
|
+
const attributes = new Attributes(pools, skipConfirmation);
|
|
1189
1345
|
|
|
1190
1346
|
let tablesChanged = new Set();
|
|
1191
1347
|
const errors: any[] = [];
|
|
@@ -1212,15 +1368,15 @@ export class Push {
|
|
|
1212
1368
|
changes.push("permissions");
|
|
1213
1369
|
|
|
1214
1370
|
if (changes.length > 0) {
|
|
1215
|
-
await tablesService.updateTable(
|
|
1216
|
-
table["databaseId"],
|
|
1217
|
-
table["$id"],
|
|
1218
|
-
table.name,
|
|
1219
|
-
table.rowSecurity,
|
|
1220
|
-
table["$permissions"],
|
|
1221
|
-
);
|
|
1371
|
+
await tablesService.updateTable({
|
|
1372
|
+
databaseId: table["databaseId"],
|
|
1373
|
+
tableId: table["$id"],
|
|
1374
|
+
name: table.name,
|
|
1375
|
+
rowSecurity: table.rowSecurity,
|
|
1376
|
+
permissions: table["$permissions"],
|
|
1377
|
+
});
|
|
1222
1378
|
|
|
1223
|
-
success(
|
|
1379
|
+
this.success(
|
|
1224
1380
|
`Updated ${table.name} ( ${table["$id"]} ) - ${changes.join(", ")}`,
|
|
1225
1381
|
);
|
|
1226
1382
|
tablesChanged.add(table["$id"]);
|
|
@@ -1230,19 +1386,21 @@ export class Push {
|
|
|
1230
1386
|
table.isExisted = true;
|
|
1231
1387
|
} catch (e: any) {
|
|
1232
1388
|
if (Number(e.code) === 404) {
|
|
1233
|
-
log(
|
|
1389
|
+
this.log(
|
|
1234
1390
|
`Table ${table.name} does not exist in the project. Creating ... `,
|
|
1235
1391
|
);
|
|
1236
1392
|
const tablesService = await getTablesDBService(this.projectClient);
|
|
1237
|
-
await tablesService.createTable(
|
|
1238
|
-
table["databaseId"],
|
|
1239
|
-
table["$id"],
|
|
1240
|
-
table.name,
|
|
1241
|
-
table.rowSecurity,
|
|
1242
|
-
table["$permissions"]
|
|
1243
|
-
|
|
1393
|
+
await tablesService.createTable({
|
|
1394
|
+
databaseId: table["databaseId"],
|
|
1395
|
+
tableId: table["$id"],
|
|
1396
|
+
name: table.name,
|
|
1397
|
+
rowSecurity: table.rowSecurity,
|
|
1398
|
+
permissions: table["$permissions"]
|
|
1399
|
+
? [...table["$permissions"]]
|
|
1400
|
+
: undefined,
|
|
1401
|
+
});
|
|
1244
1402
|
|
|
1245
|
-
success(`Created ${table.name} ( ${table["$id"]} )`);
|
|
1403
|
+
this.success(`Created ${table.name} ( ${table["$id"]} )`);
|
|
1246
1404
|
tablesChanged.add(table["$id"]);
|
|
1247
1405
|
} else {
|
|
1248
1406
|
errors.push(e);
|
|
@@ -1280,7 +1438,7 @@ export class Push {
|
|
|
1280
1438
|
}
|
|
1281
1439
|
}
|
|
1282
1440
|
|
|
1283
|
-
log(
|
|
1441
|
+
this.log(
|
|
1284
1442
|
`Pushing table ${table.name} ( ${table["databaseId"]} - ${table["$id"]} ) attributes`,
|
|
1285
1443
|
);
|
|
1286
1444
|
|
|
@@ -1298,7 +1456,7 @@ export class Push {
|
|
|
1298
1456
|
throw e;
|
|
1299
1457
|
}
|
|
1300
1458
|
tablesChanged.add(table["$id"]);
|
|
1301
|
-
success(`Successfully pushed ${table.name} ( ${table["$id"]} )`);
|
|
1459
|
+
this.success(`Successfully pushed ${table.name} ( ${table["$id"]} )`);
|
|
1302
1460
|
}
|
|
1303
1461
|
|
|
1304
1462
|
return {
|
|
@@ -1307,12 +1465,16 @@ export class Push {
|
|
|
1307
1465
|
};
|
|
1308
1466
|
}
|
|
1309
1467
|
|
|
1310
|
-
public async pushCollections(
|
|
1468
|
+
public async pushCollections(
|
|
1469
|
+
collections: any[],
|
|
1470
|
+
options: { skipConfirmation?: boolean } = {},
|
|
1471
|
+
): Promise<{
|
|
1311
1472
|
successfullyPushed: number;
|
|
1312
1473
|
errors: any[];
|
|
1313
1474
|
}> {
|
|
1475
|
+
const { skipConfirmation = false } = options;
|
|
1314
1476
|
const pools = new Pools(POLL_DEFAULT_VALUE);
|
|
1315
|
-
const attributes = new Attributes(pools);
|
|
1477
|
+
const attributes = new Attributes(pools, skipConfirmation);
|
|
1316
1478
|
|
|
1317
1479
|
const errors: any[] = [];
|
|
1318
1480
|
|
|
@@ -1336,16 +1498,20 @@ export class Push {
|
|
|
1336
1498
|
if (database.name !== localDatabaseName) {
|
|
1337
1499
|
await databasesService.update(databaseId, localDatabaseName);
|
|
1338
1500
|
|
|
1339
|
-
success(`Updated ${localDatabaseName} ( ${databaseId} ) name`);
|
|
1501
|
+
this.success(`Updated ${localDatabaseName} ( ${databaseId} ) name`);
|
|
1340
1502
|
}
|
|
1341
|
-
} catch (err) {
|
|
1342
|
-
|
|
1503
|
+
} catch (err: any) {
|
|
1504
|
+
if (Number(err.code) === 404) {
|
|
1505
|
+
this.log(`Database ${databaseId} not found. Creating it now ...`);
|
|
1343
1506
|
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1507
|
+
const localDatabaseName =
|
|
1508
|
+
collections.find((c: any) => c.databaseId === databaseId)
|
|
1509
|
+
?.databaseName ?? databaseId;
|
|
1347
1510
|
|
|
1348
|
-
|
|
1511
|
+
await databasesService.create(databaseId, localDatabaseName);
|
|
1512
|
+
} else {
|
|
1513
|
+
throw err;
|
|
1514
|
+
}
|
|
1349
1515
|
}
|
|
1350
1516
|
}),
|
|
1351
1517
|
);
|
|
@@ -1369,26 +1535,28 @@ export class Push {
|
|
|
1369
1535
|
collection.name,
|
|
1370
1536
|
);
|
|
1371
1537
|
|
|
1372
|
-
success(
|
|
1538
|
+
this.success(
|
|
1539
|
+
`Updated ${collection.name} ( ${collection["$id"]} ) name`,
|
|
1540
|
+
);
|
|
1373
1541
|
}
|
|
1374
1542
|
collection.remoteVersion = remoteCollection;
|
|
1375
1543
|
|
|
1376
1544
|
collection.isExisted = true;
|
|
1377
1545
|
} catch (e: any) {
|
|
1378
1546
|
if (Number(e.code) === 404) {
|
|
1379
|
-
log(
|
|
1547
|
+
this.log(
|
|
1380
1548
|
`Collection ${collection.name} does not exist in the project. Creating ... `,
|
|
1381
1549
|
);
|
|
1382
1550
|
const databasesService = await getDatabasesService(
|
|
1383
1551
|
this.projectClient,
|
|
1384
1552
|
);
|
|
1385
|
-
await databasesService.createCollection(
|
|
1386
|
-
collection["databaseId"],
|
|
1387
|
-
collection["$id"],
|
|
1388
|
-
collection.name,
|
|
1389
|
-
collection.documentSecurity,
|
|
1390
|
-
collection["$permissions"],
|
|
1391
|
-
);
|
|
1553
|
+
await databasesService.createCollection({
|
|
1554
|
+
databaseId: collection["databaseId"],
|
|
1555
|
+
collectionId: collection["$id"],
|
|
1556
|
+
name: collection.name,
|
|
1557
|
+
documentSecurity: collection.documentSecurity,
|
|
1558
|
+
permissions: collection["$permissions"],
|
|
1559
|
+
});
|
|
1392
1560
|
} else {
|
|
1393
1561
|
errors.push(e);
|
|
1394
1562
|
throw e;
|
|
@@ -1426,7 +1594,7 @@ export class Push {
|
|
|
1426
1594
|
}
|
|
1427
1595
|
}
|
|
1428
1596
|
|
|
1429
|
-
log(
|
|
1597
|
+
this.log(
|
|
1430
1598
|
`Pushing collection ${collection.name} ( ${collection["databaseId"]} - ${collection["$id"]} ) attributes`,
|
|
1431
1599
|
);
|
|
1432
1600
|
|
|
@@ -1447,7 +1615,7 @@ export class Push {
|
|
|
1447
1615
|
throw e;
|
|
1448
1616
|
}
|
|
1449
1617
|
numberOfCollections++;
|
|
1450
|
-
success(
|
|
1618
|
+
this.success(
|
|
1451
1619
|
`Successfully pushed ${collection.name} ( ${collection["$id"]} )`,
|
|
1452
1620
|
);
|
|
1453
1621
|
}
|
|
@@ -1459,10 +1627,10 @@ export class Push {
|
|
|
1459
1627
|
}
|
|
1460
1628
|
}
|
|
1461
1629
|
|
|
1462
|
-
async function createPushInstance(): Promise<Push> {
|
|
1630
|
+
async function createPushInstance(silent = false): Promise<Push> {
|
|
1463
1631
|
const projectClient = await sdkForProject();
|
|
1464
1632
|
const consoleClient = await sdkForConsole();
|
|
1465
|
-
return new Push(projectClient, consoleClient);
|
|
1633
|
+
return new Push(projectClient, consoleClient, silent);
|
|
1466
1634
|
}
|
|
1467
1635
|
|
|
1468
1636
|
const pushResources = async ({
|
|
@@ -1473,13 +1641,54 @@ const pushResources = async ({
|
|
|
1473
1641
|
if (cliConfig.all) {
|
|
1474
1642
|
checkDeployConditions(localConfig);
|
|
1475
1643
|
|
|
1644
|
+
const functions = localConfig.getFunctions();
|
|
1645
|
+
let allowFunctionsCodePush: boolean | null =
|
|
1646
|
+
cliConfig.force === true ? true : null;
|
|
1647
|
+
if (functions.length > 0 && allowFunctionsCodePush === null) {
|
|
1648
|
+
const codeAnswer = await inquirer.prompt(questionsPushFunctionsCode);
|
|
1649
|
+
allowFunctionsCodePush = codeAnswer.override;
|
|
1650
|
+
}
|
|
1651
|
+
|
|
1652
|
+
const sites = localConfig.getSites();
|
|
1653
|
+
let allowSitesCodePush: boolean | null =
|
|
1654
|
+
cliConfig.force === true ? true : null;
|
|
1655
|
+
if (sites.length > 0 && allowSitesCodePush === null) {
|
|
1656
|
+
const codeAnswer = await inquirer.prompt(questionsPushSitesCode);
|
|
1657
|
+
allowSitesCodePush = codeAnswer.override;
|
|
1658
|
+
}
|
|
1659
|
+
|
|
1476
1660
|
const pushInstance = await createPushInstance();
|
|
1477
|
-
const
|
|
1661
|
+
const project = localConfig.getProject();
|
|
1662
|
+
const config: ConfigType = {
|
|
1663
|
+
projectId: project.projectId ?? "",
|
|
1664
|
+
projectName: project.projectName,
|
|
1665
|
+
settings: project.projectSettings,
|
|
1666
|
+
functions,
|
|
1667
|
+
sites,
|
|
1668
|
+
collections: localConfig.getCollections(),
|
|
1669
|
+
databases: localConfig.getDatabases(),
|
|
1670
|
+
tables: localConfig.getTables(),
|
|
1671
|
+
tablesDB: localConfig.getTablesDBs(),
|
|
1672
|
+
buckets: localConfig.getBuckets(),
|
|
1673
|
+
teams: localConfig.getTeams(),
|
|
1674
|
+
topics: localConfig.getMessagingTopics(),
|
|
1675
|
+
};
|
|
1676
|
+
|
|
1677
|
+
parseWithBetterErrors<ConfigType>(
|
|
1678
|
+
ConfigSchema,
|
|
1679
|
+
config,
|
|
1680
|
+
"Configuration validation failed",
|
|
1681
|
+
config,
|
|
1682
|
+
);
|
|
1478
1683
|
|
|
1479
1684
|
await pushInstance.pushResources(config, {
|
|
1685
|
+
all: cliConfig.all,
|
|
1480
1686
|
skipDeprecated,
|
|
1481
|
-
functionOptions: {
|
|
1482
|
-
|
|
1687
|
+
functionOptions: {
|
|
1688
|
+
code: allowFunctionsCodePush === true,
|
|
1689
|
+
withVariables: false,
|
|
1690
|
+
},
|
|
1691
|
+
siteOptions: { code: allowSitesCodePush === true, withVariables: false },
|
|
1483
1692
|
});
|
|
1484
1693
|
} else {
|
|
1485
1694
|
const actions: Record<string, (options?: any) => Promise<void>> = {
|
|
@@ -1555,25 +1764,6 @@ const pushSettings = async (): Promise<void> => {
|
|
|
1555
1764
|
|
|
1556
1765
|
const pushInstance = await createPushInstance();
|
|
1557
1766
|
const config = localConfig.getProject();
|
|
1558
|
-
const settings = config.projectSettings ?? {};
|
|
1559
|
-
|
|
1560
|
-
if (config.projectName) {
|
|
1561
|
-
log("Applying project name ...");
|
|
1562
|
-
}
|
|
1563
|
-
|
|
1564
|
-
if (settings.services) {
|
|
1565
|
-
log("Applying service statuses ...");
|
|
1566
|
-
}
|
|
1567
|
-
|
|
1568
|
-
if (settings.auth) {
|
|
1569
|
-
if (settings.auth.security) {
|
|
1570
|
-
log("Applying auth security settings ...");
|
|
1571
|
-
}
|
|
1572
|
-
|
|
1573
|
-
if (settings.auth.methods) {
|
|
1574
|
-
log("Applying auth methods statuses ...");
|
|
1575
|
-
}
|
|
1576
|
-
}
|
|
1577
1767
|
|
|
1578
1768
|
await pushInstance.pushSettings({
|
|
1579
1769
|
projectId: config.projectId,
|
|
@@ -1619,7 +1809,7 @@ const pushSite = async ({
|
|
|
1619
1809
|
if (siteIds.length === 0) {
|
|
1620
1810
|
log("No sites found.");
|
|
1621
1811
|
hint(
|
|
1622
|
-
|
|
1812
|
+
`Use '${EXECUTABLE_NAME} pull sites' to synchronize existing one, or use '${EXECUTABLE_NAME} init site' to create a new one.`,
|
|
1623
1813
|
);
|
|
1624
1814
|
return;
|
|
1625
1815
|
}
|
|
@@ -1662,12 +1852,20 @@ const pushSite = async ({
|
|
|
1662
1852
|
return;
|
|
1663
1853
|
}
|
|
1664
1854
|
|
|
1855
|
+
let allowCodePush: boolean | null = cliConfig.force === true ? true : null;
|
|
1856
|
+
if (code !== false && allowCodePush === null) {
|
|
1857
|
+
const codeAnswer = await inquirer.prompt(questionsPushSitesCode);
|
|
1858
|
+
allowCodePush = codeAnswer.override;
|
|
1859
|
+
}
|
|
1860
|
+
|
|
1861
|
+
const shouldPushCode = code !== false && allowCodePush === true;
|
|
1862
|
+
|
|
1665
1863
|
log("Pushing sites ...");
|
|
1666
1864
|
|
|
1667
1865
|
const pushInstance = await createPushInstance();
|
|
1668
1866
|
const result = await pushInstance.pushSites(sites, {
|
|
1669
1867
|
async: asyncDeploy,
|
|
1670
|
-
code,
|
|
1868
|
+
code: shouldPushCode,
|
|
1671
1869
|
withVariables,
|
|
1672
1870
|
});
|
|
1673
1871
|
|
|
@@ -1740,7 +1938,7 @@ const pushFunction = async ({
|
|
|
1740
1938
|
if (functionIds.length === 0) {
|
|
1741
1939
|
log("No functions found.");
|
|
1742
1940
|
hint(
|
|
1743
|
-
|
|
1941
|
+
`Use '${EXECUTABLE_NAME} pull functions' to synchronize existing one, or use '${EXECUTABLE_NAME} init function' to create a new one.`,
|
|
1744
1942
|
);
|
|
1745
1943
|
return;
|
|
1746
1944
|
}
|
|
@@ -1782,12 +1980,20 @@ const pushFunction = async ({
|
|
|
1782
1980
|
return;
|
|
1783
1981
|
}
|
|
1784
1982
|
|
|
1983
|
+
let allowCodePush: boolean | null = cliConfig.force === true ? true : null;
|
|
1984
|
+
if (code !== false && allowCodePush === null) {
|
|
1985
|
+
const codeAnswer = await inquirer.prompt(questionsPushFunctionsCode);
|
|
1986
|
+
allowCodePush = codeAnswer.override;
|
|
1987
|
+
}
|
|
1988
|
+
|
|
1989
|
+
const shouldPushCode = code !== false && allowCodePush === true;
|
|
1990
|
+
|
|
1785
1991
|
log("Pushing functions ...");
|
|
1786
1992
|
|
|
1787
1993
|
const pushInstance = await createPushInstance();
|
|
1788
1994
|
const result = await pushInstance.pushFunctions(functions, {
|
|
1789
1995
|
async: asyncDeploy,
|
|
1790
|
-
code,
|
|
1996
|
+
code: shouldPushCode,
|
|
1791
1997
|
withVariables,
|
|
1792
1998
|
});
|
|
1793
1999
|
|
|
@@ -1861,7 +2067,7 @@ const pushTable = async ({
|
|
|
1861
2067
|
const validTablesDBs = localTablesDBs.filter((db: any) =>
|
|
1862
2068
|
remoteDatabaseIds.has(db.$id),
|
|
1863
2069
|
);
|
|
1864
|
-
localConfig.set("
|
|
2070
|
+
localConfig.set("tablesDB", validTablesDBs);
|
|
1865
2071
|
|
|
1866
2072
|
success("Configuration resynced successfully.");
|
|
1867
2073
|
console.log();
|
|
@@ -1956,7 +2162,7 @@ const pushTable = async ({
|
|
|
1956
2162
|
if (tables.length === 0) {
|
|
1957
2163
|
log("No tables found.");
|
|
1958
2164
|
hint(
|
|
1959
|
-
|
|
2165
|
+
`Use '${EXECUTABLE_NAME} pull tables' to synchronize existing one, or use '${EXECUTABLE_NAME} init table' to create a new one.`,
|
|
1960
2166
|
);
|
|
1961
2167
|
return;
|
|
1962
2168
|
}
|
|
@@ -1982,7 +2188,7 @@ const pushTable = async ({
|
|
|
1982
2188
|
log("Pushing tables ...");
|
|
1983
2189
|
|
|
1984
2190
|
const pushInstance = await createPushInstance();
|
|
1985
|
-
const result = await pushInstance.pushTables(tables, attempts);
|
|
2191
|
+
const result = await pushInstance.pushTables(tables, { attempts });
|
|
1986
2192
|
|
|
1987
2193
|
const { successfullyPushed, errors } = result;
|
|
1988
2194
|
|
|
@@ -1997,9 +2203,9 @@ const pushTable = async ({
|
|
|
1997
2203
|
}
|
|
1998
2204
|
};
|
|
1999
2205
|
|
|
2000
|
-
const pushCollection = async (
|
|
2206
|
+
const pushCollection = async (): Promise<void> => {
|
|
2001
2207
|
warn(
|
|
2002
|
-
|
|
2208
|
+
`${EXECUTABLE_NAME} push collection has been deprecated. Please consider using '${EXECUTABLE_NAME} push tables' instead`,
|
|
2003
2209
|
);
|
|
2004
2210
|
const collections: any[] = [];
|
|
2005
2211
|
|
|
@@ -2023,7 +2229,7 @@ const pushCollection = async ({}: PushTableOptions = {}): Promise<void> => {
|
|
|
2023
2229
|
if (collections.length === 0) {
|
|
2024
2230
|
log("No collections found.");
|
|
2025
2231
|
hint(
|
|
2026
|
-
|
|
2232
|
+
`Use '${EXECUTABLE_NAME} pull collections' to synchronize existing one, or use '${EXECUTABLE_NAME} init collection' to create a new one.`,
|
|
2027
2233
|
);
|
|
2028
2234
|
return;
|
|
2029
2235
|
}
|
|
@@ -2092,7 +2298,7 @@ const pushBucket = async (): Promise<void> => {
|
|
|
2092
2298
|
if (bucketIds.length === 0) {
|
|
2093
2299
|
log("No buckets found.");
|
|
2094
2300
|
hint(
|
|
2095
|
-
|
|
2301
|
+
`Use '${EXECUTABLE_NAME} pull buckets' to synchronize existing one, or use '${EXECUTABLE_NAME} init bucket' to create a new one.`,
|
|
2096
2302
|
);
|
|
2097
2303
|
return;
|
|
2098
2304
|
}
|
|
@@ -2156,7 +2362,7 @@ const pushTeam = async (): Promise<void> => {
|
|
|
2156
2362
|
if (teamIds.length === 0) {
|
|
2157
2363
|
log("No teams found.");
|
|
2158
2364
|
hint(
|
|
2159
|
-
|
|
2365
|
+
`Use '${EXECUTABLE_NAME} pull teams' to synchronize existing one, or use '${EXECUTABLE_NAME} init team' to create a new one.`,
|
|
2160
2366
|
);
|
|
2161
2367
|
return;
|
|
2162
2368
|
}
|
|
@@ -2220,7 +2426,7 @@ const pushMessagingTopic = async (): Promise<void> => {
|
|
|
2220
2426
|
if (topicsIds.length === 0) {
|
|
2221
2427
|
log("No topics found.");
|
|
2222
2428
|
hint(
|
|
2223
|
-
|
|
2429
|
+
`Use '${EXECUTABLE_NAME} pull topics' to synchronize existing one, or use '${EXECUTABLE_NAME} init topic' to create a new one.`,
|
|
2224
2430
|
);
|
|
2225
2431
|
return;
|
|
2226
2432
|
}
|
|
@@ -2345,11 +2551,11 @@ push
|
|
|
2345
2551
|
.action(actionRunner(pushMessagingTopic));
|
|
2346
2552
|
|
|
2347
2553
|
export const deploy = new Command("deploy")
|
|
2348
|
-
.description(
|
|
2554
|
+
.description(`Removed. Use ${EXECUTABLE_NAME} push instead`)
|
|
2349
2555
|
.action(
|
|
2350
2556
|
actionRunner(async () => {
|
|
2351
2557
|
warn(
|
|
2352
|
-
|
|
2558
|
+
`${EXECUTABLE_NAME} deploy has been removed. Please use '${EXECUTABLE_NAME} push' instead`,
|
|
2353
2559
|
);
|
|
2354
2560
|
}),
|
|
2355
2561
|
);
|