Utilities to generate JavaScript code.
# ✨ Auto-detect
npx nypm install knitwork
# npm
npm install knitwork
# yarn
yarn add knitwork
# pnpm
pnpm install knitwork
# bun
bun install knitwork
Generating ESM syntax:
import { genImport, genExport } from "knitwork";
// import foo from "pkg"
console.log(genImport("pkg", "foo"));
// import { foo } from "pkg"
console.log(genImport("pkg", ["foo"]));
// import { a, b } from "pkg"
console.log(genImport("pkg", ["a", "b"]));
// import { default as bar } from "pkg";
console.log(genImport("pkg", [{ name: "default", as: "bar" }]));
// import { foo as bar } from "pkg";
console.log(genImport("pkg", [{ name: "foo", as: "bar" }]));
// import foo from "pkg" assert { type: "json" };
console.log(genImport("pkg", "foo", { assert: { type: "json" } }));
// export foo from "pkg"
console.log(genExport("pkg", "foo"));
// export { a, b } from "pkg"
console.log(genExport("pkg", ["a", "b"]));
// export * as bar from "pkg"
console.log(genExport("pkg", { name: "*", as: "bar" }));
// export foo from "pkg" assert { type: "json" };
console.log(genExport("pkg", "foo", { assert: { type: "json" } }));
Generating TS:
import {
genInterface,
genAugmentation,
genInlineTypeImport,
genTypeImport,
genTypeExport,
} from "knitwork";
// interface FooInterface extends A, B {
// name: boolean
// optional?: string
// }
console.log(
genInterface(
"FooInterface",
{ name: "boolean", "optional?": "string" },
{ extends: ["A", "B"] },
),
);
// declare module "my-module" {
// interface MyInterface {}
// }
console.log(genAugmentation("my-module", { MyInterface: {} }));
// typeof import("my-module").genString'
console.log(genInlineTypeImport("my-module", "genString"));
// typeof import("my-module").default'
console.log(genInlineTypeImport("my-module"));
// import type { test as value } from "my-module";
console.log(genTypeImport("my-module", [{ name: "test", as: "value" }]));
// export type { test } from "my-module";
console.log(genTypeExport("my-module", ["test"]));
Serializing JS objects:
import {
genObjectFromRaw,
genObjectFromRawEntries,
genArrayFromRaw,
} from "knitwork";
// { foo: 'bar', test: () => import("pkg") }
console.log(genObjectFromValues({ foo: "bar", test: '() => import("pkg")' }));
// { test: () => import("pkg") }
console.log(genObjectFromRaw({ test: '() => import("pkg")' }));
// { 0: [ test, () => import("pkg") ] }
console.log(genObjectFromRaw([["test", '() => import("pkg")']]));
const entries = Object.entries({
a: 1,
b: null,
c: '"c"',
nest: { hello: '"world"', fn: () => 1 },
});
// { a: 1, b: null, c: "c", nest: { hello: "world", fn: () => 1 } }
console.log(genObjectFromRawEntries(entries));
// [ 1, 2, () => import("pkg") ]
console.log(genArrayFromRaw(["1", "2", '() => import("pkg")']));
Generating safe variable names:
import { genSafeVariableName } from "knitwork";
// _123_32foo
genSafeVariableName("123 foo");
// _for
genSafeVariableName("for");
Local development
Published under the MIT license.
Made by @pi0, @danielroe and community 💛
🤖 auto updated with automd