|
| 1 | +import { Program } from '../sourcegen' |
| 2 | + |
| 3 | +import { codegen as alertChannelCodegen } from './alert-channel.codegen' |
| 4 | +import { codegen as apiCheckCodegen } from './api-check.codegen' |
| 5 | +import { codegen as browserCheckCodegen } from './browser-check.codegen' |
| 6 | +import { codegen as checkGroupCodegen } from './check-group.codegen' |
| 7 | +import { codegen as dashboardCodegen } from './dashboard.codegen' |
| 8 | +import { codegen as heartbeatCheckCodegen } from './heartbeat-check.codegen' |
| 9 | +import { codegen as maintenanceWindowCodegen } from './maintenance-window.codegen' |
| 10 | +import { codegen as multiStepCheckCodegen } from './multi-step-check.codegen' |
| 11 | +import { codegen as privateLocationCheckCodegen } from './private-location.codegen' |
| 12 | +import { codegen as tcpCheckCodegen } from './tcp-check.codegen' |
| 13 | + |
| 14 | +export type ResourceType = |
| 15 | + 'alert-channel-subscription' | |
| 16 | + 'alert-channel' | |
| 17 | + 'check-group' | |
| 18 | + 'check' | |
| 19 | + 'dashboard' | |
| 20 | + 'maintenance-window' | |
| 21 | + 'private-location-check-assignment' | |
| 22 | + 'private-location-group-assignment' | |
| 23 | + 'private-location' |
| 24 | + |
| 25 | +interface Resource { |
| 26 | + type: ResourceType |
| 27 | + logicalId: string |
| 28 | + payload: any |
| 29 | +} |
| 30 | + |
| 31 | +export function codegen (program: Program, resource: Resource): void { |
| 32 | + switch (resource.type) { |
| 33 | + case 'alert-channel-subscription': |
| 34 | + return // Skip temporarily |
| 35 | + case 'alert-channel': |
| 36 | + return alertChannelCodegen(program, resource.logicalId, resource.payload) |
| 37 | + case 'check-group': |
| 38 | + return checkGroupCodegen(program, resource.logicalId, resource.payload) |
| 39 | + case 'check': { |
| 40 | + const checkType = resource.payload.checkType |
| 41 | + switch (checkType) { |
| 42 | + case 'BROWSER': |
| 43 | + return browserCheckCodegen(program, resource.logicalId, resource.payload) |
| 44 | + case 'API': |
| 45 | + return apiCheckCodegen(program, resource.logicalId, resource.payload) |
| 46 | + case 'TCP': |
| 47 | + return tcpCheckCodegen(program, resource.logicalId, resource.payload) |
| 48 | + case 'MULTI_STEP': |
| 49 | + return multiStepCheckCodegen(program, resource.logicalId, resource.payload) |
| 50 | + case 'HEARTBEAT': |
| 51 | + return heartbeatCheckCodegen(program, resource.logicalId, resource.payload) |
| 52 | + default: |
| 53 | + throw new Error(`Unable to generate for for unsupported check type '${checkType}'.`) |
| 54 | + } |
| 55 | + } |
| 56 | + case 'dashboard': |
| 57 | + return dashboardCodegen(program, resource.logicalId, resource.payload) |
| 58 | + case 'maintenance-window': |
| 59 | + return maintenanceWindowCodegen(program, resource.logicalId, resource.payload) |
| 60 | + case 'private-location-check-assignment': |
| 61 | + return // Skip temporarily |
| 62 | + case 'private-location-group-assignment': |
| 63 | + return // Skip temporarily |
| 64 | + case 'private-location': |
| 65 | + return privateLocationCheckCodegen(program, resource.logicalId, resource.payload) |
| 66 | + default: |
| 67 | + throw new Error(`Unable to generate for for unsupported resource type '${resource.type}'.`) |
| 68 | + } |
| 69 | +} |
0 commit comments