initial commit & scaffold
This commit is contained in:
17
.eslintrc.cjs
Normal file
17
.eslintrc.cjs
Normal file
@@ -0,0 +1,17 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
env: {
|
||||
node: true,
|
||||
es2021: true,
|
||||
},
|
||||
parser: '@typescript-eslint/parser',
|
||||
plugins: ['@typescript-eslint', 'prettier'],
|
||||
extends: [
|
||||
'eslint:recommended',
|
||||
'plugin:@typescript-eslint/recommended',
|
||||
'plugin:prettier/recommended',
|
||||
],
|
||||
rules: {
|
||||
'prettier/prettier': 'error',
|
||||
},
|
||||
};
|
||||
20
.gitignore
vendored
Normal file
20
.gitignore
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
# Node
|
||||
node_modules/
|
||||
packages/*/node_modules/
|
||||
.pnpm-store/
|
||||
.pnpm-debug.log
|
||||
pnpm-lock.yaml
|
||||
|
||||
# TypeScript
|
||||
dist/
|
||||
**/dist/
|
||||
**/*.tsbuildinfo
|
||||
|
||||
# Go
|
||||
**/vendor/
|
||||
**/*.exe
|
||||
**/*.out
|
||||
|
||||
# Misc
|
||||
.env
|
||||
.DS_Store
|
||||
6
.prettierignore
Normal file
6
.prettierignore
Normal file
@@ -0,0 +1,6 @@
|
||||
node_modules
|
||||
dist
|
||||
coverage
|
||||
.env
|
||||
**/vendor
|
||||
**/*.pb.go
|
||||
8
.prettierrc.cjs
Normal file
8
.prettierrc.cjs
Normal file
@@ -0,0 +1,8 @@
|
||||
module.exports = {
|
||||
arrowParens: 'always',
|
||||
singleQuote: true,
|
||||
trailingComma: 'all',
|
||||
printWidth: 100,
|
||||
useTabs: true,
|
||||
semi: true,
|
||||
};
|
||||
19
LICENSE
Normal file
19
LICENSE
Normal file
@@ -0,0 +1,19 @@
|
||||
Copyright (c) 2025 Elijah Duffy
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
7
README.md
Normal file
7
README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# health (monorepo)
|
||||
|
||||
This repository contains small helper libraries for liveness and readiness checks for different languages and runtimes.
|
||||
|
||||
## Structure
|
||||
|
||||
Repository root contains health packages for each different language or runtime, formatted `<technology>-health`.
|
||||
1
go-health/README.md
Normal file
1
go-health/README.md
Normal file
@@ -0,0 +1 @@
|
||||
# go-health
|
||||
3
go-health/go.mod
Normal file
3
go-health/go.mod
Normal file
@@ -0,0 +1,3 @@
|
||||
module gitea.auvem.com/end/health/go-health
|
||||
|
||||
go 1.25
|
||||
1
go-health/health.go
Normal file
1
go-health/health.go
Normal file
@@ -0,0 +1 @@
|
||||
package health
|
||||
10
node-health/.eslintrc.cjs
Normal file
10
node-health/.eslintrc.cjs
Normal file
@@ -0,0 +1,10 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
extends: ['../../.eslintrc.cjs'],
|
||||
parserOptions: {
|
||||
project: './tsconfig.json',
|
||||
},
|
||||
rules: {
|
||||
// package-level overrides
|
||||
},
|
||||
};
|
||||
1
node-health/.prettierrc.cjs
Normal file
1
node-health/.prettierrc.cjs
Normal file
@@ -0,0 +1 @@
|
||||
module.exports = require('../.prettierrc.cjs');
|
||||
1
node-health/README.md
Normal file
1
node-health/README.md
Normal file
@@ -0,0 +1 @@
|
||||
# @health/node
|
||||
19
node-health/package.json
Normal file
19
node-health/package.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "@health/node",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/index.d.ts",
|
||||
"files": [
|
||||
"dist"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "tsc -p tsconfig.json",
|
||||
"lint": "eslint --ext .ts,.js src",
|
||||
"format": "prettier --write \"src/**/*.{ts,js,json}\"",
|
||||
"test": "echo \"No tests configured\" && exit 0",
|
||||
"check": "npm run lint && npm run build"
|
||||
},
|
||||
"dependencies": {},
|
||||
"devDependencies": {}
|
||||
}
|
||||
30
node-health/src/index.ts
Normal file
30
node-health/src/index.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* Simple liveness & readiness helpers
|
||||
*/
|
||||
|
||||
export type ReadinessResult = {
|
||||
ok: boolean;
|
||||
details: { name: string; ok: boolean; error?: string }[];
|
||||
};
|
||||
|
||||
export function liveness() {
|
||||
return {
|
||||
status: 'ok',
|
||||
timestamp: Date.now(),
|
||||
};
|
||||
}
|
||||
|
||||
export async function readiness(
|
||||
checks: Array<{ name: string; fn: () => Promise<boolean> | boolean }>
|
||||
): Promise<ReadinessResult> {
|
||||
const results: ReadinessResult['details'] = [];
|
||||
for (const c of checks) {
|
||||
try {
|
||||
const r = await Promise.resolve(c.fn());
|
||||
results.push({ name: c.name, ok: !!r });
|
||||
} catch (err: any) {
|
||||
results.push({ name: c.name, ok: false, error: err?.message ?? String(err) });
|
||||
}
|
||||
}
|
||||
return { ok: results.every((r) => r.ok), details: results };
|
||||
}
|
||||
9
node-health/tsconfig.json
Normal file
9
node-health/tsconfig.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"extends": "../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"rootDir": "src",
|
||||
"outDir": "dist",
|
||||
"composite": false
|
||||
},
|
||||
"include": ["src/**/*"]
|
||||
}
|
||||
15
tsconfig.base.json
Normal file
15
tsconfig.base.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "ES2021",
|
||||
"module": "ES2020",
|
||||
"moduleResolution": "node",
|
||||
"declaration": true,
|
||||
"declarationMap": true,
|
||||
"sourceMap": true,
|
||||
"strict": true,
|
||||
"esModuleInterop": true,
|
||||
"skipLibCheck": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"resolveJsonModule": true
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user