ng-packagr 17.1.0-next.4 → 17.1.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.
@@ -67,7 +67,18 @@ async function resolveUserPackage(folderPathOrFilePath, isSecondary = false) {
67
67
  }
68
68
  if (ngPackageJson) {
69
69
  ngPackageJson = (_a = ngPackageJson['default']) !== null && _a !== void 0 ? _a : ngPackageJson;
70
- (0, schema_1.validateNgPackageSchema)(ngPackageJson);
70
+ try {
71
+ if (isSecondary) {
72
+ (0, schema_1.validateNgPackageEntryPointSchema)(ngPackageJson);
73
+ }
74
+ else {
75
+ (0, schema_1.validateNgPackageSchema)(ngPackageJson);
76
+ }
77
+ }
78
+ catch (e) {
79
+ log.error(`An error has occurred while validating config at ${folderPathOrFilePath}`);
80
+ throw e;
81
+ }
71
82
  let packageJson = {};
72
83
  if (!isSecondary) {
73
84
  const pkgJsonPath = path.join(basePath, 'package.json');
@@ -1 +1 @@
1
- {"version":3,"file":"discover-packages.js","sourceRoot":"","sources":["../../../src/lib/ng-package/discover-packages.ts"],"names":[],"mappings":"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","sourcesContent":["import { parse as parseJson } from 'jsonc-parser';\nimport * as path from 'path';\nimport { exists, readFile, stat } from '../utils/fs';\nimport { globFiles } from '../utils/glob';\nimport * as log from '../utils/log';\nimport { ensureUnixPath } from '../utils/path';\nimport { NgEntryPoint } from './entry-point/entry-point';\nimport { NgPackage } from './package';\nimport { validateNgPackageSchema } from './schema';\n\ninterface UserPackage {\n /** Values from the `package.json` file of this user package. */\n packageJson: Record<string, any>;\n /** NgPackageConfig for this user package. */\n ngPackageJson: Record<string, any>;\n /** Absolute directory path of this user package. */\n basePath: string;\n}\n\nasync function readConfigFile(filePath: string): Promise<any> {\n if (!(await exists(filePath))) {\n return undefined;\n }\n\n if (filePath.endsWith('.js')) {\n return import(filePath);\n }\n\n const data = await readFile(filePath, 'utf-8');\n\n return parseJson(data, undefined, { allowTrailingComma: true });\n}\n\n/**\n * Resolves a user's package by testing 'ng-package.json', or 'ng-package.js'.\n *\n * @param folderPathOrFilePath A path pointing either to a file or a directory\n * @param isSecondary A boolean determining if this is a secondary package\n * @return The user's package\n */\nasync function resolveUserPackage(folderPathOrFilePath: string, isSecondary = false): Promise<UserPackage | undefined> {\n const fullPath = path.resolve(folderPathOrFilePath);\n const pathStats = await stat(fullPath);\n const basePath = pathStats.isDirectory() ? fullPath : path.dirname(fullPath);\n\n let ngPackageJson: unknown;\n if (pathStats.isDirectory()) {\n ngPackageJson = await readConfigFile(path.join(basePath, 'ng-package.json'));\n if (!ngPackageJson) {\n ngPackageJson = await readConfigFile(path.join(basePath, 'ng-package.js'));\n }\n } else {\n ngPackageJson = await readConfigFile(fullPath);\n }\n\n if (ngPackageJson) {\n ngPackageJson = ngPackageJson['default'] ?? ngPackageJson;\n\n validateNgPackageSchema(ngPackageJson);\n\n let packageJson: {} = {};\n if (!isSecondary) {\n const pkgJsonPath = path.join(basePath, 'package.json');\n packageJson = await readConfigFile(pkgJsonPath);\n\n if (!packageJson) {\n throw new Error(`Cannot discover package sources at ${folderPathOrFilePath} as 'package.json' was not found.`);\n }\n\n if (packageJson && typeof packageJson !== 'object') {\n throw new Error(`Invalid 'package.json' at ${folderPathOrFilePath}.`);\n }\n }\n\n return {\n basePath,\n packageJson,\n ngPackageJson,\n };\n }\n\n if (pathStats.isDirectory()) {\n // return even if it's undefined and use defaults when it's not a file\n return undefined;\n }\n\n if (pathStats.isFile()) {\n throw new Error(`Trying to read a package from unsupported file extension. Path: ${folderPathOrFilePath}`);\n }\n\n throw new Error(`Cannot discover package sources at ${folderPathOrFilePath}`);\n}\n\n/**\n * Scans `directoryPath` and sub-folders, looking for `ng-package` files.\n * Similar to `find ${directoryPath} --name ng-package --exec dirname {}`.\n *\n * @param directoryPath Path pointing to a directory\n * @param excludeFolder A sub-folder of `directoryPath` that is excluded from search results.\n */\nasync function findSecondaryPackagesPaths(directoryPath: string, excludeFolder: string): Promise<string[]> {\n const ignore = ['**/node_modules/**', '**/.git/**', `${excludeFolder}/**`, 'ng-package.json'];\n\n const filePaths = await globFiles(`**/ng-package.json`, {\n ignore,\n onlyFiles: true,\n cwd: directoryPath,\n });\n\n return filePaths.map(subpath => path.dirname(path.join(directoryPath, subpath)));\n}\n\n/**\n * Reads a secondary entry point from it's package file.\n *\n * @param primary The primary entry point.\n * @param userPackage The user package for the secondary entry point.\n */\nfunction secondaryEntryPoint(primary: NgEntryPoint, userPackage: UserPackage): NgEntryPoint {\n const { packageJson, ngPackageJson, basePath } = userPackage;\n if (path.resolve(basePath) === path.resolve(primary.basePath)) {\n log.error(`Cannot read secondary entry point. It's already a primary entry point. Path: ${basePath}`);\n throw new Error(`Secondary entry point is already a primary.`);\n }\n\n const relativeSourcePath = path.relative(primary.basePath, basePath);\n const secondaryModuleId = ensureUnixPath(`${primary.moduleId}/${relativeSourcePath}`);\n\n return new NgEntryPoint(packageJson, ngPackageJson, basePath, {\n moduleId: secondaryModuleId,\n primaryDestinationPath: primary.destinationPath,\n destinationPath: path.join(primary.destinationPath, relativeSourcePath),\n });\n}\n\nexport async function discoverPackages({ project }: { project: string }): Promise<NgPackage> {\n project = path.isAbsolute(project) ? project : path.resolve(project);\n\n const { packageJson, ngPackageJson, basePath } = await resolveUserPackage(project);\n const primary = new NgEntryPoint(packageJson, ngPackageJson, basePath);\n log.debug(`Found primary entry point: ${primary.moduleId}`);\n\n const folderPaths = await findSecondaryPackagesPaths(basePath, primary.$get('dest'));\n const secondaries: NgEntryPoint[] = [];\n\n for (const folderPath of folderPaths) {\n const secondaryPackage = await resolveUserPackage(folderPath, true);\n if (secondaryPackage) {\n secondaries.push(secondaryEntryPoint(primary, secondaryPackage));\n }\n }\n\n if (secondaries.length > 0) {\n log.debug(`Found secondary entry points: ${secondaries.map(e => e.moduleId).join(', ')}`);\n }\n\n return new NgPackage(basePath, primary, secondaries);\n}\n"]}
1
+ {"version":3,"file":"discover-packages.js","sourceRoot":"","sources":["../../../src/lib/ng-package/discover-packages.ts"],"names":[],"mappings":"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","sourcesContent":["import { parse as parseJson } from 'jsonc-parser';\nimport * as path from 'path';\nimport { exists, readFile, stat } from '../utils/fs';\nimport { globFiles } from '../utils/glob';\nimport * as log from '../utils/log';\nimport { ensureUnixPath } from '../utils/path';\nimport { NgEntryPoint } from './entry-point/entry-point';\nimport { NgPackage } from './package';\nimport { validateNgPackageEntryPointSchema, validateNgPackageSchema } from './schema';\n\ninterface UserPackage {\n /** Values from the `package.json` file of this user package. */\n packageJson: Record<string, any>;\n /** NgPackageConfig for this user package. */\n ngPackageJson: Record<string, any>;\n /** Absolute directory path of this user package. */\n basePath: string;\n}\n\nasync function readConfigFile(filePath: string): Promise<any> {\n if (!(await exists(filePath))) {\n return undefined;\n }\n\n if (filePath.endsWith('.js')) {\n return import(filePath);\n }\n\n const data = await readFile(filePath, 'utf-8');\n\n return parseJson(data, undefined, { allowTrailingComma: true });\n}\n\n/**\n * Resolves a user's package by testing 'ng-package.json', or 'ng-package.js'.\n *\n * @param folderPathOrFilePath A path pointing either to a file or a directory\n * @param isSecondary A boolean determining if this is a secondary package\n * @return The user's package\n */\nasync function resolveUserPackage(folderPathOrFilePath: string, isSecondary = false): Promise<UserPackage | undefined> {\n const fullPath = path.resolve(folderPathOrFilePath);\n const pathStats = await stat(fullPath);\n const basePath = pathStats.isDirectory() ? fullPath : path.dirname(fullPath);\n\n let ngPackageJson: unknown;\n if (pathStats.isDirectory()) {\n ngPackageJson = await readConfigFile(path.join(basePath, 'ng-package.json'));\n if (!ngPackageJson) {\n ngPackageJson = await readConfigFile(path.join(basePath, 'ng-package.js'));\n }\n } else {\n ngPackageJson = await readConfigFile(fullPath);\n }\n\n if (ngPackageJson) {\n ngPackageJson = ngPackageJson['default'] ?? ngPackageJson;\n try {\n if (isSecondary) {\n validateNgPackageEntryPointSchema(ngPackageJson);\n } else {\n validateNgPackageSchema(ngPackageJson);\n }\n } catch (e) {\n log.error(`An error has occurred while validating config at ${folderPathOrFilePath}`);\n throw e;\n }\n\n let packageJson: {} = {};\n if (!isSecondary) {\n const pkgJsonPath = path.join(basePath, 'package.json');\n packageJson = await readConfigFile(pkgJsonPath);\n\n if (!packageJson) {\n throw new Error(`Cannot discover package sources at ${folderPathOrFilePath} as 'package.json' was not found.`);\n }\n\n if (packageJson && typeof packageJson !== 'object') {\n throw new Error(`Invalid 'package.json' at ${folderPathOrFilePath}.`);\n }\n }\n\n return {\n basePath,\n packageJson,\n ngPackageJson,\n };\n }\n\n if (pathStats.isDirectory()) {\n // return even if it's undefined and use defaults when it's not a file\n return undefined;\n }\n\n if (pathStats.isFile()) {\n throw new Error(`Trying to read a package from unsupported file extension. Path: ${folderPathOrFilePath}`);\n }\n\n throw new Error(`Cannot discover package sources at ${folderPathOrFilePath}`);\n}\n\n/**\n * Scans `directoryPath` and sub-folders, looking for `ng-package` files.\n * Similar to `find ${directoryPath} --name ng-package --exec dirname {}`.\n *\n * @param directoryPath Path pointing to a directory\n * @param excludeFolder A sub-folder of `directoryPath` that is excluded from search results.\n */\nasync function findSecondaryPackagesPaths(directoryPath: string, excludeFolder: string): Promise<string[]> {\n const ignore = ['**/node_modules/**', '**/.git/**', `${excludeFolder}/**`, 'ng-package.json'];\n\n const filePaths = await globFiles(`**/ng-package.json`, {\n ignore,\n onlyFiles: true,\n cwd: directoryPath,\n });\n\n return filePaths.map(subpath => path.dirname(path.join(directoryPath, subpath)));\n}\n\n/**\n * Reads a secondary entry point from it's package file.\n *\n * @param primary The primary entry point.\n * @param userPackage The user package for the secondary entry point.\n */\nfunction secondaryEntryPoint(primary: NgEntryPoint, userPackage: UserPackage): NgEntryPoint {\n const { packageJson, ngPackageJson, basePath } = userPackage;\n if (path.resolve(basePath) === path.resolve(primary.basePath)) {\n log.error(`Cannot read secondary entry point. It's already a primary entry point. Path: ${basePath}`);\n throw new Error(`Secondary entry point is already a primary.`);\n }\n\n const relativeSourcePath = path.relative(primary.basePath, basePath);\n const secondaryModuleId = ensureUnixPath(`${primary.moduleId}/${relativeSourcePath}`);\n\n return new NgEntryPoint(packageJson, ngPackageJson, basePath, {\n moduleId: secondaryModuleId,\n primaryDestinationPath: primary.destinationPath,\n destinationPath: path.join(primary.destinationPath, relativeSourcePath),\n });\n}\n\nexport async function discoverPackages({ project }: { project: string }): Promise<NgPackage> {\n project = path.isAbsolute(project) ? project : path.resolve(project);\n\n const { packageJson, ngPackageJson, basePath } = await resolveUserPackage(project);\n const primary = new NgEntryPoint(packageJson, ngPackageJson, basePath);\n log.debug(`Found primary entry point: ${primary.moduleId}`);\n\n const folderPaths = await findSecondaryPackagesPaths(basePath, primary.$get('dest'));\n const secondaries: NgEntryPoint[] = [];\n\n for (const folderPath of folderPaths) {\n const secondaryPackage = await resolveUserPackage(folderPath, true);\n if (secondaryPackage) {\n secondaries.push(secondaryEntryPoint(primary, secondaryPackage));\n }\n }\n\n if (secondaries.length > 0) {\n log.debug(`Found secondary entry points: ${secondaries.map(e => e.moduleId).join(', ')}`);\n }\n\n return new NgPackage(basePath, primary, secondaries);\n}\n"]}
@@ -84,7 +84,7 @@ const writeBundlesTransform = (options) => (0, transform_1.transformFromPromise)
84
84
  const { rollupCache, files } = await generateFESM(cache.rollupFESM2022Cache, fesm2022Dir);
85
85
  cache.rollupFESM2022Cache = rollupCache;
86
86
  fesmCache.fesm2022 = files;
87
- spinner.succeed();
87
+ spinner.succeed(`Generating FESM bundles`);
88
88
  }
89
89
  catch (error) {
90
90
  spinner.fail();
@@ -1 +1 @@
1
- {"version":3,"file":"write-bundles.transform.js","sourceRoot":"","sources":["../../../../src/lib/ng-package/entry-point/write-bundles.transform.ts"],"names":[],"mappings":"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","sourcesContent":["import ora from 'ora';\nimport { join } from 'path';\nimport type { OutputAsset, OutputChunk, RollupCache } from 'rollup';\nimport { rollupBundleFile } from '../../flatten/rollup';\nimport { transformFromPromise } from '../../graph/transform';\nimport { generateKey, readCacheEntry, saveCacheEntry } from '../../utils/cache';\nimport { exists, mkdir, writeFile } from '../../utils/fs';\nimport { EntryPointNode, isEntryPointInProgress } from '../nodes';\nimport { NgPackagrOptions } from '../options.di';\n\ninterface BundlesCache {\n hash: string;\n fesm2022: (OutputChunk | OutputAsset)[];\n}\n\nexport const writeBundlesTransform = (options: NgPackagrOptions) =>\n transformFromPromise(async graph => {\n const entryPoint: EntryPointNode = graph.find(isEntryPointInProgress());\n const { destinationFiles, entryPoint: ngEntryPoint, tsConfig } = entryPoint.data;\n const cache = entryPoint.cache;\n const { fesm2022Dir, esm2022 } = destinationFiles;\n\n const spinner = ora({\n hideCursor: false,\n discardStdin: false,\n });\n\n const key = await generateKey(ngEntryPoint.moduleId, esm2022, fesm2022Dir, tsConfig.options.compilationMode);\n const hash = await generateKey([...cache.outputCache.values()].map(({ version }) => version).join(':'));\n const cacheDirectory = options.cacheEnabled && options.cacheDirectory;\n if (cacheDirectory) {\n const cacheResult: BundlesCache = await readCacheEntry(options.cacheDirectory, key);\n let writing = false;\n\n if (cacheResult?.hash === hash) {\n try {\n for (const file of cacheResult.fesm2022) {\n const filePath = join(fesm2022Dir, file.fileName);\n if (options.watch && await exists(filePath)) {\n continue;\n }\n\n if (!writing) {\n writing = true;\n spinner.start('Writing FESM bundles');\n await mkdir(fesm2022Dir, { recursive: true });\n }\n\n await writeFile(filePath, file.type === 'asset' ? file.source : file.code);\n }\n\n if (writing) {\n spinner.succeed('Writing FESM bundles');\n }\n } catch (error) {\n if (!writing) {\n spinner.start('Writing FESM bundles');\n }\n\n spinner.fail();\n throw error;\n }\n\n return;\n }\n }\n\n async function generateFESM(\n rollupCache: RollupCache,\n dir: string,\n ): Promise<{ files: (OutputChunk | OutputAsset)[]; rollupCache: RollupCache }> {\n const { cache: rollupFESMCache, files } = await rollupBundleFile({\n sourceRoot: tsConfig.options.sourceRoot,\n entry: esm2022,\n entryName: ngEntryPoint.flatModuleFile,\n moduleName: ngEntryPoint.moduleId,\n dir,\n cache: rollupCache,\n cacheDirectory,\n fileCache: cache.outputCache,\n cacheKey: await generateKey(esm2022, dir, ngEntryPoint.moduleId, tsConfig.options.compilationMode),\n });\n\n return {\n /** The map contents are in an asset file type, which makes storing the map in the cache as redudant. */\n files: files.map(f => {\n if (f.type === 'chunk') {\n f.map = null;\n }\n\n return f;\n }),\n rollupCache: options.watch ? rollupFESMCache : undefined,\n };\n }\n\n const fesmCache: Partial<BundlesCache> = {\n hash,\n };\n\n try {\n const { rollupCache, files } = await generateFESM(cache.rollupFESM2022Cache, fesm2022Dir);\n\n cache.rollupFESM2022Cache = rollupCache;\n fesmCache.fesm2022 = files;\n\n spinner.succeed();\n } catch (error) {\n spinner.fail();\n throw error;\n }\n\n if (cacheDirectory) {\n await saveCacheEntry(cacheDirectory, key, JSON.stringify(fesmCache));\n }\n });\n"]}
1
+ {"version":3,"file":"write-bundles.transform.js","sourceRoot":"","sources":["../../../../src/lib/ng-package/entry-point/write-bundles.transform.ts"],"names":[],"mappings":"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","sourcesContent":["import ora from 'ora';\nimport { join } from 'path';\nimport type { OutputAsset, OutputChunk, RollupCache } from 'rollup';\nimport { rollupBundleFile } from '../../flatten/rollup';\nimport { transformFromPromise } from '../../graph/transform';\nimport { generateKey, readCacheEntry, saveCacheEntry } from '../../utils/cache';\nimport { exists, mkdir, writeFile } from '../../utils/fs';\nimport { EntryPointNode, isEntryPointInProgress } from '../nodes';\nimport { NgPackagrOptions } from '../options.di';\n\ninterface BundlesCache {\n hash: string;\n fesm2022: (OutputChunk | OutputAsset)[];\n}\n\nexport const writeBundlesTransform = (options: NgPackagrOptions) =>\n transformFromPromise(async graph => {\n const entryPoint: EntryPointNode = graph.find(isEntryPointInProgress());\n const { destinationFiles, entryPoint: ngEntryPoint, tsConfig } = entryPoint.data;\n const cache = entryPoint.cache;\n const { fesm2022Dir, esm2022 } = destinationFiles;\n\n const spinner = ora({\n hideCursor: false,\n discardStdin: false,\n });\n\n const key = await generateKey(ngEntryPoint.moduleId, esm2022, fesm2022Dir, tsConfig.options.compilationMode);\n const hash = await generateKey([...cache.outputCache.values()].map(({ version }) => version).join(':'));\n const cacheDirectory = options.cacheEnabled && options.cacheDirectory;\n if (cacheDirectory) {\n const cacheResult: BundlesCache = await readCacheEntry(options.cacheDirectory, key);\n let writing = false;\n\n if (cacheResult?.hash === hash) {\n try {\n for (const file of cacheResult.fesm2022) {\n const filePath = join(fesm2022Dir, file.fileName);\n if (options.watch && await exists(filePath)) {\n continue;\n }\n\n if (!writing) {\n writing = true;\n spinner.start('Writing FESM bundles');\n await mkdir(fesm2022Dir, { recursive: true });\n }\n\n await writeFile(filePath, file.type === 'asset' ? file.source : file.code);\n }\n\n if (writing) {\n spinner.succeed('Writing FESM bundles');\n }\n } catch (error) {\n if (!writing) {\n spinner.start('Writing FESM bundles');\n }\n\n spinner.fail();\n throw error;\n }\n\n return;\n }\n }\n\n async function generateFESM(\n rollupCache: RollupCache,\n dir: string,\n ): Promise<{ files: (OutputChunk | OutputAsset)[]; rollupCache: RollupCache }> {\n const { cache: rollupFESMCache, files } = await rollupBundleFile({\n sourceRoot: tsConfig.options.sourceRoot,\n entry: esm2022,\n entryName: ngEntryPoint.flatModuleFile,\n moduleName: ngEntryPoint.moduleId,\n dir,\n cache: rollupCache,\n cacheDirectory,\n fileCache: cache.outputCache,\n cacheKey: await generateKey(esm2022, dir, ngEntryPoint.moduleId, tsConfig.options.compilationMode),\n });\n\n return {\n /** The map contents are in an asset file type, which makes storing the map in the cache as redudant. */\n files: files.map(f => {\n if (f.type === 'chunk') {\n f.map = null;\n }\n\n return f;\n }),\n rollupCache: options.watch ? rollupFESMCache : undefined,\n };\n }\n\n const fesmCache: Partial<BundlesCache> = {\n hash,\n };\n\n try {\n const { rollupCache, files } = await generateFESM(cache.rollupFESM2022Cache, fesm2022Dir);\n\n cache.rollupFESM2022Cache = rollupCache;\n fesmCache.fesm2022 = files;\n\n spinner.succeed(`Generating FESM bundles`);\n } catch (error) {\n spinner.fail();\n throw error;\n }\n\n if (cacheDirectory) {\n await saveCacheEntry(cacheDirectory, key, JSON.stringify(fesmCache));\n }\n });\n"]}
@@ -1,3 +1,4 @@
1
+ import { NgPackageEntryConfig } from '../../ng-entrypoint.schema';
1
2
  import { NgPackageConfig } from '../../ng-package.schema';
2
3
  /**
3
4
  * Validates the `ngPackageJson` value against the JSON schema using ajv. An error is thrown if
@@ -6,3 +7,10 @@ import { NgPackageConfig } from '../../ng-package.schema';
6
7
  * @param ngPackageJson The value to validate.
7
8
  */
8
9
  export declare function validateNgPackageSchema(ngPackageJson: unknown): asserts ngPackageJson is NgPackageConfig;
10
+ /**
11
+ * Validates the `ngPackageJson` value against the JSON schema using ajv. An error is thrown if
12
+ * schema errors are found.
13
+ *
14
+ * @param ngPackageJson The value to validate.
15
+ */
16
+ export declare function validateNgPackageEntryPointSchema(ngPackageJson: unknown): asserts ngPackageJson is NgPackageEntryConfig;
@@ -26,11 +26,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.validateNgPackageSchema = void 0;
29
+ exports.validateNgPackageEntryPointSchema = exports.validateNgPackageSchema = void 0;
30
30
  const ajv_1 = __importDefault(require("ajv"));
31
31
  const log = __importStar(require("../utils/log"));
32
32
  /** Lazily initialized ajv validator instance. */
33
- let ajvValidator = null;
33
+ let ajvNgPackageSchemaValidator;
34
+ let ajvNgPackageEntryPointSchemaValidator;
34
35
  /**
35
36
  * Validates the `ngPackageJson` value against the JSON schema using ajv. An error is thrown if
36
37
  * schema errors are found.
@@ -38,13 +39,27 @@ let ajvValidator = null;
38
39
  * @param ngPackageJson The value to validate.
39
40
  */
40
41
  function validateNgPackageSchema(ngPackageJson) {
41
- const validate = getNgPackageSchemaValidator();
42
+ const validate = (ajvNgPackageSchemaValidator !== null && ajvNgPackageSchemaValidator !== void 0 ? ajvNgPackageSchemaValidator : (ajvNgPackageSchemaValidator = getSchemaValidator(require('../../ng-package.schema.json'))));
42
43
  const isValid = validate(ngPackageJson);
43
44
  if (!isValid) {
44
45
  throw new Error(`Configuration doesn't match the required schema.\n${formatSchemaValidationErrors(validate.errors)}`);
45
46
  }
46
47
  }
47
48
  exports.validateNgPackageSchema = validateNgPackageSchema;
49
+ /**
50
+ * Validates the `ngPackageJson` value against the JSON schema using ajv. An error is thrown if
51
+ * schema errors are found.
52
+ *
53
+ * @param ngPackageJson The value to validate.
54
+ */
55
+ function validateNgPackageEntryPointSchema(ngPackageJson) {
56
+ const validate = (ajvNgPackageEntryPointSchemaValidator !== null && ajvNgPackageEntryPointSchemaValidator !== void 0 ? ajvNgPackageEntryPointSchemaValidator : (ajvNgPackageEntryPointSchemaValidator = getSchemaValidator(require('../../ng-entrypoint.schema.json'))));
57
+ const isValid = validate(ngPackageJson);
58
+ if (!isValid) {
59
+ throw new Error(`Configuration doesn't match the required schema.\n${formatSchemaValidationErrors(validate.errors)}`);
60
+ }
61
+ }
62
+ exports.validateNgPackageEntryPointSchema = validateNgPackageEntryPointSchema;
48
63
  function formatSchemaValidationErrors(errors) {
49
64
  return errors
50
65
  .map(err => {
@@ -59,10 +74,7 @@ function formatSchemaValidationErrors(errors) {
59
74
  /**
60
75
  * Returns an initialized ajv validator for the ng-package JSON schema.
61
76
  */
62
- function getNgPackageSchemaValidator() {
63
- if (ajvValidator !== null) {
64
- return ajvValidator;
65
- }
77
+ function getSchemaValidator(schema) {
66
78
  const _ajv = new ajv_1.default({
67
79
  useDefaults: true,
68
80
  strict: false, // strict mode is enabled by default in JSON schema type definitions, which disallows the use of `useDefaults`.
@@ -78,8 +90,6 @@ function getNgPackageSchemaValidator() {
78
90
  },
79
91
  errors: false,
80
92
  });
81
- const ngPackageSchemaJson = require('../../ng-package.schema.json');
82
- ajvValidator = _ajv.compile(ngPackageSchemaJson);
83
- return ajvValidator;
93
+ return _ajv.compile(schema);
84
94
  }
85
95
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/lib/ng-package/schema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAyD;AAEzD,kDAAoC;AAEpC,iDAAiD;AACjD,IAAI,YAAY,GAA4B,IAAI,CAAC;AAEjD;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAC,aAAsB;IAC5D,MAAM,QAAQ,GAAG,2BAA2B,EAAE,CAAC;IAC/C,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,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,2BAA2B;IAClC,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,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,MAAM,mBAAmB,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACpE,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEjD,OAAO,YAAY,CAAC;AACtB,CAAC","sourcesContent":["import Ajv, { ErrorObject, ValidateFunction } from 'ajv';\nimport { NgPackageConfig } from '../../ng-package.schema';\nimport * as log from '../utils/log';\n\n/** Lazily initialized ajv validator instance. */\nlet ajvValidator: ValidateFunction | null = null;\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 = getNgPackageSchemaValidator();\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 getNgPackageSchemaValidator(): ValidateFunction {\n if (ajvValidator !== null) {\n return ajvValidator;\n }\n\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 const ngPackageSchemaJson = require('../../ng-package.schema.json');\n ajvValidator = _ajv.compile(ngPackageSchemaJson);\n\n return ajvValidator;\n}\n"]}
1
+ {"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"]}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * This file was automatically generated by json-schema-to-typescript.
3
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
4
+ * and run json-schema-to-typescript to regenerate this file.
5
+ */
6
+ /**
7
+ * JSON Schema for secondary entrypoint `ng-package.json` description file
8
+ */
9
+ export interface NgPackageEntryConfig {
10
+ $schema?: string;
11
+ /**
12
+ * Description of the library's entry point.
13
+ */
14
+ lib?: {
15
+ /**
16
+ * Entry file to the public API (default: `src/public_api.ts`).
17
+ */
18
+ entryFile?: string;
19
+ /**
20
+ * Filename of the auto-generated flat module file (if empty, defaults to the package name as given in `package.json`).
21
+ */
22
+ flatModuleFile?: string;
23
+ /**
24
+ * Embed assets in css file using data URIs - see https://css-tricks.com/data-uris
25
+ */
26
+ cssUrl?: "none" | "inline";
27
+ /**
28
+ * Any additional paths that should be used to resolve style imports
29
+ */
30
+ styleIncludePaths?: string[];
31
+ };
32
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /* eslint-disable */
3
+ /**
4
+ * This file was automatically generated by json-schema-to-typescript.
5
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
6
+ * and run json-schema-to-typescript to regenerate this file.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=ng-entrypoint.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-entrypoint.schema.js","sourceRoot":"","sources":["../src/ng-entrypoint.schema.ts"],"names":[],"mappings":";AAAA,oBAAoB;AACpB;;;;GAIG","sourcesContent":["/* eslint-disable */\n/**\n * This file was automatically generated by json-schema-to-typescript.\n * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,\n * and run json-schema-to-typescript to regenerate this file.\n */\n\n/**\n * JSON Schema for secondary entrypoint `ng-package.json` description file\n */\nexport interface NgPackageEntryConfig {\n $schema?: string;\n /**\n * Description of the library's entry point.\n */\n lib?: {\n /**\n * Entry file to the public API (default: `src/public_api.ts`).\n */\n entryFile?: string;\n /**\n * Filename of the auto-generated flat module file (if empty, defaults to the package name as given in `package.json`).\n */\n flatModuleFile?: string;\n /**\n * Embed assets in css file using data URIs - see https://css-tricks.com/data-uris\n */\n cssUrl?: \"none\" | \"inline\";\n /**\n * Any additional paths that should be used to resolve style imports\n */\n styleIncludePaths?: string[];\n };\n}\n"]}
@@ -0,0 +1,44 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "https://github.com/ng-packagr/ng-packagr/blob/master/src/ng-entrypoint.schema.json",
4
+ "title": "NgPackageEntryConfig",
5
+ "description": "JSON Schema for secondary entrypoint `ng-package.json` description file",
6
+ "type": "object",
7
+ "properties": {
8
+ "$schema": {
9
+ "type": "string"
10
+ },
11
+ "lib": {
12
+ "description": "Description of the library's entry point.",
13
+ "type": "object",
14
+ "additionalProperties": false,
15
+ "default": {},
16
+ "properties": {
17
+ "entryFile": {
18
+ "description": "Entry file to the public API (default: `src/public_api.ts`).",
19
+ "type": "string",
20
+ "default": "src/public_api.ts"
21
+ },
22
+ "flatModuleFile": {
23
+ "description": "Filename of the auto-generated flat module file (if empty, defaults to the package name as given in `package.json`).",
24
+ "type": "string"
25
+ },
26
+ "cssUrl": {
27
+ "description": "Embed assets in css file using data URIs - see https://css-tricks.com/data-uris",
28
+ "type": "string",
29
+ "enum": ["none", "inline"],
30
+ "default": "inline"
31
+ },
32
+ "styleIncludePaths": {
33
+ "description": "Any additional paths that should be used to resolve style imports",
34
+ "type": "array",
35
+ "items": {
36
+ "type": "string"
37
+ }
38
+ }
39
+ }
40
+ }
41
+ },
42
+ "required": [],
43
+ "additionalProperties": false
44
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
3
  "$id": "https://github.com/ng-packagr/ng-packagr/blob/master/src/ng-package.schema.json",
4
4
  "title": "NgPackageConfig",
5
5
  "description": "JSON Schema for `ng-package.json` description file",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ng-packagr",
3
- "version": "17.1.0-next.4",
3
+ "version": "17.1.0",
4
4
  "description": "Compile and package Angular libraries in Angular Package Format (APF)",
5
5
  "keywords": [
6
6
  "apf",
@@ -60,7 +60,7 @@
60
60
  "rollup": "^4.5.0"
61
61
  },
62
62
  "peerDependencies": {
63
- "@angular/compiler-cli": "^17.0.0 || ^17.1.0-next.0",
63
+ "@angular/compiler-cli": "^17.0.0 || ^17.1.0-next.0 || ^17.2.0-next.0",
64
64
  "tailwindcss": "^2.0.0 || ^3.0.0",
65
65
  "tslib": "^2.3.0",
66
66
  "typescript": ">=5.2 <5.4"