4 Commits

Author SHA1 Message Date
5e570201bd wip: template
Signed-off-by: Alix von Schirp <github@avonschirp.bootmedia.de>
2025-10-22 05:26:09 +02:00
c5ce1bfbcd feat: add meta packages
Signed-off-by: Alix von Schirp <github@avonschirp.bootmedia.de>
2025-10-22 05:25:11 +02:00
f0b3957536 feat: make ci more robust
Signed-off-by: Alix von Schirp <github@avonschirp.bootmedia.de>
2025-10-22 05:24:33 +02:00
8984a61ec8 refactor: move pushover into sub package, pull config into config package
Signed-off-by: Alix von Schirp <github@avonschirp.bootmedia.de>
2025-10-22 04:46:36 +02:00
36 changed files with 2059 additions and 187 deletions

View File

@@ -1,12 +1,22 @@
on: [push, pull_request]
jobs:
check:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Deps
run: npm install -g pnpm && pnpm install
- name: Typecheck & Lint
run: pnpm check
on: [push, pull_request]
jobs:
check:
runs-on: ubuntu-22.04
strategy:
matrix:
node-version: [20, 22]
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Install Deps
uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v5
with:
node-version: ${{ matrix.node-version }}
cache: "pnpm"
- name: Install
run: pnpm install
- name: Typecheck & Lint
run: SKIP_ENV_VALIDATION=true turbo check

76
.gitignore vendored
View File

@@ -1,38 +1,38 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# production
docs/
dist/
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
# local env files
# do not commit any .env files to git, except for the .env.example file.
.env
.env*.local
# typescript
*.tsbuildinfo
# eslint
.eslintcache
# idea files
.idea
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/**/node_modules
/.pnp
.pnp.js
# testing
/coverage
# production
docs/
dist/
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
# local env files
# do not commit any .env files to git, except for the .env.example file.
.env
.env*.local
# typescript
*.tsbuildinfo
# eslint
.eslintcache
# idea files
.idea

18
config/eslint.config.mjs Normal file
View File

@@ -0,0 +1,18 @@
import globals from "globals";
import pluginJs from "@eslint/js";
import tseslint from "typescript-eslint";
import eslintConfigPrettier from "eslint-config-prettier";
import onlyWarn from "eslint-plugin-only-warn";
/** @type {import('eslint').Linter.Config[]} */
export default [
{ languageOptions: { globals: globals.node } },
pluginJs.configs.recommended,
...tseslint.configs.recommended,
eslintConfigPrettier,
{
plugins: {
onlyWarn,
},
},
];

32
config/package.json Normal file
View File

@@ -0,0 +1,32 @@
{
"name": "@repo/configs",
"version": "0.0.0",
"exports": {
"./eslint": "./eslint.config.mjs",
"./jest": "./jest.config.mjs",
"./typedoc": "./typedoc.config.mjs"
},
"devDependencies": {
"@eslint/js": "^9.22.0",
"@shipgirl/typedoc-plugin-versions": "^0.3.0",
"@types/jest": "^29.5.14",
"eslint": "^9.22.0",
"eslint-config-prettier": "^10.1.1",
"eslint-plugin-only-warn": "^1.1.0",
"globals": "^16.4.0",
"jest": "^29.7.0",
"prettier": "3.5.3",
"ts-jest": "^29.2.6",
"typedoc": "^0.27.9",
"typedoc-github-theme": "^0.2.1",
"typedoc-plugin-coverage": "^3.4.1",
"typedoc-plugin-extras": "^4.0.0",
"typedoc-plugin-include-example": "^2.0.2",
"typedoc-plugin-inline-sources": "^1.2.1",
"typedoc-plugin-mdn-links": "^5.0.1",
"typedoc-plugin-zod": "^1.4.0",
"typescript": "^5.5.3",
"typescript-eslint": "^8.26.0"
},
"private": true
}

View File

