@amritk/mjst 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -2575,6 +2575,21 @@ var buildSchema = async (rootSchema, rootTypeName, extensions, typesOnly, logWar
2575
2575
  return files;
2576
2576
  };
2577
2577
 
2578
+ // ../helpers/dist/derive-root-type-name.js
2579
+ var isObject = (value) => !!value && typeof value === "object" && !Array.isArray(value);
2580
+ var titleToPascalCase = (title) => {
2581
+ const words = title.split(/[^a-zA-Z0-9]+/).filter(Boolean);
2582
+ const pascal = words.map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join("");
2583
+ return pascal.replace(/^\d+/, "");
2584
+ };
2585
+ var deriveRootTypeName = (schema) => {
2586
+ if (!isObject(schema) || typeof schema["title"] !== "string") {
2587
+ return "Document";
2588
+ }
2589
+ const name = titleToPascalCase(schema["title"]);
2590
+ return name || "Document";
2591
+ };
2592
+
2578
2593
  // src/detect-helpers-mode.ts
2579
2594
  import { createRequire as createRequire2 } from "node:module";
2580
2595
  import { resolve } from "node:path";
@@ -2714,7 +2729,9 @@ var run = async () => {
2714
2729
  await mkdir(outputDir, { recursive: true });
2715
2730
  const helpersMode = config.helpers ?? detectHelpersMode(outputDir);
2716
2731
  console.log(`Helpers mode: ${helpersMode}${config.helpers ? " (explicit)" : " (auto-detected)"}`);
2717
- const files = await buildSchema(schema, "Document", undefined, config.typesOnly, config.logWarnings, config.strict, helpersMode);
2732
+ const rootTypeName = deriveRootTypeName(schema);
2733
+ console.log(`Root type: ${rootTypeName}`);
2734
+ const files = await buildSchema(schema, rootTypeName, undefined, config.typesOnly, config.logWarnings, config.strict, helpersMode);
2718
2735
  for (const file of files) {
2719
2736
  const filePath = join(outputDir, file.filename);
2720
2737
  await mkdir(dirname2(filePath), { recursive: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amritk/mjst",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Generate TypeScript parsers and type definitions from JSON Schemas.",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/src/cli.ts CHANGED
@@ -4,6 +4,7 @@ import { mkdir, readFile, unlink, writeFile } from 'node:fs/promises'
4
4
  import { dirname, join, resolve } from 'node:path'
5
5
  import { promisify } from 'node:util'
6
6
  import { buildSchema } from '@amritk/generate-parsers'
7
+ import { deriveRootTypeName } from '@amritk/helpers/derive-root-type-name'
7
8
  import type { JSONSchema } from 'json-schema-typed/draft-2020-12'
8
9
 
9
10
  const execFileAsync = promisify(execFile)
@@ -63,9 +64,12 @@ const run = async (): Promise<void> => {
63
64
  const helpersMode = config.helpers ?? detectHelpersMode(outputDir)
64
65
  console.log(`Helpers mode: ${helpersMode}${config.helpers ? ' (explicit)' : ' (auto-detected)'}`)
65
66
 
67
+ const rootTypeName = deriveRootTypeName(schema)
68
+ console.log(`Root type: ${rootTypeName}`)
69
+
66
70
  const files = await buildSchema(
67
71
  schema as JSONSchema,
68
- 'Document',
72
+ rootTypeName,
69
73
  undefined,
70
74
  config.typesOnly,
71
75
  config.logWarnings,