ng-packagr 20.2.0 → 20.3.1
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ng-packagr",
|
|
3
|
-
"version": "20.
|
|
3
|
+
"version": "20.3.1",
|
|
4
4
|
"description": "Compile and package Angular libraries in Angular Package Format (APF)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"apf",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"rollup": "^4.24.0"
|
|
59
59
|
},
|
|
60
60
|
"peerDependencies": {
|
|
61
|
-
"@angular/compiler-cli": "^20.0.0
|
|
61
|
+
"@angular/compiler-cli": "^20.0.0",
|
|
62
62
|
"tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0",
|
|
63
63
|
"tslib": "^2.3.0",
|
|
64
64
|
"typescript": ">=5.8 <6.0"
|
|
@@ -60,6 +60,11 @@ class EntryPointNode extends node_1.Node {
|
|
|
60
60
|
angularDiagnosticCache: new angular_diagnostics_cache_1.AngularDiagnosticsCache(),
|
|
61
61
|
};
|
|
62
62
|
}
|
|
63
|
+
dipose() {
|
|
64
|
+
var _a;
|
|
65
|
+
void ((_a = this.cache.stylesheetProcessor) === null || _a === void 0 ? void 0 : _a.destroy());
|
|
66
|
+
this.cache = undefined;
|
|
67
|
+
}
|
|
63
68
|
}
|
|
64
69
|
exports.EntryPointNode = EntryPointNode;
|
|
65
70
|
class PackageNode extends node_1.Node {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../../src/lib/ng-package/nodes.ts"],"names":[],"mappings":";;;;;;AAqBA,oCAEC;AAED,8BAEC;AAED,oCAEC;AAED,wDAEC;AAED,kDAEC;AAED,0BAEC;AAED,kCAEC;AAED,sBAEC;AAjDD,4DAA4B;AAC5B,0DAAsD;AAEtD,wCAAqC;AACrC,
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../../src/lib/ng-package/nodes.ts"],"names":[],"mappings":";;;;;;AAqBA,oCAEC;AAED,8BAEC;AAED,oCAEC;AAED,wDAEC;AAED,kDAEC;AAED,0BAEC;AAED,kCAEC;AAED,sBAEC;AAjDD,4DAA4B;AAC5B,0DAAsD;AAEtD,wCAAqC;AACrC,4CAA8D;AAC9D,gFAA2E;AAK3E,MAAM,eAAe,GAAG,wBAAwB,CAAC;AACjD,MAAM,mBAAmB,GAAG,4BAA4B,CAAC;AAEzD,oDAAoD;AACpD,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAEpC,kCAAkC;AAClC,MAAM,eAAe,GAAG,OAAO,CAAC;AAEhC,SAAgB,YAAY,CAAC,IAAU;IACrC,OAAO,IAAI,CAAC,IAAI,KAAK,mBAAmB,CAAC;AAC3C,CAAC;AAED,SAAgB,SAAS,CAAC,IAAU;IAClC,OAAO,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC;AACvC,CAAC;AAED,SAAgB,YAAY;IAC1B,OAAO,IAAA,WAAE,EAAC,YAAY,CAAC,CAAC;AAC1B,CAAC;AAED,SAAgB,sBAAsB;IACpC,OAAO,IAAA,WAAE,EAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,IAAA,qBAAY,EAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,SAAgB,mBAAmB;IACjC,OAAO,IAAA,WAAE,EAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,IAAA,kBAAS,EAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAgB,OAAO,CAAC,IAAY;IAClC,OAAO,GAAG,iBAAiB,GAAG,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,SAAgB,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACxF,CAAC;AAED,SAAgB,KAAK,CAAC,IAAY;IAChC,OAAO,GAAG,eAAe,GAAG,IAAI,EAAE,CAAC;AACrC,CAAC;AAID,MAAa,cAAe,SAAQ,WAAI;IAGtC,YACkB,GAAW,EAC3B,gBAA2B,EAC3B,qBAA+C;QAE/C,KAAK,CAAC,GAAG,CAAC,CAAC;QAJK,QAAG,GAAH,GAAG,CAAQ;QAHpB,SAAI,GAAG,mBAAmB,CAAC;QASlC,IAAI,CAAC,KAAK,GAAG;YACX,gBAAgB;YAChB,wBAAwB,EAAE,IAAI,sBAAS,EAAE;YACzC,qBAAqB;YACrB,WAAW,EAAE,IAAI,GAAG,EAAE;YACtB,sBAAsB,EAAE,IAAI,mDAAuB,EAAE;SACtD,CAAC;IACJ,CAAC;IAsBD,MAAM;;QACJ,KAAK,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,mBAAmB,0CAAE,OAAO,EAAE,CAAA,CAAC;QAC/C,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACzB,CAAC;CACF;AA3CD,wCA2CC;AAED,MAAa,WAAY,SAAQ,WAAI;IAArC;;QACW,SAAI,GAAG,eAAe,CAAC;QAGhC,UAAK,GAAG;YACN,gBAAgB,EAAE,IAAI,sBAAS,EAAE;YACjC,qBAAqB,EAAE,oBAAE,CAAC,2BAA2B,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC7E,CAAC;IACJ,CAAC;CAAA;AARD,kCAQC","sourcesContent":["import type { NgtscProgram, ParsedConfiguration, Program } from '@angular/compiler-cli';\nimport type { RollupCache } from 'rollup';\nimport ts from 'typescript';\nimport { FileCache } from '../file-system/file-cache';\nimport { ComplexPredicate } from '../graph/build-graph';\nimport { Node } from '../graph/node';\nimport { by, isInProgress, isPending } from '../graph/select';\nimport { AngularDiagnosticsCache } from '../ngc/angular-diagnostics-cache';\nimport { StylesheetProcessor } from '../styles/stylesheet-processor';\nimport { DestinationFiles, NgEntryPoint } from './entry-point/entry-point';\nimport { NgPackage } from './package';\n\nconst TYPE_NG_PACKAGE = 'application/ng-package';\nconst TYPE_NG_ENTRY_POINT = 'application/ng-entry-point';\n\n/** A node that can be read through the `fs` api. */\nconst URL_PROTOCOL_FILE = 'file://';\n\n/** A node specific to angular. */\nconst URL_PROTOCOL_NG = 'ng://';\n\nexport function isEntryPoint(node: Node): node is EntryPointNode {\n return node.type === TYPE_NG_ENTRY_POINT;\n}\n\nexport function isPackage(node: Node): node is PackageNode {\n return node.type === TYPE_NG_PACKAGE;\n}\n\nexport function byEntryPoint(): ComplexPredicate<EntryPointNode> {\n return by(isEntryPoint);\n}\n\nexport function isEntryPointInProgress(): ComplexPredicate<EntryPointNode> {\n return by(n => isEntryPoint(n) && isInProgress(n));\n}\n\nexport function isEntryPointPending(): ComplexPredicate<EntryPointNode> {\n return by(n => isEntryPoint(n) && isPending(n));\n}\n\nexport function fileUrl(path: string): string {\n return `${URL_PROTOCOL_FILE}${path}`;\n}\n\nexport function fileUrlPath(url: string): string | null {\n return url.startsWith(URL_PROTOCOL_FILE) ? url.slice(URL_PROTOCOL_FILE.length) : null;\n}\n\nexport function ngUrl(path: string): string {\n return `${URL_PROTOCOL_NG}${path}`;\n}\n\nexport type OutputFileCache = Map<string, { version?: string; content: string }>;\n\nexport class EntryPointNode extends Node {\n readonly type = TYPE_NG_ENTRY_POINT;\n\n constructor(\n public readonly url: string,\n sourcesFileCache: FileCache,\n moduleResolutionCache: ts.ModuleResolutionCache,\n ) {\n super(url);\n\n this.cache = {\n sourcesFileCache,\n analysesSourcesFileCache: new FileCache(),\n moduleResolutionCache,\n outputCache: new Map(),\n angularDiagnosticCache: new AngularDiagnosticsCache(),\n };\n }\n\n cache: {\n outputCache: OutputFileCache;\n oldPrograms?: Record<ts.ScriptTarget | 'analysis', Program | ts.Program>;\n sourcesFileCache: FileCache;\n analysesSourcesFileCache: FileCache;\n moduleResolutionCache: ts.ModuleResolutionCache;\n rollupFESM2022Cache?: RollupCache;\n rollupTypesCache?: RollupCache;\n stylesheetProcessor?: StylesheetProcessor;\n oldNgtscProgram?: NgtscProgram;\n oldBuilder?: ts.EmitAndSemanticDiagnosticsBuilderProgram;\n angularDiagnosticCache: AngularDiagnosticsCache;\n };\n\n data: {\n destinationFiles: DestinationFiles;\n entryPoint: NgEntryPoint;\n tsConfig?: ParsedConfiguration;\n };\n\n dipose(): void {\n void this.cache.stylesheetProcessor?.destroy();\n this.cache = undefined;\n }\n}\n\nexport class PackageNode extends Node {\n readonly type = TYPE_NG_PACKAGE;\n data: NgPackage;\n\n cache = {\n sourcesFileCache: new FileCache(),\n moduleResolutionCache: ts.createModuleResolutionCache(process.cwd(), s => s),\n };\n}\n"]}
|
|
@@ -63,7 +63,7 @@ const packageTransformFactory = (project, options, initTsConfigTransform, analys
|
|
|
63
63
|
log.info(`Building Angular Package`);
|
|
64
64
|
const buildTransform = options.watch
|
|
65
65
|
? watchTransformFactory(project, options, analyseSourcesTransform, entryPointTransform)
|
|
66
|
-
: buildTransformFactory(project, analyseSourcesTransform, entryPointTransform);
|
|
66
|
+
: buildTransformFactory(project, options, analyseSourcesTransform, entryPointTransform);
|
|
67
67
|
const pkgUri = (0, nodes_1.ngUrl)(project);
|
|
68
68
|
const ngPkg = new nodes_1.PackageNode(pkgUri);
|
|
69
69
|
return source$.pipe(
|
|
@@ -118,14 +118,14 @@ const watchTransformFactory = (project, options, analyseSourcesTransform, entryP
|
|
|
118
118
|
const ngPkg = graph.get(pkgUri);
|
|
119
119
|
return (0, rxjs_1.of)(graph).pipe(analyseSourcesTransform,
|
|
120
120
|
// Next, run through the entry point transformation (assets rendering, code compilation)
|
|
121
|
-
scheduleEntryPoints(entryPointTransform), (0, rxjs_1.repeat)({ delay: () => (graph.some((0, nodes_1.isEntryPointPending)()) ? (0, rxjs_1.of)(1) : rxjs_1.EMPTY) }), (0, rxjs_1.last)(), (0, rxjs_1.tap)(() => printBuiltAngularPackage(ngPkg, startTime)), (0, rxjs_1.catchError)(error => {
|
|
121
|
+
scheduleEntryPoints(entryPointTransform, options), (0, rxjs_1.repeat)({ delay: () => (graph.some((0, nodes_1.isEntryPointPending)()) ? (0, rxjs_1.of)(1) : rxjs_1.EMPTY) }), (0, rxjs_1.last)(), (0, rxjs_1.tap)(() => printBuiltAngularPackage(ngPkg, startTime)), (0, rxjs_1.catchError)(error => {
|
|
122
122
|
log.error(error);
|
|
123
123
|
log.msg(FailedWaitingForFileChange);
|
|
124
124
|
return rxjs_1.NEVER;
|
|
125
125
|
}), (0, rxjs_1.tap)(() => log.msg(CompleteWaitingForFileChange)));
|
|
126
126
|
}));
|
|
127
127
|
};
|
|
128
|
-
const buildTransformFactory = (project, analyseSourcesTransform, entryPointTransform) => (source$) => {
|
|
128
|
+
const buildTransformFactory = (project, options, analyseSourcesTransform, entryPointTransform) => (source$) => {
|
|
129
129
|
return source$.pipe((0, rxjs_1.switchMap)(graph => {
|
|
130
130
|
const startTime = Date.now();
|
|
131
131
|
const pkgUri = (0, nodes_1.ngUrl)(project);
|
|
@@ -134,10 +134,10 @@ const buildTransformFactory = (project, analyseSourcesTransform, entryPointTrans
|
|
|
134
134
|
// Analyse dependencies and external resources for each entry point
|
|
135
135
|
analyseSourcesTransform,
|
|
136
136
|
// Next, run through the entry point transformation (assets rendering, code compilation)
|
|
137
|
-
scheduleEntryPoints(entryPointTransform), (0, rxjs_1.tap)(() => printBuiltAngularPackage(ngPkg, startTime)));
|
|
137
|
+
scheduleEntryPoints(entryPointTransform, options), (0, rxjs_1.tap)(() => printBuiltAngularPackage(ngPkg, startTime)));
|
|
138
138
|
}));
|
|
139
139
|
};
|
|
140
|
-
const scheduleEntryPoints = (epTransform) => (0, rxjs_1.pipe)((0, rxjs_1.concatMap)(graph => {
|
|
140
|
+
const scheduleEntryPoints = (epTransform, options) => (0, rxjs_1.pipe)((0, rxjs_1.concatMap)(graph => {
|
|
141
141
|
// Calculate node/dependency depth and determine build order
|
|
142
142
|
const depGraph = new dependency_graph_1.DepGraph({ circular: false });
|
|
143
143
|
for (const node of graph.values()) {
|
|
@@ -164,6 +164,10 @@ const scheduleEntryPoints = (epTransform) => (0, rxjs_1.pipe)((0, rxjs_1.concatM
|
|
|
164
164
|
(0, rxjs_1.tap)(entryPoint => (entryPoint.state = node_1.STATE_IN_PROGRESS)), (0, rxjs_1.map)(() => graph), epTransform, (0, rxjs_1.catchError)(err => {
|
|
165
165
|
ep.state = node_1.STATE_ERROR;
|
|
166
166
|
throw err;
|
|
167
|
+
}), (0, rxjs_1.finalize)(() => {
|
|
168
|
+
if (!options.watch) {
|
|
169
|
+
ep.dipose();
|
|
170
|
+
}
|
|
167
171
|
}))), (0, rxjs_1.takeLast)(1), // don't use last as sometimes it this will cause 'no elements in sequence',
|
|
168
172
|
(0, rxjs_1.defaultIfEmpty)(graph));
|
|
169
173
|
}));
|
|
@@ -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 {\n EMPTY,\n NEVER,\n Observable,\n catchError,\n concatMap,\n debounceTime,\n defaultIfEmpty,\n filter,\n finalize,\n from,\n last,\n map,\n of as observableOf,\n of,\n pipe,\n repeat,\n startWith,\n switchMap,\n takeLast,\n tap,\n} from 'rxjs';\nimport { createFileWatch, invalidateEntryPointsAndCacheOnFileChange } from '../file-system/file-watcher';\nimport { BuildGraph } from '../graph/build-graph';\nimport { Node, STATE_DONE, STATE_ERROR, STATE_IN_PROGRESS, STATE_PENDING } from '../graph/node';\nimport { Transform } from '../graph/transform';\nimport { colors } from '../utils/color';\nimport { rmdir } from '../utils/fs';\nimport * as log from '../utils/log';\nimport { discoverPackages } from './discover-packages';\nimport {\n EntryPointNode,\n PackageNode,\n byEntryPoint,\n isEntryPoint,\n isEntryPointPending,\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 *\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 (\n project: string,\n options: NgPackagrOptions,\n initTsConfigTransform: Transform,\n analyseSourcesTransform: Transform,\n entryPointTransform: Transform,\n ) =>\n (source$: Observable<BuildGraph>): Observable<BuildGraph> => {\n log.info(`Building Angular Package`);\n\n const buildTransform = options.watch\n ? watchTransformFactory(project, options, analyseSourcesTransform, entryPointTransform)\n : buildTransformFactory(project, analyseSourcesTransform, entryPointTransform);\n\n const pkgUri = ngUrl(project);\n const ngPkg = new PackageNode(pkgUri);\n\n return source$.pipe(\n // Discover packages and entry points\n // Clean the primary dest folder (should clean all secondary sub-directory, as well)\n switchMap(async graph => {\n ngPkg.data = await discoverPackages({ project });\n\n graph.put(ngPkg);\n const { dest, deleteDestPath } = ngPkg.data;\n\n if (deleteDestPath) {\n try {\n await rmdir(dest, { recursive: true });\n } catch {}\n }\n\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.moduleResolutionCache,\n );\n node.data = { entryPoint, destinationFiles };\n node.state = STATE_PENDING;\n ngPkg.dependsOn(node);\n\n return node;\n });\n\n // Add entry points to graph\n return graph.put(entryPoints);\n }),\n // Initialize the tsconfig for each entry point\n initTsConfigTransform,\n // perform build\n buildTransform,\n finalize(() => {\n for (const node of ngPkg.dependents) {\n if (node instanceof EntryPointNode) {\n node.cache.stylesheetProcessor?.destroy();\n }\n }\n }),\n );\n };\n\nconst watchTransformFactory =\n (project: string, options: NgPackagrOptions, analyseSourcesTransform: Transform, 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 {\n data,\n cache: { sourcesFileCache },\n } = graph.find(isPackage);\n const { onFileChange, watcher } = createFileWatch([], [data.dest + '/'], options.poll);\n graph.watcher = watcher;\n\n return onFileChange.pipe(\n map(fileChange => invalidateEntryPointsAndCacheOnFileChange(graph, [fileChange.filePath], sourcesFileCache)),\n filter(isChanged => isChanged),\n debounceTime(100),\n tap(() => log.msg(FileChangeDetected)),\n startWith(undefined),\n map(() => graph),\n );\n }),\n switchMap(graph => {\n const startTime = Date.now();\n const pkgUri = ngUrl(project);\n const ngPkg = graph.get(pkgUri);\n\n return observableOf(graph).pipe(\n analyseSourcesTransform,\n // Next, run through the entry point transformation (assets rendering, code compilation)\n scheduleEntryPoints(entryPointTransform),\n repeat({ delay: () => (graph.some(isEntryPointPending()) ? of(1) : EMPTY) }),\n last(),\n tap(() => printBuiltAngularPackage(ngPkg, startTime)),\n catchError(error => {\n log.error(error);\n log.msg(FailedWaitingForFileChange);\n\n return NEVER;\n }),\n tap(() => log.msg(CompleteWaitingForFileChange)),\n );\n }),\n );\n };\n\nconst buildTransformFactory =\n (project: string, analyseSourcesTransform: Transform, entryPointTransform: Transform) =>\n (source$: Observable<BuildGraph>): Observable<BuildGraph> => {\n return source$.pipe(\n switchMap(graph => {\n const startTime = Date.now();\n const pkgUri = ngUrl(project);\n const ngPkg = graph.get(pkgUri);\n\n return observableOf(graph).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 tap(() => printBuiltAngularPackage(ngPkg, startTime)),\n );\n }),\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 for (const node of graph.values()) {\n if (!isEntryPoint(node)) {\n continue;\n }\n\n // Remove `ng://` prefix for better error messages\n const from = node.url.substring(5);\n depGraph.addNode(from);\n\n for (const dep of node.dependents) {\n if (!isEntryPoint(dep)) {\n continue;\n }\n\n const to = dep.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 !== 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 map(() => graph),\n epTransform,\n catchError(err => {\n ep.state = STATE_ERROR;\n\n throw err;\n }),\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 printBuiltAngularPackage(ngPackage: Node, startTime: number): void {\n log.success('\\n------------------------------------------------------------------------------');\n log.success(`Built Angular Package\n- from: ${ngPackage.data.src}\n- to: ${ngPackage.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"]}
|
|
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 {\n EMPTY,\n NEVER,\n Observable,\n catchError,\n concatMap,\n debounceTime,\n defaultIfEmpty,\n filter,\n finalize,\n from,\n last,\n map,\n of as observableOf,\n of,\n pipe,\n repeat,\n startWith,\n switchMap,\n takeLast,\n tap,\n} from 'rxjs';\nimport { createFileWatch, invalidateEntryPointsAndCacheOnFileChange } from '../file-system/file-watcher';\nimport { BuildGraph } from '../graph/build-graph';\nimport { Node, STATE_DONE, STATE_ERROR, STATE_IN_PROGRESS, STATE_PENDING } from '../graph/node';\nimport { Transform } from '../graph/transform';\nimport { colors } from '../utils/color';\nimport { rmdir } from '../utils/fs';\nimport * as log from '../utils/log';\nimport { discoverPackages } from './discover-packages';\nimport {\n EntryPointNode,\n PackageNode,\n byEntryPoint,\n isEntryPoint,\n isEntryPointPending,\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 *\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 (\n project: string,\n options: NgPackagrOptions,\n initTsConfigTransform: Transform,\n analyseSourcesTransform: Transform,\n entryPointTransform: Transform,\n ) =>\n (source$: Observable<BuildGraph>): Observable<BuildGraph> => {\n log.info(`Building Angular Package`);\n\n const buildTransform = options.watch\n ? watchTransformFactory(project, options, analyseSourcesTransform, entryPointTransform)\n : buildTransformFactory(project, options, analyseSourcesTransform, entryPointTransform);\n\n const pkgUri = ngUrl(project);\n const ngPkg = new PackageNode(pkgUri);\n\n return source$.pipe(\n // Discover packages and entry points\n // Clean the primary dest folder (should clean all secondary sub-directory, as well)\n switchMap(async graph => {\n ngPkg.data = await discoverPackages({ project });\n\n graph.put(ngPkg);\n const { dest, deleteDestPath } = ngPkg.data;\n\n if (deleteDestPath) {\n try {\n await rmdir(dest, { recursive: true });\n } catch {}\n }\n\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.moduleResolutionCache,\n );\n node.data = { entryPoint, destinationFiles };\n node.state = STATE_PENDING;\n ngPkg.dependsOn(node);\n\n return node;\n });\n\n // Add entry points to graph\n return graph.put(entryPoints);\n }),\n // Initialize the tsconfig for each entry point\n initTsConfigTransform,\n // perform build\n buildTransform,\n finalize(() => {\n for (const node of ngPkg.dependents) {\n if (node instanceof EntryPointNode) {\n node.cache.stylesheetProcessor?.destroy();\n }\n }\n }),\n );\n };\n\nconst watchTransformFactory =\n (project: string, options: NgPackagrOptions, analyseSourcesTransform: Transform, 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 {\n data,\n cache: { sourcesFileCache },\n } = graph.find(isPackage);\n const { onFileChange, watcher } = createFileWatch([], [data.dest + '/'], options.poll);\n graph.watcher = watcher;\n\n return onFileChange.pipe(\n map(fileChange => invalidateEntryPointsAndCacheOnFileChange(graph, [fileChange.filePath], sourcesFileCache)),\n filter(isChanged => isChanged),\n debounceTime(100),\n tap(() => log.msg(FileChangeDetected)),\n startWith(undefined),\n map(() => graph),\n );\n }),\n switchMap(graph => {\n const startTime = Date.now();\n const pkgUri = ngUrl(project);\n const ngPkg = graph.get(pkgUri);\n\n return observableOf(graph).pipe(\n analyseSourcesTransform,\n // Next, run through the entry point transformation (assets rendering, code compilation)\n scheduleEntryPoints(entryPointTransform, options),\n repeat({ delay: () => (graph.some(isEntryPointPending()) ? of(1) : EMPTY) }),\n last(),\n tap(() => printBuiltAngularPackage(ngPkg, startTime)),\n catchError(error => {\n log.error(error);\n log.msg(FailedWaitingForFileChange);\n\n return NEVER;\n }),\n tap(() => log.msg(CompleteWaitingForFileChange)),\n );\n }),\n );\n };\n\nconst buildTransformFactory =\n (project: string, options: NgPackagrOptions, analyseSourcesTransform: Transform, entryPointTransform: Transform) =>\n (source$: Observable<BuildGraph>): Observable<BuildGraph> => {\n return source$.pipe(\n switchMap(graph => {\n const startTime = Date.now();\n const pkgUri = ngUrl(project);\n const ngPkg = graph.get(pkgUri);\n\n return observableOf(graph).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, options),\n tap(() => printBuiltAngularPackage(ngPkg, startTime)),\n );\n }),\n );\n };\n\nconst scheduleEntryPoints = (epTransform: Transform, options: NgPackagrOptions): Transform =>\n pipe(\n concatMap(graph => {\n // Calculate node/dependency depth and determine build order\n const depGraph = new DepGraph({ circular: false });\n for (const node of graph.values()) {\n if (!isEntryPoint(node)) {\n continue;\n }\n\n // Remove `ng://` prefix for better error messages\n const from = node.url.substring(5);\n depGraph.addNode(from);\n\n for (const dep of node.dependents) {\n if (!isEntryPoint(dep)) {\n continue;\n }\n\n const to = dep.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 !== 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 map(() => graph),\n epTransform,\n catchError(err => {\n ep.state = STATE_ERROR;\n\n throw err;\n }),\n finalize(() => {\n if (!options.watch) {\n ep.dipose();\n }\n }),\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 printBuiltAngularPackage(ngPackage: Node, startTime: number): void {\n log.success('\\n------------------------------------------------------------------------------');\n log.success(`Built Angular Package\n- from: ${ngPackage.data.src}\n- to: ${ngPackage.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"]}
|