diff --git a/apps/frontend-e2e/package.json b/apps/frontend-e2e/package.json
new file mode 100644
index 0000000..7adee78
--- /dev/null
+++ b/apps/frontend-e2e/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "@library/frontend-e2e",
+ "version": "0.0.1"
+}
\ No newline at end of file
diff --git a/apps/frontend-e2e/src/e2e/app.cy.ts b/apps/frontend-e2e/src/e2e/app.cy.ts
index 24d2f3f..257c02f 100644
--- a/apps/frontend-e2e/src/e2e/app.cy.ts
+++ b/apps/frontend-e2e/src/e2e/app.cy.ts
@@ -1,13 +1,21 @@
-import { getGreeting } from '../support/app.po';
+/**
+ * @copyright 2026 NHCarrigan
+ * @copyright 2026 NHCarrigan
+ * @license Naomi's Public License
+ */
-describe('frontend-e2e', () => {
- beforeEach(() => cy.visit('/'));
+import { getGreeting } from "../support/app.po";
- it('should display welcome message', () => {
+describe("frontend-e2e", () => {
+ beforeEach(() => {
+ cy.visit("/");
+ });
+
+ it("should display welcome message", () => {
// Custom command example, see `../support/commands.ts` file
- cy.login('my-email@something.com', 'myPassword');
+ cy.login("my-email@something.com", "myPassword");
// Function helper example, see `../support/app.po.ts` file
getGreeting().contains(/Welcome/);
});
-});
+});
\ No newline at end of file
diff --git a/apps/frontend-e2e/src/support/app.po.ts b/apps/frontend-e2e/src/support/app.po.ts
index 3293424..91b038c 100644
--- a/apps/frontend-e2e/src/support/app.po.ts
+++ b/apps/frontend-e2e/src/support/app.po.ts
@@ -1 +1,7 @@
-export const getGreeting = () => cy.get('h1');
+/**
+ * @copyright 2026 NHCarrigan
+ * @copyright 2026 NHCarrigan
+ * @license Naomi's Public License
+ */
+
+export const getGreeting = (): Cypress.Chainable => cy.get("h1");
\ No newline at end of file
diff --git a/apps/frontend-e2e/src/support/commands.ts b/apps/frontend-e2e/src/support/commands.ts
index c421a3c..e233901 100644
--- a/apps/frontend-e2e/src/support/commands.ts
+++ b/apps/frontend-e2e/src/support/commands.ts
@@ -1,35 +1,40 @@
+/**
+ * @copyright 2026 NHCarrigan
+ * @copyright 2026 NHCarrigan
+ * @license Naomi's Public License
+ */
+
///
-// ***********************************************
-// This example commands.ts shows you how to
-// create various custom commands and overwrite
-// existing commands.
-//
-// For more comprehensive examples of custom
-// commands please read more here:
-// https://on.cypress.io/custom-commands
-// ***********************************************
+/**
+ * This example commands.ts shows you how to
+ * create various custom commands and overwrite
+ * existing commands.
+ *
+ * For more comprehensive examples of custom
+ * commands please read more here:
+ * https://on.cypress.io/custom-commands
+ */
-// eslint-disable-next-line @typescript-eslint/no-namespace
+// eslint-disable-next-line @typescript-eslint/no-namespace -- Required for Cypress type extensions
declare namespace Cypress {
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- Subject is required for type definition
interface Chainable {
- login(email: string, password: string): void;
+ login: (email: string, password: string) => void;
}
}
// -- This is a parent command --
-Cypress.Commands.add('login', (email, password) => {
- console.log('Custom command example: Login', email, password);
+Cypress.Commands.add("login", (email, password) => {
+ // eslint-disable-next-line no-console -- Example command for demonstration
+ console.log("Custom command example: Login", email, password);
});
-//
+
// -- This is a child command --
// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... })
-//
-//
+
// -- This is a dual command --
// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... })
-//
-//
+
// -- This will overwrite an existing command --
-// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
+// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
\ No newline at end of file
diff --git a/apps/frontend-e2e/src/support/e2e.ts b/apps/frontend-e2e/src/support/e2e.ts
index 1c1a9e7..618fc37 100644
--- a/apps/frontend-e2e/src/support/e2e.ts
+++ b/apps/frontend-e2e/src/support/e2e.ts
@@ -1,17 +1,24 @@
-// ***********************************************************
-// This example support/e2e.ts is processed and
-// loaded automatically before your test files.
-//
-// This is a great place to put global configuration and
-// behavior that modifies Cypress.
-//
-// You can change the location of this file or turn off
-// automatically serving support files with the
-// 'supportFile' configuration option.
-//
-// You can read more here:
-// https://on.cypress.io/configuration
-// ***********************************************************
+/**
+ * @copyright 2026 NHCarrigan
+ * @license Naomi's Public License
+ * @author Naomi Carrigan
+ */
+
+/**
+ * This example support/e2e.ts is processed and
+ * loaded automatically before your test files.
+ *
+ * This is a great place to put global configuration and
+ * behavior that modifies Cypress.
+ *
+ * You can change the location of this file or turn off
+ * automatically serving support files with the
+ * 'supportFile' configuration option.
+ *
+ * You can read more here:
+ * https://on.cypress.io/configuration
+ */
// Import commands.ts using ES2015 syntax:
-import './commands';
+// eslint-disable-next-line import/no-unassigned-import -- Side effects import for Cypress commands
+import "./commands.ts";
diff --git a/shared-types/eslint.config.mjs b/shared-types/eslint.config.mjs
index 3f59adf..57fad5a 100644
--- a/shared-types/eslint.config.mjs
+++ b/shared-types/eslint.config.mjs
@@ -1,8 +1,21 @@
import nhcarrigan from '@nhcarrigan/eslint-config';
+import { fileURLToPath } from 'url';
+import { dirname } from 'path';
+
+const __dirname = dirname(fileURLToPath(import.meta.url));
export default [
...nhcarrigan,
{
ignores: ['**/dist', '**/out-tsc', 'node_modules'],
},
+ {
+ files: ['**/*.ts'],
+ languageOptions: {
+ parserOptions: {
+ project: './tsconfig.lib.json',
+ tsconfigRootDir: __dirname,
+ },
+ },
+ },
];
\ No newline at end of file
diff --git a/shared-types/package.json b/shared-types/package.json
new file mode 100644
index 0000000..3a5e8aa
--- /dev/null
+++ b/shared-types/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "@library/shared-types",
+ "version": "0.0.1"
+}
\ No newline at end of file
diff --git a/shared-types/src/index.ts b/shared-types/src/index.ts
index e13003a..137ba74 100644
--- a/shared-types/src/index.ts
+++ b/shared-types/src/index.ts
@@ -1,4 +1,9 @@
-export * from './lib/game.types';
-export * from './lib/book.types';
-export * from './lib/music.types';
-export * from './lib/auth.types';
\ No newline at end of file
+/**
+ * @copyright 2026 NHCarrigan
+ * @license Naomi's Public License
+ * @author Naomi Carrigan
+ */
+export * from "./lib/game.types";
+export * from "./lib/book.types";
+export * from "./lib/music.types";
+export type * from "./lib/auth.types";
\ No newline at end of file
diff --git a/shared-types/src/lib/auth.types.ts b/shared-types/src/lib/auth.types.ts
index 1740d57..81f53d4 100644
--- a/shared-types/src/lib/auth.types.ts
+++ b/shared-types/src/lib/auth.types.ts
@@ -1,3 +1,9 @@
+/**
+ * @copyright 2026 NHCarrigan
+ * @license Naomi's Public License
+ * @author Naomi Carrigan
+ */
+
export interface User {
id: string;
email: string;
@@ -7,7 +13,10 @@ export interface User {
}
export interface JwtPayload {
- sub: string; // user id
+ /**
+ * User id.
+ */
+ sub: string;
email: string;
username: string;
iat?: number;
diff --git a/shared-types/src/lib/book.types.ts b/shared-types/src/lib/book.types.ts
index 59bc6e4..fe789a0 100644
--- a/shared-types/src/lib/book.types.ts
+++ b/shared-types/src/lib/book.types.ts
@@ -1,34 +1,40 @@
+/**
+ * @copyright 2026 NHCarrigan
+ * @copyright 2026 NHCarrigan
+ * @license Naomi's Public License
+ */
+
export enum BookStatus {
- READING = 'READING',
- FINISHED = 'FINISHED',
- TO_READ = 'TO_READ',
+ reading = "READING",
+ finished = "FINISHED",
+ toRead = "TO_READ",
}
export interface Book {
- id: string;
- title: string;
- author: string;
- isbn?: string;
- status: BookStatus;
- dateAdded: Date;
+ id: string;
+ title: string;
+ author: string;
+ isbn?: string;
+ status: BookStatus;
+ dateAdded: Date;
dateFinished?: Date;
- rating?: number;
- notes?: string;
- coverImage?: string;
- createdAt: Date;
- updatedAt: Date;
+ rating?: number;
+ notes?: string;
+ coverImage?: string;
+ createdAt: Date;
+ updatedAt: Date;
}
export interface CreateBookDto {
- title: string;
- author: string;
- isbn?: string;
- status: BookStatus;
- rating?: number;
- notes?: string;
+ title: string;
+ author: string;
+ isbn?: string;
+ status: BookStatus;
+ rating?: number;
+ notes?: string;
coverImage?: string;
}
export interface UpdateBookDto extends Partial {
dateFinished?: Date;
-}
\ No newline at end of file
+}
diff --git a/shared-types/src/lib/game.types.ts b/shared-types/src/lib/game.types.ts
index f2be57c..db61e9b 100644
--- a/shared-types/src/lib/game.types.ts
+++ b/shared-types/src/lib/game.types.ts
@@ -1,32 +1,38 @@
+/**
+ * @copyright 2026 NHCarrigan
+ * @copyright 2026 NHCarrigan
+ * @license Naomi's Public License
+ */
+
export enum GameStatus {
- PLAYING = 'PLAYING',
- COMPLETED = 'COMPLETED',
- BACKLOG = 'BACKLOG',
+ playing = "PLAYING",
+ completed = "COMPLETED",
+ backlog = "BACKLOG",
}
export interface Game {
- id: string;
- title: string;
- platform?: string;
- status: GameStatus;
- dateAdded: Date;
+ id: string;
+ title: string;
+ platform?: string;
+ status: GameStatus;
+ dateAdded: Date;
dateCompleted?: Date;
- rating?: number;
- notes?: string;
- coverImage?: string;
- createdAt: Date;
- updatedAt: Date;
+ rating?: number;
+ notes?: string;
+ coverImage?: string;
+ createdAt: Date;
+ updatedAt: Date;
}
export interface CreateGameDto {
- title: string;
- platform?: string;
- status: GameStatus;
- rating?: number;
- notes?: string;
+ title: string;
+ platform?: string;
+ status: GameStatus;
+ rating?: number;
+ notes?: string;
coverImage?: string;
}
export interface UpdateGameDto extends Partial {
dateCompleted?: Date;
-}
\ No newline at end of file
+}
diff --git a/shared-types/src/lib/music.types.ts b/shared-types/src/lib/music.types.ts
index 9aa139a..b02a454 100644
--- a/shared-types/src/lib/music.types.ts
+++ b/shared-types/src/lib/music.types.ts
@@ -1,40 +1,46 @@
+/**
+ * @copyright 2026 NHCarrigan
+ * @copyright 2026 NHCarrigan
+ * @license Naomi's Public License
+ */
+
export enum MusicType {
- ALBUM = 'ALBUM',
- SINGLE = 'SINGLE',
- EP = 'EP',
+ album = "ALBUM",
+ single = "SINGLE",
+ ep = "EP",
}
export enum MusicStatus {
- LISTENING = 'LISTENING',
- COMPLETED = 'COMPLETED',
- WANT_TO_LISTEN = 'WANT_TO_LISTEN',
+ listening = "LISTENING",
+ completed = "COMPLETED",
+ wantToListen = "WANT_TO_LISTEN",
}
export interface Music {
- id: string;
- title: string;
- artist: string;
- type: MusicType;
- status: MusicStatus;
- dateAdded: Date;
+ id: string;
+ title: string;
+ artist: string;
+ type: MusicType;
+ status: MusicStatus;
+ dateAdded: Date;
dateCompleted?: Date;
- rating?: number;
- notes?: string;
- coverArt?: string;
- createdAt: Date;
- updatedAt: Date;
+ rating?: number;
+ notes?: string;
+ coverArt?: string;
+ createdAt: Date;
+ updatedAt: Date;
}
export interface CreateMusicDto {
- title: string;
- artist: string;
- type: MusicType;
- status: MusicStatus;
- rating?: number;
- notes?: string;
+ title: string;
+ artist: string;
+ type: MusicType;
+ status: MusicStatus;
+ rating?: number;
+ notes?: string;
coverArt?: string;
}
export interface UpdateMusicDto extends Partial {
dateCompleted?: Date;
-}
\ No newline at end of file
+}