# configuration/strings/deployment.strings.ts

> 100 lines of code and 81 definitions.

Tree: Bane's Lab Deploy
Language: typescript
Layer: product
Canonical: https://banes-lab.com/anatomy/deploy#file-deploy-configuration-strings-deployment-strings-ts
Source text: https://banes-lab.com/source/deploy/configuration/strings/deployment.strings.ts.txt

Listed in [configuration/strings](https://banes-lab.com/api/source/deploy/configuration/strings.md), before [configuration/strings/nginx.strings.ts](https://banes-lab.com/source/deploy/configuration/strings/nginx.strings.ts.md).

## Definitions

- `unpackFailed` (lexical_declaration, line 47, exported)
- `transferLine` (lexical_declaration, line 61, exported)
- `buildEnded` (lexical_declaration, line 103, exported)
- `tlsTimeout` (lexical_declaration, line 138, exported)
- `pingAccepted` (lexical_declaration, line 157, exported)
- `pingRefused` (lexical_declaration, line 161, exported)
- `DEPLOY_START` (lexical_declaration, line 3, exported)
- `CONNECTING` (lexical_declaration, line 5, exported)
- `CONNECTED` (lexical_declaration, line 7, exported)
- `BUILDING` (lexical_declaration, line 9, exported)
- `BUILT` (lexical_declaration, line 11, exported)
- `BACKING_UP` (lexical_declaration, line 13, exported)
- `BACKED_UP` (lexical_declaration, line 15, exported)
- `DOWNLOADING_BACKUP` (lexical_declaration, line 17, exported)
- `BACKUP_SAVED` (lexical_declaration, line 19, exported)
- `REMOTE_BACKUP_REMOVED` (lexical_declaration, line 21, exported)
- `PRUNING` (lexical_declaration, line 23, exported)
- `BACKUP_REMOVED` (lexical_declaration, line 25, exported)
- `PRUNED` (lexical_declaration, line 27, exported)
- `ROOT_PRUNING` (lexical_declaration, line 29, exported)
- `ROOT_CLEAN` (lexical_declaration, line 31, exported)
- `STALE_REMOVED` (lexical_declaration, line 33, exported)
- `ROOT_PRUNED` (lexical_declaration, line 35, exported)
- `UPLOADING` (lexical_declaration, line 37, exported)
- `FILES_FOUND` (lexical_declaration, line 39, exported)
- `PACKING` (lexical_declaration, line 41, exported)
- `PACKED` (lexical_declaration, line 43, exported)
- `UNPACKING` (lexical_declaration, line 45, exported)
- `UPLOAD_LABEL` (lexical_declaration, line 51, exported)
- `DOWNLOAD_LABEL` (lexical_declaration, line 53, exported)
- `REUPLOAD_LABEL` (lexical_declaration, line 55, exported)
- `ARCHIVE_UNIT` (lexical_declaration, line 57, exported)
- `TIME_UNKNOWN` (lexical_declaration, line 59, exported)
- `UPLOAD_DONE` (lexical_declaration, line 65, exported)
- `UPLOAD_INCOMPLETE` (lexical_declaration, line 67, exported)
- `ROLLING_BACK` (lexical_declaration, line 69, exported)
- `REUPLOADING` (lexical_declaration, line 71, exported)
- `EXTRACTING` (lexical_declaration, line 73, exported)
- `ROLLED_BACK` (lexical_declaration, line 75, exported)
- `ROLLBACK_FAILED` (lexical_declaration, line 77, exported)
- `SUMMARY_TITLE` (lexical_declaration, line 79, exported)
- `SUMMARY_FILES` (lexical_declaration, line 81, exported)
- `SUMMARY_SIZE` (lexical_declaration, line 83, exported)
- `SUMMARY_DURATION` (lexical_declaration, line 85, exported)
- `SUMMARY_BACKUP` (lexical_declaration, line 87, exported)
- `DEPLOY_DONE` (lexical_declaration, line 89, exported)
- `DEPLOY_FAILED` (lexical_declaration, line 91, exported)
- `FATAL` (lexical_declaration, line 93, exported)
- `NOTIFYING` (lexical_declaration, line 95, exported)
- `NOTIFIED` (lexical_declaration, line 97, exported)
- `NOTIFY_FAILED` (lexical_declaration, line 99, exported)
- `BUILD_FAILED` (lexical_declaration, line 101, exported)
- `VALIDATING_SITE` (lexical_declaration, line 107, exported)
- `SITE_VALID` (lexical_declaration, line 109, exported)
- `SITE_INVALID` (lexical_declaration, line 111, exported)
- `PROBING_SITE` (lexical_declaration, line 113, exported)
- `PROBE_PASSED` (lexical_declaration, line 115, exported)
- `PROBE_FAILED` (lexical_declaration, line 117, exported)
- `PROBE_ANSWERED` (lexical_declaration, line 119, exported)
- `PROBE_INSTEAD` (lexical_declaration, line 121, exported)
- `PROBE_STALE` (lexical_declaration, line 123, exported)
- `PROBE_LOGGED` (lexical_declaration, line 125, exported)
- `PROBE_LOG_UNREADABLE` (lexical_declaration, line 127, exported)
- `PROBE_DANE_PASSED` (lexical_declaration, line 129, exported)
- `daneMismatch` (lexical_declaration, line 131, exported)
- `listed` (lexical_declaration, line 132, exported)
- `DANE_REMEDY` (lexical_declaration, line 136, exported)
- `tlsMissing` (lexical_declaration, line 142, exported)
- `PROBE_NO_RECORD` (lexical_declaration, line 146, exported)
- `ERROR_LOG_MISSING` (lexical_declaration, line 148, exported)
- `PINGING_SEARCH` (lexical_declaration, line 151, exported)
- `PING_SKIPPED` (lexical_declaration, line 153, exported)
- `SITEMAP_UNBUILT` (lexical_declaration, line 155, exported)
- `SECONDS_SUFFIX` (lexical_declaration, line 165, exported)
- `UPLOAD_OF` (lexical_declaration, line 167, exported)
- `UPLOADED_SUFFIX` (lexical_declaration, line 169, exported)
- `UPLOAD_FAILURES` (lexical_declaration, line 171, exported)
- `NO_STATS` (lexical_declaration, line 173, exported)
- `NOT_AVAILABLE` (lexical_declaration, line 175, exported)
- `NOT_CONNECTED` (lexical_declaration, line 177, exported)
- `ARCHIVE_FAILED` (lexical_declaration, line 179, exported)

## Contained in

- [configuration/strings](https://banes-lab.com/anatomy/deploy/folder-deploy-configuration-strings.md)

## Used by

- [core/adapters/site.adapter.ts](https://banes-lab.com/source/deploy/core/adapters/site.adapter.ts.md)
- [core/formatters/journal.formatter.ts](https://banes-lab.com/source/deploy/core/formatters/journal.formatter.ts.md)
- [core/steps/release.step.ts](https://banes-lab.com/source/deploy/core/steps/release.step.ts.md)
- [core/steps/search.step.ts](https://banes-lab.com/source/deploy/core/steps/search.step.ts.md)
- [core/steps/site.step.ts](https://banes-lab.com/source/deploy/core/steps/site.step.ts.md)

## Linked from

- [core/adapters](https://banes-lab.com/anatomy/deploy/folder-deploy-core-adapters.md)
- [core/formatters](https://banes-lab.com/anatomy/deploy/folder-deploy-core-formatters.md)
- [core/steps](https://banes-lab.com/anatomy/deploy/folder-deploy-core-steps.md)

## Source

```typescript
import type { TransferView } from "#types/deployment.types";

export const DEPLOY_START = "Bane's Lab deployment starting.";

export const CONNECTING = "Connecting to the droplet.";

export const CONNECTED = "SSH connected.";

export const BUILDING = "Building the site.";

export const BUILT = "Site built.";

export const BACKING_UP = "Creating a remote backup.";

export const BACKED_UP = "Remote backup created.";

export const DOWNLOADING_BACKUP = "Downloading the backup.";

export const BACKUP_SAVED = "Backup saved locally: ";

export const REMOTE_BACKUP_REMOVED = "Removed the remote backup file.";

export const PRUNING = "Pruning old backups, keeping the last ";

export const BACKUP_REMOVED = "Removed old backup: ";

export const PRUNED = "Prune step done.";

export const ROOT_PRUNING = "Pruning the remote root of anything the deploy does not own.";

export const ROOT_CLEAN = "The remote root holds only the site and the staging folder.";

export const STALE_REMOVED = "Removed stale remote entry: ";

export const ROOT_PRUNED = "Remote root pruned.";

export const UPLOADING = "Uploading the built site.";

export const FILES_FOUND = " file(s) to upload.";

export const PACKING = "Packing the built site into one archive.";

export const PACKED = "Site archive packed.";

export const UNPACKING = "Replacing the remote site with the archive's contents.";

export const unpackFailed = function unpackFailed(detail: string): string {
    return `The site archive did not unpack on the droplet, so the remote site may be empty: ${detail}`;
};

export const UPLOAD_LABEL = "Upload";

export const DOWNLOAD_LABEL = "Backup download";

export const REUPLOAD_LABEL = "Backup re-upload";

export const ARCHIVE_UNIT = "archive";

export const TIME_UNKNOWN = "--:--:--";

export const transferLine = function transferLine(view: TransferView): string {
    return `${view.label} ${view.bar} ${view.percent}%: ${view.done} of ${view.total} ${view.unit}, ${view.moved} of ${view.size} at ${view.rate}/s, ${view.left} left, ${view.failed} failed`;
};

export const UPLOAD_DONE = "Upload complete: ";

export const UPLOAD_INCOMPLETE = "Upload incomplete: ";

export const ROLLING_BACK = "Rolling back to the previous backup.";

export const REUPLOADING = "Re-uploading the backup: ";

export const EXTRACTING = "Extracting the backup on the remote.";

export const ROLLED_BACK = "Rollback complete.";

export const ROLLBACK_FAILED = "Rollback also failed: ";

export const SUMMARY_TITLE = "Deployment summary";

export const SUMMARY_FILES = "Files: ";

export const SUMMARY_SIZE = "Size: ";

export const SUMMARY_DURATION = "Duration: ";

export const SUMMARY_BACKUP = "Backup: ";

export const DEPLOY_DONE = "Deployment succeeded.";

export const DEPLOY_FAILED = "Deployment failed: ";

export const FATAL = "Fatal error: ";

export const NOTIFYING = "Sending the Discord notification.";

export const NOTIFIED = "Discord notification sent.";

export const NOTIFY_FAILED = "Failed to send the Discord notification: ";

export const BUILD_FAILED = "Site build failed.";

export const buildEnded = function buildEnded(code: number | null, signal: string | null): string {
    return signal === null ? ` The build exited with code ${String(code)}.` : ` The build was stopped by ${signal}.`;
};

export const VALIDATING_SITE = "Validating the built site.";

export const SITE_VALID = "Site validation passed.";

export const SITE_INVALID = "Site validation failed: ";

export const PROBING_SITE = "Checking the live site.";

export const PROBE_PASSED = "Live site check passed.";

export const PROBE_FAILED = "Live site check failed: ";

export const PROBE_ANSWERED = " answered ";

export const PROBE_INSTEAD = " instead of ";

export const PROBE_STALE = " serves content that differs from its catalog record.";

export const PROBE_LOGGED = "The server wrote to its error log while the site was checked:\n";

export const PROBE_LOG_UNREADABLE = "The server's error log could not be read: ";

export const PROBE_DANE_PASSED = "The DANE record matches the served certificate key.";

export const daneMismatch = function daneMismatch(name: string, served: string, published: readonly string[]): string {
    const listed = published.length === 0 ? "none" : published.join(", ");
    return `${name} publishes no TLSA 3 1 1 digest equal to the served key ${served} (published: ${listed}).`;
};

export const DANE_REMEDY = "Add a record carrying the new digest, then remove the old one once caches expire.";

export const tlsTimeout = function tlsTimeout(site: string): string {
    return `The TLS handshake with ${site} did not finish in time.`;
};

export const tlsMissing = function tlsMissing(site: string): string {
    return `${site} answered without a TLS connection to read a certificate from.`;
};

export const PROBE_NO_RECORD = "The catalog lists no ontology record to check the query endpoint against.";

export const ERROR_LOG_MISSING =
    "The nginx site file declares no error_log directive, so the server's error log cannot be checked.";

export const PINGING_SEARCH = "Notifying the IndexNow engines of changed pages.";

export const PING_SKIPPED = "IndexNow ping skipped: no page changed.";

export const SITEMAP_UNBUILT = "The build holds no page sitemap: ";

export const pingAccepted = function pingAccepted(count: number): string {
    return `IndexNow accepted ${String(count)} changed page(s).`;
};

export const pingRefused = function pingRefused(status: number): string {
    return `IndexNow refused the ping with HTTP ${String(status)}.`;
};

export const SECONDS_SUFFIX = "s";

export const UPLOAD_OF = " of ";

export const UPLOADED_SUFFIX = " uploaded, ";

export const UPLOAD_FAILURES = " failed.";

export const NO_STATS = "No deployment stats available.";

export const NOT_AVAILABLE = "N/A";

export const NOT_CONNECTED = "SSH is not connected.";

export const ARCHIVE_FAILED =
    "The remote site could not be archived, so no rollback point exists and the deploy stops before it ships: ";
```
