generated from nhcarrigan/template
feat: scaffolding
This commit is contained in:
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "@library/frontend-e2e",
|
||||||
|
"version": "0.0.1"
|
||||||
|
}
|
||||||
@@ -1,11 +1,19 @@
|
|||||||
import { getGreeting } from '../support/app.po';
|
/**
|
||||||
|
* @copyright 2026 NHCarrigan
|
||||||
|
* @copyright 2026 NHCarrigan
|
||||||
|
* @license Naomi's Public License
|
||||||
|
*/
|
||||||
|
|
||||||
describe('frontend-e2e', () => {
|
import { getGreeting } from "../support/app.po";
|
||||||
beforeEach(() => cy.visit('/'));
|
|
||||||
|
|
||||||
it('should display welcome message', () => {
|
describe("frontend-e2e", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.visit("/");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should display welcome message", () => {
|
||||||
// Custom command example, see `../support/commands.ts` file
|
// 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
|
// Function helper example, see `../support/app.po.ts` file
|
||||||
getGreeting().contains(/Welcome/);
|
getGreeting().contains(/Welcome/);
|
||||||
|
|||||||
@@ -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");
|
||||||
@@ -1,35 +1,40 @@
|
|||||||
|
/**
|
||||||
|
* @copyright 2026 NHCarrigan
|
||||||
|
* @copyright 2026 NHCarrigan
|
||||||
|
* @license Naomi's Public License
|
||||||
|
*/
|
||||||
|
|
||||||
/// <reference types="cypress" />
|
/// <reference types="cypress" />
|
||||||
|
|
||||||
// ***********************************************
|
/**
|
||||||
// This example commands.ts shows you how to
|
* This example commands.ts shows you how to
|
||||||
// create various custom commands and overwrite
|
* create various custom commands and overwrite
|
||||||
// existing commands.
|
* existing commands.
|
||||||
//
|
*
|
||||||
// For more comprehensive examples of custom
|
* For more comprehensive examples of custom
|
||||||
// commands please read more here:
|
* commands please read more here:
|
||||||
// https://on.cypress.io/custom-commands
|
* 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 {
|
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<Subject> {
|
interface Chainable<Subject> {
|
||||||
login(email: string, password: string): void;
|
login: (email: string, password: string) => void;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// -- This is a parent command --
|
// -- This is a parent command --
|
||||||
Cypress.Commands.add('login', (email, password) => {
|
Cypress.Commands.add("login", (email, password) => {
|
||||||
console.log('Custom command example: 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 --
|
// -- This is a child command --
|
||||||
// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... })
|
// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... })
|
||||||
//
|
|
||||||
//
|
|
||||||
// -- This is a dual command --
|
// -- This is a dual command --
|
||||||
// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... })
|
// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... })
|
||||||
//
|
|
||||||
//
|
|
||||||
// -- This will overwrite an existing command --
|
// -- This will overwrite an existing command --
|
||||||
// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
|
// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
|
||||||
@@ -1,17 +1,24 @@
|
|||||||
// ***********************************************************
|
/**
|
||||||
// This example support/e2e.ts is processed and
|
* @copyright 2026 NHCarrigan
|
||||||
// loaded automatically before your test files.
|
* @license Naomi's Public License
|
||||||
//
|
* @author Naomi Carrigan
|
||||||
// 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
|
* This example support/e2e.ts is processed and
|
||||||
// automatically serving support files with the
|
* loaded automatically before your test files.
|
||||||
// 'supportFile' configuration option.
|
*
|
||||||
//
|
* This is a great place to put global configuration and
|
||||||
// You can read more here:
|
* behavior that modifies Cypress.
|
||||||
// https://on.cypress.io/configuration
|
*
|
||||||
// ***********************************************************
|
* 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.ts using ES2015 syntax:
|
||||||
import './commands';
|
// eslint-disable-next-line import/no-unassigned-import -- Side effects import for Cypress commands
|
||||||
|
import "./commands.ts";
|
||||||
|
|||||||
@@ -1,8 +1,21 @@
|
|||||||
import nhcarrigan from '@nhcarrigan/eslint-config';
|
import nhcarrigan from '@nhcarrigan/eslint-config';
|
||||||
|
import { fileURLToPath } from 'url';
|
||||||
|
import { dirname } from 'path';
|
||||||
|
|
||||||
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||||
|
|
||||||
export default [
|
export default [
|
||||||
...nhcarrigan,
|
...nhcarrigan,
|
||||||
{
|
{
|
||||||
ignores: ['**/dist', '**/out-tsc', 'node_modules'],
|
ignores: ['**/dist', '**/out-tsc', 'node_modules'],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
files: ['**/*.ts'],
|
||||||
|
languageOptions: {
|
||||||
|
parserOptions: {
|
||||||
|
project: './tsconfig.lib.json',
|
||||||
|
tsconfigRootDir: __dirname,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
];
|
];
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "@library/shared-types",
|
||||||
|
"version": "0.0.1"
|
||||||
|
}
|
||||||
@@ -1,4 +1,9 @@
|
|||||||
export * from './lib/game.types';
|
/**
|
||||||
export * from './lib/book.types';
|
* @copyright 2026 NHCarrigan
|
||||||
export * from './lib/music.types';
|
* @license Naomi's Public License
|
||||||
export * from './lib/auth.types';
|
* @author Naomi Carrigan
|
||||||
|
*/
|
||||||
|
export * from "./lib/game.types";
|
||||||
|
export * from "./lib/book.types";
|
||||||
|
export * from "./lib/music.types";
|
||||||
|
export type * from "./lib/auth.types";
|
||||||
@@ -1,3 +1,9 @@
|
|||||||
|
/**
|
||||||
|
* @copyright 2026 NHCarrigan
|
||||||
|
* @license Naomi's Public License
|
||||||
|
* @author Naomi Carrigan
|
||||||
|
*/
|
||||||
|
|
||||||
export interface User {
|
export interface User {
|
||||||
id: string;
|
id: string;
|
||||||
email: string;
|
email: string;
|
||||||
@@ -7,7 +13,10 @@ export interface User {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface JwtPayload {
|
export interface JwtPayload {
|
||||||
sub: string; // user id
|
/**
|
||||||
|
* User id.
|
||||||
|
*/
|
||||||
|
sub: string;
|
||||||
email: string;
|
email: string;
|
||||||
username: string;
|
username: string;
|
||||||
iat?: number;
|
iat?: number;
|
||||||
|
|||||||
@@ -1,7 +1,13 @@
|
|||||||
|
/**
|
||||||
|
* @copyright 2026 NHCarrigan
|
||||||
|
* @copyright 2026 NHCarrigan
|
||||||
|
* @license Naomi's Public License
|
||||||
|
*/
|
||||||
|
|
||||||
export enum BookStatus {
|
export enum BookStatus {
|
||||||
READING = 'READING',
|
reading = "READING",
|
||||||
FINISHED = 'FINISHED',
|
finished = "FINISHED",
|
||||||
TO_READ = 'TO_READ',
|
toRead = "TO_READ",
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Book {
|
export interface Book {
|
||||||
|
|||||||
@@ -1,7 +1,13 @@
|
|||||||
|
/**
|
||||||
|
* @copyright 2026 NHCarrigan
|
||||||
|
* @copyright 2026 NHCarrigan
|
||||||
|
* @license Naomi's Public License
|
||||||
|
*/
|
||||||
|
|
||||||
export enum GameStatus {
|
export enum GameStatus {
|
||||||
PLAYING = 'PLAYING',
|
playing = "PLAYING",
|
||||||
COMPLETED = 'COMPLETED',
|
completed = "COMPLETED",
|
||||||
BACKLOG = 'BACKLOG',
|
backlog = "BACKLOG",
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Game {
|
export interface Game {
|
||||||
|
|||||||
@@ -1,13 +1,19 @@
|
|||||||
|
/**
|
||||||
|
* @copyright 2026 NHCarrigan
|
||||||
|
* @copyright 2026 NHCarrigan
|
||||||
|
* @license Naomi's Public License
|
||||||
|
*/
|
||||||
|
|
||||||
export enum MusicType {
|
export enum MusicType {
|
||||||
ALBUM = 'ALBUM',
|
album = "ALBUM",
|
||||||
SINGLE = 'SINGLE',
|
single = "SINGLE",
|
||||||
EP = 'EP',
|
ep = "EP",
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum MusicStatus {
|
export enum MusicStatus {
|
||||||
LISTENING = 'LISTENING',
|
listening = "LISTENING",
|
||||||
COMPLETED = 'COMPLETED',
|
completed = "COMPLETED",
|
||||||
WANT_TO_LISTEN = 'WANT_TO_LISTEN',
|
wantToListen = "WANT_TO_LISTEN",
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Music {
|
export interface Music {
|
||||||
|
|||||||
Reference in New Issue
Block a user