diff --git a/packages/doorman-api/src/functions/api/door/info.ts b/packages/doorman-api/src/functions/api/door/info.ts index cc25d97..7905786 100644 --- a/packages/doorman-api/src/functions/api/door/info.ts +++ b/packages/doorman-api/src/functions/api/door/info.ts @@ -18,6 +18,14 @@ export interface InfoRequest extends ServerlessEventObject { json: string; } +export interface InfoResponseClient { + buzzer: string; + door: string; + pressKey: string; + fallbackNumbers: string[]; + discordUsers: string[]; +} + export const handler: ServerlessFunctionSignature = async function(context, event, callback) { const response = new Twilio.Response(); diff --git a/packages/doorman-api/src/functions/api/door/status.ts b/packages/doorman-api/src/functions/api/door/status.ts index 4a4c401..54d43e2 100644 --- a/packages/doorman-api/src/functions/api/door/status.ts +++ b/packages/doorman-api/src/functions/api/door/status.ts @@ -12,6 +12,11 @@ export interface StatusRequest extends ServerlessEventObject { door: string; } +export interface StatusResponse { + status: DoorStatus, + fingerprint: any; +} + export const handler: ServerlessFunctionSignature = async function(context, event, callback) { const response = new Twilio.Response(); diff --git a/packages/doorman-client/src/functions/buzzer-activated.ts b/packages/doorman-client/src/functions/buzzer-activated.ts index 363c495..3b589ab 100644 --- a/packages/doorman-client/src/functions/buzzer-activated.ts +++ b/packages/doorman-client/src/functions/buzzer-activated.ts @@ -11,14 +11,15 @@ import { BuzzerDialEvent } from '../types/BuzzerDialEvent'; import { getConfig, notifyAllDiscord, notifyDiscord } from '../utils/DoormanUtils'; import { dialFallbackTwiml, doorOpenTwiml } from '../utils/TwimlUtils'; import { TwilioContext } from '../types/TwilioContext'; -import { DoorConfig } from '../types/DoorConfig'; -import { DoorStatus, DoorStatusResponse } from '../types/DoorStatusResponse'; import VoiceResponse from 'twilio/lib/twiml/VoiceResponse'; +import { DoorStatus } from '../../../doorman-api/src/types/DoorStatus'; +import { StatusResponse } from '../../../doorman-api/src/functions/api/door/status'; +import { InfoResponseClient } from '../../../doorman-api/src/functions/api/door/info'; export const handler: ServerlessFunctionSignature = async function(context, event, callback) { let invokeId = `[${randomUUID()}]`; let configString = event.config; - let config: DoorConfig | undefined; + let config: InfoResponseClient | undefined; console.log(invokeId, "starting execution"); // get by api or parse it out from query @@ -57,7 +58,7 @@ export const handler: ServerlessFunctionSignature res.json()) .then(async (rawBody) => { - let body = rawBody as DoorStatusResponse; + let body = rawBody as StatusResponse; if (body?.status === DoorStatus.OPEN) { clearInterval(intervals[0]); const twiml = doorOpenTwiml(config); diff --git a/packages/doorman-client/src/index.ts b/packages/doorman-client/src/index.ts index 92549b2..8f3794b 100644 --- a/packages/doorman-client/src/index.ts +++ b/packages/doorman-client/src/index.ts @@ -1,9 +1,21 @@ +import { readdirSync } from "node:fs"; +import path from "path"; + +const paths = [ + './src/functions' +]; + +const functionFiles = paths.map(path => readdirSync(path).map(file => path + "/" + file)).flat(); + +// for hot reload to work, we import all the files we want to build +const imports = functionFiles.forEach(file => require('./' + path.relative('src', file))); + +console.log("functions to build:", functionFiles); console.log("Building functions..."); await Bun.build({ - entrypoints: ['./src/functions/buzzer-activated.ts'], + entrypoints: functionFiles, outdir: './build/functions', packages: 'external', - naming: '[dir]/[name].[ext]' , target: 'node', format: 'cjs', }); diff --git a/packages/doorman-client/src/types/DoorConfig.ts b/packages/doorman-client/src/types/DoorConfig.ts deleted file mode 100644 index 5a51b7a..0000000 --- a/packages/doorman-client/src/types/DoorConfig.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface DoorConfig { - door: string; - pressKey: string; - fallbackNumbers: string[]; - discordUsers: string[]; -} diff --git a/packages/doorman-client/src/types/DoorStatusResponse.ts b/packages/doorman-client/src/types/DoorStatusResponse.ts deleted file mode 100644 index 5ab8c5c..0000000 --- a/packages/doorman-client/src/types/DoorStatusResponse.ts +++ /dev/null @@ -1,9 +0,0 @@ -export enum DoorStatus { - OPEN = "OPEN", - CLOSED = "CLOSED", -} - -export interface DoorStatusResponse { - status: DoorStatus, - fingerprint: any; -}