@@ -1,20 +1,7 @@
import globals from "globals";
import pluginJs from "@eslint/js";
import tseslint from "typescript-eslint";
import eslintConfigPrettier from "eslint-config-prettier";
import onlyWarn from "eslint-plugin-only-warn";
/** @type {import('eslint').Linter.Config[]} */
export default [
{ ignores: ["dist/**", "docs/**", ".*/**", "**/.*", "**/*.config.*"] },
{ files: ["**/*.{js,mjs,cjs,ts}"] },
{ languageOptions: { globals: globals.node } },
pluginJs.configs.recommended,
...tseslint.configs.recommended,
eslintConfigPrettier,
{
plugins: {
onlyWarn,
},
},
];
import repoConfig from "@repo/configs/eslint";
export default [
...repoConfig,
{ ignores: ["dist/**", "docs/**"] },
{ files: ["**/*.{ts}"] },
];

View File

@@ -0,0 +1,7 @@
import repoConfig from "@repo/configs/eslint";
export default [
...repoConfig,
{ ignores: ["dist/**", "docs/**"] },
{ files: ["**/*.{ts}"] },
];

View File

@@ -0,0 +1,3 @@
import repoCofig from "@repo/configs/jest";
export default [...repoCofig];

View File

@@ -0,0 +1,90 @@
{
"name": "@cis-oss/notify-push",
"description": "Send push notifications to your users. Meta package wrapping several @cis-oss packages. See README.md for more information.",
"homepage": "https://cis-oss.github.io/notify",
"version": "0.0.1",
"main": "src/index.ts",
"author": {
"email": "hi@b00tload.space",
"name": "Alix von Schirp",
"url": "https://b00tload.space"
},
"repository": {
"type": "git",
"url": "git+https://github.com/cis-oss/pushover.git"
},
"bugs": {
"url": "https://github.com/cis-oss/pushover/issues"
},
"keywords": [
"mobile",
"notification",
"notifications",
"push",
"pushover"
],
"dependencies": {
"@cis-oss/pushover": "workspace:"
},
"devDependencies": {
"@eslint/js": "^9.22.0",
"@repo/configs": "workspace:",
"@shipgirl/typedoc-plugin-versions": "^0.3.0",
"@types/jest": "^29.5.14",
"@types/node": "^22.13.10",
"eslint": "^9.22.0",
"eslint-config-prettier": "^10.1.1",
"eslint-plugin-only-warn": "^1.1.0",
"globals": "^16.0.0",
"jest": "^29.7.0",
"shx": "^0.4.0",
"ts-jest": "^29.2.6",
"tsx": "^4.19.3",
"typedoc": "^0.27.9",
"typedoc-github-theme": "^0.2.1",
"typedoc-plugin-coverage": "^3.4.1",
"typedoc-plugin-extras": "^4.0.0",
"typedoc-plugin-include-example": "^2.0.2",
"typedoc-plugin-inline-sources": "^1.2.1",
"typedoc-plugin-mdn-links": "^5.0.1",
"typedoc-plugin-zod": "^1.4.0",
"typescript": "^5.5.3",
"typescript-eslint": "^8.26.0"
},
"files": [
"dist/**/*.{js,ts,map}"
],
"scripts": {
"build": "tsc",
"build:watch": "tsc --watch",
"check": "pnpm run lint:ci && pnpm run typecheck",
"clean": "shx rm -rf dist/",
"docs:generate": "typedoc",
"format:check": "prettier --check .",
"lint": "eslint .",
"lint:ci": "eslint --max-warnings 0",
"prepublishOnly": "pnpm run clean && pnpm run build",
"test": "jest",
"typecheck": "tsc --noEmit"
},
"private": true,
"license": "MIT",
"maintainers": [
{
"name": "Alix von Schirp",
"email": "hi@b00tload.space",
"url": "https://b00tload.space"
},
{
"name": "Ole",
"email": "jateute123@gmail.com",
"url": "https://github.com/jateute"
}
],
"packageManager": "pnpm@10.6.5",
"publishConfig": {
"main": "dist/index.js",
"types": "dist/index.d.ts"
},
"type": "module"
}

View File

@@ -0,0 +1,3 @@
import { Pushover } from "@cis-oss/pushover";
export { Pushover };

