3 Commits

Author SHA1 Message Date
naomi 3d301122b9 feat: initial prototype of app 2025-07-19 15:51:14 -07:00
naomi 9523adbc68 chore: scripts, secrets, dependencies 2025-07-19 14:02:12 -07:00
naomi b663eee130 feat: tooling and scaffolding 2025-07-19 13:48:51 -07:00
9 changed files with 20 additions and 325 deletions
-38
View File
@@ -1,38 +0,0 @@
name: Node.js CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
lint:
name: Lint and Test
steps:
- name: Checkout Source Files
uses: actions/checkout@v4
- name: Use Node.js v22
uses: actions/setup-node@v4
with:
node-version: 22
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 9
- name: Install Dependencies
run: pnpm install
- name: Lint Source Files
run: pnpm run lint
- name: Verify Build
run: pnpm run build
- name: Run Tests
run: pnpm run test
+14 -4
View File
@@ -1,10 +1,20 @@
# Chibika # New Repository Template
A Discord application that sends ASCII art on demand! This template contains all of our basic files for a new GitHub repository. There is also a handy workflow that will create an issue on a new repository made from this template, with a checklist for the steps we usually take in setting up a new repository.
If you're starting a Node.JS project with TypeScript, we have a [specific template](https://github.com/naomi-lgbt/nodejs-typescript-template) for that purpose.
## Readme
Delete all of the above text (including this line), and uncomment the below text to use our standard readme template.
<!-- # Project Name
Project Description
## Live Version ## Live Version
This page is currently deployed. [Add to your Discord!](https://discord.com/oauth2/authorize?client_id=1396225647269122098) This page is currently deployed. [View the live website.]
## Feedback and Bugs ## Feedback and Bugs
@@ -26,4 +36,4 @@ Copyright held by Naomi Carrigan.
## Contact ## Contact
We may be contacted through our [Chat Server](http://chat.nhcarrigan.com) or via email at `contact@nhcarrigan.com`. We may be contacted through our [Chat Server](http://chat.nhcarrigan.com) or via email at `contact@nhcarrigan.com`. -->
+3 -4
View File
@@ -1,6 +1,6 @@
{ {
"name": "chibika", "name": "chibika",
"version": "1.0.0", "version": "0.0.0",
"description": "A bot that shares ASCII art.", "description": "A bot that shares ASCII art.",
"main": "index.js", "main": "index.js",
"type": "module", "type": "module",
@@ -8,7 +8,7 @@
"lint": "eslint ./src --max-warnings 0", "lint": "eslint ./src --max-warnings 0",
"build": "tsc", "build": "tsc",
"start": "op run --env-file=./prod.env -- node ./prod/index.js", "start": "op run --env-file=./prod.env -- node ./prod/index.js",
"test": "vitest run" "test": "echo 'No tests yet' && exit 0"
}, },
"keywords": [], "keywords": [],
"author": "", "author": "",
@@ -18,8 +18,7 @@
"@nhcarrigan/eslint-config": "5.2.0", "@nhcarrigan/eslint-config": "5.2.0",
"@nhcarrigan/typescript-config": "4.0.0", "@nhcarrigan/typescript-config": "4.0.0",
"eslint": "9.31.0", "eslint": "9.31.0",
"typescript": "5.8.3", "typescript": "5.8.3"
"vitest": "3.2.4"
}, },
"dependencies": { "dependencies": {
"@nhcarrigan/logger": "1.0.0", "@nhcarrigan/logger": "1.0.0",
-3
View File
@@ -30,9 +30,6 @@ importers:
typescript: typescript:
specifier: 5.8.3 specifier: 5.8.3
version: 5.8.3 version: 5.8.3
vitest:
specifier: 3.2.4
version: 3.2.4(@types/node@24.0.15)
packages: packages:
+1 -81
View File
@@ -6,84 +6,4 @@
import type { Ascii } from "../interfaces/ascii.js"; import type { Ascii } from "../interfaces/ascii.js";
export const cats: Array<Ascii> = [ export const cats: Array<Ascii> = [];
{
author: "Naomi Carrigan",
text: ` /\\_/\\
( o.o )
> ^ <`,
},
{
author: "Naomi Carrigan",
text: ` /\\ /\\
( . .)
) (
( v )
^^ ^ ^^`,
},
{
author: "Naomi Carrigan",
text: ` /\\_/\\
( -.- )
_/ \\_
( \\ ___ / )
\\ ___ /
^^ ^^`,
},
{
author: "Naomi Carrigan",
text: ` |\\ _,,,---,,_
/,\`.-'\`' -. ;-;;,_
|,4- ) )-,_..;\\ ( \`'-'
'---''(_/--' \`-'\\_)`,
},
{
author: "Naomi Carrigan",
text: ` /\\___/\\
( o o )
) _ (
( (_) )
( ( )-( ) )
(__(__)_(__))`,
},
{
author: "Naomi Carrigan",
text: ` |\\ /|
| \\____/ |
| | | |
\\ | | /
\\|__|/
/__\\`,
},
{
author: "Naomi Carrigan",
text: ` /\\ /\\
( ^ ^ )
) (
( ___ )
( ( ) ) )
(__(__)_(__))`,
},
{
author: "Naomi Carrigan",
text: ` /\\ /\\
{ \`---' }
{ O O }
~~>{ V }<~~
\\ \\|/ /
\`-----'`,
},
{
author: "Naomi Carrigan",
text: ` . .
\\ /
___\\___/___
/ \\
( @ @ )
\\ ^ /
| \\_____/ |
\\ /
\\_____/`,
},
];
+1 -146
View File
@@ -6,149 +6,4 @@
import type { Ascii } from "../interfaces/ascii.js"; import type { Ascii } from "../interfaces/ascii.js";
export const emoji: Array<Ascii> = [ export const emoji: Array<Ascii> = [];
{
author: "Naomi Carrigan",
text: `⬜⬜🌸⬜⬜⬜⬜⬜⬜⬜⬜⬜🌸⬜⬜
⬜⬜⬜⬜⬜⬜🌸⬜⬜⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬛⬛⬛⬜🌸⬜⬛⬛⬛⬜⬜⬜
⬜⬜⬛🌸🌸🌸⬛⬜⬛🌸🌸🌸⬛⬜⬜
⬜⬛🌸🌸🌸🌸🌸⬛🌸🌸🌸🌸🌸⬛⬜
⬜⬛🌸🌸🌸🌸🌸⬛🌸🌸🌸🌸🌸⬛⬜
⬜⬛🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸⬛⬜
⬜⬛🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸⬛⬜
⬜⬜⬛🌸🌸🌸🌸🌸🌸🌸🌸🌸⬛⬜⬜
⬜⬜⬜⬛🌸🌸🌸🌸🌸🌸🌸⬛⬜⬜⬜
⬜⬜⬜⬜⬛🌸🌸🌸🌸🌸⬛⬜⬜⬜⬜
⬜🌸⬜🌸⬜⬛🌸🌸🌸⬛⬜🌸⬜🌸⬜
🌸🌸🌸🌸🌸⬜⬛🌸⬛⬜⬜⬜🌸⬜⬜
⬜🌸🌸🌸⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜🌸
⬜⬜🌸⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜`,
},
{
author: "Naomi Carrigan",
text: `⬜⬜⬜⬜⬜🌟⬜⬜⬜🌟⬜⬜⬜⬜⬜
⬜⬜⬜⬜🌟🌟🌟⬜🌟🌟🌟⬜⬜⬜⬜
⬜⬜⬜🌟🌟🌟🌟🌟🌟🌟🌟🌟⬜⬜⬜
⬜⬜🌟🌟🟡🟡🌟🌟🌟🟡🟡🌟🌟⬜⬜
⬜🌟🌟🟡🟡🟡🟡🌟🟡🟡🟡🟡🌟🌟⬜
🌟🌟🟡🟡🟡🟡🟡🌟🟡🟡🟡🟡🟡🌟🌟
🌟🟡🟡🟡⬛🟡🟡🟡🟡🟡⬛🟡🟡🟡🌟
🌟🟡🟡🟡⬛🟡🟡🟡🟡🟡⬛🟡🟡🟡🌟
🌟🟡🟡🟡🟡🟡🟡⬛🟡🟡🟡🟡🟡🟡🌟
🌟🟡🟡🟡🟡🟡⬛⬛⬛🟡🟡🟡🟡🟡🌟
🌟🌟🟡🟡🟡🟡🟡⬛🟡🟡🟡🟡🟡🌟🌟
⬜🌟🌟🟡🟡🟡🟡🟡🟡🟡🟡🟡🌟🌟⬜
⬜⬜🌟🌟🟡🟡🟡🟡🟡🟡🟡🌟🌟⬜⬜
⬜⬜⬜🌟🌟🌟🌟🌟🌟🌟🌟🌟⬜⬜⬜
⬜⬜⬜⬜🌟🌟🌟⬜🌟🌟🌟⬜⬜⬜⬜`,
},
{
author: "Naomi Carrigan",
text: `⬜⬜⬜⬜⬜⬜💙⬜💙⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜💙💙💙💙💙⬜⬜⬜⬜⬜
⬜⬜⬜⬜💙💙💙💙💙💙💙⬜⬜⬜⬜
⬜⬜⬜💙💙💙💙💙💙💙💙💙⬜⬜⬜
⬜⬜💙💙⬜💙💙💙💙💙⬜💙💙⬜⬜
⬜💙💙⬜⬜⬜💙💙💙⬜⬜⬜💙💙⬜
💙💙⬜⬜⬜⬜⬜💙⬜⬜⬜⬜⬜💙💙
💙⬜⬜⬜⬜⬜⬜💙⬜⬜⬜⬜⬜⬜💙
💙💙⬜⬜⬜⬜💙💙💙⬜⬜⬜⬜💙💙
⬜💙💙⬜⬜💙💙💙💙💙⬜⬜💙💙⬜
⬜⬜💙💙💙💙💙💙💙💙💙💙💙⬜⬜
⬜⬜⬜💙💙💙💙💙💙💙💙💙⬜⬜⬜
⬜⬜⬜⬜💙💙💙💙💙💙💙⬜⬜⬜⬜
⬜⬜⬜⬜⬜💙💙💙💙💙⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜💙⬜💙⬜⬜⬜⬜⬜⬜`,
},
{
author: "Naomi Carrigan",
text: `🌺⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜🌺
⬜🌺⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜🌺⬜
⬜⬜🌺⬜⬜⬜⬜⬜⬜⬜⬜⬜🌺⬜⬜
⬜⬜⬜🌺⬜⬜⬜⬜⬜⬜⬜🌺⬜⬜⬜
⬜⬜⬜⬜🌺⬜⬜⬜⬜⬜🌺⬜⬜⬜⬜
⬜⬜⬜⬜⬜🌺⬜⬜⬜🌺⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜🌺⬜🌺⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜⬜💖⬜⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜🌺⬜🌺⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜🌺⬜⬜⬜🌺⬜⬜⬜⬜⬜
⬜⬜⬜⬜🌺⬜⬜⬜⬜⬜🌺⬜⬜⬜⬜
⬜⬜⬜🌺⬜⬜⬜⬜⬜⬜⬜🌺⬜⬜⬜
⬜⬜🌺⬜⬜⬜⬜⬜⬜⬜⬜⬜🌺⬜⬜
⬜🌺⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜🌺⬜
🌺⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜🌺`,
},
{
author: "Naomi Carrigan",
text: `⬜⬜⬜⬜⬜⬜⭐⬜⭐⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⭐⭐⭐⭐⭐⬜⬜⬜⬜⬜
⬜⬜⬜⬜⭐⭐⭐⭐⭐⭐⭐⬜⬜⬜⬜
⬜⬜⬜⭐⬛⭐⭐⭐⭐⭐⬛⭐⬜⬜⬜
⬜⬜⭐⬛⬛⬛⭐⭐⭐⬛⬛⬛⭐⬜⬜
⬜⭐⬛⬛⬛⬛⬛⭐⬛⬛⬛⬛⬛⭐⬜
⭐⬛⬛⬛⬛⬛⬛⭐⬛⬛⬛⬛⬛⬛⭐
⭐⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⭐
⭐⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⭐
⬜⭐⬛⬛⬛⬛⬛⭐⬛⬛⬛⬛⬛⭐⬜
⬜⬜⭐⬛⬛⬛⭐⭐⭐⬛⬛⬛⭐⬜⬜
⬜⬜⬜⭐⬛⭐⭐⭐⭐⭐⬛⭐⬜⬜⬜
⬜⬜⬜⬜⭐⭐⭐⭐⭐⭐⭐⬜⬜⬜⬜
⬜⬜⬜⬜⬜⭐⭐⭐⭐⭐⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜⭐⬜⭐⬜⬜⬜⬜⬜⬜`,
},
{
author: "Naomi Carrigan",
text: `⬜⬜⬜⬜⬜🌿⬜⬜⬜🌿⬜⬜⬜⬜⬜
⬜⬜⬜⬜🌿🌿🌿⬜🌿🌿🌿⬜⬜⬜⬜
⬜⬜⬜🌿🌿🌿🌿🌿🌿🌿🌿🌿⬜⬜⬜
⬜⬜🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿⬜⬜
⬜🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿⬜
🌿🌿🌿🌿🌿⬛🌿🌿🌿⬛🌿🌿🌿🌿🌿
🌿🌿🌿🌿⬛⬛⬛🌿⬛⬛⬛🌿🌿🌿🌿
🌿🌿🌿🌿🌿⬛🌿🌿🌿⬛🌿🌿🌿🌿🌿
🌿🌿🌿🌿🌿🌿🌿🔥🌿🌿🌿🌿🌿🌿🌿
🌿🌿🌿🌿🌿🌿🔥🔥🔥🌿🌿🌿🌿🌿🌿
⬜🌿🌿🌿🌿🌿🌿🔥🌿🌿🌿🌿🌿🌿⬜
⬜⬜🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿⬜⬜
⬜⬜⬜🌿🌿🌿🌿🌿🌿🌿🌿🌿⬜⬜⬜
⬜⬜⬜⬜🌿🌿🌿⬜🌿🌿🌿⬜⬜⬜⬜
⬜⬜⬜⬜⬜🌿⬜⬜⬜🌿⬜⬜⬜⬜⬜`,
},
{
author: "Naomi Carrigan",
text: `⬜⬜⬜🌙⬜⬜⬜⬜⬜⬜⬜🌙⬜⬜⬜
⬜⬜🌙🌙🌙⬜⬜⬜⬜⬜🌙🌙🌙⬜⬜
⬜🌙🌙🌙🌙🌙⬜⬜⬜🌙🌙🌙🌙🌙⬜
🌙🌙🌙🌙🌙🌙🌙⬜🌙🌙🌙🌙🌙🌙🌙
🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙
🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙
🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙
🌙🌙🌙🌙🌙🌙🌙💫🌙🌙🌙🌙🌙🌙🌙
🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙
🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙
🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙
⬜🌙🌙🌙🌙🌙⬜⬜⬜🌙🌙🌙🌙🌙⬜
⬜⬜🌙🌙🌙⬜⬜⬜⬜⬜🌙🌙🌙⬜⬜
⬜⬜⬜🌙⬜⬜⬜⬜⬜⬜⬜🌙⬜⬜⬜
⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜`,
},
{
author: "Naomi Carrigan",
text: `⬜⬜⬜⬜⬜⬜⬜🔥⬜⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜🔥🔥🔥⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜🔥🔥🔥🔥🔥⬜⬜⬜⬜⬜
⬜⬜⬜⬜🔥🔥🔥🔥🔥🔥🔥⬜⬜⬜⬜
⬜⬜⬜🔥🔥🔥🔥🔥🔥🔥🔥🔥⬜⬜⬜
⬜⬜🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥⬜⬜
⬜🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥⬜
🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥
⬜🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥⬜
⬜⬜🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥⬜⬜
⬜⬜⬜🔥🔥🔥🔥🔥🔥🔥🔥🔥⬜⬜⬜
⬜⬜⬜⬜🔥🔥🔥🔥🔥🔥🔥⬜⬜⬜⬜
⬜⬜⬜⬜⬜🔥🔥🔥🔥🔥⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜🔥🔥🔥⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜⬜🔥⬜⬜⬜⬜⬜⬜⬜`,
},
];
-37
View File
@@ -1,37 +0,0 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { describe, it, expect } from "vitest";
import { anime } from "../src/assets/anime.js";
import { cats } from "../src/assets/cats.js";
import { emoji } from "../src/assets/emoji.js";
const uniqueAnime = new Set(anime.map((art) => {
return art.text;
}));
const uniqueCats = new Set(cats.map((art) => {
return art.text;
}));
const uniqueEmoji = new Set(emoji.map((art) => {
return art.text;
}));
describe("assets", () => {
it("anime should be unique", () => {
expect.assertions(1);
expect(uniqueAnime.size, "anime has duplicate art").toBe(anime.length);
});
it("cats should be unique", () => {
expect.assertions(1);
expect(uniqueCats.size, "cats has duplicate art").toBe(cats.length);
});
it("emoji should be unique", () => {
expect.assertions(1);
expect(uniqueEmoji.size, "emoji has duplicate art").toBe(emoji.length);
});
});
+1 -2
View File
@@ -3,6 +3,5 @@
"compilerOptions": { "compilerOptions": {
"rootDir": "./src", "rootDir": "./src",
"outDir": "./prod" "outDir": "./prod"
}, }
"exclude": ["test", "vitest.config.ts"]
} }
-10
View File
@@ -1,10 +0,0 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { defineConfig } from "vitest/config";
export default defineConfig({});