@akash-chowdhury-24/deployhub 1.0.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.
Files changed (80) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +176 -0
  3. package/install.ps1 +55 -0
  4. package/install.sh +99 -0
  5. package/package.json +86 -0
  6. package/src/adapters/dotnet.adapter.js +41 -0
  7. package/src/adapters/go.adapter.js +40 -0
  8. package/src/adapters/index.js +48 -0
  9. package/src/adapters/java.adapter.js +46 -0
  10. package/src/adapters/node.adapter.js +77 -0
  11. package/src/adapters/php.adapter.js +43 -0
  12. package/src/adapters/python.adapter.js +54 -0
  13. package/src/adapters/rails.adapter.js +66 -0
  14. package/src/artifact/engine.js +473 -0
  15. package/src/cli/index.js +45 -0
  16. package/src/commands/artifact.js +88 -0
  17. package/src/commands/build.js +44 -0
  18. package/src/commands/clean.js +50 -0
  19. package/src/commands/deploy.js +82 -0
  20. package/src/commands/doctor.js +630 -0
  21. package/src/commands/init.js +795 -0
  22. package/src/commands/logs.js +33 -0
  23. package/src/commands/rollback.js +50 -0
  24. package/src/commands/storage.js +116 -0
  25. package/src/commands/update.js +63 -0
  26. package/src/commands/verify.js +55 -0
  27. package/src/core/config.js +168 -0
  28. package/src/core/pipeline.js +77 -0
  29. package/src/core/stages.js +210 -0
  30. package/src/deployment/index.js +156 -0
  31. package/src/deployment/providers/azure-vm.js +7 -0
  32. package/src/deployment/providers/docker.js +30 -0
  33. package/src/deployment/providers/ec2.js +7 -0
  34. package/src/deployment/providers/gcp-vm.js +7 -0
  35. package/src/deployment/providers/kubernetes.js +30 -0
  36. package/src/deployment/providers/platforms/_shared.js +167 -0
  37. package/src/deployment/providers/platforms/aws-amplify.js +164 -0
  38. package/src/deployment/providers/platforms/azure-static-web-apps.js +68 -0
  39. package/src/deployment/providers/platforms/cloudflare-pages.js +103 -0
  40. package/src/deployment/providers/platforms/firebase-app-hosting.js +95 -0
  41. package/src/deployment/providers/platforms/firebase-hosting.js +99 -0
  42. package/src/deployment/providers/platforms/index.js +44 -0
  43. package/src/deployment/providers/platforms/netlify.js +102 -0
  44. package/src/deployment/providers/platforms/vercel.js +92 -0
  45. package/src/deployment/providers/ssh.js +365 -0
  46. package/src/detectors/angular.js +23 -0
  47. package/src/detectors/backend.detector.js +304 -0
  48. package/src/detectors/dotnet.js +18 -0
  49. package/src/detectors/frontend.detector.js +219 -0
  50. package/src/detectors/go.js +20 -0
  51. package/src/detectors/index.js +78 -0
  52. package/src/detectors/java.js +24 -0
  53. package/src/detectors/nextjs.js +23 -0
  54. package/src/detectors/node.js +28 -0
  55. package/src/detectors/php.js +17 -0
  56. package/src/detectors/python.js +22 -0
  57. package/src/detectors/react.js +29 -0
  58. package/src/detectors/vue.js +23 -0
  59. package/src/logger/index.js +44 -0
  60. package/src/notifications/email.js +53 -0
  61. package/src/notifications/index.js +34 -0
  62. package/src/notifications/slack.js +18 -0
  63. package/src/notifications/webhook.js +21 -0
  64. package/src/rollback/engine.js +102 -0
  65. package/src/storage/index.js +109 -0
  66. package/src/storage/providers/aws.js +96 -0
  67. package/src/storage/providers/azure.js +45 -0
  68. package/src/storage/providers/dropbox.js +49 -0
  69. package/src/storage/providers/ftp.js +69 -0
  70. package/src/storage/providers/gcp.js +45 -0
  71. package/src/storage/providers/gdrive.js +80 -0
  72. package/src/storage/providers/local.js +61 -0
  73. package/src/utils/author.js +141 -0
  74. package/src/utils/checksums.js +53 -0
  75. package/src/utils/firebase-config-generator.js +35 -0
  76. package/src/utils/github-actions.js +389 -0
  77. package/src/utils/init-platform.js +229 -0
  78. package/src/utils/nginx.js +34 -0
  79. package/src/utils/platform-env.js +132 -0
  80. package/src/utils/version.js +31 -0
