Skip to content
← Public packages

@kody/doordash-driver

Request DoorDash Drive (Dasher) deliveries with JWT auth from Developer Portal access keys.

src/index.ts

72 lines · 1.6 KB · TypeScript
/**
 * @kody/doordash-driver — DoorDash Drive helpers (JWT auth, quotes, deliveries).
 *
 * ```ts
 * import doordash from 'kody:@kody/doordash-driver'
 * await doordash({ action: 'smoke-test' })
 * ```
 */

import acceptQuote from './accept-quote.ts'
import adapt from './adapt.ts'
import createDelivery from './create-delivery.ts'
import createQuote from './create-quote.ts'
import getDelivery from './get-delivery.ts'
import { parseAction } from './core.ts'
import settings from './settings.ts'
import smokeTest from './smoke-test.ts'

const ACTIONS = [
	'smoke-test',
	'create-delivery',
	'get-delivery',
	'create-quote',
	'accept-quote',
	'settings',
	'adapt',
] as const

export type DoorDashAction = (typeof ACTIONS)[number]

export default async function doordash(input: Record<string, unknown> = {}) {
	const action = parseAction(input.action, ACTIONS, 'smoke-test', 'doordash')
	switch (action) {
		case 'smoke-test':
			return smokeTest(input as any)
		case 'create-delivery':
			return createDelivery(input as any)
		case 'get-delivery':
			return getDelivery(input as any)
		case 'create-quote':
			return createQuote(input as any)
		case 'accept-quote':
			return acceptQuote(input as any)
		case 'settings':
			return settings(input as any)
		case 'adapt':
			return adapt()
		default:
			return parseAction(action, ACTIONS, 'smoke-test', 'doordash')
	}
}

export {
	acceptQuote,
	adapt,
	createDelivery,
	createQuote,
	getDelivery,
	settings,
	smokeTest,
}

export {
	API_BASE_URL,
	API_HOST,
	DoorDashApiError,
	createDriveJwt,
	doorDashRequest,
	resolveDriveBearerToken,
	setupUrls,
	signingSecretSetupUrl,
} from './core.ts'