Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

silver-fleece

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

silver-fleece

Parse and manipulate JSON strings

  • 1.1.0
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

silver-fleece

Forked from golden-fleece but adjusted and simplified to parse normal JSON with comments. This makes it a bit faster, and the output will always be parsable by standard JSON parsers (comments are only added if you add them).

Why?

Patching files like package.json or tsconfig.json.

Usage

Install it with npm install silver-fleece and import it into your app:

import * as fleece from 'silver-fleece';

fleece.parse(str, [options])

const ast = fleece.parse(`true`);
// { start: 0, end: 4, type: 'Literal', raw: 'true', value: true }

The returned AST is ESTree compliant.

You can optionally pass callbacks that are fired whenever a value or comment is encountered:

const ast = fleece.parse(str, {
	onComment: comment => {
		console.log('got a comment', comment);
	},
	onValue: value => {
		console.log('got a value', value);
	}
});

fleece.evaluate(str)

const { answer } = fleece.evaluate(`{ "answer": 42 }`);
answer === 42; // true

fleece.patch(str, value)

This is where it gets fun:

const str = `
	"number": 1,
	"string": "yes",
	"object": { "nested": true },
	"array": ["this", "that", "the other"]
`;

const object = fleece.evaluate(str);
object.number = 42;
object.array[2] = 'EVERYTHING';

fleece.patch(str, object) === `{
	"number": 42,
	"string": "yes",
	"object": { "nested": true },
	"array": ["this", "that", "EVERYTHING"]
}`; // true

Notice that the formatting has been preserved.

fleece.stringify(value, [options])

const object = {
	string: 'hello',
	'quoted-property': 2,
	array: [3, 4]
};

fleece.stringify(object) === `{
	"string": "hello",
	"quoted-property": 2,
	"array": [
		3,
		4
	]
}`; // true

To indent with spaces instead of tabs, pass spaces: n, where n is the number of spaces at each level of indentation.

fleece.stringify(object, {
	spaces: 2
}) === `{
  "string": "hello",
  "quoted-property": 2,
  "array": [
    3,
    4
  ]
}`; // true

Original golden-fleece code is owned and copyrighted by Rich Harris and other contributors. They have released their contributions under the LIL license.

The silver-fleece changes are written by Evert Heylen and are also released under the same LIL license.

FAQs

Package last updated on 12 May 2023

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc