npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@dmc--98/dfe-server

v1.0.0

Published

Framework-agnostic backend logic for Dynamic Form Engine

Readme

@dmc--98/dfe-server

Framework-agnostic backend logic: adapter interfaces, the step submission pipeline, analytics, collaboration contracts, and compliance-supporting controls.

Install

npm install @dmc--98/dfe-server @dmc--98/dfe-core zod

DatabaseAdapter Interface

The core abstraction for connecting DFE to your database:

interface DatabaseAdapter {
  // Form definitions
  getFormBySlug(slug: string): Promise<FormVersionRecord | null>
  getFormById(id: string): Promise<FormVersionRecord | null>
  listForms(params?: PaginationParams): Promise<PaginatedResult<FormDefinitionRecord>>

  // Submissions
  createSubmission(data: {...}): Promise<FormSubmissionRecord>
  getSubmission(id: string): Promise<FormSubmissionRecord | null>
  updateSubmission(id: string, data: {...}): Promise<FormSubmissionRecord>

  // Dynamic resources (API contract execution)
  executeApiContract(contract: StepApiContract, body: Record<string, unknown>): Promise<Record<string, unknown>>

  // Dynamic options
  fetchFieldOptions(fieldId: string, params: PaginationParams): Promise<PaginatedResult<SelectOption>>
}

Implement this interface for your ORM, or use the built-in adapters:

Step Submission Pipeline

import { executeStepSubmit, completeSubmission } from '@dmc--98/dfe-server'

// Submit a step
const result = await executeStepSubmit({
  form,           // FormVersionRecord
  stepId,         // which step
  payload,        // { values, context }
  db,             // DatabaseAdapter
  submissionId,   // submission ID
})

if (result.success) {
  // result.context has updated runtime context
}

// Complete the form
await completeSubmission(db, submissionId, context)

Pipeline Steps

  1. Find the step definition
  2. Validate field values against Zod schema
  3. Execute each API contract in order
  4. Propagate response values into runtime context
  5. Update the submission record

Utility Functions

| Function | Description | |----------|-------------| | resolveEndpoint(template, context) | Replace {placeholders} in URL templates | | buildContractBody(contract, values, context) | Build API request body from field mapping | | propagateContext(contract, response, context) | Extract response values into context |

HIPAA-Supporting Controls

@dmc--98/dfe-server now also exposes:

  • protected-field policy derivation from field config metadata
  • encrypted-at-rest submission vault helpers via createAesGcmFieldProtector() and storeProtectedValuesInContext()
  • audit log interfaces plus createInMemoryAuditLogStore() for local and example use
  • analytics redaction helpers via sanitizeAnalyticsEventForCompliance() and sanitizeAnalyticsEventsForCompliance()

Use these as compliance-supporting building blocks. They help you implement stricter handling for sensitive fields, but they do not by themselves certify your deployment as HIPAA compliant.


Links