6 Commits

Author SHA1 Message Date
naomi 936f588f7e release: v1.1.1
Node.js CI / Lint and Test (push) Successful in 31s
2025-10-07 17:45:02 -07:00
naomi 52190a5112 chore(tools): lint and build before publishing 2025-10-07 17:44:42 -07:00
naomi f0481af558 release: v1.1.0-hotfix
Node.js CI / Lint and Test (push) Successful in 31s
2025-10-07 16:41:10 -07:00
naomi 6f4f06d143 chore: remove sonar workflow
Node.js CI / Lint and Test (push) Successful in 28s
2025-10-07 16:11:56 -07:00
naomi c997e83aa5 release: v1.1.0
Code Analysis / SonarQube (push) Failing after 18s
Node.js CI / Lint and Test (push) Successful in 35s
2025-10-07 16:09:40 -07:00
naomi f2f5d9b1b4 feat: add method for sending metrics 2025-10-07 16:09:20 -07:00
3 changed files with 32 additions and 35 deletions
-34
View File
@@ -1,34 +0,0 @@
name: Code Analysis
on:
push:
branches:
- main
jobs:
sonar:
name: SonarQube
steps:
- name: Checkout Source Files
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: SonarCube Scan
uses: SonarSource/sonarqube-scan-action@v4
timeout-minutes: 10
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: "https://quality.nhcarrigan.com"
with:
args: >
-Dsonar.sources=.
-Dsonar.projectKey=logger
- name: SonarQube Quality Gate check
uses: sonarsource/sonarqube-quality-gate-action@v1
with:
pollingTimeoutSec: 600
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: "https://quality.nhcarrigan.com"
+2 -1
View File
@@ -1,10 +1,11 @@
{
"name": "@nhcarrigan/logger",
"version": "1.0.0",
"version": "1.1.1",
"description": "Our custom logging package, which pipes logs to our alerts server.",
"type": "module",
"main": "prod/index.js",
"scripts": {
"prepublish": "pnpm lint && pnpm build",
"lint": "eslint src --max-warnings 0",
"build": "rm -rf prod && tsc",
"test": "echo \"Error: no test specified\" && exit 0"
+30
View File
@@ -71,4 +71,34 @@ export class Logger {
method: "POST",
});
}
/**
* Sends a counter metric to the alerting service.
* The alerting service is configured to handle aggregation, so you can send
* summative counts or individual increments. (e.g. Send a count of all users, or send a count of 1 every time a user joins).
* @param name -- The name of the metric to track.
* @param value -- The value of the metric to insert.
* @param metadata -- Any metadata to attach to the metric.
*/
public async metric(
name: string,
value: number,
metadata: Record<string, string | number | boolean>,
): Promise<void> {
await fetch(`${this.url}/metric`, {
body: JSON.stringify({
application: this.application,
metadata: metadata,
name: name,
value: value,
}),
headers: {
// eslint-disable-next-line @typescript-eslint/naming-convention -- Standard header name.
"Authorization": this.token,
// eslint-disable-next-line @typescript-eslint/naming-convention -- Standard header name.
"Content-Type": "application/json",
},
method: "POST",
});
}
}