View File

@@ -0,0 +1,12 @@
{
"extends": "@repo/configs/tsconfig.json",
"compilerOptions": {
/* Path Aliases */
"baseUrl": "./src",
"paths": {
"~/*": ["./src/*"]
}
},
"include": ["src/**/*.ts", "src/**/*.tsx"],
"exclude": ["node_modules/**/*", "docs/**/*", "dist/**/*"]
}

View File

@@ -0,0 +1,7 @@
import repoConfig from "@repo/configs/eslint";
export default [
...repoConfig,
{ ignores: ["dist/**", "docs/**"] },
{ files: ["**/*.{ts}"] },
];

View File

@@ -0,0 +1,3 @@
import repoCofig from "@repo/configs/jest";
export default [...repoCofig];

90
meta/notify/package.json Normal file
View File

@@ -0,0 +1,90 @@
{
"name": "@cis-oss/notify",
"description": "Send push notifications to your users. Meta package wrapping several @cis-oss packages. See README.md for more information.",
"homepage": "https://cis-oss.github.io/notify",
"version": "0.0.1",
"main": "src/index.ts",
"author": {
"email": "hi@b00tload.space",
"name": "Alix von Schirp",
"url": "https://b00tload.space"
},
"repository": {
"type": "git",
"url": "git+https://github.com/cis-oss/pushover.git"
},
"bugs": {
"url": "https://github.com/cis-oss/pushover/issues"
},
"keywords": [
"mobile",
"notification",
"notifications",
"push",
"pushover"
],
"dependencies": {
"@cis-oss/pushover": "workspace:"
},
"devDependencies": {
"@repo/configs": "workspace:",
"@eslint/js": "^9.22.0",
"@shipgirl/typedoc-plugin-versions": "^0.3.0",
"@types/jest": "^29.5.14",
"@types/node": "^22.13.10",
"eslint": "^9.22.0",
"eslint-config-prettier": "^10.1.1",
"eslint-plugin-only-warn": "^1.1.0",
"globals": "^16.0.0",
"jest": "^29.7.0",
"shx": "^0.4.0",
"ts-jest": "^29.2.6",
"tsx": "^4.19.3",
"typedoc": "^0.27.9",
"typedoc-github-theme": "^0.2.1",
"typedoc-plugin-coverage": "^3.4.1",
"typedoc-plugin-extras": "^4.0.0",
"typedoc-plugin-include-example": "^2.0.2",
"typedoc-plugin-inline-sources": "^1.2.1",
"typedoc-plugin-mdn-links": "^5.0.1",
"typedoc-plugin-zod": "^1.4.0",
"typescript": "^5.5.3",
"typescript-eslint": "^8.26.0"
},
"files": [
"dist/**/*.{js,ts,map}"
],
"scripts": {
"build": "tsc",
"build:watch": "tsc --watch",
"check": "pnpm run lint:ci && pnpm run typecheck",
"clean": "shx rm -rf dist/",
"docs:generate": "typedoc",
"format:check": "prettier --check .",
"lint": "eslint .",
"lint:ci": "eslint --max-warnings 0",
"prepublishOnly": "pnpm run clean && pnpm run build",
"test": "jest",
"typecheck": "tsc --noEmit"
},
"private": true,
"license": "MIT",
"maintainers": [
{
"name": "Alix von Schirp",
"email": "hi@b00tload.space",
"url": "https://b00tload.space"
},
{
"name": "Ole",
"email": "jateute123@gmail.com",
"url": "https://github.com/jateute"
}
],
"packageManager": "pnpm@10.6.5",
"publishConfig": {
"main": "dist/index.js",
"types": "dist/index.d.ts"
},
"type": "module"
}

3
meta/notify/src/index.ts Normal file
View File

@@ -0,0 +1,3 @@
import { Pushover } from "@cis-oss/pushover";
export { Pushover };

12
meta/notify/tsconfig.json Normal file
View File

