{
  "$schema": "http://json-schema.org/schema",
  "id": "https://github.com/ng-packagr/ng-packagr/blob/master/src/ng-package.schema.json",
  "title": "NgPackageConfig",
  "description": "JSON Schema for `ng-package.json` description file",
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string"
    },
    "deleteDestPath": {
      "description": "Delete output path before build.",
      "type": "boolean",
      "default": true
    },
    "dest": {
      "description": "Destination folder where distributable binaries of the Angular library are written (default: `dist`).",
      "type": "string",
      "default": "dist"
    },
    "keepLifecycleScripts": {
      "description": "Enable this to keep the 'scripts' section in package.json. Read the NPM Blog on 'Package install scripts vulnerability' – http://blog.npmjs.org/post/141702881055/package-install-scripts-vulnerability",
      "type": "boolean",
      "default": false
    },
    "whitelistedNonPeerDependencies": {
      "description": "A list of dependencies that are allowed in the 'dependencies' and 'devDependencies' section of package.json. Values in the list are regular expressions matched against npm package names.",
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": ["tslib"]
    },
    "assets": {
      "type": "array",
      "description": "A list of files which are simply copied into the package.",
      "items": {
        "type": "string"
      },
      "default": []
    },
    "lib": {
      "description": "Description of the library's entry point.",
      "type": "object",
      "additionalProperties": false,
      "default": {},
      "properties": {
        "entryFile": {
          "description": "Entry file to the public API (default: `src/public_api.ts`).",
          "type": "string",
          "default": "src/public_api.ts"
        },
        "flatModuleFile": {
          "description": "Filename of the auto-generated flat module file (if empty, defaults to the package name as given in `package.json`).",
          "type": "string"
        },
        "umdModuleIds": {
          "description": "A map of external dependencies and their correspondent UMD module identifiers. Map keys are TypeScript / EcmaScript module identifiers. Map values are UMD module ids. The purpose of this map is to correctly bundle an UMD module file (with `rollup`). By default, `rxjs`, `tslib` and `@angular/*` dependency symbols are supported.",
          "type": "object",
          "additionalProperties": true
        },
        "jsx": {
          "description": "A property to indicate whether your library is going to be bundling jsx/tsx files. This passes through to tsconfig - see https://www.typescriptlang.org/docs/handbook/jsx.html",
          "type": "string",
          "enum": ["preserve", "react", "react-native", ""],
          "default": ""
        },
        "cssUrl": {
          "description": "Embed assets in css file using data URIs - see https://css-tricks.com/data-uris",
          "type": "string",
          "enum": ["none", "inline"],
          "default": "none"
        },
        "styleIncludePaths": {
          "description": "Any additional paths that should be used to resolve style imports",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "languageLevel": {
          "description": "Set typescript language level, i.e. tsconfig.lib. This will enable accessing typescript features available in es2016, es2017, etc.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "amdId": {
          "description": "ID for AMD module. By default, uses a value derived from the entry point's module ID (i.e., name property in package.json)",
          "type": "string"
        },
        "umdId": {
          "description": "ID for the UMD bundle. By default, uses a value derived from the entry point's module ID (i.e., name property in package.json)",
          "type": "string"
        }
      }
    }
  },
  "required": [],
  "additionalProperties": false
}
