@stacksjs/ts-cloud-core 0.1.2 → 0.1.6

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 (250) hide show
  1. package/README.md +98 -13
  2. package/package.json +12 -3
  3. package/src/advanced-features.test.ts +0 -465
  4. package/src/aws/cloudformation.ts +0 -421
  5. package/src/aws/cloudfront.ts +0 -158
  6. package/src/aws/credentials.test.ts +0 -132
  7. package/src/aws/credentials.ts +0 -545
  8. package/src/aws/index.ts +0 -87
  9. package/src/aws/s3.test.ts +0 -188
  10. package/src/aws/s3.ts +0 -1088
  11. package/src/aws/signature.test.ts +0 -670
  12. package/src/aws/signature.ts +0 -1155
  13. package/src/backup/disaster-recovery.test.ts +0 -726
  14. package/src/backup/disaster-recovery.ts +0 -500
  15. package/src/backup/index.ts +0 -34
  16. package/src/backup/manager.test.ts +0 -498
  17. package/src/backup/manager.ts +0 -432
  18. package/src/cicd/circleci.ts +0 -430
  19. package/src/cicd/github-actions.ts +0 -424
  20. package/src/cicd/gitlab-ci.ts +0 -255
  21. package/src/cicd/index.ts +0 -8
  22. package/src/cli/history.ts +0 -396
  23. package/src/cli/index.ts +0 -10
  24. package/src/cli/progress.ts +0 -458
  25. package/src/cli/repl.ts +0 -454
  26. package/src/cli/suggestions.ts +0 -327
  27. package/src/cli/table.test.ts +0 -319
  28. package/src/cli/table.ts +0 -332
  29. package/src/cloudformation/builder.test.ts +0 -327
  30. package/src/cloudformation/builder.ts +0 -378
  31. package/src/cloudformation/builders/api-gateway.ts +0 -449
  32. package/src/cloudformation/builders/cache.ts +0 -334
  33. package/src/cloudformation/builders/cdn.ts +0 -278
  34. package/src/cloudformation/builders/compute.ts +0 -485
  35. package/src/cloudformation/builders/database.ts +0 -392
  36. package/src/cloudformation/builders/functions.ts +0 -343
  37. package/src/cloudformation/builders/messaging.ts +0 -140
  38. package/src/cloudformation/builders/monitoring.ts +0 -300
  39. package/src/cloudformation/builders/network.ts +0 -264
  40. package/src/cloudformation/builders/queue.ts +0 -147
  41. package/src/cloudformation/builders/security.ts +0 -399
  42. package/src/cloudformation/builders/storage.ts +0 -285
  43. package/src/cloudformation/index.ts +0 -30
  44. package/src/cloudformation/types.ts +0 -173
  45. package/src/compliance/aws-config.ts +0 -543
  46. package/src/compliance/cloudtrail.ts +0 -376
  47. package/src/compliance/compliance.test.ts +0 -423
  48. package/src/compliance/guardduty.ts +0 -446
  49. package/src/compliance/index.ts +0 -66
  50. package/src/compliance/security-hub.ts +0 -456
  51. package/src/containers/build-optimization.ts +0 -416
  52. package/src/containers/containers.test.ts +0 -508
  53. package/src/containers/image-scanning.ts +0 -360
  54. package/src/containers/index.ts +0 -9
  55. package/src/containers/registry.ts +0 -293
  56. package/src/containers/service-mesh.ts +0 -520
  57. package/src/database/database.test.ts +0 -762
  58. package/src/database/index.ts +0 -9
  59. package/src/database/migrations.ts +0 -444
  60. package/src/database/performance.ts +0 -528
  61. package/src/database/replicas.ts +0 -534
  62. package/src/database/users.ts +0 -494
  63. package/src/dependency-graph.ts +0 -143
  64. package/src/deployment/ab-testing.ts +0 -582
  65. package/src/deployment/blue-green.ts +0 -452
  66. package/src/deployment/canary.ts +0 -500
  67. package/src/deployment/deployment.test.ts +0 -526
  68. package/src/deployment/index.ts +0 -61
  69. package/src/deployment/progressive.ts +0 -62
  70. package/src/dns/dns.test.ts +0 -641
  71. package/src/dns/dnssec.ts +0 -315
  72. package/src/dns/index.ts +0 -8
  73. package/src/dns/resolver.ts +0 -496
  74. package/src/dns/routing.ts +0 -593
  75. package/src/email/advanced/analytics.ts +0 -445
  76. package/src/email/advanced/index.ts +0 -11
  77. package/src/email/advanced/rules.ts +0 -465
  78. package/src/email/advanced/scheduling.ts +0 -352
  79. package/src/email/advanced/search.ts +0 -412
  80. package/src/email/advanced/shared-mailboxes.ts +0 -404
  81. package/src/email/advanced/templates.ts +0 -455
  82. package/src/email/advanced/threading.ts +0 -281
  83. package/src/email/analytics.ts +0 -467
  84. package/src/email/bounce-handling.ts +0 -425
  85. package/src/email/email.test.ts +0 -431
  86. package/src/email/handlers/__tests__/inbound.test.ts +0 -38
  87. package/src/email/handlers/__tests__/outbound.test.ts +0 -37
  88. package/src/email/handlers/converter.ts +0 -227
  89. package/src/email/handlers/feedback.ts +0 -228
  90. package/src/email/handlers/inbound.ts +0 -169
  91. package/src/email/handlers/outbound.ts +0 -178
  92. package/src/email/index.ts +0 -15
  93. package/src/email/reputation.ts +0 -303
  94. package/src/email/templates.ts +0 -352
  95. package/src/errors/index.test.ts +0 -434
  96. package/src/errors/index.ts +0 -416
  97. package/src/health-checks/index.ts +0 -40
  98. package/src/index.ts +0 -360
  99. package/src/intrinsic-functions.ts +0 -118
  100. package/src/lambda/concurrency.ts +0 -330
  101. package/src/lambda/destinations.ts +0 -345
  102. package/src/lambda/dlq.ts +0 -425
  103. package/src/lambda/index.ts +0 -11
  104. package/src/lambda/lambda.test.ts +0 -840
  105. package/src/lambda/layers.ts +0 -263
  106. package/src/lambda/versions.ts +0 -376
  107. package/src/lambda/vpc.ts +0 -399
  108. package/src/local/config.ts +0 -114
  109. package/src/local/index.ts +0 -6
  110. package/src/local/mock-aws.ts +0 -351
  111. package/src/modules/ai.ts +0 -340
  112. package/src/modules/api.ts +0 -478
  113. package/src/modules/auth.ts +0 -805
  114. package/src/modules/cache.ts +0 -417
  115. package/src/modules/cdn.ts +0 -1062
  116. package/src/modules/communication.ts +0 -1094
  117. package/src/modules/compute.ts +0 -3348
  118. package/src/modules/database.ts +0 -554
  119. package/src/modules/deployment.ts +0 -1079
  120. package/src/modules/dns.ts +0 -337
  121. package/src/modules/email.ts +0 -1538
  122. package/src/modules/filesystem.ts +0 -515
  123. package/src/modules/index.ts +0 -32
  124. package/src/modules/messaging.ts +0 -486
  125. package/src/modules/monitoring.ts +0 -2086
  126. package/src/modules/network.ts +0 -664
  127. package/src/modules/parameter-store.ts +0 -325
  128. package/src/modules/permissions.ts +0 -1081
  129. package/src/modules/phone.ts +0 -494
  130. package/src/modules/queue.ts +0 -1260
  131. package/src/modules/redirects.ts +0 -464
  132. package/src/modules/registry.ts +0 -699
  133. package/src/modules/search.ts +0 -401
  134. package/src/modules/secrets.ts +0 -416
  135. package/src/modules/security.ts +0 -731
  136. package/src/modules/sms.ts +0 -389
  137. package/src/modules/storage.ts +0 -1120
  138. package/src/modules/workflow.ts +0 -680
  139. package/src/multi-account/config.ts +0 -521
  140. package/src/multi-account/index.ts +0 -7
  141. package/src/multi-account/manager.ts +0 -427
  142. package/src/multi-region/cross-region.ts +0 -410
  143. package/src/multi-region/index.ts +0 -8
  144. package/src/multi-region/manager.ts +0 -483
  145. package/src/multi-region/regions.ts +0 -435
  146. package/src/network-security/index.ts +0 -48
  147. package/src/observability/index.ts +0 -9
  148. package/src/observability/logs.ts +0 -522
  149. package/src/observability/metrics.ts +0 -460
  150. package/src/observability/observability.test.ts +0 -782
  151. package/src/observability/synthetics.ts +0 -568
  152. package/src/observability/xray.ts +0 -358
  153. package/src/phone/advanced/analytics.ts +0 -349
  154. package/src/phone/advanced/callbacks.ts +0 -428
  155. package/src/phone/advanced/index.ts +0 -8
  156. package/src/phone/advanced/ivr-builder.ts +0 -504
  157. package/src/phone/advanced/recording.ts +0 -310
  158. package/src/phone/handlers/__tests__/incoming-call.test.ts +0 -40
  159. package/src/phone/handlers/incoming-call.ts +0 -117
  160. package/src/phone/handlers/missed-call.ts +0 -116
  161. package/src/phone/handlers/voicemail.ts +0 -179
  162. package/src/phone/index.ts +0 -9
  163. package/src/presets/api-backend.ts +0 -134
  164. package/src/presets/data-pipeline.ts +0 -204
  165. package/src/presets/extend.test.ts +0 -295
  166. package/src/presets/extend.ts +0 -297
  167. package/src/presets/fullstack-app.ts +0 -144
  168. package/src/presets/index.ts +0 -27
  169. package/src/presets/jamstack.ts +0 -135
  170. package/src/presets/microservices.ts +0 -167
  171. package/src/presets/ml-api.ts +0 -208
  172. package/src/presets/nodejs-server.ts +0 -104
  173. package/src/presets/nodejs-serverless.ts +0 -114
  174. package/src/presets/realtime-app.ts +0 -184
  175. package/src/presets/static-site.ts +0 -64
  176. package/src/presets/traditional-web-app.ts +0 -339
  177. package/src/presets/wordpress.ts +0 -138
  178. package/src/preview/github.test.ts +0 -249
  179. package/src/preview/github.ts +0 -297
  180. package/src/preview/index.ts +0 -37
  181. package/src/preview/manager.test.ts +0 -440
  182. package/src/preview/manager.ts +0 -326
  183. package/src/preview/notifications.test.ts +0 -582
  184. package/src/preview/notifications.ts +0 -341
  185. package/src/queue/batch-processing.ts +0 -402
  186. package/src/queue/dlq-monitoring.ts +0 -402
  187. package/src/queue/fifo.ts +0 -342
  188. package/src/queue/index.ts +0 -9
  189. package/src/queue/management.ts +0 -428
  190. package/src/queue/queue.test.ts +0 -429
  191. package/src/resource-mgmt/index.ts +0 -39
  192. package/src/resource-naming.ts +0 -62
  193. package/src/s3/index.ts +0 -523
  194. package/src/schema/cloud-config.schema.json +0 -554
  195. package/src/schema/index.ts +0 -68
  196. package/src/security/certificate-manager.ts +0 -492
  197. package/src/security/index.ts +0 -9
  198. package/src/security/scanning.ts +0 -545
  199. package/src/security/secrets-manager.ts +0 -476
  200. package/src/security/secrets-rotation.ts +0 -456
  201. package/src/security/security.test.ts +0 -738
  202. package/src/sms/advanced/ab-testing.ts +0 -389
  203. package/src/sms/advanced/analytics.ts +0 -336
  204. package/src/sms/advanced/campaigns.ts +0 -523
  205. package/src/sms/advanced/chatbot.ts +0 -224
  206. package/src/sms/advanced/index.ts +0 -10
  207. package/src/sms/advanced/link-tracking.ts +0 -248
  208. package/src/sms/advanced/mms.ts +0 -308
  209. package/src/sms/handlers/__tests__/send.test.ts +0 -40
  210. package/src/sms/handlers/delivery-status.ts +0 -133
  211. package/src/sms/handlers/receive.ts +0 -162
  212. package/src/sms/handlers/send.ts +0 -174
  213. package/src/sms/index.ts +0 -9
  214. package/src/stack-diff.ts +0 -389
  215. package/src/static-site/index.ts +0 -85
  216. package/src/template-builder.ts +0 -110
  217. package/src/template-validator.ts +0 -574
  218. package/src/utils/cache.ts +0 -291
  219. package/src/utils/diff.ts +0 -269
  220. package/src/utils/hash.ts +0 -227
  221. package/src/utils/index.ts +0 -8
  222. package/src/utils/parallel.ts +0 -294
  223. package/src/validators/credentials.test.ts +0 -274
  224. package/src/validators/credentials.ts +0 -233
  225. package/src/validators/quotas.test.ts +0 -434
  226. package/src/validators/quotas.ts +0 -217
  227. package/test/ai.test.ts +0 -327
  228. package/test/api.test.ts +0 -511
  229. package/test/auth.test.ts +0 -632
  230. package/test/cache.test.ts +0 -406
  231. package/test/cdn.test.ts +0 -247
  232. package/test/compute.test.ts +0 -861
  233. package/test/database.test.ts +0 -523
  234. package/test/deployment.test.ts +0 -499
  235. package/test/dns.test.ts +0 -270
  236. package/test/email.test.ts +0 -439
  237. package/test/filesystem.test.ts +0 -382
  238. package/test/integration.test.ts +0 -350
  239. package/test/messaging.test.ts +0 -514
  240. package/test/monitoring.test.ts +0 -634
  241. package/test/network.test.ts +0 -425
  242. package/test/permissions.test.ts +0 -488
  243. package/test/queue.test.ts +0 -484
  244. package/test/registry.test.ts +0 -306
  245. package/test/security.test.ts +0 -462
  246. package/test/storage.test.ts +0 -463
  247. package/test/template-validator.test.ts +0 -559
  248. package/test/workflow.test.ts +0 -592
  249. package/tsconfig.json +0 -16
  250. package/tsconfig.tsbuildinfo +0 -1
