JSPM

  • Created
  • Published
  • Downloads 54
  • Score
    100M100P100Q63255F
  • License MIT

Core utilities and types for Pars framework - Edge compatible

Package Exports

  • @parsrun/core
  • @parsrun/core/decimal
  • @parsrun/core/env
  • @parsrun/core/error-codes
  • @parsrun/core/errors
  • @parsrun/core/logger
  • @parsrun/core/runtime
  • @parsrun/core/transports
  • @parsrun/core/types

Readme

@parsrun/core

Core utilities and types for the Pars framework - Edge compatible.

Features

  • Logger - Structured logging with child loggers
  • Errors - Standardized error classes with codes
  • Runtime Detection - Detect Node, Cloudflare, Deno, Bun
  • Environment - Type-safe environment variable access
  • Utilities - Common helpers (ID generation, crypto, etc.)

Installation

pnpm add @parsrun/core

Usage

Logger

import { createLogger } from "@parsrun/core/logger";

const logger = createLogger({ name: "my-service" });

logger.info("User logged in", { userId: "123" });
logger.error("Failed to process", new Error("timeout"), { requestId: "abc" });

// Child logger
const childLogger = logger.child({ module: "auth" });
childLogger.debug("Token validated");

Errors

import { ParsError, createError, isRetryable } from "@parsrun/core/errors";

// Create error
throw new ParsError("User not found", "USER_NOT_FOUND", 404, {
  userId: "123",
});

// Check if error is retryable
if (isRetryable(error)) {
  await retry();
}

Runtime Detection

import { detectRuntime, isEdgeRuntime } from "@parsrun/core/runtime";

const runtime = detectRuntime(); // "node" | "cloudflare" | "deno" | "bun"

if (isEdgeRuntime()) {
  // Edge-specific code
}

Environment

import { getEnv, requireEnv, EnvSchema } from "@parsrun/core/env";

// Get with fallback
const port = getEnv("PORT", "3000");

// Required (throws if missing)
const secret = requireEnv("AUTH_SECRET");

// Typed schema
const env = EnvSchema.parse({
  DATABASE_URL: requireEnv("DATABASE_URL"),
  REDIS_URL: getEnv("REDIS_URL"),
});

Utilities

import { generateId, sleep, retry } from "@parsrun/core";

// Generate unique ID
const id = generateId(); // "abc123xyz..."

// Sleep
await sleep(1000);

// Retry with backoff
const result = await retry(
  async () => fetchData(),
  { attempts: 3, delay: 100 }
);

Sub-path Imports

import { createLogger } from "@parsrun/core/logger";
import { ParsError } from "@parsrun/core/errors";
import { detectRuntime } from "@parsrun/core/runtime";
import { getEnv } from "@parsrun/core/env";
import { Decimal } from "@parsrun/core/decimal";
import { ERROR_CODES } from "@parsrun/core/error-codes";

License

MIT