1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import definitions from "../../lib/definitions/index.js";
-
- function addAssertHelper(type) {
- const result =
- definitions.NODE_FIELDS[type] || definitions.FLIPPED_ALIAS_KEYS[type]
- ? `node is t.${type}`
- : "boolean";
-
- return `export function assert${type}(node: object | null | undefined, opts?: object | null): asserts ${
- result === "boolean" ? "node" : result
- } {
- assert("${type}", node, opts) }
- `;
- }
-
- export default function generateAsserts() {
- let output = `/*
- * This file is auto-generated! Do not modify it directly.
- * To re-generate run 'make build'
- */
- import is from "../../validators/is";
- import type * as t from "../..";
-
- function assert(type: string, node: any, opts?: any): void {
- if (!is(type, node, opts)) {
- throw new Error(
- \`Expected type "\${type}" with option \${JSON.stringify(opts)}, \` +
- \`but instead got "\${node.type}".\`,
- );
- }
- }\n\n`;
-
- Object.keys(definitions.VISITOR_KEYS).forEach(type => {
- output += addAssertHelper(type);
- });
-
- Object.keys(definitions.FLIPPED_ALIAS_KEYS).forEach(type => {
- output += addAssertHelper(type);
- });
-
- Object.keys(definitions.DEPRECATED_KEYS).forEach(type => {
- const newType = definitions.DEPRECATED_KEYS[type];
- output += `export function assert${type}(node: any, opts: any): void {
- console.trace("The node type ${type} has been renamed to ${newType}");
- assert("${type}", node, opts);
- }\n`;
- });
-
- return output;
- }
|