ng-packagr
Version:
Compile and package Angular libraries in Angular Package Format (APF)
1 lines • 4.78 kB
Source Map (JSON)
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/lib/ng-package/schema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAyD;AAGzD,kDAAoC;AAEpC,iDAAiD;AACjD,IAAI,2BAAyD,CAAC;AAC9D,IAAI,qCAAmE,CAAC;AAExE;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAC,aAAsB;IAC5D,MAAM,QAAQ,GAAG,CAAC,2BAA2B,aAA3B,2BAA2B,cAA3B,2BAA2B,IAA3B,2BAA2B,GAAK,kBAAkB,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,EAAC,CAAC;IAC/G,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,qDAAqD,4BAA4B,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CACrG,CAAC;IACJ,CAAC;AACH,CAAC;AARD,0DAQC;AAED;;;;;GAKG;AACH,SAAgB,iCAAiC,CAC/C,aAAsB;IAEtB,MAAM,QAAQ,GAAG,CAAC,qCAAqC,aAArC,qCAAqC,cAArC,qCAAqC,IAArC,qCAAqC,GAAK,kBAAkB,CAC5E,OAAO,CAAC,iCAAiC,CAAC,CAC3C,EAAC,CAAC;IACH,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,qDAAqD,4BAA4B,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CACrG,CAAC;IACJ,CAAC;AACH,CAAC;AAZD,8EAYC;AAED,SAAS,4BAA4B,CAAC,MAAqB;IACzD,OAAO,MAAM;SACV,GAAG,CAAC,GAAG,CAAC,EAAE;QACT,IAAI,OAAO,GAAG,aAAa,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAC7E,IAAI,GAAG,CAAC,OAAO,KAAK,sBAAsB,EAAE,CAAC;YAC3C,OAAO,IAAI,KAAM,GAAG,CAAC,MAAc,CAAC,kBAAkB,GAAG,CAAC;QAC5D,CAAC;QAED,OAAO,OAAO,GAAG,GAAG,CAAC;IACvB,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,MAAM,IAAI,GAAG,IAAI,aAAG,CAAC;QACnB,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,KAAK,EAAE,+GAA+G;KAC/H,CAAC,CAAC;IAEH,sCAAsC;IACtC,IAAI,CAAC,UAAU,CAAC;QACd,OAAO,EAAE,cAAc;QACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE;YAClD,IAAI,MAAM,EAAE,CAAC;gBACX,GAAG,CAAC,IAAI,CACN,WAAW,OAAO,CAAC,kBAAkB,kBAAkB,OAAO,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CACzG,CAAC;YACJ,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC","sourcesContent":["import Ajv, { ErrorObject, ValidateFunction } from 'ajv';\nimport { NgPackageEntryConfig } from '../../ng-entrypoint.schema';\nimport { NgPackageConfig } from '../../ng-package.schema';\nimport * as log from '../utils/log';\n\n/** Lazily initialized ajv validator instance. */\nlet ajvNgPackageSchemaValidator: ValidateFunction | undefined;\nlet ajvNgPackageEntryPointSchemaValidator: ValidateFunction | undefined;\n\n/**\n * Validates the `ngPackageJson` value against the JSON schema using ajv. An error is thrown if\n * schema errors are found.\n *\n * @param ngPackageJson The value to validate.\n */\nexport function validateNgPackageSchema(ngPackageJson: unknown): asserts ngPackageJson is NgPackageConfig {\n const validate = (ajvNgPackageSchemaValidator ??= getSchemaValidator(require('../../ng-package.schema.json')));\n const isValid = validate(ngPackageJson);\n if (!isValid) {\n throw new Error(\n `Configuration doesn't match the required schema.\\n${formatSchemaValidationErrors(validate.errors)}`,\n );\n }\n}\n\n/**\n * Validates the `ngPackageJson` value against the JSON schema using ajv. An error is thrown if\n * schema errors are found.\n *\n * @param ngPackageJson The value to validate.\n */\nexport function validateNgPackageEntryPointSchema(\n ngPackageJson: unknown,\n): asserts ngPackageJson is NgPackageEntryConfig {\n const validate = (ajvNgPackageEntryPointSchemaValidator ??= getSchemaValidator(\n require('../../ng-entrypoint.schema.json'),\n ));\n const isValid = validate(ngPackageJson);\n if (!isValid) {\n throw new Error(\n `Configuration doesn't match the required schema.\\n${formatSchemaValidationErrors(validate.errors)}`,\n );\n }\n}\n\nfunction formatSchemaValidationErrors(errors: ErrorObject[]): string {\n return errors\n .map(err => {\n let message = `Data path ${JSON.stringify(err.instancePath)} ${err.message}`;\n if (err.keyword === 'additionalProperties') {\n message += ` (${(err.params as any).additionalProperty})`;\n }\n\n return message + '.';\n })\n .join('\\n');\n}\n\n/**\n * Returns an initialized ajv validator for the ng-package JSON schema.\n */\nfunction getSchemaValidator(schema: unknown): ValidateFunction {\n const _ajv = new Ajv({\n useDefaults: true,\n strict: false, // strict mode is enabled by default in JSON schema type definitions, which disallows the use of `useDefaults`.\n });\n\n // Add handler for x-deprecated fields\n _ajv.addKeyword({\n keyword: 'x-deprecated',\n validate: (schema, _data, _parentSchema, dataCxt) => {\n if (schema) {\n log.warn(\n `Option \"${dataCxt.parentDataProperty}\" is deprecated${typeof schema == 'string' ? ': ' + schema : '.'}`,\n );\n }\n\n return true;\n },\n errors: false,\n });\n\n return _ajv.compile(schema);\n}\n"]}