ng-packagr 22.2.0-next.6 → 22.2.0-rc.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.
Files changed (40) hide show
  1. package/LICENSE +1 -1
  2. package/package.json +2 -2
  3. package/src/lib/flatten/file-loader-plugin.js +66 -55
  4. package/src/lib/flatten/file-loader-plugin.js.map +1 -1
  5. package/src/lib/flatten/rolldown.js +5 -2
  6. package/src/lib/flatten/rolldown.js.map +1 -1
  7. package/src/lib/graph/build-graph.d.ts +13 -2
  8. package/src/lib/graph/build-graph.js +32 -3
  9. package/src/lib/graph/build-graph.js.map +1 -1
  10. package/src/lib/ng-package/discover-packages.js +25 -7
  11. package/src/lib/ng-package/discover-packages.js.map +1 -1
  12. package/src/lib/ng-package/entry-point/compile-ngc.transform.js +4 -21
  13. package/src/lib/ng-package/entry-point/compile-ngc.transform.js.map +1 -1
  14. package/src/lib/ng-package/entry-point/entry-point.transform.js +2 -2
  15. package/src/lib/ng-package/entry-point/entry-point.transform.js.map +1 -1
  16. package/src/lib/ng-package/entry-point/write-bundles.transform.js +5 -2
  17. package/src/lib/ng-package/entry-point/write-bundles.transform.js.map +1 -1
  18. package/src/lib/ng-package/entry-point/write-package.transform.js +1 -2
  19. package/src/lib/ng-package/entry-point/write-package.transform.js.map +1 -1
  20. package/src/lib/ng-package/nodes.d.ts +1 -0
  21. package/src/lib/ng-package/nodes.js +19 -4
  22. package/src/lib/ng-package/nodes.js.map +1 -1
  23. package/src/lib/ng-package/package.transform.js +144 -19
  24. package/src/lib/ng-package/package.transform.js.map +1 -1
  25. package/src/lib/ngc/compile-source-files.js +12 -19
  26. package/src/lib/ngc/compile-source-files.js.map +1 -1
  27. package/src/lib/styles/component-stylesheets.js +1 -1
  28. package/src/lib/styles/component-stylesheets.js.map +1 -1
  29. package/src/lib/styles/stylesheet-processor.d.ts +1 -0
  30. package/src/lib/styles/stylesheet-processor.js +26 -6
  31. package/src/lib/styles/stylesheet-processor.js.map +1 -1
  32. package/src/lib/styles/stylesheets/sass-language.d.ts +1 -0
  33. package/src/lib/styles/stylesheets/sass-language.js +13 -3
  34. package/src/lib/styles/stylesheets/sass-language.js.map +1 -1
  35. package/src/lib/ts/cache-compiler-host.js +4 -2
  36. package/src/lib/ts/cache-compiler-host.js.map +1 -1
  37. package/src/lib/utils/cache.js +2 -11
  38. package/src/lib/utils/cache.js.map +1 -1
  39. package/src/lib/utils/fs.js +1 -3
  40. package/src/lib/utils/fs.js.map +1 -1
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2017-2020 Alan Agius
3
+ Copyright (c) 2017-present Alan Agius
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ng-packagr",
3
- "version": "22.2.0-next.6",
3
+ "version": "22.2.0-rc.0",
4
4
  "description": "Compile and package Angular libraries in Angular Package Format (APF)",
5
5
  "keywords": [
6
6
  "apf",
@@ -16,7 +16,7 @@
16
16
  "engines": {
17
17
  "node": "^22.22.3 || ^24.15.0 || >=26.0.0"
18
18
  },
19
- "author": "David Herges <david@spektrakel.de>",
19
+ "author": "ng-packagr GitHub organization",
20
20
  "license": "MIT",
21
21
  "repository": {
22
22
  "type": "git",
@@ -41,67 +41,78 @@ const path_1 = require("../utils/path");
41
41
  * Loads a file and its map.
42
42
  */
43
43
  function fileLoaderPlugin(fileCache, resolutionExtensions, dtsMode) {
44
- return {
45
- name: 'file-loader',
46
- resolveId: function (id, importer) {
47
- let resolved;
48
- if (importer) {
49
- if (id[0] !== '.' && id[0] !== '/' && !(0, node_path_1.isAbsolute)(id)) {
50
- return;
51
- }
52
- resolved = (0, path_1.ensureUnixPath)((0, node_path_1.resolve)((0, node_path_1.dirname)(importer), id));
44
+ const resolutionCache = new Map();
45
+ function resolveFile(id, importer) {
46
+ let resolved;
47
+ if (importer) {
48
+ if (id[0] !== '.' && id[0] !== '/' && !(0, node_path_1.isAbsolute)(id)) {
49
+ return;
50
+ }
51
+ resolved = (0, path_1.ensureUnixPath)((0, node_path_1.resolve)((0, node_path_1.dirname)(importer), id));
52
+ }
53
+ else {
54
+ resolved = (0, path_1.ensureUnixPath)(id);
55
+ }
56
+ if (fileCache.has(resolved)) {
57
+ return resolved;
58
+ }
59
+ const ext = (0, node_path_1.extname)(resolved);
60
+ const base = resolved.slice(0, -ext.length);
61
+ if (dtsMode) {
62
+ let potential;
63
+ switch (ext) {
64
+ case '.js':
65
+ case '.ts':
66
+ potential = `${base}.d.ts`;
67
+ break;
68
+ case '.mjs':
69
+ case '.mts':
70
+ potential = `${base}.d.mts`;
71
+ break;
72
+ case '.cjs':
73
+ case '.cts':
74
+ potential = `${base}.d.cts`;
75
+ break;
53
76
  }
54
- else {
55
- resolved = (0, path_1.ensureUnixPath)(id);
77
+ if (potential && fileCache.has(potential)) {
78
+ return potential;
56
79
  }
57
- if (fileCache.has(resolved)) {
58
- return resolved;
80
+ }
81
+ else {
82
+ let potential;
83
+ switch (ext) {
84
+ case '.ts':
85
+ potential = `${base}.js`;
86
+ break;
87
+ case '.mts':
88
+ potential = `${base}.mjs`;
89
+ break;
90
+ case '.cts':
91
+ potential = `${base}.cjs`;
92
+ break;
59
93
  }
60
- const ext = (0, node_path_1.extname)(resolved);
61
- const base = resolved.slice(0, -ext.length);
62
- if (dtsMode) {
63
- let potential;
64
- switch (ext) {
65
- case '.js':
66
- case '.ts':
67
- potential = `${base}.d.ts`;
68
- break;
69
- case '.mjs':
70
- case '.mts':
71
- potential = `${base}.d.mts`;
72
- break;
73
- case '.cjs':
74
- case '.cts':
75
- potential = `${base}.d.cts`;
76
- break;
77
- }
78
- if (potential && fileCache.has(potential)) {
79
- return potential;
80
- }
94
+ if (potential && fileCache.has(potential)) {
95
+ return potential;
81
96
  }
82
- else {
83
- let potential;
84
- switch (ext) {
85
- case '.ts':
86
- potential = `${base}.js`;
87
- break;
88
- case '.mts':
89
- potential = `${base}.mjs`;
90
- break;
91
- case '.cts':
92
- potential = `${base}.cjs`;
93
- break;
94
- }
95
- if (potential && fileCache.has(potential)) {
96
- return potential;
97
- }
97
+ }
98
+ for (const suffix of resolutionExtensions) {
99
+ const potential = resolved + suffix;
100
+ if (fileCache.has(potential)) {
101
+ return potential;
98
102
  }
99
- for (const suffix of resolutionExtensions) {
100
- const potential = resolved + suffix;
101
- if (fileCache.has(potential)) {
102
- return potential;
103
- }
103
+ }
104
+ }
105
+ return {
106
+ name: 'file-loader',
107
+ resolveId: function (id, importer) {
108
+ const cacheKey = importer ? `${importer}\0${id}` : id;
109
+ const cached = resolutionCache.get(cacheKey);
110
+ if (cached !== undefined) {
111
+ return cached ?? undefined;
104
112
  }
113
+ const resolved = resolveFile(id, importer);
114
+ resolutionCache.set(cacheKey, resolved ?? null);
115
+ return resolved;
105
116
  },
106
117
  load: function (id) {
107
118
  log.debug(`file-loader ${id}`);
@@ -1 +1 @@
1
- {"version":3,"file":"file-loader-plugin.js","sourceRoot":"","sources":["../../../../src/lib/flatten/file-loader-plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import { dirname, extname, isAbsolute, resolve } from 'node:path';\nimport type { Plugin } from 'rolldown';\nimport { OutputFileCache } from '../ng-package/nodes';\n\nimport * as log from '../utils/log';\nimport { ensureUnixPath } from '../utils/path';\n\n/**\n * Loads a file and its map.\n */\nexport function fileLoaderPlugin(fileCache: OutputFileCache, resolutionExtensions: string[], dtsMode: boolean): Plugin {\n return {\n name: 'file-loader',\n resolveId: function (id, importer) {\n let resolved: string;\n if (importer) {\n if (id[0] !== '.' && id[0] !== '/' && !isAbsolute(id)) {\n return;\n }\n\n resolved = ensureUnixPath(resolve(dirname(importer), id));\n } else {\n resolved = ensureUnixPath(id);\n }\n\n if (fileCache.has(resolved)) {\n return resolved;\n }\n\n const ext = extname(resolved);\n const base = resolved.slice(0, -ext.length);\n if (dtsMode) {\n let potential: string | undefined;\n switch (ext) {\n case '.js':\n case '.ts':\n potential = `${base}.d.ts`;\n break;\n case '.mjs':\n case '.mts':\n potential = `${base}.d.mts`;\n break;\n case '.cjs':\n case '.cts':\n potential = `${base}.d.cts`;\n break;\n }\n\n if (potential && fileCache.has(potential)) {\n return potential;\n }\n } else {\n let potential: string | undefined;\n switch (ext) {\n case '.ts':\n potential = `${base}.js`;\n break;\n case '.mts':\n potential = `${base}.mjs`;\n break;\n case '.cts':\n potential = `${base}.cjs`;\n break;\n }\n\n if (potential && fileCache.has(potential)) {\n return potential;\n }\n }\n\n for (const suffix of resolutionExtensions) {\n const potential = resolved + suffix;\n if (fileCache.has(potential)) {\n return potential;\n }\n }\n },\n load: function (id) {\n log.debug(`file-loader ${id}`);\n const data = fileCache.get(id);\n if (!data) {\n throw new Error(`Could not load '${id}' from memory.`);\n }\n\n return {\n code: data.content,\n map: fileCache.get(`${id}.map`)?.content,\n };\n },\n };\n}\n"]}
1
+ {"version":3,"file":"file-loader-plugin.js","sourceRoot":"","sources":["../../../../src/lib/flatten/file-loader-plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,4CA+FC;AAzGD,yCAAkE;AAIlE,kDAAoC;AACpC,wCAA+C;AAE/C;;GAEG;AACH,SAAgB,gBAAgB,CAAC,SAA0B,EAAE,oBAA8B,EAAE,OAAgB;IAC3G,MAAM,eAAe,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEzD,SAAS,WAAW,CAAC,EAAU,EAAE,QAAiB;QAChD,IAAI,QAAgB,CAAC;QACrB,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAA,sBAAU,EAAC,EAAE,CAAC,EAAE,CAAC;gBACtD,OAAO;YACT,CAAC;YAED,QAAQ,GAAG,IAAA,qBAAc,EAAC,IAAA,mBAAO,EAAC,IAAA,mBAAO,EAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,IAAA,qBAAc,EAAC,EAAE,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,SAA6B,CAAC;YAClC,QAAQ,GAAG,EAAE,CAAC;gBACZ,KAAK,KAAK,CAAC;gBACX,KAAK,KAAK;oBACR,SAAS,GAAG,GAAG,IAAI,OAAO,CAAC;oBAC3B,MAAM;gBACR,KAAK,MAAM,CAAC;gBACZ,KAAK,MAAM;oBACT,SAAS,GAAG,GAAG,IAAI,QAAQ,CAAC;oBAC5B,MAAM;gBACR,KAAK,MAAM,CAAC;gBACZ,KAAK,MAAM;oBACT,SAAS,GAAG,GAAG,IAAI,QAAQ,CAAC;oBAC5B,MAAM;YACV,CAAC;YAED,IAAI,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1C,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,SAA6B,CAAC;YAClC,QAAQ,GAAG,EAAE,CAAC;gBACZ,KAAK,KAAK;oBACR,SAAS,GAAG,GAAG,IAAI,KAAK,CAAC;oBACzB,MAAM;gBACR,KAAK,MAAM;oBACT,SAAS,GAAG,GAAG,IAAI,MAAM,CAAC;oBAC1B,MAAM;gBACR,KAAK,MAAM;oBACT,SAAS,GAAG,GAAG,IAAI,MAAM,CAAC;oBAC1B,MAAM;YACV,CAAC;YAED,IAAI,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1C,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,oBAAoB,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;YACpC,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,UAAU,EAAE,EAAE,QAAQ;YAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,MAAM,IAAI,SAAS,CAAC;YAC7B,CAAC;YAED,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC3C,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,CAAC;YAEhD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,EAAE,UAAU,EAAE;YAChB,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;YAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;YACzD,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,OAAO;gBAClB,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,OAAO;aACzC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import { dirname, extname, isAbsolute, resolve } from 'node:path';\nimport type { Plugin } from 'rolldown';\nimport { OutputFileCache } from '../ng-package/nodes';\n\nimport * as log from '../utils/log';\nimport { ensureUnixPath } from '../utils/path';\n\n/**\n * Loads a file and its map.\n */\nexport function fileLoaderPlugin(fileCache: OutputFileCache, resolutionExtensions: string[], dtsMode: boolean): Plugin {\n const resolutionCache = new Map<string, string | null>();\n\n function resolveFile(id: string, importer?: string): string | undefined {\n let resolved: string;\n if (importer) {\n if (id[0] !== '.' && id[0] !== '/' && !isAbsolute(id)) {\n return;\n }\n\n resolved = ensureUnixPath(resolve(dirname(importer), id));\n } else {\n resolved = ensureUnixPath(id);\n }\n\n if (fileCache.has(resolved)) {\n return resolved;\n }\n\n const ext = extname(resolved);\n const base = resolved.slice(0, -ext.length);\n if (dtsMode) {\n let potential: string | undefined;\n switch (ext) {\n case '.js':\n case '.ts':\n potential = `${base}.d.ts`;\n break;\n case '.mjs':\n case '.mts':\n potential = `${base}.d.mts`;\n break;\n case '.cjs':\n case '.cts':\n potential = `${base}.d.cts`;\n break;\n }\n\n if (potential && fileCache.has(potential)) {\n return potential;\n }\n } else {\n let potential: string | undefined;\n switch (ext) {\n case '.ts':\n potential = `${base}.js`;\n break;\n case '.mts':\n potential = `${base}.mjs`;\n break;\n case '.cts':\n potential = `${base}.cjs`;\n break;\n }\n\n if (potential && fileCache.has(potential)) {\n return potential;\n }\n }\n\n for (const suffix of resolutionExtensions) {\n const potential = resolved + suffix;\n if (fileCache.has(potential)) {\n return potential;\n }\n }\n }\n\n return {\n name: 'file-loader',\n resolveId: function (id, importer) {\n const cacheKey = importer ? `${importer}\\0${id}` : id;\n const cached = resolutionCache.get(cacheKey);\n if (cached !== undefined) {\n return cached ?? undefined;\n }\n\n const resolved = resolveFile(id, importer);\n resolutionCache.set(cacheKey, resolved ?? null);\n\n return resolved;\n },\n load: function (id) {\n log.debug(`file-loader ${id}`);\n const data = fileCache.get(id);\n if (!data) {\n throw new Error(`Could not load '${id}' from memory.`);\n }\n\n return {\n code: data.content,\n map: fileCache.get(`${id}.map`)?.content,\n };\n },\n };\n}\n"]}
@@ -50,7 +50,7 @@ async function rolldownBundleFile(opts) {
50
50
  outExtension = '.d.ts';
51
51
  plugins = [
52
52
  (0, file_loader_plugin_1.fileLoaderPlugin)(opts.fileCache, ['.d.ts', '/index.d.ts'], dtsMode),
53
- (0, rolldown_plugin_dts_1.dts)({ generator: 'oxc', sourcemap: opts.sourcemap }),
53
+ (0, rolldown_plugin_dts_1.dts)({ dtsInput: true, tsconfig: false, generator: 'oxc', sourcemap: opts.sourcemap }),
54
54
  ];
55
55
  }
56
56
  else {
@@ -63,6 +63,9 @@ async function rolldownBundleFile(opts) {
63
63
  external: (moduleId, parentId) => isExternalDependency(moduleId, parentId, jail),
64
64
  input: opts.entry,
65
65
  plugins,
66
+ checks: {
67
+ circularDependency: false,
68
+ },
66
69
  onwarn: warning => {
67
70
  switch (warning.code) {
68
71
  case 'CIRCULAR_DEPENDENCY':
@@ -97,7 +100,7 @@ async function rolldownBundleFile(opts) {
97
100
  sourcemap: opts.sourcemap,
98
101
  comments: {
99
102
  legal: true,
100
- annotation: true,
103
+ annotation: !dtsMode,
101
104
  jsdoc: dtsMode,
102
105
  },
103
106
  });
@@ -1 +1 @@
1
- {"version":3,"file":"rolldown.js","sourceRoot":"","sources":["../../../../src/lib/flatten/rolldown.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from 'node:path';\nimport { type OutputAsset, type OutputChunk, type RolldownPluginOption, rolldown } from 'rolldown';\nimport { dts } from 'rolldown-plugin-dts';\nimport { OutputFileCache } from '../ng-package/nodes';\nimport * as log from '../utils/log';\nimport { fileLoaderPlugin } from './file-loader-plugin';\n\n/**\n * Options used in `ng-packagr` for writing flat bundle files.\n *\n * These options are passed through to rolldown.\n */\nexport interface RolldownOptions {\n moduleName: string;\n entry: string;\n entryName: string;\n dir: string;\n fileCache: OutputFileCache;\n sourcemap: boolean;\n}\n\n/** Runs rolldown over the given entry file, writes a bundle file. */\nexport async function rolldownBundleFile(opts: RolldownOptions): Promise<{ files: (OutputChunk | OutputAsset)[] }> {\n log.debug(`rolldown ${opts.entry} to ${opts.dir}`);\n const dtsMode = opts.entry.endsWith('.d.ts');\n let outExtension: string;\n let plugins: RolldownPluginOption[];\n const jail = path.dirname(opts.entry);\n\n if (dtsMode) {\n outExtension = '.d.ts';\n plugins = [\n fileLoaderPlugin(opts.fileCache, ['.d.ts', '/index.d.ts'], dtsMode),\n dts({ generator: 'oxc', sourcemap: opts.sourcemap }),\n ];\n } else {\n outExtension = '.mjs';\n plugins = [fileLoaderPlugin(opts.fileCache, ['.js', '/index.js'], dtsMode)];\n }\n\n // Create the bundle\n const bundle = await rolldown({\n context: 'this',\n external: (moduleId, parentId) => isExternalDependency(moduleId, parentId, jail),\n input: opts.entry,\n plugins,\n onwarn: warning => {\n switch (warning.code) {\n case 'CIRCULAR_DEPENDENCY':\n case 'UNUSED_EXTERNAL_IMPORT':\n case 'THIS_IS_UNDEFINED':\n case 'EMPTY_BUNDLE':\n break;\n\n default:\n log.warn(warning.message);\n break;\n }\n },\n experimental: {\n attachDebugInfo: 'none',\n },\n resolve: {\n symlinks: false,\n },\n // Disable treeshaking when generating bundles\n // see: https://github.com/angular/angular/pull/32069\n treeshake: false,\n });\n\n // Output the bundle to disk\n const output = await bundle.write({\n name: opts.moduleName,\n format: 'es',\n dir: opts.dir,\n hoistTransitiveImports: false,\n chunkFileNames: `${opts.entryName}-[name]-[hash]${outExtension}`,\n entryFileNames: opts.entryName + outExtension,\n banner: '',\n sourcemap: opts.sourcemap,\n comments: {\n legal: true,\n annotation: true,\n jsdoc: dtsMode,\n },\n });\n\n // Close the bundle to let plugins clean up their external processes or services\n await bundle.close();\n\n return {\n files: output.output,\n };\n}\n\nfunction isExternalDependency(moduleId: string, parentId: string | undefined, jail: string): boolean {\n // more information about why we don't check for 'node_modules' path\n // https://github.com/rollup/rollup-plugin-node-resolve/issues/110#issuecomment-350353632\n if (moduleId[0] === '.' || moduleId[0] === '/' || path.isAbsolute(moduleId)) {\n // if it's either 'absolute', marked to embed, starts with a '.' or '/' or is the umd bundle and is tslib\n return !parentId || !path.join(parentId, moduleId).startsWith(jail);\n }\n\n return true;\n}\n"]}
1
+ {"version":3,"file":"rolldown.js","sourceRoot":"","sources":["../../../../src/lib/flatten/rolldown.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from 'node:path';\nimport { type OutputAsset, type OutputChunk, type RolldownPluginOption, rolldown } from 'rolldown';\nimport { dts } from 'rolldown-plugin-dts';\nimport { OutputFileCache } from '../ng-package/nodes';\nimport * as log from '../utils/log';\nimport { fileLoaderPlugin } from './file-loader-plugin';\n\n/**\n * Options used in `ng-packagr` for writing flat bundle files.\n *\n * These options are passed through to rolldown.\n */\nexport interface RolldownOptions {\n moduleName: string;\n entry: string;\n entryName: string;\n dir: string;\n fileCache: OutputFileCache;\n sourcemap: boolean;\n}\n\n/** Runs rolldown over the given entry file, writes a bundle file. */\nexport async function rolldownBundleFile(opts: RolldownOptions): Promise<{ files: (OutputChunk | OutputAsset)[] }> {\n log.debug(`rolldown ${opts.entry} to ${opts.dir}`);\n const dtsMode = opts.entry.endsWith('.d.ts');\n let outExtension: string;\n let plugins: RolldownPluginOption[];\n const jail = path.dirname(opts.entry);\n\n if (dtsMode) {\n outExtension = '.d.ts';\n plugins = [\n fileLoaderPlugin(opts.fileCache, ['.d.ts', '/index.d.ts'], dtsMode),\n dts({ dtsInput: true, tsconfig: false, generator: 'oxc', sourcemap: opts.sourcemap }),\n ];\n } else {\n outExtension = '.mjs';\n plugins = [fileLoaderPlugin(opts.fileCache, ['.js', '/index.js'], dtsMode)];\n }\n\n // Create the bundle\n const bundle = await rolldown({\n context: 'this',\n external: (moduleId, parentId) => isExternalDependency(moduleId, parentId, jail),\n input: opts.entry,\n plugins,\n checks: {\n circularDependency: false,\n },\n onwarn: warning => {\n switch (warning.code) {\n case 'CIRCULAR_DEPENDENCY':\n case 'UNUSED_EXTERNAL_IMPORT':\n case 'THIS_IS_UNDEFINED':\n case 'EMPTY_BUNDLE':\n break;\n\n default:\n log.warn(warning.message);\n break;\n }\n },\n experimental: {\n attachDebugInfo: 'none',\n },\n resolve: {\n symlinks: false,\n },\n // Disable treeshaking when generating bundles\n // see: https://github.com/angular/angular/pull/32069\n treeshake: false,\n });\n\n // Output the bundle to disk\n const output = await bundle.write({\n name: opts.moduleName,\n format: 'es',\n dir: opts.dir,\n hoistTransitiveImports: false,\n chunkFileNames: `${opts.entryName}-[name]-[hash]${outExtension}`,\n entryFileNames: opts.entryName + outExtension,\n banner: '',\n sourcemap: opts.sourcemap,\n comments: {\n legal: true,\n annotation: !dtsMode,\n jsdoc: dtsMode,\n },\n });\n\n // Close the bundle to let plugins clean up their external processes or services\n await bundle.close();\n\n return {\n files: output.output,\n };\n}\n\nfunction isExternalDependency(moduleId: string, parentId: string | undefined, jail: string): boolean {\n // more information about why we don't check for 'node_modules' path\n // https://github.com/rollup/rollup-plugin-node-resolve/issues/110#issuecomment-350353632\n if (moduleId[0] === '.' || moduleId[0] === '/' || path.isAbsolute(moduleId)) {\n // if it's either 'absolute', marked to embed, starts with a '.' or '/' or is the umd bundle and is tslib\n return !parentId || !path.join(parentId, moduleId).startsWith(jail);\n }\n\n return true;\n}\n"]}
@@ -18,8 +18,11 @@ export interface Traversable<T> {
18
18
  * Technically, it's implemented as a map-like collection with references between map entries.
19
19
  */
20
20
  export declare class BuildGraph implements Traversable<Node> {
21
- private store;
22
- watcher?: FSWatcher;
21
+ readonly store: Map<string, Node>;
22
+ private _watcher?;
23
+ constructor(store?: Map<string, Node>);
24
+ get watcher(): FSWatcher | undefined;
25
+ set watcher(watcher: FSWatcher | undefined);
23
26
  put(value: Node | Node[]): this;
24
27
  private insert;
25
28
  get(url: string): Node;
@@ -31,3 +34,11 @@ export declare class BuildGraph implements Traversable<Node> {
31
34
  find<T extends Node = Node>(by: ComplexPredicate<Node, T>): T | undefined;
32
35
  get size(): number;
33
36
  }
37
+ export declare class ScopedBuildGraph<T extends Node = Node> extends BuildGraph {
38
+ readonly parentGraph: BuildGraph;
39
+ readonly activeEntryPoint: T;
40
+ constructor(parentGraph: BuildGraph, activeEntryPoint: T);
41
+ get watcher(): FSWatcher | undefined;
42
+ set watcher(watcher: FSWatcher | undefined);
43
+ }
44
+ export declare function isScopedBuildGraph<T extends Node = Node>(graph: BuildGraph): graph is ScopedBuildGraph<T>;
@@ -1,14 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BuildGraph = void 0;
3
+ exports.ScopedBuildGraph = exports.BuildGraph = void 0;
4
+ exports.isScopedBuildGraph = isScopedBuildGraph;
4
5
  const nodes_1 = require("../ng-package/nodes");
5
6
  /**
6
7
  * A tree of source files. Eventually, it's a graph. Ideally, it's an acyclic directed graph.
7
8
  * Technically, it's implemented as a map-like collection with references between map entries.
8
9
  */
9
10
  class BuildGraph {
10
- store = new Map();
11
- watcher;
11
+ store;
12
+ _watcher;
13
+ constructor(store) {
14
+ this.store = store ?? new Map();
15
+ }
16
+ get watcher() {
17
+ return this._watcher;
18
+ }
19
+ set watcher(watcher) {
20
+ this._watcher = watcher;
21
+ }
12
22
  put(value) {
13
23
  if (value instanceof Array) {
14
24
  for (const node of value) {
@@ -76,4 +86,23 @@ class BuildGraph {
76
86
  }
77
87
  }
78
88
  exports.BuildGraph = BuildGraph;
89
+ class ScopedBuildGraph extends BuildGraph {
90
+ parentGraph;
91
+ activeEntryPoint;
92
+ constructor(parentGraph, activeEntryPoint) {
93
+ super(parentGraph.store);
94
+ this.parentGraph = parentGraph;
95
+ this.activeEntryPoint = activeEntryPoint;
96
+ }
97
+ get watcher() {
98
+ return this.parentGraph.watcher;
99
+ }
100
+ set watcher(watcher) {
101
+ this.parentGraph.watcher = watcher;
102
+ }
103
+ }
104
+ exports.ScopedBuildGraph = ScopedBuildGraph;
105
+ function isScopedBuildGraph(graph) {
106
+ return graph instanceof ScopedBuildGraph;
107
+ }
79
108
  //# sourceMappingURL=build-graph.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-graph.js","sourceRoot":"","sources":["../../../../src/lib/graph/build-graph.ts"],"names":[],"mappings":";;;AACA,+CAAkD;AAqBlD;;;GAGG;AACH,MAAa,UAAU;IACb,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;IACxC,OAAO,CAAa;IAEb,GAAG,CAAC,KAAoB;QAC7B,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,MAAM,CAAC,IAAU;QACvB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,+BAA+B;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,IAAA,mBAAW,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAEM,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAEM,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAEM,OAAO;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC;IAEM,IAAI,CAAwB,EAA6B;QAC9D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,MAAM,CAAwB,EAA6B;QAChE,MAAM,MAAM,GAAQ,EAAE,CAAC;QAEvB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,IAAS,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,IAAI,CAAwB,EAA6B;QAC9D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACb,OAAO,IAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF;AApFD,gCAoFC","sourcesContent":["import { FSWatcher } from 'chokidar';\nimport { fileUrlPath } from '../ng-package/nodes';\nimport { Node } from './node';\n\nexport type SimplePredicate<T = Node> = {\n (value: T): boolean;\n and?: (criteria: SimplePredicate<T>) => SimplePredicate<T>;\n};\n\nexport type ComplexPredicate<T = Node, R extends T = T> =\n | SimplePredicate<T>\n | {\n (value: T): value is R;\n and?: (criteria: ComplexPredicate<T, R>) => ComplexPredicate<T, R>;\n };\n\nexport interface Traversable<T> {\n filter<R extends T = T>(by: ComplexPredicate<T, R>): R[];\n find<R extends T = T>(by: ComplexPredicate<T, R>): R | undefined;\n some(by: SimplePredicate<T>): boolean;\n}\n\n/**\n * A tree of source files. Eventually, it's a graph. Ideally, it's an acyclic directed graph.\n * Technically, it's implemented as a map-like collection with references between map entries.\n */\nexport class BuildGraph implements Traversable<Node> {\n private store = new Map<string, Node>();\n watcher?: FSWatcher;\n\n public put(value: Node | Node[]) {\n if (value instanceof Array) {\n for (const node of value) {\n this.insert(node);\n }\n } else {\n this.insert(value);\n }\n\n return this;\n }\n\n private insert(node: Node) {\n if (this.store.has(node.url)) {\n // Clean up dependee references\n const oldNode = this.store.get(node.url);\n oldNode['_dependees'].delete(oldNode);\n }\n\n if (this.watcher) {\n const fileUrl = fileUrlPath(node.url);\n if (fileUrl) {\n this.watcher.add(fileUrl);\n }\n }\n\n this.store.set(node.url, node);\n }\n\n public get(url: string): Node {\n return this.store.get(url);\n }\n\n public has(url: string): boolean {\n return this.store.has(url);\n }\n\n public entries(): Node[] {\n return Array.from(this.store.values());\n }\n\n public values(): IterableIterator<Node> {\n return this.store.values();\n }\n\n public some<T extends Node = Node>(by: ComplexPredicate<Node, T>): boolean {\n for (const node of this.store.values()) {\n if (by(node)) {\n return true;\n }\n }\n\n return false;\n }\n\n public filter<T extends Node = Node>(by: ComplexPredicate<Node, T>): T[] {\n const result: T[] = [];\n\n for (const node of this.store.values()) {\n if (by(node)) {\n result.push(node as T);\n }\n }\n\n return result;\n }\n\n public find<T extends Node = Node>(by: ComplexPredicate<Node, T>): T | undefined {\n for (const node of this.store.values()) {\n if (by(node)) {\n return node as T;\n }\n }\n\n return undefined;\n }\n\n get size(): number {\n return this.store.size;\n }\n}\n"]}
1
+ {"version":3,"file":"build-graph.js","sourceRoot":"","sources":["../../../../src/lib/graph/build-graph.ts"],"names":[],"mappings":"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","sourcesContent":["import { FSWatcher } from 'chokidar';\nimport { fileUrlPath } from '../ng-package/nodes';\nimport { Node } from './node';\n\nexport type SimplePredicate<T = Node> = {\n (value: T): boolean;\n and?: (criteria: SimplePredicate<T>) => SimplePredicate<T>;\n};\n\nexport type ComplexPredicate<T = Node, R extends T = T> =\n | SimplePredicate<T>\n | {\n (value: T): value is R;\n and?: (criteria: ComplexPredicate<T, R>) => ComplexPredicate<T, R>;\n };\n\nexport interface Traversable<T> {\n filter<R extends T = T>(by: ComplexPredicate<T, R>): R[];\n find<R extends T = T>(by: ComplexPredicate<T, R>): R | undefined;\n some(by: SimplePredicate<T>): boolean;\n}\n\n/**\n * A tree of source files. Eventually, it's a graph. Ideally, it's an acyclic directed graph.\n * Technically, it's implemented as a map-like collection with references between map entries.\n */\nexport class BuildGraph implements Traversable<Node> {\n readonly store: Map<string, Node>;\n private _watcher?: FSWatcher;\n\n constructor(store?: Map<string, Node>) {\n this.store = store ?? new Map<string, Node>();\n }\n\n get watcher(): FSWatcher | undefined {\n return this._watcher;\n }\n\n set watcher(watcher: FSWatcher | undefined) {\n this._watcher = watcher;\n }\n\n put(value: Node | Node[]) {\n if (value instanceof Array) {\n for (const node of value) {\n this.insert(node);\n }\n } else {\n this.insert(value);\n }\n\n return this;\n }\n\n private insert(node: Node) {\n if (this.store.has(node.url)) {\n // Clean up dependee references\n const oldNode = this.store.get(node.url);\n oldNode['_dependees'].delete(oldNode);\n }\n\n if (this.watcher) {\n const fileUrl = fileUrlPath(node.url);\n if (fileUrl) {\n this.watcher.add(fileUrl);\n }\n }\n\n this.store.set(node.url, node);\n }\n\n get(url: string): Node {\n return this.store.get(url);\n }\n\n has(url: string): boolean {\n return this.store.has(url);\n }\n\n entries(): Node[] {\n return Array.from(this.store.values());\n }\n\n values(): IterableIterator<Node> {\n return this.store.values();\n }\n\n some<T extends Node = Node>(by: ComplexPredicate<Node, T>): boolean {\n for (const node of this.store.values()) {\n if (by(node)) {\n return true;\n }\n }\n\n return false;\n }\n\n filter<T extends Node = Node>(by: ComplexPredicate<Node, T>): T[] {\n const result: T[] = [];\n\n for (const node of this.store.values()) {\n if (by(node)) {\n result.push(node as T);\n }\n }\n\n return result;\n }\n\n find<T extends Node = Node>(by: ComplexPredicate<Node, T>): T | undefined {\n for (const node of this.store.values()) {\n if (by(node)) {\n return node as T;\n }\n }\n\n return undefined;\n }\n\n get size(): number {\n return this.store.size;\n }\n}\n\nexport class ScopedBuildGraph<T extends Node = Node> extends BuildGraph {\n constructor(\n readonly parentGraph: BuildGraph,\n readonly activeEntryPoint: T,\n ) {\n super(parentGraph.store);\n }\n\n override get watcher(): FSWatcher | undefined {\n return this.parentGraph.watcher;\n }\n\n override set watcher(watcher: FSWatcher | undefined) {\n this.parentGraph.watcher = watcher;\n }\n}\n\nexport function isScopedBuildGraph<T extends Node = Node>(graph: BuildGraph): graph is ScopedBuildGraph<T> {\n return graph instanceof ScopedBuildGraph;\n}\n"]}
@@ -43,15 +43,33 @@ const path_1 = require("../utils/path");
43
43
  const entry_point_1 = require("./entry-point/entry-point");
44
44
  const package_1 = require("./package");
45
45
  const schema_1 = require("./schema");
46
- async function readConfigFile(filePath) {
47
- if (!(await (0, fs_1.exists)(filePath))) {
48
- return undefined;
46
+ function parseJsonConfig(content) {
47
+ const sanitized = content.charCodeAt(0) === 0xfeff ? content.slice(1) : content;
48
+ try {
49
+ return JSON.parse(sanitized);
50
+ }
51
+ catch {
52
+ return (0, jsonc_parser_1.parse)(sanitized, undefined, { allowTrailingComma: true });
49
53
  }
54
+ }
55
+ async function readConfigFile(filePath) {
50
56
  if (filePath.endsWith('.js')) {
57
+ if (!(await (0, fs_1.exists)(filePath))) {
58
+ return undefined;
59
+ }
51
60
  return Promise.resolve(`${filePath}`).then(s => __importStar(require(s)));
52
61
  }
53
- const data = await (0, fs_1.readFile)(filePath, 'utf-8');
54
- return (0, jsonc_parser_1.parse)(data, undefined, { allowTrailingComma: true });
62
+ let data;
63
+ try {
64
+ data = await (0, fs_1.readFile)(filePath, 'utf-8');
65
+ }
66
+ catch (err) {
67
+ if (typeof err === 'object' && err !== null && 'code' in err && err.code === 'ENOENT') {
68
+ return undefined;
69
+ }
70
+ throw err;
71
+ }
72
+ return parseJsonConfig(data);
55
73
  }
56
74
  /**
57
75
  * Resolves a user's package by testing 'ng-package.json', or 'ng-package.js'.
@@ -148,9 +166,9 @@ async function discoverPackages({ project }) {
148
166
  const primary = new entry_point_1.NgEntryPoint(packageJson, ngPackageJson, basePath);
149
167
  log.debug(`Found primary entry point: ${primary.moduleId}`);
150
168
  const folderPaths = await findSecondaryPackagesPaths(basePath, primary.$get('dest'));
169
+ const secondaryPackages = await Promise.all(folderPaths.map(folderPath => resolveUserPackage(folderPath, true)));
151
170
  const secondaries = [];
152
- for (const folderPath of folderPaths) {
153
- const secondaryPackage = await resolveUserPackage(folderPath, true);
171
+ for (const secondaryPackage of secondaryPackages) {
154
172
  if (secondaryPackage) {
155
173
  secondaries.push(secondaryEntryPoint(primary, secondaryPackage));
156
174
  }
@@ -1 +1 @@
1
- {"version":3,"file":"discover-packages.js","sourceRoot":"","sources":["../../../../src/lib/ng-package/discover-packages.ts"],"names":[],"mappings":"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","sourcesContent":["import { parse as parseJson } from 'jsonc-parser';\nimport * as path from 'path';\nimport { glob } from 'tinyglobby';\nimport { exists, readFile, stat } from '../utils/fs';\nimport * as log from '../utils/log';\nimport { ensureUnixPath } from '../utils/path';\nimport { NgEntryPoint } from './entry-point/entry-point';\nimport { NgPackage } from './package';\nimport { validateNgPackageEntryPointSchema, validateNgPackageSchema } from './schema';\n\ninterface UserPackage {\n /** Values from the `package.json` file of this user package. */\n packageJson: Record<string, any>;\n /** NgPackageConfig for this user package. */\n ngPackageJson: Record<string, any>;\n /** Absolute directory path of this user package. */\n basePath: string;\n}\n\nasync function readConfigFile(filePath: string): Promise<any> {\n if (!(await exists(filePath))) {\n return undefined;\n }\n\n if (filePath.endsWith('.js')) {\n return import(filePath);\n }\n\n const data = await readFile(filePath, 'utf-8');\n\n return parseJson(data, undefined, { allowTrailingComma: true });\n}\n\n/**\n * Resolves a user's package by testing 'ng-package.json', or 'ng-package.js'.\n *\n * @param folderPathOrFilePath A path pointing either to a file or a directory\n * @param isSecondary A boolean determining if this is a secondary package\n * @return The user's package\n */\nasync function resolveUserPackage(folderPathOrFilePath: string, isSecondary = false): Promise<UserPackage | undefined> {\n const fullPath = path.resolve(folderPathOrFilePath);\n const pathStats = await stat(fullPath);\n const basePath = pathStats.isDirectory() ? fullPath : path.dirname(fullPath);\n\n let ngPackageJson: unknown;\n if (pathStats.isDirectory()) {\n ngPackageJson = await readConfigFile(path.join(basePath, 'ng-package.json'));\n if (!ngPackageJson) {\n ngPackageJson = await readConfigFile(path.join(basePath, 'ng-package.js'));\n }\n } else {\n ngPackageJson = await readConfigFile(fullPath);\n }\n\n if (ngPackageJson) {\n ngPackageJson = ngPackageJson['default'] ?? ngPackageJson;\n try {\n if (isSecondary) {\n validateNgPackageEntryPointSchema(ngPackageJson);\n } else {\n validateNgPackageSchema(ngPackageJson);\n }\n } catch (e) {\n log.error(`An error has occurred while validating config at ${folderPathOrFilePath}`);\n throw e;\n }\n\n let packageJson: Record<string, unknown> = {};\n if (!isSecondary) {\n const pkgJsonPath = path.join(basePath, 'package.json');\n packageJson = await readConfigFile(pkgJsonPath);\n\n if (!packageJson) {\n throw new Error(`Cannot discover package sources at ${folderPathOrFilePath} as 'package.json' was not found.`);\n }\n\n if (packageJson && typeof packageJson !== 'object') {\n throw new Error(`Invalid 'package.json' at ${folderPathOrFilePath}.`);\n }\n }\n\n return { basePath, packageJson, ngPackageJson };\n }\n\n if (pathStats.isDirectory()) {\n // return even if it's undefined and use defaults when it's not a file\n return undefined;\n }\n\n if (pathStats.isFile()) {\n throw new Error(`Trying to read a package from unsupported file extension. Path: ${folderPathOrFilePath}`);\n }\n\n throw new Error(`Cannot discover package sources at ${folderPathOrFilePath}`);\n}\n\n/**\n * Scans `directoryPath` and sub-folders, looking for `ng-package` files.\n * Similar to `find ${directoryPath} --name ng-package --exec dirname {}`.\n *\n * @param directoryPath Path pointing to a directory\n * @param excludeFolder A sub-folder of `directoryPath` that is excluded from search results.\n */\nasync function findSecondaryPackagesPaths(directoryPath: string, excludeFolder: string): Promise<string[]> {\n const ignore = ['**/node_modules/**', '**/.git/**', `${excludeFolder}/**`, 'ng-package.json'];\n\n const filePaths = await glob(`**/ng-package.json`, { ignore, onlyFiles: true, cwd: directoryPath });\n\n return filePaths.map(subpath => path.dirname(path.join(directoryPath, subpath)));\n}\n\n/**\n * Reads a secondary entry point from it's package file.\n *\n * @param primary The primary entry point.\n * @param userPackage The user package for the secondary entry point.\n */\nfunction secondaryEntryPoint(primary: NgEntryPoint, userPackage: UserPackage): NgEntryPoint {\n const { packageJson, ngPackageJson, basePath } = userPackage;\n if (path.resolve(basePath) === path.resolve(primary.basePath)) {\n log.error(`Cannot read secondary entry point. It's already a primary entry point. Path: ${basePath}`);\n throw new Error(`Secondary entry point is already a primary.`);\n }\n\n const relativeSourcePath = path.relative(primary.basePath, basePath);\n const secondaryModuleId = ensureUnixPath(`${primary.moduleId}/${relativeSourcePath}`);\n\n return new NgEntryPoint(packageJson, ngPackageJson, basePath, {\n moduleId: secondaryModuleId,\n primaryDestinationPath: primary.destinationPath,\n destinationPath: path.join(primary.destinationPath, relativeSourcePath),\n });\n}\n\nexport async function discoverPackages({ project }: { project: string }): Promise<NgPackage> {\n project = path.isAbsolute(project) ? project : path.resolve(project);\n\n const { packageJson, ngPackageJson, basePath } = await resolveUserPackage(project);\n const primary = new NgEntryPoint(packageJson, ngPackageJson, basePath);\n log.debug(`Found primary entry point: ${primary.moduleId}`);\n\n const folderPaths = await findSecondaryPackagesPaths(basePath, primary.$get('dest'));\n const secondaries: NgEntryPoint[] = [];\n\n for (const folderPath of folderPaths) {\n const secondaryPackage = await resolveUserPackage(folderPath, true);\n if (secondaryPackage) {\n secondaries.push(secondaryEntryPoint(primary, secondaryPackage));\n }\n }\n\n if (secondaries.length > 0) {\n log.debug(`Found secondary entry points: ${secondaries.map(e => e.moduleId).join(', ')}`);\n }\n\n return new NgPackage(ensureUnixPath(basePath), primary, secondaries);\n}\n"]}
1
+ {"version":3,"file":"discover-packages.js","sourceRoot":"","sources":["../../../../src/lib/ng-package/discover-packages.ts"],"names":[],"mappings":"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","sourcesContent":["import { parse as parseJson } from 'jsonc-parser';\nimport * as path from 'path';\nimport { glob } from 'tinyglobby';\nimport { exists, readFile, stat } from '../utils/fs';\nimport * as log from '../utils/log';\nimport { ensureUnixPath } from '../utils/path';\nimport { NgEntryPoint } from './entry-point/entry-point';\nimport { NgPackage } from './package';\nimport { validateNgPackageEntryPointSchema, validateNgPackageSchema } from './schema';\n\ninterface UserPackage {\n /** Values from the `package.json` file of this user package. */\n packageJson: Record<string, any>;\n /** NgPackageConfig for this user package. */\n ngPackageJson: Record<string, any>;\n /** Absolute directory path of this user package. */\n basePath: string;\n}\n\nfunction parseJsonConfig(content: string): any {\n const sanitized = content.charCodeAt(0) === 0xfeff ? content.slice(1) : content;\n try {\n return JSON.parse(sanitized);\n } catch {\n return parseJson(sanitized, undefined, { allowTrailingComma: true });\n }\n}\n\nasync function readConfigFile(filePath: string): Promise<any> {\n if (filePath.endsWith('.js')) {\n if (!(await exists(filePath))) {\n return undefined;\n }\n\n return import(filePath);\n }\n\n let data: string;\n try {\n data = await readFile(filePath, 'utf-8');\n } catch (err: unknown) {\n if (typeof err === 'object' && err !== null && 'code' in err && (err as { code?: string }).code === 'ENOENT') {\n return undefined;\n }\n throw err;\n }\n\n return parseJsonConfig(data);\n}\n\n/**\n * Resolves a user's package by testing 'ng-package.json', or 'ng-package.js'.\n *\n * @param folderPathOrFilePath A path pointing either to a file or a directory\n * @param isSecondary A boolean determining if this is a secondary package\n * @return The user's package\n */\nasync function resolveUserPackage(folderPathOrFilePath: string, isSecondary = false): Promise<UserPackage | undefined> {\n const fullPath = path.resolve(folderPathOrFilePath);\n const pathStats = await stat(fullPath);\n const basePath = pathStats.isDirectory() ? fullPath : path.dirname(fullPath);\n\n let ngPackageJson: unknown;\n if (pathStats.isDirectory()) {\n ngPackageJson = await readConfigFile(path.join(basePath, 'ng-package.json'));\n if (!ngPackageJson) {\n ngPackageJson = await readConfigFile(path.join(basePath, 'ng-package.js'));\n }\n } else {\n ngPackageJson = await readConfigFile(fullPath);\n }\n\n if (ngPackageJson) {\n ngPackageJson = ngPackageJson['default'] ?? ngPackageJson;\n try {\n if (isSecondary) {\n validateNgPackageEntryPointSchema(ngPackageJson);\n } else {\n validateNgPackageSchema(ngPackageJson);\n }\n } catch (e) {\n log.error(`An error has occurred while validating config at ${folderPathOrFilePath}`);\n throw e;\n }\n\n let packageJson: Record<string, unknown> = {};\n if (!isSecondary) {\n const pkgJsonPath = path.join(basePath, 'package.json');\n packageJson = await readConfigFile(pkgJsonPath);\n\n if (!packageJson) {\n throw new Error(`Cannot discover package sources at ${folderPathOrFilePath} as 'package.json' was not found.`);\n }\n\n if (packageJson && typeof packageJson !== 'object') {\n throw new Error(`Invalid 'package.json' at ${folderPathOrFilePath}.`);\n }\n }\n\n return { basePath, packageJson, ngPackageJson };\n }\n\n if (pathStats.isDirectory()) {\n // return even if it's undefined and use defaults when it's not a file\n return undefined;\n }\n\n if (pathStats.isFile()) {\n throw new Error(`Trying to read a package from unsupported file extension. Path: ${folderPathOrFilePath}`);\n }\n\n throw new Error(`Cannot discover package sources at ${folderPathOrFilePath}`);\n}\n\n/**\n * Scans `directoryPath` and sub-folders, looking for `ng-package` files.\n * Similar to `find ${directoryPath} --name ng-package --exec dirname {}`.\n *\n * @param directoryPath Path pointing to a directory\n * @param excludeFolder A sub-folder of `directoryPath` that is excluded from search results.\n */\nasync function findSecondaryPackagesPaths(directoryPath: string, excludeFolder: string): Promise<string[]> {\n const ignore = ['**/node_modules/**', '**/.git/**', `${excludeFolder}/**`, 'ng-package.json'];\n\n const filePaths = await glob(`**/ng-package.json`, { ignore, onlyFiles: true, cwd: directoryPath });\n\n return filePaths.map(subpath => path.dirname(path.join(directoryPath, subpath)));\n}\n\n/**\n * Reads a secondary entry point from it's package file.\n *\n * @param primary The primary entry point.\n * @param userPackage The user package for the secondary entry point.\n */\nfunction secondaryEntryPoint(primary: NgEntryPoint, userPackage: UserPackage): NgEntryPoint {\n const { packageJson, ngPackageJson, basePath } = userPackage;\n if (path.resolve(basePath) === path.resolve(primary.basePath)) {\n log.error(`Cannot read secondary entry point. It's already a primary entry point. Path: ${basePath}`);\n throw new Error(`Secondary entry point is already a primary.`);\n }\n\n const relativeSourcePath = path.relative(primary.basePath, basePath);\n const secondaryModuleId = ensureUnixPath(`${primary.moduleId}/${relativeSourcePath}`);\n\n return new NgEntryPoint(packageJson, ngPackageJson, basePath, {\n moduleId: secondaryModuleId,\n primaryDestinationPath: primary.destinationPath,\n destinationPath: path.join(primary.destinationPath, relativeSourcePath),\n });\n}\n\nexport async function discoverPackages({ project }: { project: string }): Promise<NgPackage> {\n project = path.isAbsolute(project) ? project : path.resolve(project);\n\n const { packageJson, ngPackageJson, basePath } = await resolveUserPackage(project);\n const primary = new NgEntryPoint(packageJson, ngPackageJson, basePath);\n log.debug(`Found primary entry point: ${primary.moduleId}`);\n\n const folderPaths = await findSecondaryPackagesPaths(basePath, primary.$get('dest'));\n const secondaryPackages = await Promise.all(folderPaths.map(folderPath => resolveUserPackage(folderPath, true)));\n const secondaries: NgEntryPoint[] = [];\n\n for (const secondaryPackage of secondaryPackages) {\n if (secondaryPackage) {\n secondaries.push(secondaryEntryPoint(primary, secondaryPackage));\n }\n }\n\n if (secondaries.length > 0) {\n log.debug(`Found secondary entry points: ${secondaries.map(e => e.moduleId).join(', ')}`);\n }\n\n return new NgPackage(ensureUnixPath(basePath), primary, secondaries);\n}\n"]}
@@ -40,7 +40,6 @@ exports.compileNgcTransformFactory = void 0;
40
40
  const ora_1 = __importDefault(require("ora"));
41
41
  const path = __importStar(require("path"));
42
42
  const typescript_1 = __importDefault(require("typescript"));
43
- const select_1 = require("../../graph/select");
44
43
  const transform_1 = require("../../graph/transform");
45
44
  const compile_source_files_1 = require("../../ngc/compile-source-files");
46
45
  const tsconfig_1 = require("../../ts/tsconfig");
@@ -51,26 +50,15 @@ const compileNgcTransformFactory = (StylesheetProcessor, options) => {
51
50
  hideCursor: false,
52
51
  discardStdin: false,
53
52
  });
54
- const entryPoints = [];
55
- let entryPoint;
56
- let ngPackageNode;
57
- for (const node of graph.values()) {
58
- if ((0, nodes_1.isEntryPoint)(node)) {
59
- entryPoints.push(node);
60
- if ((0, select_1.isInProgress)(node)) {
61
- entryPoint = node;
62
- }
63
- }
64
- else if ((0, nodes_1.isPackage)(node)) {
65
- ngPackageNode = node;
66
- }
67
- }
53
+ const entryPoints = graph.filter(nodes_1.isEntryPoint);
54
+ const ngPackageNode = (0, nodes_1.findPackageNode)(graph);
55
+ const entryPoint = (0, nodes_1.getActiveEntryPoint)(graph);
68
56
  const projectBasePath = ngPackageNode.data.primary.basePath;
69
57
  try {
70
58
  // Add paths mappings for dependencies
71
59
  const tsConfig = (0, tsconfig_1.setDependenciesTsConfigPaths)(entryPoint.data.tsConfig, entryPoints);
72
60
  // Compile TypeScript sources
73
- const { esm2022: esm2022, declarations } = entryPoint.data.destinationFiles;
61
+ const { esm2022, declarations } = entryPoint.data.destinationFiles;
74
62
  const { basePath, cssUrl, styleIncludePaths, sass } = entryPoint.data.entryPoint;
75
63
  const { moduleResolutionCache } = entryPoint.cache;
76
64
  spinner.start(`Compiling with Angular sources in ${tsConfig.options.compilationMode || 'full'} compilation mode.`);
@@ -86,11 +74,6 @@ const compileNgcTransformFactory = (StylesheetProcessor, options) => {
86
74
  spinner.fail();
87
75
  throw error;
88
76
  }
89
- finally {
90
- if (!options.watch) {
91
- entryPoint.cache.stylesheetProcessor?.destroy();
92
- }
93
- }
94
77
  spinner.succeed();
95
78
  return graph;
96
79
  });
@@ -1 +1 @@
1
- {"version":3,"file":"compile-ngc.transform.js","sourceRoot":"","sources":["../../../../../src/lib/ng-package/entry-point/compile-ngc.transform.ts"],"names":[],"mappings":"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","sourcesContent":["import ora from 'ora';\nimport * as path from 'path';\nimport ts from 'typescript';\nimport { isInProgress } from '../../graph/select';\nimport { Transform, transformFromPromise } from '../../graph/transform';\nimport { compileSourceFiles } from '../../ngc/compile-source-files';\nimport { StylesheetProcessor as StylesheetProcessorClass } from '../../styles/stylesheet-processor';\nimport { setDependenciesTsConfigPaths } from '../../ts/tsconfig';\nimport { EntryPointNode, PackageNode, isEntryPoint, isPackage } from '../nodes';\nimport { NgPackagrOptions } from '../options.di';\n\nexport const compileNgcTransformFactory = (\n StylesheetProcessor: typeof StylesheetProcessorClass,\n options: NgPackagrOptions,\n): Transform => {\n return transformFromPromise(async graph => {\n const spinner = ora({\n hideCursor: false,\n discardStdin: false,\n });\n\n const entryPoints: EntryPointNode[] = [];\n let entryPoint: EntryPointNode;\n let ngPackageNode: PackageNode;\n\n for (const node of graph.values()) {\n if (isEntryPoint(node)) {\n entryPoints.push(node);\n\n if (isInProgress(node)) {\n entryPoint = node;\n }\n } else if (isPackage(node)) {\n ngPackageNode = node;\n }\n }\n\n const projectBasePath = ngPackageNode.data.primary.basePath;\n\n try {\n // Add paths mappings for dependencies\n const tsConfig = setDependenciesTsConfigPaths(entryPoint.data.tsConfig, entryPoints);\n\n // Compile TypeScript sources\n const { esm2022: esm2022, declarations } = entryPoint.data.destinationFiles;\n const { basePath, cssUrl, styleIncludePaths, sass } = entryPoint.data.entryPoint;\n const { moduleResolutionCache } = entryPoint.cache;\n\n spinner.start(\n `Compiling with Angular sources in ${tsConfig.options.compilationMode || 'full'} compilation mode.`,\n );\n\n entryPoint.cache.stylesheetProcessor ??= new StylesheetProcessor(\n projectBasePath,\n basePath,\n cssUrl,\n styleIncludePaths,\n sass,\n options.cacheEnabled && options.cacheDirectory,\n options.watch,\n );\n\n await compileSourceFiles(\n graph,\n tsConfig,\n moduleResolutionCache,\n options,\n {\n outDir: path.dirname(esm2022),\n declarationDir: path.dirname(declarations),\n declaration: true,\n target: ts.ScriptTarget.ES2022,\n },\n entryPoint.cache.stylesheetProcessor,\n );\n } catch (error) {\n spinner.fail();\n throw error;\n } finally {\n if (!options.watch) {\n entryPoint.cache.stylesheetProcessor?.destroy();\n }\n }\n\n spinner.succeed();\n\n return graph;\n });\n};\n"]}
1
+ {"version":3,"file":"compile-ngc.transform.js","sourceRoot":"","sources":["../../../../../src/lib/ng-package/entry-point/compile-ngc.transform.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAsB;AACtB,2CAA6B;AAC7B,4DAA4B;AAC5B,qDAAwE;AACxE,yEAAoE;AAEpE,gDAAiE;AACjE,oCAA8E;AAGvE,MAAM,0BAA0B,GAAG,CACxC,mBAAoD,EACpD,OAAyB,EACd,EAAE;IACb,OAAO,IAAA,gCAAoB,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE;QACxC,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC;YAClB,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,oBAAY,CAAC,CAAC;QAC/C,MAAM,aAAa,GAAG,IAAA,uBAAe,EAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,IAAA,2BAAmB,EAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,eAAe,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAE5D,IAAI,CAAC;YACH,sCAAsC;YACtC,MAAM,QAAQ,GAAG,IAAA,uCAA4B,EAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAErF,6BAA6B;YAC7B,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC;YACnE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;YACjF,MAAM,EAAE,qBAAqB,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC;YAEnD,OAAO,CAAC,KAAK,CACX,qCAAqC,QAAQ,CAAC,OAAO,CAAC,eAAe,IAAI,MAAM,oBAAoB,CACpG,CAAC;YAEF,UAAU,CAAC,KAAK,CAAC,mBAAmB,KAAK,IAAI,mBAAmB,CAC9D,eAAe,EACf,QAAQ,EACR,MAAM,EACN,iBAAiB,EACjB,IAAI,EACJ,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,cAAc,EAC9C,OAAO,CAAC,KAAK,CACd,CAAC;YAEF,MAAM,IAAA,yCAAkB,EACtB,KAAK,EACL,QAAQ,EACR,qBAAqB,EACrB,OAAO,EACP;gBACE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;gBAC7B,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;gBAC1C,WAAW,EAAE,IAAI;gBACjB,MAAM,EAAE,oBAAE,CAAC,YAAY,CAAC,MAAM;aAC/B,EACD,UAAU,CAAC,KAAK,CAAC,mBAAmB,CACrC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,KAAK,CAAC;QACd,CAAC;QAED,OAAO,CAAC,OAAO,EAAE,CAAC;QAElB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA5DW,QAAA,0BAA0B,8BA4DrC","sourcesContent":["import ora from 'ora';\nimport * as path from 'path';\nimport ts from 'typescript';\nimport { Transform, transformFromPromise } from '../../graph/transform';\nimport { compileSourceFiles } from '../../ngc/compile-source-files';\nimport { StylesheetProcessor as StylesheetProcessorClass } from '../../styles/stylesheet-processor';\nimport { setDependenciesTsConfigPaths } from '../../ts/tsconfig';\nimport { findPackageNode, getActiveEntryPoint, isEntryPoint } from '../nodes';\nimport { NgPackagrOptions } from '../options.di';\n\nexport const compileNgcTransformFactory = (\n StylesheetProcessor: typeof StylesheetProcessorClass,\n options: NgPackagrOptions,\n): Transform => {\n return transformFromPromise(async graph => {\n const spinner = ora({\n hideCursor: false,\n discardStdin: false,\n });\n\n const entryPoints = graph.filter(isEntryPoint);\n const ngPackageNode = findPackageNode(graph);\n const entryPoint = getActiveEntryPoint(graph);\n const projectBasePath = ngPackageNode.data.primary.basePath;\n\n try {\n // Add paths mappings for dependencies\n const tsConfig = setDependenciesTsConfigPaths(entryPoint.data.tsConfig, entryPoints);\n\n // Compile TypeScript sources\n const { esm2022, declarations } = entryPoint.data.destinationFiles;\n const { basePath, cssUrl, styleIncludePaths, sass } = entryPoint.data.entryPoint;\n const { moduleResolutionCache } = entryPoint.cache;\n\n spinner.start(\n `Compiling with Angular sources in ${tsConfig.options.compilationMode || 'full'} compilation mode.`,\n );\n\n entryPoint.cache.stylesheetProcessor ??= new StylesheetProcessor(\n projectBasePath,\n basePath,\n cssUrl,\n styleIncludePaths,\n sass,\n options.cacheEnabled && options.cacheDirectory,\n options.watch,\n );\n\n await compileSourceFiles(\n graph,\n tsConfig,\n moduleResolutionCache,\n options,\n {\n outDir: path.dirname(esm2022),\n declarationDir: path.dirname(declarations),\n declaration: true,\n target: ts.ScriptTarget.ES2022,\n },\n entryPoint.cache.stylesheetProcessor,\n );\n } catch (error) {\n spinner.fail();\n throw error;\n }\n\n spinner.succeed();\n\n return graph;\n });\n};\n"]}
@@ -65,7 +65,7 @@ const nodes_1 = require("../nodes");
65
65
  */
66
66
  const entryPointTransformFactory = (compileTs, writeBundles, writePackage) => (0, rxjs_1.pipe)((0, rxjs_1.tap)(graph => {
67
67
  // Peek the first entry point from the graph
68
- const entryPoint = (0, nodes_1.findEntryPointInProgress)(graph);
68
+ const entryPoint = (0, nodes_1.getActiveEntryPoint)(graph);
69
69
  log.msg('\n------------------------------------------------------------------------------');
70
70
  log.msg(`Building entry point '${entryPoint.data.entryPoint.moduleId}'`);
71
71
  log.msg('------------------------------------------------------------------------------');
@@ -74,7 +74,7 @@ const entryPointTransformFactory = (compileTs, writeBundles, writePackage) => (0
74
74
  compileTs,
75
75
  // After TypeScript: bundling and write package
76
76
  writeBundles, writePackage, (0, rxjs_1.tap)(graph => {
77
- const entryPoint = (0, nodes_1.findEntryPointInProgress)(graph);
77
+ const entryPoint = (0, nodes_1.getActiveEntryPoint)(graph);
78
78
  entryPoint.state = node_1.STATE_DONE;
79
79
  }));
80
80
  exports.entryPointTransformFactory = entryPointTransformFactory;
@@ -1 +1 @@
1
- {"version":3,"file":"entry-point.transform.js","sourceRoot":"","sources":["../../../../../src/lib/ng-package/entry-point/entry-point.transform.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAiC;AACjC,2CAA8C;AAE9C,qDAAuC;AACvC,oCAAoD;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACI,MAAM,0BAA0B,GAAG,CACxC,SAAoB,EACpB,YAAuB,EACvB,YAAuB,EACZ,EAAE,CACb,IAAA,WAAI,EACF,IAAA,UAAG,EAAC,KAAK,CAAC,EAAE;IACV,4CAA4C;IAC5C,MAAM,UAAU,GAAG,IAAA,gCAAwB,EAAC,KAAK,CAAC,CAAC;IACnD,GAAG,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC;IAC5F,GAAG,CAAC,GAAG,CAAC,yBAAyB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC;IACzE,GAAG,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAC;AAC5F,CAAC,CAAC;AACF,iCAAiC;AACjC,SAAS;AACT,+CAA+C;AAC/C,YAAY,EACZ,YAAY,EACZ,IAAA,UAAG,EAAC,KAAK,CAAC,EAAE;IACV,MAAM,UAAU,GAAG,IAAA,gCAAwB,EAAC,KAAK,CAAC,CAAC;IACnD,UAAU,CAAC,KAAK,GAAG,iBAAU,CAAC;AAChC,CAAC,CAAC,CACH,CAAC;AAtBS,QAAA,0BAA0B,8BAsBnC","sourcesContent":["import { pipe, tap } from 'rxjs';\nimport { STATE_DONE } from '../../graph/node';\nimport { Transform } from '../../graph/transform';\nimport * as log from '../../utils/log';\nimport { findEntryPointInProgress } from '../nodes';\n\n/**\n * A re-write of the `transformSources()` script that transforms an entry point from sources to distributable format.\n *\n * Sources are TypeScript source files accompanied by HTML templates and xCSS stylesheets.\n * See the Angular Package Format for a detailed description of what the distributables include.\n *\n * The current transformation pipeline can be thought of as:\n *\n * - clean\n * - compileTs\n * - downlevelTs\n * - writeBundles\n * - bundleToFesm15\n * - relocateSourceMaps\n * - writePackage\n * - copyStagedFiles (bundles, esm, dts, sourcemaps)\n * - writePackageJson\n *\n * The transformation pipeline is pluggable through the dependency injection system.\n * Sub-transformations are passed to this factory function as arguments.\n *\n * @param compileTs Transformation compiling typescript sources to ES2022 modules.\n * @param writeBundles Transformation flattening ES2022 modules to ESM2022, UMD, and minified UMD.\n * @param writePackage Transformation writing a distribution-ready `package.json` (for publishing to npm registry).\n */\nexport const entryPointTransformFactory = (\n compileTs: Transform,\n writeBundles: Transform,\n writePackage: Transform,\n): Transform =>\n pipe(\n tap(graph => {\n // Peek the first entry point from the graph\n const entryPoint = findEntryPointInProgress(graph);\n log.msg('\\n------------------------------------------------------------------------------');\n log.msg(`Building entry point '${entryPoint.data.entryPoint.moduleId}'`);\n log.msg('------------------------------------------------------------------------------');\n }),\n // TypeScript sources compilation\n compileTs,\n // After TypeScript: bundling and write package\n writeBundles,\n writePackage,\n tap(graph => {\n const entryPoint = findEntryPointInProgress(graph);\n entryPoint.state = STATE_DONE;\n }),\n );\n"]}
1
+ {"version":3,"file":"entry-point.transform.js","sourceRoot":"","sources":["../../../../../src/lib/ng-package/entry-point/entry-point.transform.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAiC;AACjC,2CAA8C;AAE9C,qDAAuC;AACvC,oCAA+C;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACI,MAAM,0BAA0B,GAAG,CACxC,SAAoB,EACpB,YAAuB,EACvB,YAAuB,EACZ,EAAE,CACb,IAAA,WAAI,EACF,IAAA,UAAG,EAAC,KAAK,CAAC,EAAE;IACV,4CAA4C;IAC5C,MAAM,UAAU,GAAG,IAAA,2BAAmB,EAAC,KAAK,CAAC,CAAC;IAC9C,GAAG,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC;IAC5F,GAAG,CAAC,GAAG,CAAC,yBAAyB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC;IACzE,GAAG,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAC;AAC5F,CAAC,CAAC;AACF,iCAAiC;AACjC,SAAS;AACT,+CAA+C;AAC/C,YAAY,EACZ,YAAY,EACZ,IAAA,UAAG,EAAC,KAAK,CAAC,EAAE;IACV,MAAM,UAAU,GAAG,IAAA,2BAAmB,EAAC,KAAK,CAAC,CAAC;IAC9C,UAAU,CAAC,KAAK,GAAG,iBAAU,CAAC;AAChC,CAAC,CAAC,CACH,CAAC;AAtBS,QAAA,0BAA0B,8BAsBnC","sourcesContent":["import { pipe, tap } from 'rxjs';\nimport { STATE_DONE } from '../../graph/node';\nimport { Transform } from '../../graph/transform';\nimport * as log from '../../utils/log';\nimport { getActiveEntryPoint } from '../nodes';\n\n/**\n * A re-write of the `transformSources()` script that transforms an entry point from sources to distributable format.\n *\n * Sources are TypeScript source files accompanied by HTML templates and xCSS stylesheets.\n * See the Angular Package Format for a detailed description of what the distributables include.\n *\n * The current transformation pipeline can be thought of as:\n *\n * - clean\n * - compileTs\n * - downlevelTs\n * - writeBundles\n * - bundleToFesm15\n * - relocateSourceMaps\n * - writePackage\n * - copyStagedFiles (bundles, esm, dts, sourcemaps)\n * - writePackageJson\n *\n * The transformation pipeline is pluggable through the dependency injection system.\n * Sub-transformations are passed to this factory function as arguments.\n *\n * @param compileTs Transformation compiling typescript sources to ES2022 modules.\n * @param writeBundles Transformation flattening ES2022 modules to ESM2022, UMD, and minified UMD.\n * @param writePackage Transformation writing a distribution-ready `package.json` (for publishing to npm registry).\n */\nexport const entryPointTransformFactory = (\n compileTs: Transform,\n writeBundles: Transform,\n writePackage: Transform,\n): Transform =>\n pipe(\n tap(graph => {\n // Peek the first entry point from the graph\n const entryPoint = getActiveEntryPoint(graph);\n log.msg('\\n------------------------------------------------------------------------------');\n log.msg(`Building entry point '${entryPoint.data.entryPoint.moduleId}'`);\n log.msg('------------------------------------------------------------------------------');\n }),\n // TypeScript sources compilation\n compileTs,\n // After TypeScript: bundling and write package\n writeBundles,\n writePackage,\n tap(graph => {\n const entryPoint = getActiveEntryPoint(graph);\n entryPoint.state = STATE_DONE;\n }),\n );\n"]}
@@ -14,7 +14,7 @@ const fs_1 = require("../../utils/fs");
14
14
  const path_1 = require("../../utils/path");
15
15
  const nodes_1 = require("../nodes");
16
16
  const writeBundlesTransform = (options) => (0, transform_1.transformFromPromise)(async (graph) => {
17
- const entryPoint = (0, nodes_1.findEntryPointInProgress)(graph);
17
+ const entryPoint = (0, nodes_1.getActiveEntryPoint)(graph);
18
18
  const { destinationFiles, entryPoint: ngEntryPoint, tsConfig } = entryPoint.data;
19
19
  const cache = entryPoint.cache;
20
20
  const { fesm2022Dir, esm2022, declarations, declarationsDir } = destinationFiles;
@@ -23,7 +23,10 @@ const writeBundlesTransform = (options) => (0, transform_1.transformFromPromise)
23
23
  discardStdin: false,
24
24
  });
25
25
  const cacheKey = await (0, cache_1.generateKey)(ngEntryPoint.moduleId, declarationsDir, fesm2022Dir, tsConfig.options.compilationMode, (tsConfig.options.declarationMap ?? false).toString());
26
- const hash = await (0, cache_1.generateKey)([...cache.outputCache.values()].map(({ version }) => version).join(':'));
26
+ const hash = await (0, cache_1.generateKey)([...cache.outputCache.entries()]
27
+ .sort(([a], [b]) => a.localeCompare(b))
28
+ .map(([p, { version }]) => `${p}:${version}`)
29
+ .join(':'));
27
30
  const cacheDirectory = options.cacheEnabled && options.cacheDirectory;
28
31
  if (cacheDirectory) {
29
32
  const cacheResult = await (0, cache_1.readCacheEntry)(options.cacheDirectory, cacheKey);