@@ -0,0 +1,132 @@
1
+ /** Platform deployment environment variables and CLI metadata. */
2
+
3
+ export const PLATFORM_ENV_MAP = {
4
+ vercel: ['VERCEL_TOKEN', 'VERCEL_ORG_ID', 'VERCEL_PROJECT_ID'],
5
+ netlify: ['NETLIFY_AUTH_TOKEN', 'NETLIFY_SITE_ID'],
6
+ 'cloudflare-pages': [
7
+ 'CLOUDFLARE_API_TOKEN',
8
+ 'CLOUDFLARE_ACCOUNT_ID',
9
+ 'CF_PROJECT_NAME',
10
+ ],
11
+ 'aws-amplify': [
12
+ 'AWS_ACCESS_KEY_ID',
13
+ 'AWS_SECRET_ACCESS_KEY',
14
+ 'AWS_REGION',
15
+ 'AMPLIFY_APP_ID',
16
+ ],
17
+ 'azure-static-web-apps': ['AZURE_STATIC_WEB_APPS_TOKEN'],
18
+ 'firebase-hosting': ['FIREBASE_TOKEN', 'FIREBASE_PROJECT_ID'],
19
+ 'firebase-app-hosting': [
20
+ 'FIREBASE_TOKEN',
21
+ 'FIREBASE_PROJECT_ID',
22
+ 'FIREBASE_APP_HOSTING_BACKEND',
23
+ ],
24
+ };
25
+
26
+ export const PLATFORM_CLI_MAP = {
27
+ vercel: { install: 'vercel', binary: 'vercel', globalInstall: 'npm install -g vercel' },
28
+ netlify: {
29
+ install: 'netlify-cli',
30
+ binary: 'netlify',
31
+ globalInstall: 'npm install -g netlify-cli',
32
+ },
33
+ 'cloudflare-pages': {
34
+ install: 'wrangler',
35
+ binary: 'wrangler',
36
+ globalInstall: 'npm install -g wrangler',
37
+ },
38
+ 'aws-amplify': {
39
+ install: 'aws-cli',
40
+ binary: 'aws',
41
+ globalInstall: null,
42
+ },
43
+ 'azure-static-web-apps': {
44
+ install: '@azure/static-web-apps-cli',
45
+ binary: 'swa',
46
+ globalInstall: 'npm install -g @azure/static-web-apps-cli',
47
+ },
48
+ 'firebase-hosting': {
49
+ install: 'firebase-tools',
50
+ binary: 'firebase',
51
+ globalInstall: 'npm install -g firebase-tools',
52
+ },
53
+ 'firebase-app-hosting': {
54
+ install: 'firebase-tools',
55
+ binary: 'firebase',
56
+ globalInstall: 'npm install -g firebase-tools',
57
+ },
58
+ };
59
+
60
+ export const PLATFORM_CHOICES = [
61
+ { name: 'Vercel', value: 'vercel' },
62
+ { name: 'Netlify', value: 'netlify' },
63
+ { name: 'Cloudflare Pages', value: 'cloudflare-pages' },
64
+ { name: 'AWS Amplify', value: 'aws-amplify' },
65
+ { name: 'Azure Static Web Apps', value: 'azure-static-web-apps' },
66
+ { name: 'Firebase Hosting', value: 'firebase-hosting' },
67
+ { name: 'Firebase App Hosting', value: 'firebase-app-hosting' },
68
+ ];
69
+
70
+ export const PLATFORM_COMPARISON = `
71
+ Platform Best for
72
+ ─────────────────────────────────────────────────────────────
73
+ Vercel Next.js (best experience), React
74
+ Netlify React, Vue, Svelte — simplest setup
75
+ Cloudflare Pages Static sites, Astro, React — fastest CDN
76
+ AWS Amplify React, Next.js, Vue, Angular — AWS ecosystem
77
+ Azure Static Web Apps React, Angular, Blazor — Azure ecosystem
78
+ Firebase Hosting Static SPAs — Google ecosystem
79
+ Firebase App Hosting Next.js, Angular with SSR — Google ecosystem
80
+
81
+ All platforms include: free SSL, global CDN, custom domain, auto-deploy
82
+ `;
83
+
84
+ /**
85
+ * @param {string} platform
86
+ * @returns {Record<string, string>}
87
+ */
88
+ export function getPlatformEnvExample(platform) {
89
+ const examples = {
90
+ vercel: {
91
+ VERCEL_TOKEN: '',
92
+ VERCEL_ORG_ID: '',
93
+ VERCEL_PROJECT_ID: '',
94
+ },
95
+ netlify: {
96
+ NETLIFY_AUTH_TOKEN: '',
97
+ NETLIFY_SITE_ID: '',
98
+ },
99
+ 'cloudflare-pages': {
100
+ CLOUDFLARE_API_TOKEN: '',
101
+ CLOUDFLARE_ACCOUNT_ID: '',
102
+ CF_PROJECT_NAME: '',
103
+ },
104
+ 'aws-amplify': {
105
+ AWS_ACCESS_KEY_ID: '',
106
+ AWS_SECRET_ACCESS_KEY: '',
107
+ AWS_REGION: 'us-east-1',
108
+ AMPLIFY_APP_ID: '',
109
+ },
110
+ 'azure-static-web-apps': {
111
+ AZURE_STATIC_WEB_APPS_TOKEN: '',
112
+ },
113
+ 'firebase-hosting': {
114
+ FIREBASE_TOKEN: '',
115
+ FIREBASE_PROJECT_ID: '',
116
+ },
117
+ 'firebase-app-hosting': {
118
+ FIREBASE_TOKEN: '',
119
+ FIREBASE_PROJECT_ID: '',
120
+ FIREBASE_APP_HOSTING_BACKEND: '',
121
+ },
122
+ };
123
+ return examples[platform] || {};
124
+ }
125
+
126
+ export default {
127
+ PLATFORM_ENV_MAP,
128
+ PLATFORM_CLI_MAP,
129
+ PLATFORM_CHOICES,
130
+ PLATFORM_COMPARISON,
131
+ getPlatformEnvExample,
132
+ };
@@ -0,0 +1,31 @@
1
+ import fs from 'fs-extra';
2
+ import path from 'path';
3
+ import semver from 'semver';
4
+
5
+ /**
6
+ * @param {string} [cwd]
7
+ * @returns {Promise<string>}
8
+ */
9
+ export async function getProjectVersion(cwd = process.cwd()) {
10
+ const pkgPath = path.join(cwd, 'package.json');
11
+ if (await fs.pathExists(pkgPath)) {
12
+ const pkg = await fs.readJson(pkgPath);
13
+ if (pkg.version && semver.valid(pkg.version)) {
14
+ return pkg.version;
15
+ }
16
+ }
17
+ return getDateVersion();
18
+ }
19
+
20
+ /**
21
+ * @returns {string}
22
+ */
23
+ export function getDateVersion() {
24
+ const now = new Date();
25
+ const y = now.getFullYear();
26
+ const m = String(now.getMonth() + 1).padStart(2, '0');
27
+ const d = String(now.getDate()).padStart(2, '0');
28
+ const h = String(now.getHours()).padStart(2, '0');
29
+ const min = String(now.getMinutes()).padStart(2, '0');
30
+ return `${y}.${m}.${d}.${h}${min}`;
31
+ }