https://github.com/mkacct/cdif-ts
cDIF parser/serializer written in TypeScript
https://github.com/mkacct/cdif-ts
cdif data-interchange data-serialization parser serialization structured-data
Last synced: 4 months ago
JSON representation
cDIF parser/serializer written in TypeScript
- Host: GitHub
- URL: https://github.com/mkacct/cdif-ts
- Owner: mkacct
- License: lgpl-3.0
- Created: 2025-06-20T06:32:49.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-07-22T07:22:15.000Z (10 months ago)
- Last Synced: 2025-07-22T07:33:46.258Z (10 months ago)
- Topics: cdif, data-interchange, data-serialization, parser, serialization, structured-data
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/@mkacct/cdif
- Size: 169 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
README
# cDIF for TypeScript
[](https://www.npmjs.com/package/@mkacct/cdif)
This is a parser and serializer for [cDIF](https://github.com/mkacct/cdif/blob/main/spec.md), an intuitive and versatile textual data interchange format. The package is written in TypeScript, so it includes type definitions. It is up to date with cDIF version 1.0.2.
To install:
```sh
npm install @mkacct/cdif
```
## Basic usage
The following examples demonstrate the most basic usage of this library. The behavior can be customized in many ways; please see the documentation for details.
### CDIF version
The `CDIF` constructor takes one optional argument, which is the major version of the cDIF specification by which it should abide. (If it is omitted, the latest version will be assumed.)
```typescript
const cdif = new CDIF(); // defaults to latest version
const cdif1 = new CDIF(1);
```
### Parsing
`CDIF.parse()` can be used to parse any cDIF text (with or without `#` directives).
An optional second argument (not shown in the example) may be supplied to configure the parser; check the documentation for all available [parser configuration options](https://github.com/mkacct/cdif-ts/wiki/Configuration%3A-Parser).
```typescript
const cdif = new CDIF();
const cdifText: string = /* input cDIF text */;
const value: unknown = cdif.parse(cdifText); // JS value
```
### Serialization
`CDIF.serialize()` returns a plain cDIF value (no `#` directives), while `CDIF.serializeFile()` allows you to add various file format elements to the output. (Check the documentation for all available [file formatter configuration options](https://github.com/mkacct/cdif-ts/wiki/Configuration%3A-File-formatter).)
While not strictly necessary, configuration options are used in this example to enable formatted ("pretty-printed") output. They are supplied as an optional second argument to both `CDIF.serialize()` and `CDIF.serializeFile()`; check the documentation for all available [serializer configuration options](https://github.com/mkacct/cdif-ts/wiki/Configuration%3A-Serializer).
```typescript
const cdif = new CDIF();
const value: unknown = /* input JS value */;
const serializerOptions: CDIFSerializerOptions = {
indent: "\t", // or any other string (ex. " "), or omit to output as one line
structureEntrySeparator: ";" // or ","
};
// For general use:
const valueText: string = cdif.serialize(value, serializerOptions); // cDIF value text
// For file output:
const fileText: string = cdif.serializeFile(value, serializerOptions, {
cdifVersionString: "1.0.2"
}); // cDIF file text (includes initial "cDIF" directive)
```
## Documentation
Check the GitHub [wiki](https://github.com/mkacct/cdif-ts/wiki) for documentation, including [guides](https://github.com/mkacct/cdif-ts/wiki#guides) and [API reference](https://github.com/mkacct/cdif-ts/wiki#api-reference).