@@ -0,0 +1,12 @@
{
"extends": "@repo/configs/tsconfig.json",
"compilerOptions": {
/* Path Aliases */
"baseUrl": "./src",
"paths": {
"~/*": ["./src/*"]
}
},
"include": ["src/**/*.ts", "src/**/*.tsx"],
"exclude": ["node_modules/**/*", "docs/**/*", "dist/**/*"]
}

View File

@@ -1,101 +1,34 @@
{
"name": "@cis-oss/pushover",
"description": "A client for Pushover, a service for sending notifications. Written in TypeScript. Supports sending to multiple users.",
"homepage": "https://cis-oss.github.io/pushover",
"version": "0.0.1",
"main": "src/index.ts",
"name": "@repo/root",
"description": "",
"files": [],
"private": true,
"license": "MIT",
"author": {
"email": "hi@b00tload.space",
"name": "Alix von Schirp",
"url": "https://b00tload.space"
},
"repository": {
"type": "git",
"url": "git+https://github.com/cis-oss/pushover.git"
},
"bugs": {
"url": "https://github.com/cis-oss/pushover/issues"
},
"keywords": [
"mobile",
"notification",
"notifications",
"push",
"pushover"
],
"dependencies": {
"zod": "^3.24.2"
},
"devDependencies": {
"@eslint/js": "^9.22.0",
"@shipgirl/typedoc-plugin-versions": "^0.3.0",
"@types/jest": "^29.5.14",
"@types/node": "^22.13.10",
"@repo/configs": "workspace:",
"@turbo/gen": "^2.5.6",
"eslint": "^9.22.0",
"eslint-config-prettier": "^10.1.1",
"eslint-plugin-only-warn": "^1.1.0",
"finepack": "^2.12.7",
"globals": "^16.0.0",
"husky": "^9.1.7",
"jest": "^29.7.0",
"lint-staged": "^15.4.3",
"prettier": "3.5.3",
"shx": "^0.4.0",
"ts-jest": "^29.2.6",
"tsx": "^4.19.3",
"typedoc": "^0.27.9",
"typedoc-github-theme": "^0.2.1",
"typedoc-plugin-coverage": "^3.4.1",
"typedoc-plugin-extras": "^4.0.0",
"typedoc-plugin-include-example": "^2.0.2",
"typedoc-plugin-inline-sources": "^1.2.1",
"typedoc-plugin-mdn-links": "^5.0.1",
"typedoc-plugin-zod": "^1.4.0",
"typescript": "^5.5.3",
"typescript-eslint": "^8.26.0"
"turbo": "^2.5.6"
},
"files": [
"dist/**/*.{js,ts,map}"
],
"scripts": {
"build": "tsc",
"build:watch": "tsc --watch",
"check": "pnpm run lint && pnpm run typecheck",
"clean": "shx rm -rf dist/",
"docs:generate": "typedoc",
"format:check": "prettier --check .",
"lint": "eslint --cache .",
"prepare": "husky",
"prepublishOnly": "pnpm run clean && pnpm run build",
"test": "jest",
"typecheck": "tsc --noEmit"
"prepare": "husky"
},
"private": true,
"license": "MIT",
"husky": {
"shell": "bash"
},
"lint-staged": {
"package.json": "finepack",
"*.{js,ts,jsx,tsx}": "eslint --cache --fix .",
"*.{js,ts,jsx,tsx}": "eslint --fix .",
"*.{js,ts,jsx,tsx,json,css,md}": "prettier --write"
},
"maintainers": [
{
"name": "Alix von Schirp",
"email": "hi@b00tload.space",
"url": "https://b00tload.space"
},
{
"name": "Ole",
"email": "jateute123@gmail.com",
"url": "https://github.com/jateute"
}
],
"packageManager": "pnpm@10.6.5",
"publishConfig": {
"main": "dist/index.js",
"types": "dist/index.d.ts"
},
"type": "module"
}
"version": "0.0.0"
}

View File

@@ -0,0 +1,7 @@
import repoConfig from "@repo/configs/eslint";
export default [
...repoConfig,
{ ignores: ["dist/**", "docs/**"] },
{ files: ["**/*.{ts}"] },
];

