feat: initial project prototype (#2)
Node.js CI / Lint and Test (push) Has been cancelled

### Explanation

_No response_

### Issue

_No response_

### Attestations

- [x] I have read and agree to the [Code of Conduct](https://docs.nhcarrigan.com/community/coc/)
- [x] I have read and agree to the [Community Guidelines](https://docs.nhcarrigan.com/community/guide/).
- [x] My contribution complies with the [Contributor Covenant](https://docs.nhcarrigan.com/dev/covenant/).

### Dependencies

- [x] I have pinned the dependencies to a specific patch version.

### Style

- [x] I have run the linter and resolved any errors.
- [x] My pull request uses an appropriate title, matching the conventional commit standards.
- [x] My scope of feat/fix/chore/etc. correctly matches the nature of changes in my pull request.

### Tests

- [ ] My contribution adds new code, and I have added tests to cover it.
- [ ] My contribution modifies existing code, and I have updated the tests to reflect these changes.
- [x] All new and existing tests pass locally with my changes.
- [x] Code coverage remains at or above the configured threshold.

### Documentation

_No response_

### Versioning

Major - My pull request introduces a breaking change.

Reviewed-on: nhcarrigan/forms#2
Co-authored-by: Naomi Carrigan <commits@nhcarrigan.com>
Co-committed-by: Naomi Carrigan <commits@nhcarrigan.com>
This commit was merged in pull request #2.
This commit is contained in:
2025-02-17 14:03:32 -08:00
committed by Naomi Carrigan
parent b43bfd612b
commit e8f5078aa3
120 changed files with 15657 additions and 0 deletions
+40
View File
@@ -0,0 +1,40 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { createTransport } from "nodemailer";
const mailer = createTransport({
auth: {
pass: process.env.EMAIL_PASS,
user: "noreply@nhcarrigan.com",
},
host: "mail.nhcarrigan.com",
port: 465,
secure: true,
});
/**
* Sends an email to Naomi when a form is submitted.
* @param formName - A SINGULAR, NOT PLURAL, name representing the form.
* @param formData - The data submitted in the form.
*/
export const sendMail = async(
formName: string,
formData: Record<string, string | boolean | number>,
): Promise<void> => {
const text = Object.entries(formData).
map(([ key, value ]) => {
return `${key}: ${String(value)}`;
}).
join("\n");
await mailer.sendMail({
from: "noreply@nhcarrigan.com",
subject: `New ${formName} submission!`,
text: text,
to: "naomi@nhcarrigan.com",
});
};