blog
Convert Zapier plugin schemas to Typescript definitions
How to convert Zapier plugin schemas to Typescript definitions using the official zapier schemas package
Recently I had to work on the MailSlurp zapier email plugin and realised we didn't have strong typescript definitions for our schemas. So I created this basic script to convert the official zapier schemas into Typescript.
The code
You'll need to set the WD environment variable to your working directory when running the script:
const wd = process.env.WD;
const fs = require("fs");
const { compile } = require("json-schema-to-typescript");
const zapierSchema = require("zapier-platform-schema/exported-schema.json");
const { join } = require("path");
const exportedSchema = JSON.parse(
JSON.stringify(zapierSchema).replace(/"$ref":\s+"\//g, '"$ref":"#/definitions/'),
);
const schema = {
$schema: "http://json-schema.org/draft-07/schema#",
$id: "http://json-schema.org/draft-07/schema#",
name: "AppSchema",
definitions: Object.entries(exportedSchema.schemas).reduce((acc, obj) => {
acc[obj[1].id.replace("/", "")] = obj[1];
return acc;
}, {}),
...{ ...exportedSchema.schemas.AppSchema, id: undefined },
};
compile(schema, {})
.then((ts) => fs.writeFileSync(join(wd, "types.d.ts"), ts))
.then(() => console.log("Types written"))
.catch((err) => {
console.error(err);
process.exit(1);
});