diff --git a/src/js/prettyplan.ts b/src/js/prettyplan.ts index 5f35124..cf52bee 100644 --- a/src/js/prettyplan.ts +++ b/src/js/prettyplan.ts @@ -1,6 +1,6 @@ -import { getCurrentVersion, getLastUsedVersion, updateLastUsedVersion } from './releases.js'; -import { expandAll, collapseAll, accordion, closeModal } from './ui.js'; -import { showReleaseNotification, hideReleaseNotification, showReleaseNotes, displayParsingErrorMessage, hideParsingErrorMessage, clearExistingOutput, unHidePlan, render } from './render.js'; +import { getCurrentVersion, getLastUsedVersion, updateLastUsedVersion } from './releases'; +import { expandAll, collapseAll, accordion, closeModal } from './ui'; +import { showReleaseNotification, hideReleaseNotification, showReleaseNotes, displayParsingErrorMessage, hideParsingErrorMessage, clearExistingOutput, unHidePlan, render } from './render'; import { parse } from './parse'; window.addEventListener('load', function () { diff --git a/src/js/releases.js b/src/js/releases.ts similarity index 83% rename from src/js/releases.js rename to src/js/releases.ts index 821b782..f1c24a7 100644 --- a/src/js/releases.js +++ b/src/js/releases.ts @@ -1,21 +1,26 @@ -export function getCurrentVersion() { +export interface Release { + version: string; + notes: string[]; +} + +export function getCurrentVersion(): string { return releases[0].version; } -export function getLastUsedVersion() { +export function getLastUsedVersion(): string { return window.localStorage.getItem('lastUsedVersion'); } -export function updateLastUsedVersion() { +export function updateLastUsedVersion(): void { window.localStorage.setItem('lastUsedVersion', getCurrentVersion()); } -export function getReleases() { +export function getReleases(): Release[] { return releases; } //New releases should always go at the top of this list. -var releases = [ +let releases: Release[] = [ { version: 'v1.2', notes: [ diff --git a/src/js/render.js b/src/js/render.ts similarity index 79% rename from src/js/render.js rename to src/js/render.ts index 0d8bacf..c819e74 100644 --- a/src/js/render.js +++ b/src/js/render.ts @@ -1,39 +1,40 @@ -import { removeChildren, addClass, removeClass, createModalContainer } from './ui.js'; -import { getReleases } from './releases.js'; +import { Plan, Action, Diff, Warning, ResourceId } from './parse' +import { removeChildren, addClass, removeClass, createModalContainer } from './ui'; +import { Release, getReleases } from './releases'; -export function clearExistingOutput() { +export function clearExistingOutput(): void { removeChildren(document.getElementById('errors')); removeChildren(document.getElementById('warnings')); removeChildren(document.getElementById('actions')); } -export function hideParsingErrorMessage() { +export function hideParsingErrorMessage(): void { addClass(document.getElementById('parsing-error-message'), 'hidden'); } -export function displayParsingErrorMessage() { +export function displayParsingErrorMessage(): void { removeClass(document.getElementById('parsing-error-message'), 'hidden'); } -export function unHidePlan() { +export function unHidePlan(): void { removeClass(document.getElementById('prettyplan'), 'hidden'); } -export function showReleaseNotification(version) { +export function showReleaseNotification(version: string): void { const notificationElement = document.getElementById('release-notification'); notificationElement.innerHTML = components.releaseNotification(version); removeClass(notificationElement, 'hidden'); } -export function hideReleaseNotification() { +export function hideReleaseNotification(): void { addClass(document.getElementById('release-notification'), 'dismissed'); } -export function showReleaseNotes() { +export function showReleaseNotes(): void { createModalContainer().innerHTML = components.modal(components.releaseNotes(getReleases())); } -export function render(plan) { +export function render(plan: Plan): void { if (plan.warnings) { const warningList = document.getElementById('warnings'); warningList.innerHTML = plan.warnings.map(components.warning).join(''); @@ -46,11 +47,11 @@ export function render(plan) { } const components = { - badge: (label) => ` + badge: (label: string): string => ` ${label} `, - id: (id) => ` + id: (id: ResourceId): string => ` ${id.prefixes.map(prefix => `${prefix}` @@ -60,7 +61,7 @@ const components = { `, - warning: (warning) => ` + warning: (warning: Warning): string => `