New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

pseudo-json

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pseudo-json

JSON is too simple, not enough for flexible data. So try pseudo-json! Stringify and parse plain js objects as what they look like in the js files. 0 dependency.

latest
Source
npmnpm
Version
0.1.1
Version published
Weekly downloads
2
-50%
Maintainers
1
Weekly downloads
 
Created
Source

PseudoJSON 📝

npm version License: MIT

🚀 Write more flexible configuration files with JavaScript syntax. Synchronously load configs without import().

This library is better suited for Node.js usage, especially when you want to load configs synchronously.

JSON is too simple and restrictive. pseudo-json lets you serialize and parse JavaScript objects exactly as they appear in JS files—with support for Symbol, Map, Set, Date, RegExp, NaN, Infinity, and more.

For more awesome packages, check out my homepage 💛

📦 Installation

npm install pseudo-json
# or
pnpm add pseudo-json

🔥 Quick Start

import { PseudoJSON } from 'pseudo-json';

const js = new PseudoJSON({ indent: 2 });

// Stringify: JavaScript object → string
const config = {
  name: 'my-app',
  version: '1.0.0',
  timeout: Infinity,
  retries: NaN,
  createdAt: new Date(),
  pattern: /\.ts$/,
  secret: Symbol('api-key'),
  cache: new Map([['key', 'value']]),
  tags: new Set(['prod', 'v1']),
};

const code = js.stringify(config);
// Output: JavaScript literal syntax, not JSON!

// Parse: string → JavaScript object
const parsed = js.parse(code);
// All types preserved! Map is Map, Date is Date, Symbol is Symbol

📖 API

new PseudoJSON(options?)

Create a new instance with optional formatting.

const js = new PseudoJSON({
  indent: 2, // number or string, default: no indent
});

stringify(value: unknown): string

Convert a JavaScript value to its literal string representation.

Note: stringify only captures the current value and cannot preserve runtime computation logic.

js.stringify({ a: 1, b: NaN });
// → "{a: 1, b: NaN}"

js.stringify([1, 2, Symbol('key')]);
// → "[1, 2, Symbol(\"key\")]"

parse(code: string): any

Parse a string back into a JavaScript value.

js.parse('{ a: 1, b: NaN }');
// → { a: 1, b: NaN }

js.parse('new Map([["key", "value"]])');
// → Map { 'key' => 'value' }

Note: parse executes the input via the Function constructor and does NOT support import statements. Only pass trusted code and avoid module imports in strings you feed to parse.

generateExportModule(data: unknown): string

Generate a complete ES module with export default.

js.generateExportModule({ config: 'value' });
// → "export default {config: \"value\"}\n"

⚠️ Limitations

⚠️ Simple Use Cases Only: This library is designed for configuration files and simple data structures.

🚫 Not Recommended:

  • ❌ Objects with circular references (will cause stack overflow)
  • ❌ Deeply nested structures (performance may degrade)
  • ❌ Untrusted input (parse something not exported by this library)
  • ❌ DAG structures (same object referenced multiple times)

✅ Best For:

  • ✅ Configuration files
  • ✅ Static data with rich types
  • ✅ Small to medium-sized objects
  • ✅ Trusted input only

📄 License

MIT © Kasukabe Tsumugi

Keywords

json

FAQs

Package last updated on 17 Feb 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts