Skip to content

src/settings.ts

42 lines · 1.2 KB · TypeScript
Raw
import {
	migrateOriginIdsFromValues,
	readNamedSetting,
	writeNamedSetting,
} from './token.ts'

const APP_ID_VALUE = 'originAppId'
const INSTALLATION_ID_VALUE = 'originInstallationId'

export { migrateOriginIdsFromValues }

export async function readOriginSettings() {
	const [appId, installationId] = await Promise.all([
		readNamedSetting(APP_ID_VALUE),
		readNamedSetting(INSTALLATION_ID_VALUE),
	])
	return {
		appId: appId || null,
		installationId: installationId || null,
	}
}

/**
 * Read or update Origin App ids. Pass `appId` and/or `installationId` to
 * persist them in this package's storage (no republish).
 */
export default async function originSettings(
	input: { appId?: string; installationId?: string } = {},
) {
	const updated: Array<string> = []
	if (typeof input.appId === 'string' && input.appId.trim()) {
		await writeNamedSetting(APP_ID_VALUE, input.appId)
		updated.push('appId')
	}
	if (typeof input.installationId === 'string' && input.installationId.trim()) {
		await writeNamedSetting(INSTALLATION_ID_VALUE, input.installationId)
		updated.push('installationId')
	}
	const settings = await readOriginSettings()
	if (updated.length > 0) return { updated, settings }
	return settings
}