3 Commits

Author SHA1 Message Date
naomi 88326b802e release: v1.0.0
Node.js CI / Lint and Test (push) Successful in 35s
2025-07-19 16:20:45 -07:00
naomi 71308283ef docs: readme
Node.js CI / Lint and Test (push) Has been cancelled
2025-07-19 16:20:35 -07:00
naomi 186fe97f30 feat: build initial prototype (#1)
Node.js CI / Lint and Test (push) Successful in 35s
### 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

- [x] 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

_No response_

Reviewed-on: #1
Co-authored-by: Naomi Carrigan <commits@nhcarrigan.com>
Co-committed-by: Naomi Carrigan <commits@nhcarrigan.com>
2025-07-19 16:11:39 -07:00
7 changed files with 98 additions and 18 deletions
+38
View File
@@ -0,0 +1,38 @@
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
+4 -14
View File
@@ -1,20 +1,10 @@
# New Repository Template # Chibika
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. A Discord application that sends ASCII art on demand!
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. [View the live website.] This page is currently deployed. [Add to your Discord!](https://discord.com/oauth2/authorize?client_id=1396225647269122098)
## Feedback and Bugs ## Feedback and Bugs
@@ -36,4 +26,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`.
+4 -3
View File
@@ -1,6 +1,6 @@
{ {
"name": "chibika", "name": "chibika",
"version": "0.0.0", "version": "1.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": "echo 'No tests yet' && exit 0" "test": "vitest run"
}, },
"keywords": [], "keywords": [],
"author": "", "author": "",
@@ -18,7 +18,8 @@
"@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,6 +30,9 @@ 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:
+37
View File
@@ -0,0 +1,37 @@
/**
* @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);
});
});
+2 -1
View File
@@ -3,5 +3,6 @@
"compilerOptions": { "compilerOptions": {
"rootDir": "./src", "rootDir": "./src",
"outDir": "./prod" "outDir": "./prod"
} },
"exclude": ["test", "vitest.config.ts"]
} }
+10
View File
@@ -0,0 +1,10 @@
/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { defineConfig } from "vitest/config";
export default defineConfig({});