View File

@@ -0,0 +1,3 @@
import repoCofig from "@repo/configs/jest";
export default [...repoCofig];

View File

@@ -0,0 +1,90 @@
{
"name": "@cis-oss/pushover",
"description": "A client for Pushover, a service for sending notifications. Written in TypeScript. Supports sending to multiple users.",
"homepage": "https://cis-oss.github.io/pushover",
"version": "0.0.10",
"main": "src/index.ts",
"author": {
"email": "hi@b00tload.space",
"name": "Alix von Schirp",
"url": "https://b00tload.space"
},
"repository": {
"type": "git",
"url": "git+https://github.com/cis-oss/pushover.git"
},
"bugs": {
"url": "https://github.com/cis-oss/pushover/issues"
},
"keywords": [
"mobile",
"notification",
"notifications",
"push",
"pushover"
],
"dependencies": {
"zod": "^3.24.2"
},
"devDependencies": {
"@repo/configs": "workspace:",
"@eslint/js": "^9.22.0",
"@shipgirl/typedoc-plugin-versions": "^0.3.0",
"@types/jest": "^29.5.14",
"@types/node": "^22.13.10",
"eslint": "^9.22.0",
"eslint-config-prettier": "^10.1.1",
"eslint-plugin-only-warn": "^1.1.0",
"globals": "^16.0.0",
"jest": "^29.7.0",
"shx": "^0.4.0",
"ts-jest": "^29.2.6",
"tsx": "^4.19.3",
"typedoc": "^0.27.9",
"typedoc-github-theme": "^0.2.1",
"typedoc-plugin-coverage": "^3.4.1",
"typedoc-plugin-extras": "^4.0.0",
"typedoc-plugin-include-example": "^2.0.2",
"typedoc-plugin-inline-sources": "^1.2.1",
"typedoc-plugin-mdn-links": "^5.0.1",
"typedoc-plugin-zod": "^1.4.0",
"typescript": "^5.5.3",
"typescript-eslint": "^8.26.0"
},
"files": [
"dist/**/*.{js,ts,map}"
],
"scripts": {
"build": "tsc",
"build:watch": "tsc --watch",
"check": "pnpm run lint:ci && pnpm run typecheck",
"clean": "shx rm -rf dist/",
"docs:generate": "typedoc",
"format:check": "prettier --check .",
"lint": "eslint .",
"lint:ci": "eslint --max-warnings 0",
"prepublishOnly": "pnpm run clean && pnpm run build",
"test": "jest",
"typecheck": "tsc --noEmit"
},
"private": true,
"license": "MIT",
"maintainers": [
{
"name": "Alix von Schirp",
"email": "hi@b00tload.space",
"url": "https://b00tload.space"
},
{
"name": "Ole",
"email": "jateute123@gmail.com",
"url": "https://github.com/jateute"
}
],
"packageManager": "pnpm@10.6.5",
"publishConfig": {
"main": "dist/index.js",
"types": "dist/index.d.ts"
},
"type": "module"
}

View File

@@ -12,6 +12,7 @@ import type {
} from "./Pushover";
export default Pushover;
export { Pushover };
export type {
PushoverRecipient,

View File

@@ -0,0 +1,12 @@
{
"extends": "@repo/configs/tsconfig.json",
"compilerOptions": {
/* Path Aliases */
"baseUrl": "./src",
"paths": {
"~/*": ["./src/*"]
}
},
"include": ["src/**/*.ts", "src/**/*.tsx"],
"exclude": ["node_modules/**/*", "docs/**/*", "dist/**/*"]
}

1463
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

7
pnpm-workspace.yaml Normal file
View File

@@ -0,0 +1,7 @@
packages:
- meta/*
- packages/*
- config
catalogMode: prefer

View File

View File

@@ -0,0 +1,7 @@
import repoConfig from "@repo/configs/eslint";
export default [
...repoConfig,
{ ignores: ["dist/**", "docs/**"] },
{ files: ["**/*.{ts}"] },
];

View File

