json-schema-to-typescript icon indicating copy to clipboard operation
json-schema-to-typescript copied to clipboard

Compilation crashes if a `title` prop starts with a number

Open erunion opened this issue 3 years ago • 3 comments

const { compile } = require('.');

const schema = {
  "title": "2022 Example Schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "example": "61e36b8fc12c4d8fd0842f76"
    }
  }
};

compile(schema).then(ts => console.log);
(node:39640) UnhandledPromiseRejectionWarning: SyntaxError: Declaration or statement expected. (8:1)
   6 | */
   7 |
>  8 | export interface 22ExampleSchema {
     | ^
   9 | id?: string
  10 | [k: string]: unknown
  11 | }
    at Ve (/Users/erunion/code/erunion/json-schema-to-typescript/node_modules/prettier/parser-typescript.js:1:15607)
    at vz (/Users/erunion/code/erunion/json-schema-to-typescript/node_modules/prettier/parser-typescript.js:280:5919)
    at Object.yz [as parse] (/Users/erunion/code/erunion/json-schema-to-typescript/node_modules/prettier/parser-typescript.js:280:6242)
    at Object.parse (/Users/erunion/code/erunion/json-schema-to-typescript/node_modules/prettier/index.js:7334:23)
    at coreFormat (/Users/erunion/code/erunion/json-schema-to-typescript/node_modules/prettier/index.js:8645:18)
    at formatWithCursor2 (/Users/erunion/code/erunion/json-schema-to-typescript/node_modules/prettier/index.js:8837:18)
    at /Users/erunion/code/erunion/json-schema-to-typescript/node_modules/prettier/index.js:37229:12
    at format (/Users/erunion/code/erunion/json-schema-to-typescript/node_modules/prettier/index.js:37243:12)
    at format (/Users/erunion/code/erunion/json-schema-to-typescript/dist/src/formatter.js:20:34)
    at /Users/erunion/code/erunion/json-schema-to-typescript/dist/src/index.js:163:56
(Use `node --trace-warnings ...` to show where the warning was created)
(node:39640) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:39640) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

I can fix this by removing proceeding numbers from title and name props in the schemas I'm supplying but it'd be nice if the library was able to detect this and strip them themselves so any interface or type name it generates is valid.

erunion avatar Oct 04 '22 01:10 erunion

I'm working on this.

TravisChong avatar Jul 07 '23 21:07 TravisChong