@@ -1,424 +0,0 @@
1
- /**
2
- * GitHub Actions Workflow Generator
3
- * Generate CI/CD workflows for GitHub Actions
4
- */
5
-
6
- export interface GitHubActionsOptions {
7
- workflowName?: string
8
- trigger?: 'push' | 'pull_request' | 'workflow_dispatch' | 'schedule'
9
- branches?: string[]
10
- schedule?: string // Cron expression
11
- environments?: string[]
12
- awsRegion?: string
13
- awsRole?: string // OIDC role ARN
14
- nodeVersion?: string
15
- bunVersion?: string
16
- deployCommand?: string
17
- testCommand?: string
18
- buildCommand?: string
19
- lintCommand?: string
20
- }
21
-
22
- /**
23
- * Generate deployment workflow
24
- */
25
- export function generateDeploymentWorkflow(options: GitHubActionsOptions = {}): string {
26
- const {
27
- workflowName = 'Deploy',
28
- trigger = 'push',
29
- branches = ['main'],
30
- environments = ['production'],
31
- awsRegion = 'us-east-1',
32
- awsRole,
33
- bunVersion = 'latest',
34
- deployCommand = 'bun run cloud deploy',
35
- testCommand = 'bun test',
36
- buildCommand = 'bun run build',
37
- } = options
38
-
39
- const usesOIDC = !!awsRole
40
-
41
- return `name: ${workflowName}
42
-
43
- on:
44
- ${trigger}:
45
- branches:
46
- ${branches.map(b => ` - ${b}`).join('\n')}
47
-
48
- env:
49
- AWS_REGION: ${awsRegion}
50
- BUN_VERSION: ${bunVersion}
51
-
52
- jobs:
53
- test:
54
- runs-on: ubuntu-latest
55
- steps:
56
- - name: Checkout code
57
- uses: actions/checkout@v4
58
-
59
- - name: Setup Bun
60
- uses: oven-sh/setup-bun@v1
61
- with:
62
- bun-version: \${{ env.BUN_VERSION }}
63
-
64
- - name: Install dependencies
65
- run: bun install
66
-
67
- - name: Run tests
68
- run: ${testCommand}
69
-
70
- - name: Build
71
- run: ${buildCommand}
72
-
73
- deploy:
74
- needs: test
75
- runs-on: ubuntu-latest
76
- ${environments.length > 0 ? `environment: ${environments[0]}` : ''}
77
- permissions:
78
- id-token: write
79
- contents: read
80
-
81
- steps:
82
- - name: Checkout code
83
- uses: actions/checkout@v4
84
-
85
- - name: Setup Bun
86
- uses: oven-sh/setup-bun@v1
87
- with:
88
- bun-version: \${{ env.BUN_VERSION }}
89
-
90
- - name: Install dependencies
91
- run: bun install
92
-
93
- ${usesOIDC
94
- ? `- name: Configure AWS credentials (OIDC)
95
- uses: aws-actions/configure-aws-credentials@v4
96
- with:
97
- role-to-assume: ${awsRole}
98
- aws-region: \${{ env.AWS_REGION }}`
99
- : `- name: Configure AWS credentials
100
- uses: aws-actions/configure-aws-credentials@v4
101
- with:
102
- aws-access-key-id: \${{ secrets.AWS_ACCESS_KEY_ID }}
103
- aws-secret-access-key: \${{ secrets.AWS_SECRET_ACCESS_KEY }}
104
- aws-region: \${{ env.AWS_REGION }}`}
105
-
106
- - name: Deploy to AWS
107
- run: ${deployCommand}
108
-
109
- - name: Post-deployment tests
110
- run: bun run cloud test:smoke
111
- `
112
- }
113
-
114
- /**
115
- * Generate multi-environment deployment workflow
116
- */
117
- export function generateMultiEnvWorkflow(options: {
118
- environments: Array<{ name: string; branch: string }>
119
- awsRegion?: string
120
- awsRole?: string
121
- }): string {
122
- const { environments, awsRegion = 'us-east-1', awsRole } = options
123
- const usesOIDC = !!awsRole
124
-
125
- return `name: Multi-Environment Deploy
126
-
127
- on:
128
- push:
129
- branches:
130
- ${environments.map(env => ` - ${env.branch}`).join('\n')}
131
-
132
- env:
133
- AWS_REGION: ${awsRegion}
134
-
135
- jobs:
136
- determine-environment:
137
- runs-on: ubuntu-latest
138
- outputs:
139
- environment: \${{ steps.set-env.outputs.environment }}
140
- steps:
141
- - name: Determine environment
142
- id: set-env
143
- run: |
144
- ${environments.map((env, i) => ` ${i > 0 ? 'elif' : 'if'} [[ "\${{ github.ref }}" == "refs/heads/${env.branch}" ]]; then
145
- echo "environment=${env.name}" >> $GITHUB_OUTPUT`).join('\n')}
146
- fi
147
-
148
- deploy:
149
- needs: determine-environment
150
- runs-on: ubuntu-latest
151
- environment: \${{ needs.determine-environment.outputs.environment }}
152
- permissions:
153
- id-token: write
154
- contents: read
155
-
156
- steps:
157
- - name: Checkout code
158
- uses: actions/checkout@v4
159
-
160
- - name: Setup Bun
161
- uses: oven-sh/setup-bun@v1
162
-
163
- - name: Install dependencies
164
- run: bun install
165
-
166
- ${usesOIDC
167
- ? `- name: Configure AWS credentials (OIDC)
168
- uses: aws-actions/configure-aws-credentials@v4
169
- with:
170
- role-to-assume: ${awsRole}
171
- aws-region: \${{ env.AWS_REGION }}`
172
- : `- name: Configure AWS credentials
173
- uses: aws-actions/configure-aws-credentials@v4
174
- with:
175
- aws-access-key-id: \${{ secrets.AWS_ACCESS_KEY_ID }}
176
- aws-secret-access-key: \${{ secrets.AWS_SECRET_ACCESS_KEY }}
177
- aws-region: \${{ env.AWS_REGION }}`}
178
-
179
- - name: Deploy
180
- run: bun run cloud deploy --env=\${{ needs.determine-environment.outputs.environment }}
181
- `
182
- }
183
-
184
- /**
185
- * Generate PR preview workflow
186
- */
187
- export function generatePRPreviewWorkflow(options: {
188
- awsRegion?: string
189
- awsRole?: string
190
- ttl?: number
191
- } = {}): string {
192
- const { awsRegion = 'us-east-1', awsRole, ttl = 24 } = options
193
- const usesOIDC = !!awsRole
194
-
195
- return `name: PR Preview Environment
196
-
197
- on:
198
- pull_request:
199
- types: [opened, synchronize, reopened, closed]
200
-
201
- env:
202
- AWS_REGION: ${awsRegion}
203
- TTL_HOURS: ${ttl}
204
-
205
- jobs:
206
- preview:
207
- if: github.event.action != 'closed'
208
- runs-on: ubuntu-latest
209
- permissions:
210
- id-token: write
211
- contents: read
212
- pull-requests: write
213
-
214
- steps:
215
- - name: Checkout code
216
- uses: actions/checkout@v4
217
-
218
- - name: Setup Bun
219
- uses: oven-sh/setup-bun@v1
220
-
221
- - name: Install dependencies
222
- run: bun install
223
-
224
- ${usesOIDC
225
- ? `- name: Configure AWS credentials (OIDC)
226
- uses: aws-actions/configure-aws-credentials@v4
227
- with:
228
- role-to-assume: ${awsRole}
229
- aws-region: \${{ env.AWS_REGION }}`
230
- : `- name: Configure AWS credentials
231
- uses: aws-actions/configure-aws-credentials@v4
232
- with:
233
- aws-access-key-id: \${{ secrets.AWS_ACCESS_KEY_ID }}
234
- aws-secret-access-key: \${{ secrets.AWS_SECRET_ACCESS_KEY }}
235
- aws-region: \${{ env.AWS_REGION }}`}
236
-
237
- - name: Deploy preview environment
238
- id: deploy
239
- run: |
240
- bun run cloud env:preview \\
241
- --branch=\${{ github.head_ref }} \\
242
- --pr=\${{ github.event.pull_request.number }} \\
243
- --commit=\${{ github.event.pull_request.head.sha }} \\
244
- --ttl=\${{ env.TTL_HOURS }}
245
-
246
- PREVIEW_URL=\$(bun run cloud env:preview --get-url \${{ github.head_ref }})
247
- echo "preview_url=\$PREVIEW_URL" >> $GITHUB_OUTPUT
248
-
249
- - name: Comment PR with preview URL
250
- if: steps.deploy.outputs.preview_url
251
- uses: actions/github-script@v7
252
- with:
253
- script: |
254
- const previewUrl = '\${{ steps.deploy.outputs.preview_url }}';
255
- const body = \`:rocket: Preview environment deployed!\\n\\n\` +
256
- \`**URL:** \${previewUrl}\\n\\n\` +
257
- \`**Branch:** \${{ github.head_ref }}\\n\` +
258
- \`**Commit:** \${{ github.event.pull_request.head.sha }}\\n\` +
259
- \`**Expires:** \${{ env.TTL_HOURS }} hours from now\\n\\n\` +
260
- \`_This preview will be automatically destroyed after \${{ env.TTL_HOURS }} hours or when the PR is closed._\`;
261
-
262
- github.rest.issues.createComment({
263
- issue_number: context.issue.number,
264
- owner: context.repo.owner,
265
- repo: context.repo.repo,
266
- body: body
267
- });
268
-
269
- cleanup:
270
- if: github.event.action == 'closed'
271
- runs-on: ubuntu-latest
272
- permissions:
273
- id-token: write
274
- contents: read
275
-
276
- steps:
277
- - name: Checkout code
278
- uses: actions/checkout@v4
279
-
280
- - name: Setup Bun
281
- uses: oven-sh/setup-bun@v1
282
-
283
- - name: Install dependencies
284
- run: bun install
285
-
286
- ${usesOIDC
287
- ? `- name: Configure AWS credentials (OIDC)
288
- uses: aws-actions/configure-aws-credentials@v4
289
- with:
290
- role-to-assume: ${awsRole}
291
- aws-region: \${{ env.AWS_REGION }}`
292
- : `- name: Configure AWS credentials
293
- uses: aws-actions/configure-aws-credentials@v4
294
- with:
295
- aws-access-key-id: \${{ secrets.AWS_ACCESS_KEY_ID }}
296
- aws-secret-access-key: \${{ secrets.AWS_SECRET_ACCESS_KEY }}
297
- aws-region: \${{ env.AWS_REGION }}`}
298
-
299
- - name: Destroy preview environment
300
- run: |
301
- bun run cloud env:preview --destroy \\
302
- --branch=\${{ github.head_ref }} \\
303
- --pr=\${{ github.event.pull_request.number }}
304
- `
305
- }
306
-
307
- /**
308
- * Generate scheduled deployment workflow
309
- */
310
- export function generateScheduledWorkflow(options: {
311
- schedule: string
312
- environment: string
313
- awsRegion?: string
314
- awsRole?: string
315
- }): string {
316
- const { schedule, environment, awsRegion = 'us-east-1', awsRole } = options
317
- const usesOIDC = !!awsRole
318
-
319
- return `name: Scheduled Deployment
320
-
321
- on:
322
- schedule:
323
- - cron: '${schedule}'
324
- workflow_dispatch:
325
-
326
- env:
327
- AWS_REGION: ${awsRegion}
328
- ENVIRONMENT: ${environment}
329
-
330
- jobs:
331
- deploy:
332
- runs-on: ubuntu-latest
333
- environment: \${{ env.ENVIRONMENT }}
334
- permissions:
335
- id-token: write
336
- contents: read
337
-
338
- steps:
339
- - name: Checkout code
340
- uses: actions/checkout@v4
341
-
342
- - name: Setup Bun
343
- uses: oven-sh/setup-bun@v1
344
-
345
- - name: Install dependencies
346
- run: bun install
347
-
348
- ${usesOIDC
349
- ? `- name: Configure AWS credentials (OIDC)
350
- uses: aws-actions/configure-aws-credentials@v4
351
- with:
352
- role-to-assume: ${awsRole}
353
- aws-region: \${{ env.AWS_REGION }}`
354
- : `- name: Configure AWS credentials
355
- uses: aws-actions/configure-aws-credentials@v4
356
- with:
357
- aws-access-key-id: \${{ secrets.AWS_ACCESS_KEY_ID }}
358
- aws-secret-access-key: \${{ secrets.AWS_SECRET_ACCESS_KEY }}
359
- aws-region: \${{ env.AWS_REGION }}`}
360
-
361
- - name: Deploy
362
- run: bun run cloud deploy --env=\${{ env.ENVIRONMENT }}
363
- `
364
- }
365
-
366
- /**
367
- * Generate matrix deployment workflow (multiple regions/accounts)
368
- */
369
- export function generateMatrixWorkflow(options: {
370
- matrix: Array<{ environment: string; region: string; account?: string }>
371
- awsRole?: string
372
- }): string {
373
- const { matrix, awsRole } = options
374
- const usesOIDC = !!awsRole
375
-
376
- return `name: Matrix Deployment
377
-
378
- on:
379
- workflow_dispatch:
380
- inputs:
381
- environments:
382
- description: 'Environments to deploy (comma-separated)'
383
- required: false
384
- default: 'all'
385
-
386
- jobs:
387
- deploy:
388
- runs-on: ubuntu-latest
389
- strategy:
390
- matrix:
391
- include:
392
- ${matrix.map(m => ` - environment: ${m.environment}
393
- region: ${m.region}${m.account ? `\n account: ${m.account}` : ''}`).join('\n')}
394
- permissions:
395
- id-token: write
396
- contents: read
397
-
398
- steps:
399
- - name: Checkout code
400
- uses: actions/checkout@v4
401
-
402
- - name: Setup Bun
403
- uses: oven-sh/setup-bun@v1
404
-
405
- - name: Install dependencies
406
- run: bun install
407
-
408
- ${usesOIDC
409
- ? `- name: Configure AWS credentials (OIDC)
410
- uses: aws-actions/configure-aws-credentials@v4
411
- with:
412
- role-to-assume: ${awsRole}
413
- aws-region: \${{ matrix.region }}`
414
- : `- name: Configure AWS credentials
415
- uses: aws-actions/configure-aws-credentials@v4
416
- with:
417
- aws-access-key-id: \${{ secrets.AWS_ACCESS_KEY_ID }}
418
- aws-secret-access-key: \${{ secrets.AWS_SECRET_ACCESS_KEY }}
419
- aws-region: \${{ matrix.region }}`}
420
-
421
- - name: Deploy to \${{ matrix.environment }} (\${{ matrix.region }})
422
- run: bun run cloud deploy --env=\${{ matrix.environment }} --region=\${{ matrix.region }}
423
- `
424
- }
@@ -1,255 +0,0 @@
1
- /**
2
- * GitLab CI/CD Pipeline Generator
3
- * Generate CI/CD pipelines for GitLab
4
- */
5
-
6
- export interface GitLabCIOptions {
7
- stages?: string[]
8
- environments?: string[]
9
- awsRegion?: string
10
- dockerImage?: string
11
- bunVersion?: string
12
- deployCommand?: string
13
- testCommand?: string
14
- buildCommand?: string
15
- }
16
-
17
- /**
18
- * Generate deployment pipeline
19
- */
20
- export function generateDeploymentPipeline(options: GitLabCIOptions = {}): string {
21
- const {
22
- stages = ['test', 'build', 'deploy'],
23
- environments = ['production'],
24
- awsRegion = 'us-east-1',
25
- dockerImage = 'oven/bun:latest',
26
- deployCommand = 'bun run cloud deploy',
27
- testCommand = 'bun test',
28
- buildCommand = 'bun run build',
29
- } = options
30
-
31
- return `stages:
32
- ${stages.map(s => ` - ${s}`).join('\n')}
33
-
34
- variables:
35
- AWS_DEFAULT_REGION: ${awsRegion}
36
- AWS_REGION: ${awsRegion}
37
-
38
- default:
39
- image: ${dockerImage}
40
- cache:
41
- paths:
42
- - node_modules/
43
- - .bun/
44
-
45
- before_script:
46
- - bun install
47
-
48
- test:
49
- stage: test
50
- script:
51
- - ${testCommand}
52
- only:
53
- - merge_requests
54
- - main
55
-
56
- build:
57
- stage: build
58
- script:
59
- - ${buildCommand}
60
- artifacts:
61
- paths:
62
- - dist/
63
- expire_in: 1 day
64
- only:
65
- - merge_requests
66
- - main
67
-
68
- deploy:
69
- stage: deploy
70
- script:
71
- - ${deployCommand}
72
- environment:
73
- name: ${environments[0]}
74
- url: https://\${CI_PROJECT_NAME}.example.com
75
- only:
76
- - main
77
- when: manual
78
- `
79
- }
80
-
81
- /**
82
- * Generate multi-environment pipeline
83
- */
84
- export function generateMultiEnvPipeline(options: {
85
- environments: Array<{ name: string; branch: string; manual?: boolean }>
86
- awsRegion?: string
87
- }): string {
88
- const { environments, awsRegion = 'us-east-1' } = options
89
-
90
- const deployJobs = environments.map(env => `
91
- deploy:${env.name}:
92
- stage: deploy
93
- script:
94
- - bun run cloud deploy --env=${env.name}
95
- environment:
96
- name: ${env.name}
97
- url: https://${env.name}.example.com
98
- only:
99
- - ${env.branch}
100
- ${env.manual ? 'when: manual' : ''}
101
- `).join('\n')
102
-
103
- return `stages:
104
- - test
105
- - build
106
- - deploy
107
-
108
- variables:
109
- AWS_DEFAULT_REGION: ${awsRegion}
110
-
111
- default:
112
- image: oven/bun:latest
113
- cache:
114
- paths:
115
- - node_modules/
116
-
117
- test:
118
- stage: test
119
- script:
120
- - bun install
121
- - bun test
122
-
123
- build:
124
- stage: build
125
- script:
126
- - bun install
127
- - bun run build
128
- artifacts:
129
- paths:
130
- - dist/
131
- ${deployJobs}
132
- `
133
- }
134
-
135
- /**
136
- * Generate PR/MR preview pipeline
137
- */
138
- export function generatePreviewPipeline(options: {
139
- awsRegion?: string
140
- ttl?: number
141
- } = {}): string {
142
- const { awsRegion = 'us-east-1', ttl = 24 } = options
143
-
144
- return `stages:
145
- - build
146
- - deploy
147
- - cleanup
148
-
149
- variables:
150
- AWS_DEFAULT_REGION: ${awsRegion}
151
- TTL_HOURS: ${ttl}
152
-
153
- default:
154
- image: oven/bun:latest
155
-
156
- deploy:preview:
157
- stage: deploy
158
- script:
159
- - bun install
160
- - |
161
- bun run cloud env:preview \\
162
- --branch=\${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME} \\
163
- --pr=\${CI_MERGE_REQUEST_IID} \\
164
- --commit=\${CI_COMMIT_SHA} \\
165
- --ttl=\${TTL_HOURS}
166
- - PREVIEW_URL=\$(bun run cloud env:preview --get-url \${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME})
167
- - echo "Preview URL: \$PREVIEW_URL"
168
- environment:
169
- name: preview/\${CI_MERGE_REQUEST_IID}
170
- url: \${PREVIEW_URL}
171
- on_stop: cleanup:preview
172
- only:
173
- - merge_requests
174
-
175
- cleanup:preview:
176
- stage: cleanup
177
- script:
178
- - bun install
179
- - |
180
- bun run cloud env:preview --destroy \\
181
- --branch=\${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME} \\
182
- --pr=\${CI_MERGE_REQUEST_IID}
183
- environment:
184
- name: preview/\${CI_MERGE_REQUEST_IID}
185
- action: stop
186
- when: manual
187
- only:
188
- - merge_requests
189
- `
190
- }
191
-
192
- /**
193
- * Generate scheduled pipeline
194
- */
195
- export function generateScheduledPipeline(options: {
196
- environment: string
197
- awsRegion?: string
198
- }): string {
199
- const { environment, awsRegion = 'us-east-1' } = options
200
-
201
- return `stages:
202
- - deploy
203
-
204
- variables:
205
- AWS_DEFAULT_REGION: ${awsRegion}
206
- ENVIRONMENT: ${environment}
207
-
208
- default:
209
- image: oven/bun:latest
210
-
211
- deploy:scheduled:
212
- stage: deploy
213
- script:
214
- - bun install
215
- - bun run cloud deploy --env=\${ENVIRONMENT}
216
- environment:
217
- name: \${ENVIRONMENT}
218
- only:
219
- - schedules
220
- `
221
- }
222
-
223
- /**
224
- * Generate manual deployment pipeline
225
- */
226
- export function generateManualPipeline(options: {
227
- environments: string[]
228
- awsRegion?: string
229
- }): string {
230
- const { environments, awsRegion = 'us-east-1' } = options
231
-
232
- const deployJobs = environments.map(env => `
233
- deploy:${env}:
234
- stage: deploy
235
- script:
236
- - bun install
237
- - bun run cloud deploy --env=${env}
238
- environment:
239
- name: ${env}
240
- when: manual
241
- only:
242
- - main
243
- `).join('\n')
244
-
245
- return `stages:
246
- - deploy
247
-
248
- variables:
249
- AWS_DEFAULT_REGION: ${awsRegion}
250
-
251
- default:
252
- image: oven/bun:latest
253
- ${deployJobs}
254
- `
255
- }
package/src/cicd/index.ts DELETED
@@ -1,8 +0,0 @@
1
- /**
2
- * CI/CD Integration
3
- * Generate workflows for popular CI/CD platforms
4
- */
5
-
6
- export * from './github-actions'
7
- export * from './gitlab-ci'
8
- export * from './circleci'