@@ -0,0 +1,3 @@
import repoCofig from "@repo/configs/jest";
export default [...repoCofig];

View File

@@ -0,0 +1,87 @@
{
"name": "{{name}}",
"description": "{{description}}",
"homepage": "https://cis-oss.github.io/notify",
"version": "0.0.10",
"main": "src/index.ts",
"author": {
"email": "hi@b00tload.space",
"name": "Alix von Schirp",
"url": "https://b00tload.space"
},
"repository": {
"type": "git",
"url": "git+https://github.com/cis-oss/pushover.git"
},
"bugs": {
"url": "https://github.com/cis-oss/pushover/issues"
},
"keywords": [
"notification",
"notify"
],
"dependencies": {
"zod": "^3.24.2"
},
"devDependencies": {
"@eslint/js": "^9.22.0",
"@repo/configs": "workspace:",
"@shipgirl/typedoc-plugin-versions": "^0.3.0",
"@types/jest": "^29.5.14",
"@types/node": "^22.13.10",
"eslint": "^9.22.0",
"eslint-config-prettier": "^10.1.1",
"eslint-plugin-only-warn": "^1.1.0",
"globals": "^16.0.0",
"jest": "^29.7.0",
"shx": "^0.4.0",
"ts-jest": "^29.2.6",
"tsx": "^4.19.3",
"typedoc": "^0.27.9",
"typedoc-github-theme": "^0.2.1",
"typedoc-plugin-coverage": "^3.4.1",
"typedoc-plugin-extras": "^4.0.0",
"typedoc-plugin-include-example": "^2.0.2",
"typedoc-plugin-inline-sources": "^1.2.1",
"typedoc-plugin-mdn-links": "^5.0.1",
"typedoc-plugin-zod": "^1.4.0",
"typescript": "^5.5.3",
"typescript-eslint": "^8.26.0"
},
"files": [
"dist/**/*.{js,ts,map}"
],
"scripts": {
"build": "tsc",
"build:watch": "tsc --watch",
"check": "pnpm run lint:ci && pnpm run typecheck",
"clean": "shx rm -rf dist/",
"docs:generate": "typedoc",
"format:check": "prettier --check .",
"lint": "eslint .",
"lint:ci": "eslint --max-warnings 0",
"prepublishOnly": "pnpm run clean && pnpm run build",
"test": "jest",
"typecheck": "tsc --noEmit"
},
"private": true,
"license": "MIT",
"maintainers": [
{
"name": "Alix von Schirp",
"email": "hi@b00tload.space",
"url": "https://b00tload.space"
},
{
"name": "Ole",
"email": "jateute123@gmail.com",
"url": "https://github.com/jateute"
}
],
"packageManager": "pnpm@10.6.5",
"publishConfig": {
"main": "dist/index.js",
"types": "dist/index.d.ts"
},
"type": "module"
}

View File

View File

@@ -0,0 +1,12 @@
{
"extends": "@repo/configs/tsconfig.json",
"compilerOptions": {
/* Path Aliases */
"baseUrl": "./src",
"paths": {
"~/*": ["./src/*"]
}
},
"include": ["src/**/*.ts", "src/**/*.tsx"],
"exclude": ["node_modules/**/*", "docs/**/*", "dist/**/*"]
}

View File

@@ -0,0 +1,46 @@
import type { PlopTypes } from "@turbo/gen";
export default function generator(plop: PlopTypes.NodePlopAPI): void {
// create a generator
plop.setGenerator("package", {
description: "Generator description",
// gather information from the user
prompts: [
{
type: "input",
name: "name",
message: "Package name",
},
{
type: "input",
name: "description",
message: "Package description",
},
{
type: "input",
name: "author.name",
message: "Author name",
},
{
type: "input",
name: "author.email",
message: "Author email",
},
{
type: "input",
name: "author.url",
message: "Author URL",
},
],
// perform actions based on the prompts
actions: [
{
type: "addMany",
destination: "packages/{{name}}",
base: "templates/package",
templateFiles: "templates/package/**/*",
abortOnFail: true,
},
],
});
}