core-types-literals
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

core-types-literals

A core-types-compliant reader for literal JSON, YAML, and TOML files. This is useful if you want to generate a TypeScript interface for your literal JSON file, like a locale object using Typeconv.

Usage

Install this package and typeconv:

npm add -D core-types-literals typeconv

Then create a JS file like this:

import { makeConverter, getTypeScriptWriter } from "typeconv";
import { convertYamlToCoreTypes } from "core-types-literals";

/** @returns {import("typeconv").Reader} */
export function getYamlLiteralReader(name) {
  return {
    kind: "yaml",
    read: (x) => convertYamlToCoreTypes(x, name),
  };
}

const { convert } = makeConverter(
  getYamlLiteralReader("MyInterfaceName"),
  getTypeScriptWriter({ warn: console.warn }),
);

const inputYaml = { data: "hello: World" };
const { data: outputTs } = await convert(inputYaml);
console.log(outputTs);
// export interface MyInterfaceName {
//   hello: "World";
// }

Or combine with reading from/writing to files:

// same stuff as above…
import { readFile, writeFile } from "fs/promises";

const inputFileUrl = new URL("../locales/en.yaml", import.meta.url);
const outputTypingsUrl = new URL("./en.i18n.d.ts", import.meta.url);
readFile(i18nFileUrl, "utf8")
  .then((yamlContents) => convert({ data: yamlContents }))
  .then(({ data: tsInterface }) => writeFile(typingsUrl, tsInterface));

License

ISC

Package Sidebar

Install

npm i core-types-literals

Weekly Downloads

186

Version

1.0.1

License

ISC

Unpacked Size

27.2 kB

Total Files

15

Last publish

Collaborators

  • illright