@storm-software/workspace-tools
Version:
Tools for managing a Storm workspace, including various Nx generators and executors for common development tasks.
77 lines (74 loc) • 2.25 kB
JavaScript
import {
withRunGenerator
} from "./chunk-C76K2E2A.mjs";
import {
schemaRegistry,
workspaceConfigSchema
} from "./chunk-4PKTZSV2.mjs";
import {
writeInfo,
writeSuccess,
writeTrace
} from "./chunk-MMA4S6LZ.mjs";
import {
findWorkspaceRoot
} from "./chunk-3J2CP54B.mjs";
// src/generators/config-schema/generator.ts
import { formatFiles, writeJson } from "@nx/devkit";
import * as z from "zod";
async function configSchemaGeneratorFn(tree, options, config) {
writeInfo(
"\u{1F4E6} Running Storm Workspace Configuration JSON Schema generator",
config
);
writeTrace(
`Determining the Storm Workspace Configuration JSON Schema...`,
config
);
const jsonSchema = z.toJSONSchema(workspaceConfigSchema, {
target: "draft-7",
metadata: schemaRegistry
});
jsonSchema.$id ??= "https://public.storm-cdn.com/schemas/storm-workspace.schema.json";
jsonSchema.title ??= "Storm Workspace Configuration JSON Schema";
jsonSchema.description ??= "This JSON Schema defines the structure of the Storm Workspace configuration file (`storm-workspace.json`). It is used to validate the configuration file and ensure that it adheres to the expected format.";
writeTrace(jsonSchema, config);
if (!options.outputFile) {
throw new Error(
"The `outputFile` option is required. Please specify the output file path."
);
}
const outputPath = options.outputFile.replaceAll("{workspaceRoot}", "").replaceAll(
config?.workspaceRoot ?? findWorkspaceRoot(),
options.outputFile.startsWith("./") ? "" : "./"
);
writeTrace(
`\u{1F4DD} Writing Storm Configuration JSON Schema to "${outputPath}"`,
config
);
writeJson(tree, outputPath, jsonSchema, { spaces: 2 });
await formatFiles(tree);
writeSuccess(
"\u{1F680} Storm Configuration JSON Schema creation has completed successfully!",
config
);
return {
success: true
};
}
var generator_default = withRunGenerator(
"Configuration Schema Creator",
configSchemaGeneratorFn,
{
hooks: {
applyDefaultOptions: (options) => {
options.outputFile ??= "{workspaceRoot}/storm-workspace.schema.json";
return options;
}
}
}
);
export {
configSchemaGeneratorFn,
generator_default
};