ng-packagr 13.2.1 → 13.3.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.
- package/cli/main.js +5 -1
- package/cli/main.js.map +1 -1
- package/lib/esbuild/esbuild-executor.js +5 -1
- package/lib/esbuild/esbuild-executor.js.map +1 -1
- package/lib/file-system/file-watcher.js +5 -1
- package/lib/file-system/file-watcher.js.map +1 -1
- package/lib/flatten/downlevel-plugin.js +5 -1
- package/lib/flatten/downlevel-plugin.js.map +1 -1
- package/lib/flatten/rollup.js +5 -1
- package/lib/flatten/rollup.js.map +1 -1
- package/lib/ng-package/discover-packages.js +5 -1
- package/lib/ng-package/discover-packages.js.map +1 -1
- package/lib/ng-package/entry-point/compile-ngc.transform.js +5 -1
- package/lib/ng-package/entry-point/compile-ngc.transform.js.map +1 -1
- package/lib/ng-package/entry-point/entry-point.js +5 -1
- package/lib/ng-package/entry-point/entry-point.js.map +1 -1
- package/lib/ng-package/entry-point/entry-point.transform.js +5 -1
- package/lib/ng-package/entry-point/entry-point.transform.js.map +1 -1
- package/lib/ng-package/entry-point/write-package.transform.js +5 -1
- package/lib/ng-package/entry-point/write-package.transform.js.map +1 -1
- package/lib/ng-package/package.js +5 -1
- package/lib/ng-package/package.js.map +1 -1
- package/lib/ng-package/package.transform.js +5 -1
- package/lib/ng-package/package.transform.js.map +1 -1
- package/lib/ng-package/schema.js +5 -1
- package/lib/ng-package/schema.js.map +1 -1
- package/lib/ngc/compile-source-files.js +5 -1
- package/lib/ngc/compile-source-files.js.map +1 -1
- package/lib/ngc/ngcc-processor.js +5 -1
- package/lib/ngc/ngcc-processor.js.map +1 -1
- package/lib/styles/stylesheet-processor.js +5 -1
- package/lib/styles/stylesheet-processor.js.map +1 -1
- package/lib/ts/cache-compiler-host.js +5 -1
- package/lib/ts/cache-compiler-host.js.map +1 -1
- package/lib/ts/tsconfig.js +5 -1
- package/lib/ts/tsconfig.js.map +1 -1
- package/lib/utils/cache.js +5 -1
- package/lib/utils/cache.js.map +1 -1
- package/lib/utils/color.js +5 -1
- package/lib/utils/color.js.map +1 -1
- package/lib/utils/fs.js +5 -1
- package/lib/utils/fs.js.map +1 -1
- package/lib/utils/path.js +5 -1
- package/lib/utils/path.js.map +1 -1
- package/package.json +3 -3
- package/public_api.js +5 -1
- package/public_api.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.transform.js","sourceRoot":"","sources":["../../../src/lib/ng-package/package.transform.ts"],"names":[],"mappings":"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","sourcesContent":["import { DepGraph } from 'dependency-graph';\nimport * as path from 'path';\nimport { NEVER, Observable, from, of as observableOf, pipe } from 'rxjs';\nimport {\n catchError,\n concatMap,\n debounceTime,\n defaultIfEmpty,\n filter,\n map,\n mapTo,\n startWith,\n switchMap,\n takeLast,\n tap,\n} from 'rxjs/operators';\nimport { FileCache } from '../file-system/file-cache';\nimport { createFileWatch } from '../file-system/file-watcher';\nimport { BuildGraph } from '../graph/build-graph';\nimport { STATE_IN_PROGRESS } from '../graph/node';\nimport { Transform } from '../graph/transform';\nimport { colors } from '../utils/color';\nimport { copyFile, rmdir, stat } from '../utils/fs';\nimport * as log from '../utils/log';\nimport { ensureUnixPath } from '../utils/path';\nimport { discoverPackages } from './discover-packages';\nimport {\n EntryPointNode,\n GlobCache,\n PackageNode,\n byEntryPoint,\n fileUrl,\n fileUrlPath,\n isEntryPoint,\n isPackage,\n ngUrl,\n} from './nodes';\nimport { NgPackagrOptions } from './options.di';\n\n/**\n * A transformation for building an npm package:\n *\n * - discoverPackages\n * - options\n * - initTsConfig\n * - analyzeTsSources (thereby extracting template and stylesheet files)\n * - for each entry point\n * - run the entryPontTransform\n * - writeNpmPackage\n *\n * @param project Project token, reference to `ng-package.json`\n * @param options ng-packagr options\n * @param initTsConfigTransform Transformation initializing the tsconfig of each entry point.\n * @param analyseSourcesTransform Transformation analyzing the typescript source files of each entry point.\n * @param entryPointTransform Transformation for asset rendering and compilation of a single entry point.\n */\nexport const packageTransformFactory = (\n project: string,\n options: NgPackagrOptions,\n initTsConfigTransform: Transform,\n analyseSourcesTransform: Transform,\n entryPointTransform: Transform,\n) => (source$: Observable<BuildGraph>): Observable<BuildGraph> => {\n const pkgUri = ngUrl(project);\n\n const buildTransform = options.watch\n ? watchTransformFactory(project, options, analyseSourcesTransform, entryPointTransform)\n : buildTransformFactory(project, analyseSourcesTransform, entryPointTransform);\n\n return source$.pipe(\n tap(() => log.info(`Building Angular Package`)),\n // Discover packages and entry points\n switchMap(graph => {\n const pkg = discoverPackages({ project });\n\n return from(pkg).pipe(\n map(value => {\n const ngPkg = new PackageNode(pkgUri);\n ngPkg.data = value;\n\n return graph.put(ngPkg);\n }),\n );\n }),\n // Clean the primary dest folder (should clean all secondary sub-directory, as well)\n switchMap(\n async graph => {\n const { dest, deleteDestPath } = graph.get(pkgUri).data;\n\n if (deleteDestPath) {\n try {\n await rmdir(dest, { recursive: true });\n } catch {}\n }\n },\n (graph, _) => graph,\n ),\n // Add entry points to graph\n map(graph => {\n const foundNode = graph.get(pkgUri);\n if (!isPackage(foundNode)) {\n return graph;\n }\n\n const ngPkg: PackageNode = foundNode;\n const entryPoints = [ngPkg.data.primary, ...ngPkg.data.secondaries].map(entryPoint => {\n const { destinationFiles, moduleId } = entryPoint;\n const node = new EntryPointNode(\n ngUrl(moduleId),\n ngPkg.cache.sourcesFileCache,\n ngPkg.cache.ngccProcessingCache,\n ngPkg.cache.moduleResolutionCache,\n );\n node.data = { entryPoint, destinationFiles };\n node.state = 'dirty';\n ngPkg.dependsOn(node);\n\n return node;\n });\n\n return graph.put(entryPoints);\n }),\n // Initialize the tsconfig for each entry point\n initTsConfigTransform,\n // perform build\n buildTransform,\n );\n};\n\nconst watchTransformFactory = (\n project: string,\n _options: NgPackagrOptions,\n analyseSourcesTransform: Transform,\n entryPointTransform: Transform,\n) => (source$: Observable<BuildGraph>): Observable<BuildGraph> => {\n const CompleteWaitingForFileChange = '\\nCompilation complete. Watching for file changes...';\n const FileChangeDetected = '\\nFile change detected. Starting incremental compilation...';\n const FailedWaitingForFileChange = '\\nCompilation failed. Watching for file changes...';\n\n return source$.pipe(\n switchMap(graph => {\n const { data, cache } = graph.find(isPackage);\n const { onFileChange, watcher } = createFileWatch([], [data.dest]);\n graph.watcher = watcher;\n\n return onFileChange.pipe(\n tap(fileChange => {\n const { filePath, event } = fileChange;\n const { sourcesFileCache } = cache;\n const cachedSourceFile = sourcesFileCache.get(filePath);\n const { declarationFileName } = cachedSourceFile || {};\n const uriToClean = [filePath, declarationFileName].map(x => fileUrl(ensureUnixPath(x)));\n const nodesToClean = graph.filter(node => uriToClean.some(uri => uri === node.url));\n\n if (!cachedSourceFile) {\n if (event === 'unlink' || event === 'add') {\n cache.globCache = regenerateGlobCache(sourcesFileCache);\n }\n\n if (!nodesToClean) {\n return;\n }\n }\n\n const allNodesToClean = [\n ...nodesToClean,\n // if a non ts file changes we need to clean up its direct dependees\n // this is mainly done for resources such as html and css\n ...nodesToClean.filter(node => !node.url.endsWith('.ts')).flatMap(node => [...node.dependees]),\n ];\n\n // delete node that changes\n for (const { url } of allNodesToClean) {\n sourcesFileCache.delete(fileUrlPath(url));\n }\n\n for (const entryPoint of graph.filter(isEntryPoint)) {\n const isDirty = [...allNodesToClean].some(dependent => entryPoint.dependents.has(dependent));\n if (isDirty) {\n entryPoint.state = 'dirty';\n\n uriToClean.forEach(url => {\n entryPoint.cache.analysesSourcesFileCache.delete(fileUrlPath(url));\n });\n }\n }\n\n // Regenerate glob cache\n if (event === 'unlink' || event === 'add') {\n cache.globCache = regenerateGlobCache(sourcesFileCache);\n }\n }),\n debounceTime(200),\n tap(() => log.msg(FileChangeDetected)),\n startWith(undefined),\n mapTo(graph),\n );\n }),\n switchMap(graph => {\n return observableOf(graph).pipe(\n buildTransformFactory(project, analyseSourcesTransform, entryPointTransform),\n tap(() => log.msg(CompleteWaitingForFileChange)),\n catchError(error => {\n log.error(error);\n log.msg(FailedWaitingForFileChange);\n\n return NEVER;\n }),\n );\n }),\n );\n};\n\nconst buildTransformFactory = (project: string, analyseSourcesTransform: Transform, entryPointTransform: Transform) => (\n source$: Observable<BuildGraph>,\n): Observable<BuildGraph> => {\n const startTime = Date.now();\n\n const pkgUri = ngUrl(project);\n\n return source$.pipe(\n // Analyse dependencies and external resources for each entry point\n analyseSourcesTransform,\n // Next, run through the entry point transformation (assets rendering, code compilation)\n scheduleEntryPoints(entryPointTransform),\n // Write npm package to dest folder\n writeNpmPackage(pkgUri),\n tap(graph => {\n const ngPkg = graph.get(pkgUri);\n log.success('\\n------------------------------------------------------------------------------');\n log.success(`Built Angular Package\n - from: ${ngPkg.data.src}\n - to: ${ngPkg.data.dest}`);\n log.success('------------------------------------------------------------------------------');\n const b = colors.bold;\n const w = colors.white;\n log.msg(w(`\\nBuild at: ${b(new Date().toISOString())} - Time: ${b('' + (Date.now() - startTime))}ms\\n`));\n }),\n );\n};\n\nconst writeNpmPackage = (pkgUri: string): Transform =>\n pipe(\n switchMap(async graph => {\n const { data } = graph.get(pkgUri);\n const srcFiles = [`${data.src}/LICENSE`, `${data.src}/README.md`];\n\n for (const srcFile of srcFiles) {\n let isFile = false;\n try {\n isFile = (await stat(srcFile)).isFile();\n } catch {}\n\n if (isFile) {\n await copyFile(srcFile, path.join(data.dest, path.basename(srcFile)));\n }\n }\n\n return graph;\n }),\n );\n\nconst scheduleEntryPoints = (epTransform: Transform): Transform =>\n pipe(\n concatMap(graph => {\n // Calculate node/dependency depth and determine build order\n const depGraph = new DepGraph({ circular: false });\n const entryPoints: EntryPointNode[] = graph.filter(isEntryPoint);\n\n for (const entryPoint of entryPoints) {\n // Remove `ng://` prefix for better error messages\n const from = entryPoint.url.substring(5);\n depGraph.addNode(from);\n\n for (const { url } of entryPoint.filter(isEntryPoint)) {\n const to = url.substring(5);\n depGraph.addNode(to);\n depGraph.addDependency(from, to);\n }\n }\n\n // The array index is the depth.\n const groups = depGraph.overallOrder().map(ngUrl);\n\n // Build entry points with lower depth values first.\n return from(groups).pipe(\n map((epUrl: string): EntryPointNode => graph.find(byEntryPoint().and(ep => ep.url === epUrl))),\n filter((entryPoint: EntryPointNode): boolean => entryPoint.state !== 'done'),\n concatMap(ep =>\n observableOf(ep).pipe(\n // Mark the entry point as 'in-progress'\n tap(entryPoint => (entryPoint.state = STATE_IN_PROGRESS)),\n mapTo(graph),\n epTransform,\n ),\n ),\n takeLast(1), // don't use last as sometimes it this will cause 'no elements in sequence',\n defaultIfEmpty(graph),\n );\n }),\n );\n\nfunction regenerateGlobCache(sourcesFileCache: FileCache): GlobCache {\n const cache: GlobCache = {};\n sourcesFileCache.forEach((value, key) => {\n // ignore node_modules and file which don't exists as they are not used by globbing in our case\n if (value.exists && !key.includes('node_modules')) {\n cache[key] = 'FILE';\n }\n });\n\n return cache;\n}"]}
|
|
1
|
+
{"version":3,"file":"package.transform.js","sourceRoot":"","sources":["../../../src/lib/ng-package/package.transform.ts"],"names":[],"mappings":"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","sourcesContent":["import { DepGraph } from 'dependency-graph';\nimport * as path from 'path';\nimport { NEVER, Observable, from, of as observableOf, pipe } from 'rxjs';\nimport {\n catchError,\n concatMap,\n debounceTime,\n defaultIfEmpty,\n filter,\n map,\n mapTo,\n startWith,\n switchMap,\n takeLast,\n tap,\n} from 'rxjs/operators';\nimport { FileCache } from '../file-system/file-cache';\nimport { createFileWatch } from '../file-system/file-watcher';\nimport { BuildGraph } from '../graph/build-graph';\nimport { STATE_IN_PROGRESS } from '../graph/node';\nimport { Transform } from '../graph/transform';\nimport { colors } from '../utils/color';\nimport { copyFile, rmdir, stat } from '../utils/fs';\nimport * as log from '../utils/log';\nimport { ensureUnixPath } from '../utils/path';\nimport { discoverPackages } from './discover-packages';\nimport {\n EntryPointNode,\n GlobCache,\n PackageNode,\n byEntryPoint,\n fileUrl,\n fileUrlPath,\n isEntryPoint,\n isPackage,\n ngUrl,\n} from './nodes';\nimport { NgPackagrOptions } from './options.di';\n\n/**\n * A transformation for building an npm package:\n *\n * - discoverPackages\n * - options\n * - initTsConfig\n * - analyzeTsSources (thereby extracting template and stylesheet files)\n * - for each entry point\n * - run the entryPontTransform\n * - writeNpmPackage\n *\n * @param project Project token, reference to `ng-package.json`\n * @param options ng-packagr options\n * @param initTsConfigTransform Transformation initializing the tsconfig of each entry point.\n * @param analyseSourcesTransform Transformation analyzing the typescript source files of each entry point.\n * @param entryPointTransform Transformation for asset rendering and compilation of a single entry point.\n */\nexport const packageTransformFactory = (\n project: string,\n options: NgPackagrOptions,\n initTsConfigTransform: Transform,\n analyseSourcesTransform: Transform,\n entryPointTransform: Transform,\n) => (source$: Observable<BuildGraph>): Observable<BuildGraph> => {\n const pkgUri = ngUrl(project);\n\n const buildTransform = options.watch\n ? watchTransformFactory(project, options, analyseSourcesTransform, entryPointTransform)\n : buildTransformFactory(project, analyseSourcesTransform, entryPointTransform);\n\n return source$.pipe(\n tap(() => log.info(`Building Angular Package`)),\n // Discover packages and entry points\n switchMap(graph => {\n const pkg = discoverPackages({ project });\n\n return from(pkg).pipe(\n map(value => {\n const ngPkg = new PackageNode(pkgUri);\n ngPkg.data = value;\n\n return graph.put(ngPkg);\n }),\n );\n }),\n // Clean the primary dest folder (should clean all secondary sub-directory, as well)\n switchMap(\n async graph => {\n const { dest, deleteDestPath } = graph.get(pkgUri).data;\n\n if (deleteDestPath) {\n try {\n await rmdir(dest, { recursive: true });\n } catch {}\n }\n },\n (graph, _) => graph,\n ),\n // Add entry points to graph\n map(graph => {\n const foundNode = graph.get(pkgUri);\n if (!isPackage(foundNode)) {\n return graph;\n }\n\n const ngPkg: PackageNode = foundNode;\n const entryPoints = [ngPkg.data.primary, ...ngPkg.data.secondaries].map(entryPoint => {\n const { destinationFiles, moduleId } = entryPoint;\n const node = new EntryPointNode(\n ngUrl(moduleId),\n ngPkg.cache.sourcesFileCache,\n ngPkg.cache.ngccProcessingCache,\n ngPkg.cache.moduleResolutionCache,\n );\n node.data = { entryPoint, destinationFiles };\n node.state = 'dirty';\n ngPkg.dependsOn(node);\n\n return node;\n });\n\n return graph.put(entryPoints);\n }),\n // Initialize the tsconfig for each entry point\n initTsConfigTransform,\n // perform build\n buildTransform,\n );\n};\n\nconst watchTransformFactory = (\n project: string,\n _options: NgPackagrOptions,\n analyseSourcesTransform: Transform,\n entryPointTransform: Transform,\n) => (source$: Observable<BuildGraph>): Observable<BuildGraph> => {\n const CompleteWaitingForFileChange = '\\nCompilation complete. Watching for file changes...';\n const FileChangeDetected = '\\nFile change detected. Starting incremental compilation...';\n const FailedWaitingForFileChange = '\\nCompilation failed. Watching for file changes...';\n\n return source$.pipe(\n switchMap(graph => {\n const { data, cache } = graph.find(isPackage);\n const { onFileChange, watcher } = createFileWatch([], [data.dest]);\n graph.watcher = watcher;\n\n return onFileChange.pipe(\n tap(fileChange => {\n const { filePath, event } = fileChange;\n const { sourcesFileCache } = cache;\n const cachedSourceFile = sourcesFileCache.get(filePath);\n const { declarationFileName } = cachedSourceFile || {};\n const uriToClean = [filePath, declarationFileName].map(x => fileUrl(ensureUnixPath(x)));\n const nodesToClean = graph.filter(node => uriToClean.some(uri => uri === node.url));\n\n if (!cachedSourceFile) {\n if (event === 'unlink' || event === 'add') {\n cache.globCache = regenerateGlobCache(sourcesFileCache);\n }\n\n if (!nodesToClean) {\n return;\n }\n }\n\n const allNodesToClean = [\n ...nodesToClean,\n // if a non ts file changes we need to clean up its direct dependees\n // this is mainly done for resources such as html and css\n ...nodesToClean.filter(node => !node.url.endsWith('.ts')).flatMap(node => [...node.dependees]),\n ];\n\n // delete node that changes\n for (const { url } of allNodesToClean) {\n sourcesFileCache.delete(fileUrlPath(url));\n }\n\n for (const entryPoint of graph.filter(isEntryPoint)) {\n const isDirty = [...allNodesToClean].some(dependent => entryPoint.dependents.has(dependent));\n if (isDirty) {\n entryPoint.state = 'dirty';\n\n uriToClean.forEach(url => {\n entryPoint.cache.analysesSourcesFileCache.delete(fileUrlPath(url));\n });\n }\n }\n\n // Regenerate glob cache\n if (event === 'unlink' || event === 'add') {\n cache.globCache = regenerateGlobCache(sourcesFileCache);\n }\n }),\n debounceTime(200),\n tap(() => log.msg(FileChangeDetected)),\n startWith(undefined),\n mapTo(graph),\n );\n }),\n switchMap(graph => {\n return observableOf(graph).pipe(\n buildTransformFactory(project, analyseSourcesTransform, entryPointTransform),\n tap(() => log.msg(CompleteWaitingForFileChange)),\n catchError(error => {\n log.error(error);\n log.msg(FailedWaitingForFileChange);\n\n return NEVER;\n }),\n );\n }),\n );\n};\n\nconst buildTransformFactory = (project: string, analyseSourcesTransform: Transform, entryPointTransform: Transform) => (\n source$: Observable<BuildGraph>,\n): Observable<BuildGraph> => {\n const startTime = Date.now();\n\n const pkgUri = ngUrl(project);\n\n return source$.pipe(\n // Analyse dependencies and external resources for each entry point\n analyseSourcesTransform,\n // Next, run through the entry point transformation (assets rendering, code compilation)\n scheduleEntryPoints(entryPointTransform),\n // Write npm package to dest folder\n writeNpmPackage(pkgUri),\n tap(graph => {\n const ngPkg = graph.get(pkgUri);\n log.success('\\n------------------------------------------------------------------------------');\n log.success(`Built Angular Package\n - from: ${ngPkg.data.src}\n - to: ${ngPkg.data.dest}`);\n log.success('------------------------------------------------------------------------------');\n const b = colors.bold;\n const w = colors.white;\n log.msg(w(`\\nBuild at: ${b(new Date().toISOString())} - Time: ${b('' + (Date.now() - startTime))}ms\\n`));\n }),\n );\n};\n\nconst writeNpmPackage = (pkgUri: string): Transform =>\n pipe(\n switchMap(async graph => {\n const { data } = graph.get(pkgUri);\n const srcFiles = [`${data.src}/LICENSE`, `${data.src}/README.md`];\n\n for (const srcFile of srcFiles) {\n let isFile = false;\n try {\n isFile = (await stat(srcFile)).isFile();\n } catch {}\n\n if (isFile) {\n await copyFile(srcFile, path.join(data.dest, path.basename(srcFile)));\n }\n }\n\n return graph;\n }),\n );\n\nconst scheduleEntryPoints = (epTransform: Transform): Transform =>\n pipe(\n concatMap(graph => {\n // Calculate node/dependency depth and determine build order\n const depGraph = new DepGraph({ circular: false });\n const entryPoints: EntryPointNode[] = graph.filter(isEntryPoint);\n\n for (const entryPoint of entryPoints) {\n // Remove `ng://` prefix for better error messages\n const from = entryPoint.url.substring(5);\n depGraph.addNode(from);\n\n for (const { url } of entryPoint.filter(isEntryPoint)) {\n const to = url.substring(5);\n depGraph.addNode(to);\n depGraph.addDependency(from, to);\n }\n }\n\n // The array index is the depth.\n const groups = depGraph.overallOrder().map(ngUrl);\n\n // Build entry points with lower depth values first.\n return from(groups).pipe(\n map((epUrl: string): EntryPointNode => graph.find(byEntryPoint().and(ep => ep.url === epUrl))),\n filter((entryPoint: EntryPointNode): boolean => entryPoint.state !== 'done'),\n concatMap(ep =>\n observableOf(ep).pipe(\n // Mark the entry point as 'in-progress'\n tap(entryPoint => (entryPoint.state = STATE_IN_PROGRESS)),\n mapTo(graph),\n epTransform,\n ),\n ),\n takeLast(1), // don't use last as sometimes it this will cause 'no elements in sequence',\n defaultIfEmpty(graph),\n );\n }),\n );\n\nfunction regenerateGlobCache(sourcesFileCache: FileCache): GlobCache {\n const cache: GlobCache = {};\n sourcesFileCache.forEach((value, key) => {\n // ignore node_modules and file which don't exists as they are not used by globbing in our case\n if (value.exists && !key.includes('node_modules')) {\n cache[key] = 'FILE';\n }\n });\n\n return cache;\n}"]}
|
package/lib/ng-package/schema.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/lib/ng-package/schema.ts"],"names":[],"mappings":"
|
|
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;QACZ,MAAM,IAAI,KAAK,CACb,qDAAqD,4BAA4B,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CACrG,CAAC;KACH;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;YAC1C,OAAO,IAAI,KAAM,GAAG,CAAC,MAAc,CAAC,kBAAkB,GAAG,CAAC;SAC3D;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;QACzB,OAAO,YAAY,CAAC;KACrB;IAED,MAAM,IAAI,GAAG,IAAI,aAAG,CAAC;QACnB,WAAW,EAAE,IAAI;KAClB,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;gBACV,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;aACH;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 });\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,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile-source-files.js","sourceRoot":"","sources":["../../../src/lib/ngc/compile-source-files.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CompilerOptions, ParsedConfiguration } from '@angular/compiler-cli';\nimport ts from 'typescript';\nimport { BuildGraph } from '../graph/build-graph';\nimport { EntryPointNode, PackageNode, isEntryPointInProgress, isPackage } from '../ng-package/nodes';\nimport { StylesheetProcessor } from '../styles/stylesheet-processor';\nimport { augmentProgramWithVersioning, cacheCompilerHost } from '../ts/cache-compiler-host';\nimport { ngccTransformCompilerHost } from '../ts/ngcc-transform-compiler-host';\nimport * as log from '../utils/log';\nimport { ngCompilerCli } from '../utils/ng-compiler-cli';\nimport { NgccProcessor } from './ngcc-processor';\n\nexport async function compileSourceFiles(\n graph: BuildGraph,\n tsConfig: ParsedConfiguration,\n moduleResolutionCache: ts.ModuleResolutionCache,\n extraOptions?: Partial<CompilerOptions>,\n stylesheetProcessor?: StylesheetProcessor,\n ngccProcessor?: NgccProcessor,\n watch?: boolean,\n) {\n const { NgtscProgram, formatDiagnostics } = await ngCompilerCli();\n\n const tsConfigOptions: CompilerOptions = { ...tsConfig.options, ...extraOptions };\n const entryPoint: EntryPointNode = graph.find(isEntryPointInProgress());\n const ngPackageNode: PackageNode = graph.find(isPackage);\n const inlineStyleLanguage = ngPackageNode.data.inlineStyleLanguage;\n\n const tsCompilerHost = ngccTransformCompilerHost(\n cacheCompilerHost(\n graph,\n entryPoint,\n tsConfigOptions,\n moduleResolutionCache,\n stylesheetProcessor,\n inlineStyleLanguage,\n ),\n tsConfigOptions,\n ngccProcessor,\n moduleResolutionCache,\n );\n\n const cache = entryPoint.cache;\n const sourceFileCache = cache.sourcesFileCache;\n\n // Create the Angular specific program that contains the Angular compiler\n const angularProgram = new NgtscProgram(tsConfig.rootNames, tsConfigOptions, tsCompilerHost, cache.oldNgtscProgram);\n\n const angularCompiler = angularProgram.compiler;\n const { ignoreForDiagnostics, ignoreForEmit } = angularCompiler;\n\n // SourceFile versions are required for builder programs.\n // The wrapped host inside NgtscProgram adds additional files that will not have versions.\n const typeScriptProgram = angularProgram.getTsProgram();\n augmentProgramWithVersioning(typeScriptProgram);\n\n let builder: ts.BuilderProgram | ts.EmitAndSemanticDiagnosticsBuilderProgram;\n if (watch) {\n builder = cache.oldBuilder = ts.createEmitAndSemanticDiagnosticsBuilderProgram(\n typeScriptProgram,\n tsCompilerHost,\n cache.oldBuilder,\n );\n cache.oldNgtscProgram = angularProgram;\n } else {\n // When not in watch mode, the startup cost of the incremental analysis can be avoided by\n // using an abstract builder that only wraps a TypeScript program.\n builder = ts.createAbstractBuilder(typeScriptProgram, tsCompilerHost);\n }\n\n // Update semantic diagnostics cache\n const affectedFiles = new Set<ts.SourceFile>();\n\n // Analyze affected files when in watch mode for incremental type checking\n if ('getSemanticDiagnosticsOfNextAffectedFile' in builder) {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const result = builder.getSemanticDiagnosticsOfNextAffectedFile(undefined, sourceFile => {\n // If the affected file is a TTC shim, add the shim's original source file.\n // This ensures that changes that affect TTC are typechecked even when the changes\n // are otherwise unrelated from a TS perspective and do not result in Ivy codegen changes.\n // For example, changing @Input property types of a directive used in another component's\n // template.\n if (ignoreForDiagnostics.has(sourceFile) && sourceFile.fileName.endsWith('.ngtypecheck.ts')) {\n // This file name conversion relies on internal compiler logic and should be converted\n // to an official method when available. 15 is length of `.ngtypecheck.ts`\n const originalFilename = sourceFile.fileName.slice(0, -15) + '.ts';\n const originalSourceFile = builder.getSourceFile(originalFilename);\n if (originalSourceFile) {\n affectedFiles.add(originalSourceFile);\n }\n\n return true;\n }\n\n return false;\n });\n\n if (!result) {\n break;\n }\n\n affectedFiles.add(result.affected as ts.SourceFile);\n }\n }\n\n // Collect program level diagnostics\n const allDiagnostics: ts.Diagnostic[] = [\n ...angularCompiler.getOptionDiagnostics(),\n ...builder.getOptionsDiagnostics(),\n ...builder.getGlobalDiagnostics(),\n ];\n\n // Required to support asynchronous resource loading\n // Must be done before creating transformers or getting template diagnostics\n await angularCompiler.analyzeAsync();\n\n // Collect source file specific diagnostics\n for (const sourceFile of builder.getSourceFiles()) {\n if (!ignoreForDiagnostics.has(sourceFile)) {\n allDiagnostics.push(\n ...builder.getSyntacticDiagnostics(sourceFile),\n ...builder.getSemanticDiagnostics(sourceFile),\n );\n }\n\n if (sourceFile.isDeclarationFile) {\n continue;\n }\n\n // Collect sources that are required to be emitted\n if (!ignoreForEmit.has(sourceFile) && !angularCompiler.incrementalDriver.safeToSkipEmit(sourceFile)) {\n // If required to emit, diagnostics may have also changed\n if (!ignoreForDiagnostics.has(sourceFile)) {\n affectedFiles.add(sourceFile);\n }\n } else if (sourceFileCache && !affectedFiles.has(sourceFile) && !ignoreForDiagnostics.has(sourceFile)) {\n // Use cached Angular diagnostics for unchanged and unaffected files\n const angularDiagnostics = sourceFileCache.getAngularDiagnostics(sourceFile);\n if (angularDiagnostics?.length) {\n allDiagnostics.push(...angularDiagnostics);\n }\n }\n }\n\n // Collect new Angular diagnostics for files affected by changes\n for (const affectedFile of affectedFiles) {\n const angularDiagnostics = angularCompiler.getDiagnosticsForFile(affectedFile, /** OptimizeFor.WholeProgram */ 1);\n\n allDiagnostics.push(...angularDiagnostics);\n sourceFileCache.updateAngularDiagnostics(affectedFile, angularDiagnostics);\n }\n\n const otherDiagnostics = [];\n const errorDiagnostics = [];\n for (const diagnostic of allDiagnostics) {\n if (diagnostic.category === ts.DiagnosticCategory.Error) {\n errorDiagnostics.push(diagnostic);\n } else {\n otherDiagnostics.push(diagnostic);\n }\n }\n\n if (otherDiagnostics.length) {\n log.msg(formatDiagnostics(errorDiagnostics));\n }\n\n if (errorDiagnostics.length) {\n throw new Error(formatDiagnostics(errorDiagnostics));\n }\n\n const transformers = angularCompiler.prepareEmit().transformers;\n for (const sourceFile of builder.getSourceFiles()) {\n if (!ignoreForEmit.has(sourceFile)) {\n builder.emit(sourceFile, undefined, undefined, undefined, transformers);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"compile-source-files.js","sourceRoot":"","sources":["../../../src/lib/ngc/compile-source-files.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CompilerOptions, ParsedConfiguration } from '@angular/compiler-cli';\nimport ts from 'typescript';\nimport { BuildGraph } from '../graph/build-graph';\nimport { EntryPointNode, PackageNode, isEntryPointInProgress, isPackage } from '../ng-package/nodes';\nimport { StylesheetProcessor } from '../styles/stylesheet-processor';\nimport { augmentProgramWithVersioning, cacheCompilerHost } from '../ts/cache-compiler-host';\nimport { ngccTransformCompilerHost } from '../ts/ngcc-transform-compiler-host';\nimport * as log from '../utils/log';\nimport { ngCompilerCli } from '../utils/ng-compiler-cli';\nimport { NgccProcessor } from './ngcc-processor';\n\nexport async function compileSourceFiles(\n graph: BuildGraph,\n tsConfig: ParsedConfiguration,\n moduleResolutionCache: ts.ModuleResolutionCache,\n extraOptions?: Partial<CompilerOptions>,\n stylesheetProcessor?: StylesheetProcessor,\n ngccProcessor?: NgccProcessor,\n watch?: boolean,\n) {\n const { NgtscProgram, formatDiagnostics } = await ngCompilerCli();\n\n const tsConfigOptions: CompilerOptions = { ...tsConfig.options, ...extraOptions };\n const entryPoint: EntryPointNode = graph.find(isEntryPointInProgress());\n const ngPackageNode: PackageNode = graph.find(isPackage);\n const inlineStyleLanguage = ngPackageNode.data.inlineStyleLanguage;\n\n const tsCompilerHost = ngccTransformCompilerHost(\n cacheCompilerHost(\n graph,\n entryPoint,\n tsConfigOptions,\n moduleResolutionCache,\n stylesheetProcessor,\n inlineStyleLanguage,\n ),\n tsConfigOptions,\n ngccProcessor,\n moduleResolutionCache,\n );\n\n const cache = entryPoint.cache;\n const sourceFileCache = cache.sourcesFileCache;\n\n // Create the Angular specific program that contains the Angular compiler\n const angularProgram = new NgtscProgram(tsConfig.rootNames, tsConfigOptions, tsCompilerHost, cache.oldNgtscProgram);\n\n const angularCompiler = angularProgram.compiler;\n const { ignoreForDiagnostics, ignoreForEmit } = angularCompiler;\n\n // SourceFile versions are required for builder programs.\n // The wrapped host inside NgtscProgram adds additional files that will not have versions.\n const typeScriptProgram = angularProgram.getTsProgram();\n augmentProgramWithVersioning(typeScriptProgram);\n\n let builder: ts.BuilderProgram | ts.EmitAndSemanticDiagnosticsBuilderProgram;\n if (watch) {\n builder = cache.oldBuilder = ts.createEmitAndSemanticDiagnosticsBuilderProgram(\n typeScriptProgram,\n tsCompilerHost,\n cache.oldBuilder,\n );\n cache.oldNgtscProgram = angularProgram;\n } else {\n // When not in watch mode, the startup cost of the incremental analysis can be avoided by\n // using an abstract builder that only wraps a TypeScript program.\n builder = ts.createAbstractBuilder(typeScriptProgram, tsCompilerHost);\n }\n\n // Update semantic diagnostics cache\n const affectedFiles = new Set<ts.SourceFile>();\n\n // Analyze affected files when in watch mode for incremental type checking\n if ('getSemanticDiagnosticsOfNextAffectedFile' in builder) {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const result = builder.getSemanticDiagnosticsOfNextAffectedFile(undefined, sourceFile => {\n // If the affected file is a TTC shim, add the shim's original source file.\n // This ensures that changes that affect TTC are typechecked even when the changes\n // are otherwise unrelated from a TS perspective and do not result in Ivy codegen changes.\n // For example, changing @Input property types of a directive used in another component's\n // template.\n if (ignoreForDiagnostics.has(sourceFile) && sourceFile.fileName.endsWith('.ngtypecheck.ts')) {\n // This file name conversion relies on internal compiler logic and should be converted\n // to an official method when available. 15 is length of `.ngtypecheck.ts`\n const originalFilename = sourceFile.fileName.slice(0, -15) + '.ts';\n const originalSourceFile = builder.getSourceFile(originalFilename);\n if (originalSourceFile) {\n affectedFiles.add(originalSourceFile);\n }\n\n return true;\n }\n\n return false;\n });\n\n if (!result) {\n break;\n }\n\n affectedFiles.add(result.affected as ts.SourceFile);\n }\n }\n\n // Collect program level diagnostics\n const allDiagnostics: ts.Diagnostic[] = [\n ...angularCompiler.getOptionDiagnostics(),\n ...builder.getOptionsDiagnostics(),\n ...builder.getGlobalDiagnostics(),\n ];\n\n // Required to support asynchronous resource loading\n // Must be done before creating transformers or getting template diagnostics\n await angularCompiler.analyzeAsync();\n\n // Collect source file specific diagnostics\n for (const sourceFile of builder.getSourceFiles()) {\n if (!ignoreForDiagnostics.has(sourceFile)) {\n allDiagnostics.push(\n ...builder.getSyntacticDiagnostics(sourceFile),\n ...builder.getSemanticDiagnostics(sourceFile),\n );\n }\n\n if (sourceFile.isDeclarationFile) {\n continue;\n }\n\n // Collect sources that are required to be emitted\n if (!ignoreForEmit.has(sourceFile) && !angularCompiler.incrementalDriver.safeToSkipEmit(sourceFile)) {\n // If required to emit, diagnostics may have also changed\n if (!ignoreForDiagnostics.has(sourceFile)) {\n affectedFiles.add(sourceFile);\n }\n } else if (sourceFileCache && !affectedFiles.has(sourceFile) && !ignoreForDiagnostics.has(sourceFile)) {\n // Use cached Angular diagnostics for unchanged and unaffected files\n const angularDiagnostics = sourceFileCache.getAngularDiagnostics(sourceFile);\n if (angularDiagnostics?.length) {\n allDiagnostics.push(...angularDiagnostics);\n }\n }\n }\n\n // Collect new Angular diagnostics for files affected by changes\n for (const affectedFile of affectedFiles) {\n const angularDiagnostics = angularCompiler.getDiagnosticsForFile(affectedFile, /** OptimizeFor.WholeProgram */ 1);\n\n allDiagnostics.push(...angularDiagnostics);\n sourceFileCache.updateAngularDiagnostics(affectedFile, angularDiagnostics);\n }\n\n const otherDiagnostics = [];\n const errorDiagnostics = [];\n for (const diagnostic of allDiagnostics) {\n if (diagnostic.category === ts.DiagnosticCategory.Error) {\n errorDiagnostics.push(diagnostic);\n } else {\n otherDiagnostics.push(diagnostic);\n }\n }\n\n if (otherDiagnostics.length) {\n log.msg(formatDiagnostics(errorDiagnostics));\n }\n\n if (errorDiagnostics.length) {\n throw new Error(formatDiagnostics(errorDiagnostics));\n }\n\n const transformers = angularCompiler.prepareEmit().transformers;\n for (const sourceFile of builder.getSourceFiles()) {\n if (!ignoreForEmit.has(sourceFile)) {\n builder.emit(sourceFile, undefined, undefined, undefined, transformers);\n }\n }\n}\n"]}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngcc-processor.js","sourceRoot":"","sources":["../../../src/lib/ngc/ngcc-processor.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Logger } from '@angular/compiler-cli/ngcc';\nimport { spawnSync } from 'child_process';\nimport { createHash } from 'crypto';\nimport { accessSync, constants, existsSync } from 'fs';\nimport * as path from 'path';\nimport ts from 'typescript';\nimport { NgccProcessingCache } from '../ng-package/ngcc-cache';\nimport { EntryPointNode, ngUrl } from '../ng-package/nodes';\nimport { defaultTsConfigPath } from '../ts/tsconfig';\nimport { exists, mkdir, readFile, writeFile } from '../utils/fs';\nimport * as log from '../utils/log';\n\n// Transform a package and its typings when NGTSC is resolving a module.\nexport class NgccProcessor {\n private _logger: NgccLogger;\n private _nodeModulesDirectory: string;\n private _entryPointsUrl: string[];\n private readonly propertiesToConsider = ['es2015', 'browser', 'module', 'main'];\n private skipProcessing = false;\n\n constructor(\n private readonly compilerNgcc: typeof import('@angular/compiler-cli/ngcc'),\n private readonly ngccProcessingCache: NgccProcessingCache,\n private readonly projectPath: string,\n private readonly compilerOptions: ts.CompilerOptions,\n private readonly entryPoints: EntryPointNode[],\n ) {\n this._entryPointsUrl = this.entryPoints.map(({ url }) => ngUrl(url));\n\n const { baseUrl } = this.compilerOptions;\n this._nodeModulesDirectory = this.findNodeModulesDirectory(baseUrl);\n }\n\n /** Process the entire node modules tree. */\n async process(): Promise<void> {\n // Under Bazel when running in sandbox mode parts of the filesystem is read-only.\n if (process.env.BAZEL_TARGET) {\n return;\n }\n\n // Only allow running this during the first run.\n if (this.skipProcessing) {\n return;\n }\n\n // Skip if node_modules are read-only\n const corePackage = this.tryResolvePackage('@angular/core', this._nodeModulesDirectory);\n if (corePackage && isReadOnlyFile(corePackage)) {\n return;\n }\n\n // Perform a ngcc run check to determine if an initial execution is required.\n // If a run hash file exists that matches the current package manager lock file and the\n // project's tsconfig, then an initial ngcc run has already been performed.\n let runHashFilePath: string | undefined;\n const runHashBasePath = path.join(this._nodeModulesDirectory, '.ng-packagr-ngcc');\n const projectBasePath = path.join(this._nodeModulesDirectory, '..');\n try {\n let lockData;\n let lockFile = 'yarn.lock';\n try {\n lockData = await readFile(path.join(projectBasePath, lockFile));\n } catch {\n lockFile = 'package-lock.json';\n lockData = await readFile(path.join(projectBasePath, lockFile));\n }\n\n let ngccConfigData;\n try {\n ngccConfigData = await readFile(path.join(projectBasePath, 'ngcc.config.js'));\n } catch {\n ngccConfigData = '';\n }\n\n const relativeTsconfigPath = path.relative(projectBasePath, this.projectPath);\n const tsconfigData = await readFile(this.projectPath);\n\n // Generate a hash that represents the state of the package lock file and used tsconfig\n const runHash = createHash('sha256')\n .update(lockData)\n .update(lockFile)\n .update(ngccConfigData)\n .update(tsconfigData)\n .update(relativeTsconfigPath)\n .digest('hex');\n\n // The hash is used directly in the file name to mitigate potential read/write race\n // conditions as well as to only require a file existence check\n runHashFilePath = path.join(runHashBasePath, runHash + '.lock');\n\n // If the run hash lock file exists, then ngcc was already run against this project state\n if (await exists(runHashFilePath)) {\n this.skipProcessing = true;\n\n return;\n }\n } catch {\n // Any error means an ngcc execution is needed\n }\n\n const { status, error } = spawnSync(\n process.execPath,\n [\n this.compilerNgcc.ngccMainFilePath,\n '--source' /** basePath */,\n this._nodeModulesDirectory,\n '--properties' /** propertiesToConsider */,\n ...this.propertiesToConsider,\n '--first-only' /** compileAllFormats */,\n '--create-ivy-entry-points' /** createNewEntryPointFormats */,\n '--async',\n '--tsconfig' /** tsConfigPath */,\n path.normalize(this.projectPath) === defaultTsConfigPath ? '' : this.projectPath,\n '--use-program-dependencies',\n '--typings-only' /** typingsOnly */,\n ],\n {\n stdio: ['inherit', process.stderr, process.stderr],\n },\n );\n\n this.skipProcessing = true;\n\n if (status !== 0) {\n const errorMessage = error?.message || '';\n throw new Error(errorMessage + `NGCC failed${errorMessage ? ', see above' : ''}.`);\n }\n\n // ngcc was successful so if a run hash was generated, write it for next time\n if (runHashFilePath) {\n try {\n if (!existsSync(runHashBasePath)) {\n await mkdir(runHashBasePath, { recursive: true });\n }\n await writeFile(runHashFilePath, '');\n } catch {\n // Errors are non-fatal\n }\n }\n }\n\n /** Process a module and it's depedencies. */\n processModule(moduleName: string, resolvedModule: ts.ResolvedModule | ts.ResolvedTypeReferenceDirective): void {\n const resolvedFileName = resolvedModule.resolvedFileName;\n if (\n !resolvedFileName ||\n moduleName.startsWith('.') ||\n this.ngccProcessingCache.hasProcessed(moduleName) ||\n this._entryPointsUrl.includes(ngUrl(moduleName))\n ) {\n // Skip when module is unknown, relative, an entrypoint or already processed.\n return;\n }\n\n const packageJsonPath = this.tryResolvePackage(moduleName, resolvedFileName);\n if (!packageJsonPath) {\n // add it to processed so the second time round we skip this.\n this.ngccProcessingCache.markProcessed(moduleName);\n\n return;\n }\n\n // If the package.json is read only we should skip calling NGCC.\n // With Bazel when running under sandbox the filesystem is read-only.\n if (isReadOnlyFile(packageJsonPath)) {\n // add it to processed so the second time round we skip this.\n this.ngccProcessingCache.markProcessed(moduleName);\n\n return;\n }\n\n this.compilerNgcc.process({\n basePath: this._nodeModulesDirectory,\n targetEntryPointPath: path.dirname(packageJsonPath),\n compileAllFormats: false,\n typingsOnly: true,\n propertiesToConsider: this.propertiesToConsider,\n createNewEntryPointFormats: true,\n logger: this._logger,\n tsConfigPath: this.projectPath === defaultTsConfigPath ? undefined : this.projectPath,\n });\n\n this.ngccProcessingCache.markProcessed(moduleName);\n }\n\n /**\n * Try resolve a package.json file from the resolved .d.ts file.\n */\n private tryResolvePackage(moduleName: string, resolvedFileName: string): string | undefined {\n try {\n return require.resolve(`${moduleName}/package.json`, {\n paths: [resolvedFileName],\n });\n } catch {\n // if it fails this might be a deep import which doesn't have a package.json\n // Ex: @angular/compiler/src/i18n/i18n_ast/package.json\n // or local libraries which don't reside in node_modules\n const packageJsonPath = path.resolve(resolvedFileName, '../package.json');\n\n return existsSync(packageJsonPath) ? packageJsonPath : undefined;\n }\n }\n\n private findNodeModulesDirectory(startPoint: string): string {\n let current = startPoint;\n while (path.dirname(current) !== current) {\n const nodePath = path.join(current, 'node_modules');\n if (existsSync(nodePath)) {\n return nodePath;\n }\n\n current = path.dirname(current);\n }\n\n throw new Error(`Cannot locate the 'node_modules' directory.`);\n }\n}\n\nclass NgccLogger implements Logger {\n level = /** LogLevel.info**/ 1;\n\n debug(...args: string[]) {\n log.debug(args.join(' '));\n }\n\n info(...args: string[]) {\n log.info(args.join(' '));\n }\n\n warn(...args: string[]) {\n log.warn(args.join(' '));\n }\n\n error(...args: string[]) {\n log.error(args.join(' '));\n }\n}\n\nfunction isReadOnlyFile(fileName: string): boolean {\n try {\n accessSync(fileName, constants.W_OK);\n\n return false;\n } catch {\n return true;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ngcc-processor.js","sourceRoot":"","sources":["../../../src/lib/ngc/ngcc-processor.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Logger } from '@angular/compiler-cli/ngcc';\nimport { spawnSync } from 'child_process';\nimport { createHash } from 'crypto';\nimport { accessSync, constants, existsSync } from 'fs';\nimport * as path from 'path';\nimport ts from 'typescript';\nimport { NgccProcessingCache } from '../ng-package/ngcc-cache';\nimport { EntryPointNode, ngUrl } from '../ng-package/nodes';\nimport { defaultTsConfigPath } from '../ts/tsconfig';\nimport { exists, mkdir, readFile, writeFile } from '../utils/fs';\nimport * as log from '../utils/log';\n\n// Transform a package and its typings when NGTSC is resolving a module.\nexport class NgccProcessor {\n private _logger: NgccLogger;\n private _nodeModulesDirectory: string;\n private _entryPointsUrl: string[];\n private readonly propertiesToConsider = ['es2015', 'browser', 'module', 'main'];\n private skipProcessing = false;\n\n constructor(\n private readonly compilerNgcc: typeof import('@angular/compiler-cli/ngcc'),\n private readonly ngccProcessingCache: NgccProcessingCache,\n private readonly projectPath: string,\n private readonly compilerOptions: ts.CompilerOptions,\n private readonly entryPoints: EntryPointNode[],\n ) {\n this._entryPointsUrl = this.entryPoints.map(({ url }) => ngUrl(url));\n\n const { baseUrl } = this.compilerOptions;\n this._nodeModulesDirectory = this.findNodeModulesDirectory(baseUrl);\n }\n\n /** Process the entire node modules tree. */\n async process(): Promise<void> {\n // Under Bazel when running in sandbox mode parts of the filesystem is read-only.\n if (process.env.BAZEL_TARGET) {\n return;\n }\n\n // Only allow running this during the first run.\n if (this.skipProcessing) {\n return;\n }\n\n // Skip if node_modules are read-only\n const corePackage = this.tryResolvePackage('@angular/core', this._nodeModulesDirectory);\n if (corePackage && isReadOnlyFile(corePackage)) {\n return;\n }\n\n // Perform a ngcc run check to determine if an initial execution is required.\n // If a run hash file exists that matches the current package manager lock file and the\n // project's tsconfig, then an initial ngcc run has already been performed.\n let runHashFilePath: string | undefined;\n const runHashBasePath = path.join(this._nodeModulesDirectory, '.ng-packagr-ngcc');\n const projectBasePath = path.join(this._nodeModulesDirectory, '..');\n try {\n let lockData;\n let lockFile = 'yarn.lock';\n try {\n lockData = await readFile(path.join(projectBasePath, lockFile));\n } catch {\n lockFile = 'package-lock.json';\n lockData = await readFile(path.join(projectBasePath, lockFile));\n }\n\n let ngccConfigData;\n try {\n ngccConfigData = await readFile(path.join(projectBasePath, 'ngcc.config.js'));\n } catch {\n ngccConfigData = '';\n }\n\n const relativeTsconfigPath = path.relative(projectBasePath, this.projectPath);\n const tsconfigData = await readFile(this.projectPath);\n\n // Generate a hash that represents the state of the package lock file and used tsconfig\n const runHash = createHash('sha256')\n .update(lockData)\n .update(lockFile)\n .update(ngccConfigData)\n .update(tsconfigData)\n .update(relativeTsconfigPath)\n .digest('hex');\n\n // The hash is used directly in the file name to mitigate potential read/write race\n // conditions as well as to only require a file existence check\n runHashFilePath = path.join(runHashBasePath, runHash + '.lock');\n\n // If the run hash lock file exists, then ngcc was already run against this project state\n if (await exists(runHashFilePath)) {\n this.skipProcessing = true;\n\n return;\n }\n } catch {\n // Any error means an ngcc execution is needed\n }\n\n const { status, error } = spawnSync(\n process.execPath,\n [\n this.compilerNgcc.ngccMainFilePath,\n '--source' /** basePath */,\n this._nodeModulesDirectory,\n '--properties' /** propertiesToConsider */,\n ...this.propertiesToConsider,\n '--first-only' /** compileAllFormats */,\n '--create-ivy-entry-points' /** createNewEntryPointFormats */,\n '--async',\n '--tsconfig' /** tsConfigPath */,\n path.normalize(this.projectPath) === defaultTsConfigPath ? '' : this.projectPath,\n '--use-program-dependencies',\n '--typings-only' /** typingsOnly */,\n ],\n {\n stdio: ['inherit', process.stderr, process.stderr],\n },\n );\n\n this.skipProcessing = true;\n\n if (status !== 0) {\n const errorMessage = error?.message || '';\n throw new Error(errorMessage + `NGCC failed${errorMessage ? ', see above' : ''}.`);\n }\n\n // ngcc was successful so if a run hash was generated, write it for next time\n if (runHashFilePath) {\n try {\n if (!existsSync(runHashBasePath)) {\n await mkdir(runHashBasePath, { recursive: true });\n }\n await writeFile(runHashFilePath, '');\n } catch {\n // Errors are non-fatal\n }\n }\n }\n\n /** Process a module and it's depedencies. */\n processModule(moduleName: string, resolvedModule: ts.ResolvedModule | ts.ResolvedTypeReferenceDirective): void {\n const resolvedFileName = resolvedModule.resolvedFileName;\n if (\n !resolvedFileName ||\n moduleName.startsWith('.') ||\n this.ngccProcessingCache.hasProcessed(moduleName) ||\n this._entryPointsUrl.includes(ngUrl(moduleName))\n ) {\n // Skip when module is unknown, relative, an entrypoint or already processed.\n return;\n }\n\n const packageJsonPath = this.tryResolvePackage(moduleName, resolvedFileName);\n if (!packageJsonPath) {\n // add it to processed so the second time round we skip this.\n this.ngccProcessingCache.markProcessed(moduleName);\n\n return;\n }\n\n // If the package.json is read only we should skip calling NGCC.\n // With Bazel when running under sandbox the filesystem is read-only.\n if (isReadOnlyFile(packageJsonPath)) {\n // add it to processed so the second time round we skip this.\n this.ngccProcessingCache.markProcessed(moduleName);\n\n return;\n }\n\n this.compilerNgcc.process({\n basePath: this._nodeModulesDirectory,\n targetEntryPointPath: path.dirname(packageJsonPath),\n compileAllFormats: false,\n typingsOnly: true,\n propertiesToConsider: this.propertiesToConsider,\n createNewEntryPointFormats: true,\n logger: this._logger,\n tsConfigPath: this.projectPath === defaultTsConfigPath ? undefined : this.projectPath,\n });\n\n this.ngccProcessingCache.markProcessed(moduleName);\n }\n\n /**\n * Try resolve a package.json file from the resolved .d.ts file.\n */\n private tryResolvePackage(moduleName: string, resolvedFileName: string): string | undefined {\n try {\n return require.resolve(`${moduleName}/package.json`, {\n paths: [resolvedFileName],\n });\n } catch {\n // if it fails this might be a deep import which doesn't have a package.json\n // Ex: @angular/compiler/src/i18n/i18n_ast/package.json\n // or local libraries which don't reside in node_modules\n const packageJsonPath = path.resolve(resolvedFileName, '../package.json');\n\n return existsSync(packageJsonPath) ? packageJsonPath : undefined;\n }\n }\n\n private findNodeModulesDirectory(startPoint: string): string {\n let current = startPoint;\n while (path.dirname(current) !== current) {\n const nodePath = path.join(current, 'node_modules');\n if (existsSync(nodePath)) {\n return nodePath;\n }\n\n current = path.dirname(current);\n }\n\n throw new Error(`Cannot locate the 'node_modules' directory.`);\n }\n}\n\nclass NgccLogger implements Logger {\n level = /** LogLevel.info**/ 1;\n\n debug(...args: string[]) {\n log.debug(args.join(' '));\n }\n\n info(...args: string[]) {\n log.info(args.join(' '));\n }\n\n warn(...args: string[]) {\n log.warn(args.join(' '));\n }\n\n error(...args: string[]) {\n log.error(args.join(' '));\n }\n}\n\nfunction isReadOnlyFile(fileName: string): boolean {\n try {\n accessSync(fileName, constants.W_OK);\n\n return false;\n } catch {\n return true;\n }\n}\n"]}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stylesheet-processor.js","sourceRoot":"","sources":["../../../src/lib/styles/stylesheet-processor.ts"],"names":[],"mappings":"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","sourcesContent":["import browserslist from 'browserslist';\nimport { existsSync } from 'fs';\nimport { dirname, extname, join } from 'path';\nimport postcss from 'postcss';\nimport postcssPresetEnv from 'postcss-preset-env';\nimport postcssUrl from 'postcss-url';\nimport { EsbuildExecutor } from '../esbuild/esbuild-executor';\nimport { generateKey, readCacheEntry, saveCacheEntry } from '../utils/cache';\nimport * as log from '../utils/log';\n\nexport enum CssUrl {\n inline = 'inline',\n none = 'none',\n}\n\nexport enum InlineStyleLanguage {\n sass = 'sass',\n scss = 'scss',\n css = 'css',\n less = 'less',\n}\n\nexport interface Result {\n css: string;\n warnings: string[];\n error?: string;\n}\nexport class StylesheetProcessor {\n private browserslistData: string[];\n private targets: string[];\n private postCssProcessor: ReturnType<typeof postcss>;\n private esbuild = new EsbuildExecutor();\n private styleIncludePaths: string[];\n\n constructor(\n private readonly basePath: string,\n private readonly cssUrl?: CssUrl,\n private readonly includePaths?: string[],\n private readonly cacheDirectory?: string | false,\n ) {\n log.debug(`determine browserslist for ${this.basePath}`);\n // By default, browserslist defaults are too inclusive\n // https://github.com/browserslist/browserslist/blob/83764ea81ffaa39111c204b02c371afa44a4ff07/index.js#L516-L522\n\n // We change the default query to browsers that Angular support.\n // https://angular.io/guide/browser-support\n (browserslist.defaults as string[]) = [\n 'last 1 Chrome version',\n 'last 1 Firefox version',\n 'last 2 Edge major versions',\n 'last 2 Safari major versions',\n 'last 2 iOS major versions',\n 'Firefox ESR',\n ];\n\n this.styleIncludePaths = [...this.includePaths];\n let prevDir = null;\n let currentDir = this.basePath;\n\n while (currentDir !== prevDir) {\n const p = join(currentDir, 'node_modules');\n if (existsSync(p)) {\n this.styleIncludePaths.push(p);\n }\n\n prevDir = currentDir;\n currentDir = dirname(prevDir);\n }\n\n this.browserslistData = browserslist(undefined, { path: this.basePath });\n this.targets = transformSupportedBrowsersToTargets(this.browserslistData);\n this.postCssProcessor = this.createPostCssPlugins();\n }\n\n async process({ filePath, content }: { filePath: string; content: string }): Promise<string> {\n let key: string | undefined;\n\n if (!content.includes('@import') && !content.includes('@use') && this.cacheDirectory) {\n // No transitive deps, we can cache more aggressively.\n key = await generateKey(content, ...this.browserslistData);\n const result = await readCacheEntry(this.cacheDirectory, key);\n if (result) {\n result.warnings.forEach(msg => log.warn(msg));\n\n return result.css;\n }\n }\n\n // Render pre-processor language (sass, styl, less)\n const renderedCss = await this.renderCss(filePath, content);\n\n // We cannot cache CSS re-rendering phase, because a transitive dependency via (@import) can case different CSS output.\n // Example a change in a mixin or SCSS variable.\n if (!key) {\n key = await generateKey(renderedCss, ...this.browserslistData);\n }\n\n if (this.cacheDirectory) {\n const cachedResult = await readCacheEntry(this.cacheDirectory, key);\n if (cachedResult) {\n cachedResult.warnings.forEach(msg => log.warn(msg));\n\n return cachedResult.css;\n }\n }\n // Render postcss (autoprefixing and friends)\n const result = await this.postCssProcessor.process(renderedCss, {\n from: filePath,\n to: filePath.replace(extname(filePath), '.css'),\n });\n\n const warnings = result.warnings().map(w => w.toString());\n const { code, warnings: esBuildWarnings } = await this.esbuild.transform(result.css, {\n loader: 'css',\n minify: true,\n target: this.targets,\n sourcefile: filePath,\n });\n\n if (esBuildWarnings.length > 0) {\n warnings.push(...(await this.esbuild.formatMessages(esBuildWarnings, { kind: 'warning' })));\n }\n\n if (this.cacheDirectory) {\n await saveCacheEntry(\n this.cacheDirectory,\n key,\n JSON.stringify({\n css: code,\n warnings,\n }),\n );\n }\n warnings.forEach(msg => log.warn(msg));\n\n return code;\n }\n\n private createPostCssPlugins(): ReturnType<typeof postcss> {\n const postCssPlugins = [];\n if (this.cssUrl !== CssUrl.none) {\n postCssPlugins.push(postcssUrl({ url: this.cssUrl }));\n }\n\n postCssPlugins.push(\n postcssPresetEnv({\n browsers: this.browserslistData,\n autoprefixer: true,\n stage: 3,\n }),\n );\n\n return postcss(postCssPlugins);\n }\n\n private async renderCss(filePath: string, css: string): Promise<string> {\n const ext = extname(filePath);\n\n switch (ext) {\n case '.sass':\n case '.scss': {\n return (await import('sass'))\n .renderSync({\n file: filePath,\n data: css,\n indentedSyntax: '.sass' === ext,\n importer: customSassImporter,\n includePaths: this.styleIncludePaths,\n })\n .css.toString();\n }\n case '.less': {\n const { css: content } = await (\n await import('less')\n ).default.render(css, {\n filename: filePath,\n math: 'always',\n javascriptEnabled: true,\n paths: this.styleIncludePaths,\n });\n\n return content;\n }\n case '.styl':\n case '.stylus': {\n const stylus = (await import('stylus')).default;\n\n return (\n stylus(css)\n // add paths for resolve\n .set('paths', [this.basePath, '.', ...this.styleIncludePaths, 'node_modules'])\n // add support for resolving plugins from node_modules\n .set('filename', filePath)\n // turn on url resolver in stylus, same as flag --resolve-url\n .set('resolve url', true)\n .define('url', stylus.resolver(undefined))\n .render()\n );\n }\n case '.css':\n default:\n return css;\n }\n }\n}\n\nfunction transformSupportedBrowsersToTargets(supportedBrowsers: string[]): string[] {\n const transformed: string[] = [];\n\n // https://esbuild.github.io/api/#target\n const esBuildSupportedBrowsers = new Set(['safari', 'firefox', 'edge', 'chrome', 'ios']);\n\n for (const browser of supportedBrowsers) {\n let [browserName, version] = browser.split(' ');\n\n // browserslist uses the name `ios_saf` for iOS Safari whereas esbuild uses `ios`\n if (browserName === 'ios_saf') {\n browserName = 'ios';\n }\n\n // browserslist uses ranges `15.2-15.3` versions but only the lowest is required\n // to perform minimum supported feature checks. esbuild also expects a single version.\n [version] = version.split('-');\n\n if (esBuildSupportedBrowsers.has(browserName)) {\n if (browserName === 'safari' && version === 'TP') {\n // esbuild only supports numeric versions so `TP` is converted to a high number (999) since\n // a Technology Preview (TP) of Safari is assumed to support all currently known features.\n version = '999';\n }\n\n transformed.push(browserName + version);\n }\n }\n\n return transformed.length ? transformed : undefined;\n}\n\nfunction customSassImporter(url: string, prev: string): { file: string; prev: string } | undefined {\n // NB: Sass importer should always be sync as otherwise it will cause\n // sass to go in the async path which is slower.\n if (url[0] !== '~') {\n return undefined;\n }\n\n return {\n file: url.substr(1),\n prev,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"stylesheet-processor.js","sourceRoot":"","sources":["../../../src/lib/styles/stylesheet-processor.ts"],"names":[],"mappings":"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","sourcesContent":["import browserslist from 'browserslist';\nimport { existsSync } from 'fs';\nimport { dirname, extname, join } from 'path';\nimport postcss from 'postcss';\nimport postcssPresetEnv from 'postcss-preset-env';\nimport postcssUrl from 'postcss-url';\nimport { EsbuildExecutor } from '../esbuild/esbuild-executor';\nimport { generateKey, readCacheEntry, saveCacheEntry } from '../utils/cache';\nimport * as log from '../utils/log';\n\nexport enum CssUrl {\n inline = 'inline',\n none = 'none',\n}\n\nexport enum InlineStyleLanguage {\n sass = 'sass',\n scss = 'scss',\n css = 'css',\n less = 'less',\n}\n\nexport interface Result {\n css: string;\n warnings: string[];\n error?: string;\n}\nexport class StylesheetProcessor {\n private browserslistData: string[];\n private targets: string[];\n private postCssProcessor: ReturnType<typeof postcss>;\n private esbuild = new EsbuildExecutor();\n private styleIncludePaths: string[];\n\n constructor(\n private readonly basePath: string,\n private readonly cssUrl?: CssUrl,\n private readonly includePaths?: string[],\n private readonly cacheDirectory?: string | false,\n ) {\n log.debug(`determine browserslist for ${this.basePath}`);\n // By default, browserslist defaults are too inclusive\n // https://github.com/browserslist/browserslist/blob/83764ea81ffaa39111c204b02c371afa44a4ff07/index.js#L516-L522\n\n // We change the default query to browsers that Angular support.\n // https://angular.io/guide/browser-support\n (browserslist.defaults as string[]) = [\n 'last 1 Chrome version',\n 'last 1 Firefox version',\n 'last 2 Edge major versions',\n 'last 2 Safari major versions',\n 'last 2 iOS major versions',\n 'Firefox ESR',\n ];\n\n this.styleIncludePaths = [...this.includePaths];\n let prevDir = null;\n let currentDir = this.basePath;\n\n while (currentDir !== prevDir) {\n const p = join(currentDir, 'node_modules');\n if (existsSync(p)) {\n this.styleIncludePaths.push(p);\n }\n\n prevDir = currentDir;\n currentDir = dirname(prevDir);\n }\n\n this.browserslistData = browserslist(undefined, { path: this.basePath });\n this.targets = transformSupportedBrowsersToTargets(this.browserslistData);\n this.postCssProcessor = this.createPostCssPlugins();\n }\n\n async process({ filePath, content }: { filePath: string; content: string }): Promise<string> {\n let key: string | undefined;\n\n if (!content.includes('@import') && !content.includes('@use') && this.cacheDirectory) {\n // No transitive deps, we can cache more aggressively.\n key = await generateKey(content, ...this.browserslistData);\n const result = await readCacheEntry(this.cacheDirectory, key);\n if (result) {\n result.warnings.forEach(msg => log.warn(msg));\n\n return result.css;\n }\n }\n\n // Render pre-processor language (sass, styl, less)\n const renderedCss = await this.renderCss(filePath, content);\n\n // We cannot cache CSS re-rendering phase, because a transitive dependency via (@import) can case different CSS output.\n // Example a change in a mixin or SCSS variable.\n if (!key) {\n key = await generateKey(renderedCss, ...this.browserslistData);\n }\n\n if (this.cacheDirectory) {\n const cachedResult = await readCacheEntry(this.cacheDirectory, key);\n if (cachedResult) {\n cachedResult.warnings.forEach(msg => log.warn(msg));\n\n return cachedResult.css;\n }\n }\n // Render postcss (autoprefixing and friends)\n const result = await this.postCssProcessor.process(renderedCss, {\n from: filePath,\n to: filePath.replace(extname(filePath), '.css'),\n });\n\n const warnings = result.warnings().map(w => w.toString());\n const { code, warnings: esBuildWarnings } = await this.esbuild.transform(result.css, {\n loader: 'css',\n minify: true,\n target: this.targets,\n sourcefile: filePath,\n });\n\n if (esBuildWarnings.length > 0) {\n warnings.push(...(await this.esbuild.formatMessages(esBuildWarnings, { kind: 'warning' })));\n }\n\n if (this.cacheDirectory) {\n await saveCacheEntry(\n this.cacheDirectory,\n key,\n JSON.stringify({\n css: code,\n warnings,\n }),\n );\n }\n warnings.forEach(msg => log.warn(msg));\n\n return code;\n }\n\n private createPostCssPlugins(): ReturnType<typeof postcss> {\n const postCssPlugins = [];\n if (this.cssUrl !== CssUrl.none) {\n postCssPlugins.push(postcssUrl({ url: this.cssUrl }));\n }\n\n postCssPlugins.push(\n postcssPresetEnv({\n browsers: this.browserslistData,\n autoprefixer: true,\n stage: 3,\n }),\n );\n\n return postcss(postCssPlugins);\n }\n\n private async renderCss(filePath: string, css: string): Promise<string> {\n const ext = extname(filePath);\n\n switch (ext) {\n case '.sass':\n case '.scss': {\n return (await import('sass'))\n .renderSync({\n file: filePath,\n data: css,\n indentedSyntax: '.sass' === ext,\n importer: customSassImporter,\n includePaths: this.styleIncludePaths,\n })\n .css.toString();\n }\n case '.less': {\n const { css: content } = await (\n await import('less')\n ).default.render(css, {\n filename: filePath,\n math: 'always',\n javascriptEnabled: true,\n paths: this.styleIncludePaths,\n });\n\n return content;\n }\n case '.styl':\n case '.stylus': {\n const stylus = (await import('stylus')).default;\n\n return (\n stylus(css)\n // add paths for resolve\n .set('paths', [this.basePath, '.', ...this.styleIncludePaths, 'node_modules'])\n // add support for resolving plugins from node_modules\n .set('filename', filePath)\n // turn on url resolver in stylus, same as flag --resolve-url\n .set('resolve url', true)\n .define('url', stylus.resolver(undefined))\n .render()\n );\n }\n case '.css':\n default:\n return css;\n }\n }\n}\n\nfunction transformSupportedBrowsersToTargets(supportedBrowsers: string[]): string[] {\n const transformed: string[] = [];\n\n // https://esbuild.github.io/api/#target\n const esBuildSupportedBrowsers = new Set(['safari', 'firefox', 'edge', 'chrome', 'ios']);\n\n for (const browser of supportedBrowsers) {\n let [browserName, version] = browser.split(' ');\n\n // browserslist uses the name `ios_saf` for iOS Safari whereas esbuild uses `ios`\n if (browserName === 'ios_saf') {\n browserName = 'ios';\n }\n\n // browserslist uses ranges `15.2-15.3` versions but only the lowest is required\n // to perform minimum supported feature checks. esbuild also expects a single version.\n [version] = version.split('-');\n\n if (esBuildSupportedBrowsers.has(browserName)) {\n if (browserName === 'safari' && version === 'TP') {\n // esbuild only supports numeric versions so `TP` is converted to a high number (999) since\n // a Technology Preview (TP) of Safari is assumed to support all currently known features.\n version = '999';\n }\n\n transformed.push(browserName + version);\n }\n }\n\n return transformed.length ? transformed : undefined;\n}\n\nfunction customSassImporter(url: string, prev: string): { file: string; prev: string } | undefined {\n // NB: Sass importer should always be sync as otherwise it will cause\n // sass to go in the async path which is slower.\n if (url[0] !== '~') {\n return undefined;\n }\n\n return {\n file: url.substr(1),\n prev,\n };\n}\n"]}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-compiler-host.js","sourceRoot":"","sources":["../../../src/lib/ts/cache-compiler-host.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CompilerHost, CompilerOptions } from '@angular/compiler-cli';\n\nimport { createHash } from 'crypto';\nimport * as path from 'path';\nimport ts from 'typescript';\nimport { FileCache } from '../file-system/file-cache';\nimport { BuildGraph } from '../graph/build-graph';\nimport { Node } from '../graph/node';\nimport { EntryPointNode, fileUrl } from '../ng-package/nodes';\nimport { InlineStyleLanguage, StylesheetProcessor } from '../styles/stylesheet-processor';\nimport { ensureUnixPath } from '../utils/path';\n\nexport function cacheCompilerHost(\n graph: BuildGraph,\n entryPoint: EntryPointNode,\n compilerOptions: CompilerOptions,\n moduleResolutionCache: ts.ModuleResolutionCache,\n stylesheetProcessor?: StylesheetProcessor,\n inlineStyleLanguage?: InlineStyleLanguage,\n sourcesFileCache: FileCache = entryPoint.cache.sourcesFileCache,\n): CompilerHost {\n const compilerHost = ts.createIncrementalCompilerHost(compilerOptions);\n\n const getNode = (fileName: string) => {\n const nodeUri = fileUrl(ensureUnixPath(fileName));\n let node = graph.get(nodeUri);\n\n if (!node) {\n node = new Node(nodeUri);\n graph.put(node);\n }\n\n return node;\n };\n\n const addDependee = (fileName: string) => {\n const node = getNode(fileName);\n entryPoint.dependsOn(node);\n };\n\n return {\n ...compilerHost,\n\n // ts specific\n fileExists: (fileName: string) => {\n const cache = sourcesFileCache.getOrCreate(fileName);\n if (cache.exists === undefined) {\n cache.exists = compilerHost.fileExists.call(this, fileName);\n }\n\n return cache.exists;\n },\n\n getSourceFile: (fileName: string, languageVersion: ts.ScriptTarget) => {\n addDependee(fileName);\n const cache = sourcesFileCache.getOrCreate(fileName);\n if (!cache.sourceFile) {\n cache.sourceFile = compilerHost.getSourceFile.call(this, fileName, languageVersion);\n }\n\n return cache.sourceFile;\n },\n\n writeFile: (\n fileName: string,\n data: string,\n writeByteOrderMark: boolean,\n onError?: (message: string) => void,\n sourceFiles?: ReadonlyArray<ts.SourceFile>,\n ) => {\n if (fileName.endsWith('.d.ts')) {\n sourceFiles.forEach(source => {\n const cache = sourcesFileCache.getOrCreate(source.fileName);\n if (!cache.declarationFileName) {\n cache.declarationFileName = ensureUnixPath(fileName);\n }\n });\n } else {\n fileName = fileName.replace(/\\.js(\\.map)?$/, '.mjs$1');\n const outputCache = entryPoint.cache.outputCache;\n\n outputCache.set(fileName, {\n content: data,\n version: createHash('sha256').update(data).digest('hex'),\n });\n }\n\n compilerHost.writeFile.call(this, fileName, data, writeByteOrderMark, onError, sourceFiles);\n },\n\n readFile: (fileName: string) => {\n addDependee(fileName);\n const cache = sourcesFileCache.getOrCreate(fileName);\n if (cache.content === undefined) {\n cache.content = compilerHost.readFile.call(this, fileName);\n }\n\n return cache.content;\n },\n\n resolveModuleNames: (moduleNames: string[], containingFile: string) => {\n return moduleNames.map(moduleName => {\n const { resolvedModule } = ts.resolveModuleName(\n moduleName,\n ensureUnixPath(containingFile),\n compilerOptions,\n compilerHost,\n moduleResolutionCache,\n );\n\n return resolvedModule;\n });\n },\n\n resourceNameToFileName: (resourceName: string, containingFilePath: string) => {\n const resourcePath = path.resolve(path.dirname(containingFilePath), resourceName);\n const containingNode = getNode(containingFilePath);\n const resourceNode = getNode(resourcePath);\n containingNode.dependsOn(resourceNode);\n\n return resourcePath;\n },\n\n readResource: async (fileName: string) => {\n addDependee(fileName);\n\n const cache = sourcesFileCache.getOrCreate(fileName);\n if (cache.content === undefined) {\n if (/(?:html?|svg)$/.test(path.extname(fileName))) {\n // template\n cache.content = compilerHost.readFile.call(this, fileName);\n } else {\n // stylesheet\n cache.content = await stylesheetProcessor.process({\n filePath: fileName,\n content: compilerHost.readFile.call(this, fileName),\n });\n }\n\n if (cache.content === undefined) {\n throw new Error(`Cannot read file ${fileName}.`);\n }\n\n cache.exists = true;\n }\n\n return cache.content;\n },\n transformResource: async (data, context) => {\n if (context.resourceFile || context.type !== 'style') {\n return null;\n }\n\n if (inlineStyleLanguage) {\n const key = createHash('sha1').update(data).digest('hex');\n const fileName = `${context.containingFile}-${key}.${inlineStyleLanguage}`;\n const cache = sourcesFileCache.getOrCreate(fileName);\n if (cache.content === undefined) {\n cache.content = await stylesheetProcessor.process({\n filePath: fileName,\n content: data,\n });\n\n const virtualFileNode = getNode(fileName);\n const containingFileNode = getNode(context.containingFile);\n virtualFileNode.dependsOn(containingFileNode);\n }\n\n cache.exists = true;\n\n return { content: cache.content };\n }\n\n return null;\n },\n };\n}\n\nexport function augmentProgramWithVersioning(program: ts.Program): void {\n const baseGetSourceFiles = program.getSourceFiles;\n program.getSourceFiles = function (...parameters) {\n const files: readonly (ts.SourceFile & { version?: string })[] = baseGetSourceFiles(...parameters);\n\n for (const file of files) {\n if (file.version === undefined) {\n file.version = createHash('sha256').update(file.text).digest('hex');\n }\n }\n\n return files;\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"cache-compiler-host.js","sourceRoot":"","sources":["../../../src/lib/ts/cache-compiler-host.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CompilerHost, CompilerOptions } from '@angular/compiler-cli';\n\nimport { createHash } from 'crypto';\nimport * as path from 'path';\nimport ts from 'typescript';\nimport { FileCache } from '../file-system/file-cache';\nimport { BuildGraph } from '../graph/build-graph';\nimport { Node } from '../graph/node';\nimport { EntryPointNode, fileUrl } from '../ng-package/nodes';\nimport { InlineStyleLanguage, StylesheetProcessor } from '../styles/stylesheet-processor';\nimport { ensureUnixPath } from '../utils/path';\n\nexport function cacheCompilerHost(\n graph: BuildGraph,\n entryPoint: EntryPointNode,\n compilerOptions: CompilerOptions,\n moduleResolutionCache: ts.ModuleResolutionCache,\n stylesheetProcessor?: StylesheetProcessor,\n inlineStyleLanguage?: InlineStyleLanguage,\n sourcesFileCache: FileCache = entryPoint.cache.sourcesFileCache,\n): CompilerHost {\n const compilerHost = ts.createIncrementalCompilerHost(compilerOptions);\n\n const getNode = (fileName: string) => {\n const nodeUri = fileUrl(ensureUnixPath(fileName));\n let node = graph.get(nodeUri);\n\n if (!node) {\n node = new Node(nodeUri);\n graph.put(node);\n }\n\n return node;\n };\n\n const addDependee = (fileName: string) => {\n const node = getNode(fileName);\n entryPoint.dependsOn(node);\n };\n\n return {\n ...compilerHost,\n\n // ts specific\n fileExists: (fileName: string) => {\n const cache = sourcesFileCache.getOrCreate(fileName);\n if (cache.exists === undefined) {\n cache.exists = compilerHost.fileExists.call(this, fileName);\n }\n\n return cache.exists;\n },\n\n getSourceFile: (fileName: string, languageVersion: ts.ScriptTarget) => {\n addDependee(fileName);\n const cache = sourcesFileCache.getOrCreate(fileName);\n if (!cache.sourceFile) {\n cache.sourceFile = compilerHost.getSourceFile.call(this, fileName, languageVersion);\n }\n\n return cache.sourceFile;\n },\n\n writeFile: (\n fileName: string,\n data: string,\n writeByteOrderMark: boolean,\n onError?: (message: string) => void,\n sourceFiles?: ReadonlyArray<ts.SourceFile>,\n ) => {\n if (fileName.endsWith('.d.ts')) {\n sourceFiles.forEach(source => {\n const cache = sourcesFileCache.getOrCreate(source.fileName);\n if (!cache.declarationFileName) {\n cache.declarationFileName = ensureUnixPath(fileName);\n }\n });\n } else {\n fileName = fileName.replace(/\\.js(\\.map)?$/, '.mjs$1');\n const outputCache = entryPoint.cache.outputCache;\n\n outputCache.set(fileName, {\n content: data,\n version: createHash('sha256').update(data).digest('hex'),\n });\n }\n\n compilerHost.writeFile.call(this, fileName, data, writeByteOrderMark, onError, sourceFiles);\n },\n\n readFile: (fileName: string) => {\n addDependee(fileName);\n const cache = sourcesFileCache.getOrCreate(fileName);\n if (cache.content === undefined) {\n cache.content = compilerHost.readFile.call(this, fileName);\n }\n\n return cache.content;\n },\n\n resolveModuleNames: (moduleNames: string[], containingFile: string) => {\n return moduleNames.map(moduleName => {\n const { resolvedModule } = ts.resolveModuleName(\n moduleName,\n ensureUnixPath(containingFile),\n compilerOptions,\n compilerHost,\n moduleResolutionCache,\n );\n\n return resolvedModule;\n });\n },\n\n resourceNameToFileName: (resourceName: string, containingFilePath: string) => {\n const resourcePath = path.resolve(path.dirname(containingFilePath), resourceName);\n const containingNode = getNode(containingFilePath);\n const resourceNode = getNode(resourcePath);\n containingNode.dependsOn(resourceNode);\n\n return resourcePath;\n },\n\n readResource: async (fileName: string) => {\n addDependee(fileName);\n\n const cache = sourcesFileCache.getOrCreate(fileName);\n if (cache.content === undefined) {\n if (/(?:html?|svg)$/.test(path.extname(fileName))) {\n // template\n cache.content = compilerHost.readFile.call(this, fileName);\n } else {\n // stylesheet\n cache.content = await stylesheetProcessor.process({\n filePath: fileName,\n content: compilerHost.readFile.call(this, fileName),\n });\n }\n\n if (cache.content === undefined) {\n throw new Error(`Cannot read file ${fileName}.`);\n }\n\n cache.exists = true;\n }\n\n return cache.content;\n },\n transformResource: async (data, context) => {\n if (context.resourceFile || context.type !== 'style') {\n return null;\n }\n\n if (inlineStyleLanguage) {\n const key = createHash('sha1').update(data).digest('hex');\n const fileName = `${context.containingFile}-${key}.${inlineStyleLanguage}`;\n const cache = sourcesFileCache.getOrCreate(fileName);\n if (cache.content === undefined) {\n cache.content = await stylesheetProcessor.process({\n filePath: fileName,\n content: data,\n });\n\n const virtualFileNode = getNode(fileName);\n const containingFileNode = getNode(context.containingFile);\n virtualFileNode.dependsOn(containingFileNode);\n }\n\n cache.exists = true;\n\n return { content: cache.content };\n }\n\n return null;\n },\n };\n}\n\nexport function augmentProgramWithVersioning(program: ts.Program): void {\n const baseGetSourceFiles = program.getSourceFiles;\n program.getSourceFiles = function (...parameters) {\n const files: readonly (ts.SourceFile & { version?: string })[] = baseGetSourceFiles(...parameters);\n\n for (const file of files) {\n if (file.version === undefined) {\n file.version = createHash('sha256').update(file.text).digest('hex');\n }\n }\n\n return files;\n };\n}\n"]}
|
package/lib/ts/tsconfig.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
package/lib/ts/tsconfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsconfig.js","sourceRoot":"","sources":["../../../src/lib/ts/tsconfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tsconfig.js","sourceRoot":"","sources":["../../../src/lib/ts/tsconfig.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CompilerOptions, ParsedConfiguration } from '@angular/compiler-cli';\nimport * as path from 'path';\nimport ts from 'typescript';\nimport { EntryPointNode } from '../ng-package/nodes';\nimport * as log from '../utils/log';\nimport { warn } from '../utils/log';\nimport { ngCompilerCli } from '../utils/ng-compiler-cli';\n\nexport const defaultTsConfigPath = path.join(__dirname, 'conf', 'tsconfig.ngc.json');\n/**\n * Reads the default TypeScript configuration.\n */\nasync function readDefaultTsConfig(fileName = defaultTsConfigPath): Promise<ParsedConfiguration> {\n // these options are mandatory\n const extraOptions: CompilerOptions = {\n moduleResolution: ts.ModuleResolutionKind.NodeJs,\n target: ts.ScriptTarget.ES2020,\n experimentalDecorators: true,\n\n // sourcemaps\n sourceMap: false,\n inlineSources: true,\n inlineSourceMap: true,\n\n outDir: '',\n declaration: true,\n\n // ng compiler to options\n enableResourceInlining: true,\n\n // these are required to set the appropriate EmitFlags\n flatModuleId: 'AUTOGENERATED',\n flatModuleOutFile: 'AUTOGENERATED',\n };\n\n const { readConfiguration } = await ngCompilerCli();\n\n return readConfiguration(fileName, extraOptions);\n}\n\n/**\n * Creates a parsed TypeScript configuration object.\n *\n * @param values File path or parsed configuration.\n */\nasync function createDefaultTsConfig(values?: ParsedConfiguration | string): Promise<ParsedConfiguration> {\n if (!values) {\n return readDefaultTsConfig();\n } else if (typeof values === 'string') {\n return readDefaultTsConfig(values);\n } else {\n return values;\n }\n}\n\n/**\n * Initializes TypeScript Compiler options and Angular Compiler options by overriding the\n * default config with entry point-specific values.\n */\nexport async function initializeTsConfig(\n defaultTsConfig: ParsedConfiguration | string | undefined,\n entryPoints: EntryPointNode[],\n): Promise<void> {\n const defaultTsConfigParsed = await createDefaultTsConfig(defaultTsConfig);\n if (defaultTsConfigParsed.errors.length > 0) {\n const { formatDiagnostics } = await ngCompilerCli();\n throw new Error(formatDiagnostics(defaultTsConfigParsed.errors));\n }\n\n if (defaultTsConfigParsed.options.enableIvy === false) {\n warn(\n 'Project is attempting to disable the Ivy compiler. ' +\n 'Angular versions 13 and higher do not support View Engine compiler for libraries. ' +\n 'The Ivy compiler will be used to build this project. ' +\n '\\nFor additional information or if the build fails, please see https://v12.angular.io/guide/ivy',\n );\n\n defaultTsConfigParsed.options.enableIvy = true;\n defaultTsConfigParsed.options.compilationMode = 'partial';\n }\n\n entryPoints.forEach(currentEntryPoint => {\n const { entryPoint } = currentEntryPoint.data;\n log.debug(`Initializing tsconfig for ${entryPoint.moduleId}`);\n const basePath = path.dirname(entryPoint.entryFilePath);\n\n // Resolve defaults from DI token and create a deep copy of the defaults\n const tsConfig: ParsedConfiguration = JSON.parse(JSON.stringify(defaultTsConfigParsed));\n const overrideOptions: CompilerOptions = {\n flatModuleId: entryPoint.moduleId,\n flatModuleOutFile: `${entryPoint.flatModuleFile}.js`,\n basePath,\n rootDir: basePath,\n sourceRoot: '',\n };\n\n tsConfig.rootNames = [entryPoint.entryFilePath];\n tsConfig.options = { ...tsConfig.options, ...overrideOptions };\n currentEntryPoint.data.tsConfig = tsConfig;\n });\n}\n\n/**\n * Set the paths for entrypoint dependencies.\n *\n * This doesn't mutate the object.\n *\n * @param parsedTsConfig - A parsed tsconfig\n * @param entryPoints - A list of entryPoints\n * @param pointToSource Point the path mapping to either the source code or emitted declarations.\n * Typically for analysis one should point to the source files while for a compilation once should use the emitted declarations\n */\nexport function setDependenciesTsConfigPaths(\n parsedTsConfig: ParsedConfiguration,\n entryPoints: EntryPointNode[],\n pointToSource = false,\n): ParsedConfiguration {\n const tsConfig = JSON.parse(JSON.stringify(parsedTsConfig));\n\n // Add paths mappings for dependencies\n if (!tsConfig.options.paths) {\n tsConfig.options.paths = {};\n }\n\n for (const dep of entryPoints) {\n const { entryPoint } = dep.data;\n const { moduleId, destinationFiles, entryFilePath } = entryPoint;\n const mappedPath = [pointToSource ? entryFilePath : destinationFiles.declarations];\n\n if (!tsConfig.options.paths[moduleId]) {\n tsConfig.options.paths[moduleId] = mappedPath;\n } else {\n tsConfig.options.paths[moduleId].unshift(...mappedPath);\n }\n }\n\n return tsConfig;\n}\n"]}
|
package/lib/utils/cache.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
package/lib/utils/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/lib/utils/cache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/lib/utils/cache.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmC;AACnC,mCAAoC;AACpC,oCAAuC;AACvC,uDAAkD;AAElD,IAAI,gBAAoC,CAAC;AACzC,IAAI;IACF,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC;CAC1D;AAAC,MAAM;IACN,WAAW;IACX,gBAAgB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC;CAC7D;AAED,IAAI,kBAAsC,CAAC;AAEpC,KAAK,UAAU,WAAW,CAAC,GAAG,gBAA0B;IAC7D,IAAI,kBAAkB,KAAK,SAAS,EAAE;QACpC,kBAAkB,GAAG,CAAC,MAAM,IAAA,+BAAa,GAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;KAC3D;IAED,OAAO,IAAA,mBAAU,EAAC,MAAM,CAAC;SACtB,MAAM,CAAC,gBAAgB,CAAC;SACxB,MAAM,CAAC,kBAAkB,CAAC;SAC1B,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAClC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAVD,kCAUC;AAEM,KAAK,UAAU,cAAc,CAAC,SAAiB,EAAE,GAAW;IACjE,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACrD,IAAI,KAAK,EAAE;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,aAAQ,EAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;KACvD;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAPD,wCAOC;AAEM,KAAK,UAAU,cAAc,CAAC,SAAiB,EAAE,GAAW,EAAE,OAAe;IAClF,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAFD,wCAEC","sourcesContent":["import * as cacache from 'cacache';\nimport { createHash } from 'crypto';\nimport { readFile } from '../utils/fs';\nimport { ngCompilerCli } from './ng-compiler-cli';\n\nlet ngPackagrVersion: string | undefined;\ntry {\n ngPackagrVersion = require('../../package.json').version;\n} catch {\n // dev path\n ngPackagrVersion = require('../../../package.json').version;\n}\n\nlet compilerCliVersion: string | undefined;\n\nexport async function generateKey(...valuesToConsider: string[]): Promise<string> {\n if (compilerCliVersion === undefined) {\n compilerCliVersion = (await ngCompilerCli()).VERSION.full;\n }\n\n return createHash('sha1')\n .update(ngPackagrVersion)\n .update(compilerCliVersion)\n .update(valuesToConsider.join(':'))\n .digest('hex');\n}\n\nexport async function readCacheEntry(cachePath: string, key: string): Promise<any | undefined> {\n const entry = await cacache.get.info(cachePath, key);\n if (entry) {\n return JSON.parse(await readFile(entry.path, 'utf8'));\n }\n\n return undefined;\n}\n\nexport async function saveCacheEntry(cachePath: string, key: string, content: string): Promise<void> {\n await cacache.put(cachePath, key, content);\n}\n"]}
|
package/lib/utils/color.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
package/lib/utils/color.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color.js","sourceRoot":"","sources":["../../../src/lib/utils/color.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"color.js","sourceRoot":"","sources":["../../../src/lib/utils/color.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wDAA0C;AAC1C,6BAAkC;AAIlC,SAAS,YAAY;IACnB,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,SAAS,EAAE;QACzC,uDAAuD;QACvD,sCAAsC;QACtC,uCAAuC;QACvC,+CAA+C;QAC/C,gGAAgG;QAChG,6GAA6G;QAC7G,QAAQ,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE;YAC/B,KAAK,EAAE,CAAC;YACR,KAAK,MAAM,CAAC;YACZ,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG;gBACN,OAAO,IAAI,CAAC;YACd;gBACE,OAAO,KAAK,CAAC;SAChB;KACF;IAED,IAAI,OAAO,CAAC,MAAM,YAAY,iBAAW,EAAE;QACzC,OAAO,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;KAC3C;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAGD,6FAA6F;AAC7F,mGAAmG;AACnG,MAAM,MAAM,GAAI,UAAwD,CAAC,MAAM,EAAE,CAAC;AAGzE,wBAAM;AAFf,MAAM,CAAC,OAAO,GAAG,YAAY,EAAE,CAAC","sourcesContent":["import * as ansiColors from 'ansi-colors';\nimport { WriteStream } from 'tty';\n\ntype AnsiColors = typeof ansiColors;\n\nfunction supportColor(): boolean {\n if (process.env.FORCE_COLOR !== undefined) {\n // 2 colors: FORCE_COLOR = 0 (Disables colors), depth 1\n // 16 colors: FORCE_COLOR = 1, depth 4\n // 256 colors: FORCE_COLOR = 2, depth 8\n // 16,777,216 colors: FORCE_COLOR = 3, depth 16\n // See: https://nodejs.org/dist/latest-v12.x/docs/api/tty.html#tty_writestream_getcolordepth_env\n // and https://github.com/nodejs/node/blob/b9f36062d7b5c5039498e98d2f2c180dca2a7065/lib/internal/tty.js#L106;\n switch (process.env.FORCE_COLOR) {\n case '':\n case 'true':\n case '1':\n case '2':\n case '3':\n return true;\n default:\n return false;\n }\n }\n\n if (process.stdout instanceof WriteStream) {\n return process.stdout.getColorDepth() > 1;\n }\n\n return false;\n}\n\n\n// Create a separate instance to prevent unintended global changes to the color configuration\n// Create function is not defined in the typings. See: https://github.com/doowb/ansi-colors/pull/44\nconst colors = (ansiColors as AnsiColors & { create: () => AnsiColors }).create();\ncolors.enabled = supportColor();\n\nexport { colors };\n"]}
|
package/lib/utils/fs.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
package/lib/utils/fs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/lib/utils/fs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/lib/utils/fs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,+BAA+B;AAC/B,+BAAiC;AAEpB,QAAA,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAChC,QAAA,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;AAClC,QAAA,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5B,QAAA,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;AACxB,QAAA,KAAK,GAAG,MAAA,EAAE,CAAC,QAAQ,CAAC,EAAE,mCAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;AAElD,KAAK,UAAU,MAAM,CAAC,IAAiB;IAC5C,IAAI;QACF,MAAM,IAAA,cAAM,EAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEtC,OAAO,IAAI,CAAC;KACb;IAAC,MAAM;QACN,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AARD,wBAQC;AAED,MAAM,MAAM,GAAG,IAAA,gBAAS,EAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAC/B,KAAK,UAAU,QAAQ,CAAC,GAAW,EAAE,IAAY;IACtD,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;QACxB,MAAM,IAAA,aAAK,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;KACvC;IAED,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;AACzD,CAAC;AAPD,4BAOC","sourcesContent":["import * as fs from 'fs';\nimport { dirname } from 'path';\nimport { promisify } from 'util';\n\nexport const readFile = fs.promises.readFile;\nexport const writeFile = fs.promises.writeFile;\nexport const access = fs.promises.access;\nexport const mkdir = fs.promises.mkdir;\nexport const stat = fs.promises.stat;\nexport const rmdir = fs.promises.rm ?? fs.promises.rmdir;\n\nexport async function exists(path: fs.PathLike): Promise<boolean> {\n try {\n await access(path, fs.constants.F_OK);\n\n return true;\n } catch {\n return false;\n }\n}\n\nconst cpFile = promisify(fs.copyFile);\nexport async function copyFile(src: string, dest: string): Promise<void> {\n const dir = dirname(dest);\n if (!(await exists(dir))) {\n await mkdir(dir, { recursive: true });\n }\n\n await cpFile(src, dest, fs.constants.COPYFILE_FICLONE);\n}\n"]}
|