{
  "id": "#",
  "title": "Node Library Generator",
  "description": "A type definition for a NodeJs library generator schema",
  "required": [
    "directory",
    "name"
  ],
  "properties": {
    "directory": {
      "title": "Directory",
      "type": "string",
      "description": "The directory to create the library in",
      "id": "#directory"
    },
    "name": {
      "title": "Name",
      "type": "string",
      "description": "The name of the library",
      "id": "#name"
    },
    "description": {
      "title": "Description",
      "type": "string",
      "description": "The description of the library",
      "id": "#description"
    },
    "buildExecutor": {
      "title": "Build Executor",
      "type": "string",
      "description": "The executor to use for building the library",
      "id": "#buildExecutor",
      "default": "@storm-software/workspace-tools:unbuild"
    },
    "platform": {
      "title": "Platform",
      "type": "string",
      "description": "The platform to target with the library",
      "enum": [
        "node",
        "neutral"
      ],
      "id": "#platform",
      "default": "node"
    },
    "importPath": {
      "title": "Import Path",
      "type": "string",
      "description": "The import path for the library",
      "id": "#importPath"
    },
    "tags": {
      "title": "Tags",
      "type": "string",
      "description": "The tags for the library",
      "id": "#tags"
    },
    "unitTestRunner": {
      "title": "Unit Test Runner",
      "type": "string",
      "enum": [
        "jest",
        "vitest",
        "none"
      ],
      "description": "The unit test runner to use",
      "id": "#unitTestRunner"
    },
    "testEnvironment": {
      "title": "Test Environment",
      "type": "string",
      "enum": [
        "jsdom",
        "node"
      ],
      "description": "The test environment to use",
      "id": "#testEnvironment"
    },
    "pascalCaseFiles": {
      "title": "Pascal Case Files",
      "type": "boolean",
      "description": "Use PascalCase for file names",
      "id": "#pascalCaseFiles",
      "default": false
    },
    "strict": {
      "title": "Strict",
      "type": "boolean",
      "description": "Enable strict mode",
      "id": "#strict",
      "default": true
    },
    "publishable": {
      "title": "Publishable",
      "type": "boolean",
      "description": "Make the library publishable",
      "id": "#publishable",
      "default": false
    },
    "buildable": {
      "title": "Buildable",
      "type": "boolean",
      "description": "Make the library buildable",
      "id": "#buildable",
      "default": true
    }
  },
  "type": "object",
  "default": {
    "buildExecutor": "@storm-software/workspace-tools:unbuild",
    "platform": "node",
    "pascalCaseFiles": false,
    "strict": true,
    "publishable": false,
    "buildable": true
  }
}