@hasna/uptime 0.1.14 → 0.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -6,6 +6,24 @@ project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.1.16] - 2026-06-28
10
+
11
+ ### Changed
12
+
13
+ - Changed the packaged production Dockerfile to install Bun in an ECR Public
14
+ Node Alpine build stage, then copy only Bun, app files, and production
15
+ dependencies into an ECR Public Alpine runtime with CA certificates. This
16
+ reduces inherited OS vulnerability findings before live AWS scale-up.
17
+
18
+ ## [0.1.15] - 2026-06-28
19
+
20
+ ### Changed
21
+
22
+ - Changed the packaged production Dockerfile to use Docker Official
23
+ `node:22-slim` from Amazon ECR Public and install Bun inside the image. This
24
+ avoids Docker Hub unauthenticated pull-rate limits during AWS CodeBuild image
25
+ builds.
26
+
9
27
  ## [0.1.14] - 2026-06-28
10
28
 
11
29
  ### Added
@@ -1,17 +1,26 @@
1
1
  # syntax=docker/dockerfile:1
2
2
 
3
- FROM oven/bun:1.3.13-slim AS runtime
3
+ FROM public.ecr.aws/docker/library/node:22-alpine AS bun
4
+
5
+ RUN npm install -g bun@1.3.13
6
+
7
+ FROM public.ecr.aws/docker/library/alpine:3.22 AS runtime
4
8
  ENV NODE_ENV=production \
5
9
  HASNA_UPTIME_MODE=hosted
6
10
  WORKDIR /app
7
11
 
8
- RUN addgroup --system --gid 10001 uptime \
9
- && adduser --system --uid 10001 --ingroup uptime uptime
12
+ RUN apk add --no-cache ca-certificates \
13
+ && addgroup -g 10001 -S uptime \
14
+ && adduser -S -D -H -u 10001 -G uptime uptime
15
+
16
+ COPY --from=bun /usr/local/bin/bun /usr/local/bin/bun
17
+ COPY --from=bun /usr/local/lib/node_modules/bun /usr/local/lib/node_modules/bun
10
18
 
11
19
  COPY package.json ./package.json
12
20
  COPY dist ./dist
13
21
 
14
- RUN bun install --production
22
+ RUN bun install --production \
23
+ && chown -R uptime:uptime /app
15
24
 
16
25
  USER uptime
17
26
  EXPOSE 3899
package/dist/cli/index.js CHANGED
@@ -6932,7 +6932,7 @@ function buildAwsDeploymentPlan(options = {}) {
6932
6932
  const image = clean(options.image, `${imageRepositoryUri}@sha256:<image-digest>`);
6933
6933
  const evidenceBucket = clean(options.evidenceBucket, `hasna-${stage}-${prefix}-evidence`);
6934
6934
  const hostedSqliteDbPath = clean(options.hostedSqliteDbPath, DEFAULT_HOSTED_SQLITE_DB);
6935
- const runtimePackageVersion = clean(options.runtimePackageVersion, "0.1.14");
6935
+ const runtimePackageVersion = clean(options.runtimePackageVersion, "0.1.16");
6936
6936
  const protectedAccessMode = options.protectedAccessMode ?? DEFAULT_PROTECTED_ACCESS_MODE;
6937
6937
  const protectedAccessUrl = protectedAccessMode === "cloudfront_default_domain" ? "https://<cloudfront-domain>" : `https://${hostname}`;
6938
6938
  const cluster = `${prefix}-${stage}`;
@@ -21,7 +21,7 @@ function buildAwsDeploymentPlan(options = {}) {
21
21
  const image = clean(options.image, `${imageRepositoryUri}@sha256:<image-digest>`);
22
22
  const evidenceBucket = clean(options.evidenceBucket, `hasna-${stage}-${prefix}-evidence`);
23
23
  const hostedSqliteDbPath = clean(options.hostedSqliteDbPath, DEFAULT_HOSTED_SQLITE_DB);
24
- const runtimePackageVersion = clean(options.runtimePackageVersion, "0.1.14");
24
+ const runtimePackageVersion = clean(options.runtimePackageVersion, "0.1.16");
25
25
  const protectedAccessMode = options.protectedAccessMode ?? DEFAULT_PROTECTED_ACCESS_MODE;
26
26
  const protectedAccessUrl = protectedAccessMode === "cloudfront_default_domain" ? "https://<cloudfront-domain>" : `https://${hostname}`;
27
27
  const cluster = `${prefix}-${stage}`;
package/dist/index.js CHANGED
@@ -4338,7 +4338,7 @@ function buildAwsDeploymentPlan(options = {}) {
4338
4338
  const image = clean(options.image, `${imageRepositoryUri}@sha256:<image-digest>`);
4339
4339
  const evidenceBucket = clean(options.evidenceBucket, `hasna-${stage}-${prefix}-evidence`);
4340
4340
  const hostedSqliteDbPath = clean(options.hostedSqliteDbPath, DEFAULT_HOSTED_SQLITE_DB);
4341
- const runtimePackageVersion = clean(options.runtimePackageVersion, "0.1.14");
4341
+ const runtimePackageVersion = clean(options.runtimePackageVersion, "0.1.16");
4342
4342
  const protectedAccessMode = options.protectedAccessMode ?? DEFAULT_PROTECTED_ACCESS_MODE;
4343
4343
  const protectedAccessUrl = protectedAccessMode === "cloudfront_default_domain" ? "https://<cloudfront-domain>" : `https://${hostname}`;
4344
4344
  const cluster = `${prefix}-${stage}`;
@@ -16,7 +16,7 @@ alb_ingress_cidr_blocks = []
16
16
  private_subnet_ids = ["subnet-replace-private-a", "subnet-replace-private-b"]
17
17
  private_route_table_ids = ["rtb-replace-private"]
18
18
  container_image = "123456789012.dkr.ecr.us-east-1.amazonaws.com/open-uptime@sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
19
- runtime_package_version = "0.1.14"
19
+ runtime_package_version = "0.1.16"
20
20
  certificate_arn = null
21
21
  hosted_zone_id = null
22
22
  app_env_secret_arn = "arn:aws:secretsmanager:us-east-1:123456789012:secret:open-uptime/prod/app/env"
@@ -116,7 +116,7 @@ variable "container_image" {
116
116
  variable "runtime_package_version" {
117
117
  description = "Published @hasna/uptime package version that CodeBuild should build into the ECR image."
118
118
  type = string
119
- default = "0.1.14"
119
+ default = "0.1.16"
120
120
 
121
121
  validation {
122
122
  condition = can(regex("^[0-9]+\\.[0-9]+\\.[0-9]+(-[0-9A-Za-z.-]+)?$", var.runtime_package_version))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hasna/uptime",
3
- "version": "0.1.14",
3
+ "version": "0.1.16",
4
4
  "description": "Local-first uptime and downtime monitoring service with CLI, MCP, SDK, SQLite persistence, and a dashboard.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",