ng-packagr 4.4.5 → 4.7.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/CHANGELOG.md +66 -0
- package/README.md +17 -69
- package/lib/brocc/node.d.ts +1 -0
- package/lib/brocc/node.js +11 -4
- package/lib/brocc/node.js.map +1 -1
- package/lib/ng-v5/entry-point/resources/stylesheet-processor.js +1 -1
- package/lib/ng-v5/entry-point/resources/stylesheet-processor.js.map +1 -1
- package/lib/ng-v5/init/analyse-sources.transform.js +18 -12
- package/lib/ng-v5/init/analyse-sources.transform.js.map +1 -1
- package/lib/ng-v5/nodes.d.ts +6 -2
- package/lib/ng-v5/nodes.js +8 -2
- package/lib/ng-v5/nodes.js.map +1 -1
- package/lib/ng-v5/package.transform.js +9 -5
- package/lib/ng-v5/package.transform.js.map +1 -1
- package/lib/ngc/compile-source-files.js +36 -7
- package/lib/ngc/compile-source-files.js.map +1 -1
- package/lib/ngc/create-emit-callback.js +1 -1
- package/lib/ngc/create-emit-callback.js.map +1 -1
- package/lib/ts/cache-compiler-host.d.ts +2 -1
- package/lib/ts/cache-compiler-host.js +11 -6
- package/lib/ts/cache-compiler-host.js.map +1 -1
- package/lib/util/array.js +0 -1
- package/lib/util/array.js.map +1 -1
- package/package.json +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,72 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
<a name="4.7.1"></a>
|
|
6
|
+
## [4.7.1](https://github.com/ng-packagr/ng-packagr/compare/v4.7.0...v4.7.1) (2019-02-15)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* don't use classic module resolution during analyse ([f0a1c38](https://github.com/ng-packagr/ng-packagr/commit/f0a1c38)), closes [#1210](https://github.com/ng-packagr/ng-packagr/issues/1210)
|
|
12
|
+
* emit complete diagnostics ([82e1fd0](https://github.com/ng-packagr/ng-packagr/commit/82e1fd0))
|
|
13
|
+
* replace opencollective-cli with opencollective-postinstall ([#1203](https://github.com/ng-packagr/ng-packagr/issues/1203)) ([44776da](https://github.com/ng-packagr/ng-packagr/commit/44776da)), closes [#1178](https://github.com/ng-packagr/ng-packagr/issues/1178)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
<a name="4.7.0"></a>
|
|
18
|
+
# [4.7.0](https://github.com/ng-packagr/ng-packagr/compare/v4.6.0...v4.7.0) (2019-01-26)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Bug Fixes
|
|
22
|
+
|
|
23
|
+
* read error when having files with spaces in less ([22cfdcc](https://github.com/ng-packagr/ng-packagr/commit/22cfdcc)), closes [#1197](https://github.com/ng-packagr/ng-packagr/issues/1197)
|
|
24
|
+
* use old TypeScript API to support users which are still on 2.7.x+ ([eec8b84](https://github.com/ng-packagr/ng-packagr/commit/eec8b84)), closes [#1186](https://github.com/ng-packagr/ng-packagr/issues/1186)
|
|
25
|
+
* use ts.compilerHost as moduleResolutionHost for tsickle.emitWithTsickle to support tsickle 0.33.1 ([30d3720](https://github.com/ng-packagr/ng-packagr/commit/30d3720)), closes [#1189](https://github.com/ng-packagr/ng-packagr/issues/1189)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### Features
|
|
29
|
+
|
|
30
|
+
* add support for tsickle to 0.34.0 ([3b67d90](https://github.com/ng-packagr/ng-packagr/commit/3b67d90))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Performance Improvements
|
|
34
|
+
|
|
35
|
+
* simplify Node `dependsOn` logic ([4a0585d](https://github.com/ng-packagr/ng-packagr/commit/4a0585d))
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<a name="4.6.0"></a>
|
|
40
|
+
# [4.6.0](https://github.com/ng-packagr/ng-packagr/compare/v4.3.1...v4.6.0) (2019-01-15)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
### Bug Fixes
|
|
44
|
+
|
|
45
|
+
* add opencollective postinstall hook ([c3dbaeb](https://github.com/ng-packagr/ng-packagr/commit/c3dbaeb))
|
|
46
|
+
* analyses of secondary entrypoints doesn't work with deep imports ([3f56df2](https://github.com/ng-packagr/ng-packagr/commit/3f56df2)), closes [#1183](https://github.com/ng-packagr/ng-packagr/issues/1183)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
<a name="4.5.0"></a>
|
|
51
|
+
# [4.5.0](https://github.com/ng-packagr/ng-packagr/compare/v4.4.5...v4.5.0) (2019-01-11)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
### Bug Fixes
|
|
55
|
+
|
|
56
|
+
* update rollup-plugin-node-resolve to version ^4.0.0 ([ab2a55a](https://github.com/ng-packagr/ng-packagr/commit/ab2a55a))
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
### Features
|
|
60
|
+
|
|
61
|
+
* add support for TypeScript 3.2 ([9e6ee67](https://github.com/ng-packagr/ng-packagr/commit/9e6ee67))
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
### Performance Improvements
|
|
65
|
+
|
|
66
|
+
* cache ng program for faster incremental builds ([4131d4c](https://github.com/ng-packagr/ng-packagr/commit/4131d4c))
|
|
67
|
+
* improve entry points analyses ([bcc7f05](https://github.com/ng-packagr/ng-packagr/commit/bcc7f05))
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
5
71
|
<a name="4.4.5"></a>
|
|
6
72
|
## [4.4.5](https://github.com/ng-packagr/ng-packagr/compare/v4.4.4...v4.4.5) (2018-12-01)
|
|
7
73
|
|
package/README.md
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
[](https://github.com/ng-packagr/ng-packagr/blob/master/LICENSE)
|
|
8
8
|
[](https://conventionalcommits.org)
|
|
9
9
|
[](https://circleci.com/gh/ng-packagr/ng-packagr)
|
|
10
|
-
[](https://travis-ci.org/ng-packagr/ng-packagr)
|
|
11
10
|
|
|
12
11
|
[](#backers)
|
|
13
12
|
[](#sponsors)
|
|
@@ -16,80 +15,29 @@
|
|
|
16
15
|
[](https://www.npmjs.com/package/ng-packagr)
|
|
17
16
|
[](https://renovateapp.com/)
|
|
18
17
|
|
|
18
|
+
## Credits
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
### Contributors
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
|
|
23
|
+
|
|
24
|
+
<a href="https://github.com/ng-packagr/ng-packagr/graphs/contributors"><img src="https://opencollective.com/ng-packagr/contributors.svg?width=890&button=false" /></a>
|
|
25
|
+
|
|
26
|
+
### Backers
|
|
27
|
+
|
|
28
|
+
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/ng-packagr#backer)]
|
|
29
|
+
|
|
30
|
+
<a href="https://opencollective.com/ng-packagr#backers" target="_blank"><img src="https://opencollective.com/ng-packagr/backers.svg?width=890"></a>
|
|
31
|
+
|
|
32
|
+
### Sponsors
|
|
33
|
+
|
|
34
|
+
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/ng-packagr#sponsor)]
|
|
25
35
|
|
|
26
36
|
<a href="https://opencollective.com/ng-packagr/sponsor/0/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/0/avatar.svg"></a>
|
|
37
|
+
|
|
27
38
|
<a href="https://opencollective.com/ng-packagr/sponsor/1/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/1/avatar.svg"></a>
|
|
39
|
+
|
|
28
40
|
<a href="https://opencollective.com/ng-packagr/sponsor/2/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/2/avatar.svg"></a>
|
|
29
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/3/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/3/avatar.svg"></a>
|
|
30
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/4/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/4/avatar.svg"></a>
|
|
31
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/5/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/5/avatar.svg"></a>
|
|
32
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/6/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/6/avatar.svg"></a>
|
|
33
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/7/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/7/avatar.svg"></a>
|
|
34
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/8/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/8/avatar.svg"></a>
|
|
35
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/9/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/9/avatar.svg"></a>
|
|
36
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/10/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/10/avatar.svg"></a>
|
|
37
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/11/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/11/avatar.svg"></a>
|
|
38
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/12/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/12/avatar.svg"></a>
|
|
39
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/13/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/13/avatar.svg"></a>
|
|
40
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/14/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/14/avatar.svg"></a>
|
|
41
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/15/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/15/avatar.svg"></a>
|
|
42
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/16/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/16/avatar.svg"></a>
|
|
43
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/17/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/17/avatar.svg"></a>
|
|
44
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/18/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/18/avatar.svg"></a>
|
|
45
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/19/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/19/avatar.svg"></a>
|
|
46
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/20/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/20/avatar.svg"></a>
|
|
47
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/21/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/21/avatar.svg"></a>
|
|
48
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/22/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/22/avatar.svg"></a>
|
|
49
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/23/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/23/avatar.svg"></a>
|
|
50
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/24/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/24/avatar.svg"></a>
|
|
51
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/25/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/25/avatar.svg"></a>
|
|
52
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/26/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/26/avatar.svg"></a>
|
|
53
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/27/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/27/avatar.svg"></a>
|
|
54
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/28/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/28/avatar.svg"></a>
|
|
55
|
-
<a href="https://opencollective.com/ng-packagr/sponsor/29/website" target="_blank"><img src="https://opencollective.com/ng-packagr/sponsor/29/avatar.svg"></a>
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
## Backers
|
|
59
|
-
|
|
60
|
-
Support us with a monthly donation and help us continue our activities.
|
|
61
|
-
[[Become a backer](https://opencollective.com/ng-packagr#contributors)]
|
|
62
|
-
|
|
63
|
-
<a href="https://opencollective.com/ng-packagr/backer/0/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/0/avatar.svg"></a>
|
|
64
|
-
<a href="https://opencollective.com/ng-packagr/backer/1/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/1/avatar.svg"></a>
|
|
65
|
-
<a href="https://opencollective.com/ng-packagr/backer/2/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/2/avatar.svg"></a>
|
|
66
|
-
<a href="https://opencollective.com/ng-packagr/backer/3/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/3/avatar.svg"></a>
|
|
67
|
-
<a href="https://opencollective.com/ng-packagr/backer/4/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/4/avatar.svg"></a>
|
|
68
|
-
<a href="https://opencollective.com/ng-packagr/backer/5/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/5/avatar.svg"></a>
|
|
69
|
-
<a href="https://opencollective.com/ng-packagr/backer/6/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/6/avatar.svg"></a>
|
|
70
|
-
<a href="https://opencollective.com/ng-packagr/backer/7/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/7/avatar.svg"></a>
|
|
71
|
-
<a href="https://opencollective.com/ng-packagr/backer/8/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/8/avatar.svg"></a>
|
|
72
|
-
<a href="https://opencollective.com/ng-packagr/backer/9/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/9/avatar.svg"></a>
|
|
73
|
-
<a href="https://opencollective.com/ng-packagr/backer/10/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/10/avatar.svg"></a>
|
|
74
|
-
<a href="https://opencollective.com/ng-packagr/backer/11/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/11/avatar.svg"></a>
|
|
75
|
-
<a href="https://opencollective.com/ng-packagr/backer/12/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/12/avatar.svg"></a>
|
|
76
|
-
<a href="https://opencollective.com/ng-packagr/backer/13/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/13/avatar.svg"></a>
|
|
77
|
-
<a href="https://opencollective.com/ng-packagr/backer/14/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/14/avatar.svg"></a>
|
|
78
|
-
<a href="https://opencollective.com/ng-packagr/backer/15/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/15/avatar.svg"></a>
|
|
79
|
-
<a href="https://opencollective.com/ng-packagr/backer/16/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/16/avatar.svg"></a>
|
|
80
|
-
<a href="https://opencollective.com/ng-packagr/backer/17/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/17/avatar.svg"></a>
|
|
81
|
-
<a href="https://opencollective.com/ng-packagr/backer/18/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/18/avatar.svg"></a>
|
|
82
|
-
<a href="https://opencollective.com/ng-packagr/backer/19/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/19/avatar.svg"></a>
|
|
83
|
-
<a href="https://opencollective.com/ng-packagr/backer/20/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/20/avatar.svg"></a>
|
|
84
|
-
<a href="https://opencollective.com/ng-packagr/backer/21/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/21/avatar.svg"></a>
|
|
85
|
-
<a href="https://opencollective.com/ng-packagr/backer/22/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/22/avatar.svg"></a>
|
|
86
|
-
<a href="https://opencollective.com/ng-packagr/backer/23/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/23/avatar.svg"></a>
|
|
87
|
-
<a href="https://opencollective.com/ng-packagr/backer/24/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/24/avatar.svg"></a>
|
|
88
|
-
<a href="https://opencollective.com/ng-packagr/backer/25/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/25/avatar.svg"></a>
|
|
89
|
-
<a href="https://opencollective.com/ng-packagr/backer/26/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/26/avatar.svg"></a>
|
|
90
|
-
<a href="https://opencollective.com/ng-packagr/backer/27/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/27/avatar.svg"></a>
|
|
91
|
-
<a href="https://opencollective.com/ng-packagr/backer/28/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/28/avatar.svg"></a>
|
|
92
|
-
<a href="https://opencollective.com/ng-packagr/backer/29/website" target="_blank"><img src="https://opencollective.com/ng-packagr/backer/29/avatar.svg"></a>
|
|
93
41
|
|
|
94
42
|
|
|
95
43
|
## Usage Example
|
package/lib/brocc/node.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export declare class Node {
|
|
|
16
16
|
find(by: (value: Node, index: number) => boolean): Node | undefined;
|
|
17
17
|
some(by: (value: Node, index: number) => boolean): boolean;
|
|
18
18
|
readonly dependents: Node[];
|
|
19
|
+
readonly dependees: Node[];
|
|
19
20
|
private _dependents;
|
|
20
21
|
private _dependees;
|
|
21
22
|
/** @experimental DO NOT USE. For time being, dirty checking is for `type=entryPoint && state !== 'done'` (full rebuild of entry point). */
|
package/lib/brocc/node.js
CHANGED
|
@@ -26,13 +26,20 @@ class Node {
|
|
|
26
26
|
get dependents() {
|
|
27
27
|
return this._dependents;
|
|
28
28
|
}
|
|
29
|
+
get dependees() {
|
|
30
|
+
return this._dependees;
|
|
31
|
+
}
|
|
29
32
|
/** @experimental DO NOT USE. For time being, dirty checking is for `type=entryPoint && state !== 'done'` (full rebuild of entry point). */
|
|
30
33
|
dependsOn(dependent) {
|
|
31
34
|
const newDeps = dependent instanceof Array ? dependent : [dependent];
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
for (const newDep of newDeps) {
|
|
36
|
+
if (newDep._dependees.some(x => x.url === this.url)) {
|
|
37
|
+
// nodes already depends on each other
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
newDep._dependees.push(this);
|
|
41
|
+
this._dependents.push(newDep);
|
|
42
|
+
}
|
|
36
43
|
}
|
|
37
44
|
}
|
|
38
45
|
exports.Node = Node;
|
package/lib/brocc/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/lib/brocc/node.ts"],"names":[],"mappings":";;AAEa,QAAA,WAAW,GAAc,OAAO,CAAC;AACjC,QAAA,gBAAgB,GAAc,aAAa,CAAC;AAC5C,QAAA,aAAa,GAAc,SAAS,CAAC;AACrC,QAAA,UAAU,GAAc,MAAM,CAAC;AAE5C;;GAEG;AACH,MAAa,IAAI;IACf,YAA4B,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;QAMhC,UAAK,GAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/lib/brocc/node.ts"],"names":[],"mappings":";;AAEa,QAAA,WAAW,GAAc,OAAO,CAAC;AACjC,QAAA,gBAAgB,GAAc,aAAa,CAAC;AAC5C,QAAA,aAAa,GAAc,SAAS,CAAC;AACrC,QAAA,UAAU,GAAc,MAAM,CAAC;AAE5C;;GAEG;AACH,MAAa,IAAI;IACf,YAA4B,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;QAMhC,UAAK,GAAc,EAAE,CAAC;QAsBrB,gBAAW,GAAW,EAAE,CAAC;QACzB,eAAU,GAAW,EAAE,CAAC;IA7BU,CAAC;IAQpC,MAAM,CAAC,EAA2C;QACvD,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAEM,IAAI,CAAC,EAA2C;QACrD,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IAEM,IAAI,CAAC,EAA2C;QACrD,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAKD,2IAA2I;IACpI,SAAS,CAAC,SAAwB;QACvC,MAAM,OAAO,GAAG,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAErE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE;gBACnD,sCAAsC;gBACtC,SAAS;aACV;YAED,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC/B;IACH,CAAC;CACF;AA9CD,oBA8CC","sourcesContent":["export type NodeState = '' | 'dirty' | 'in-progress' | 'pending' | 'done';\n\nexport const STATE_DIRTY: NodeState = 'dirty';\nexport const STATE_IN_PROGESS: NodeState = 'in-progress';\nexport const STATE_PENDING: NodeState = 'pending';\nexport const STATE_DONE: NodeState = 'done';\n\n/**\n * A Node in the {@link BuildGraph}.\n */\nexport class Node {\n constructor(public readonly url: string) {}\n\n public type: string;\n\n public data: any;\n\n public state: NodeState = '';\n\n public filter(by: (value: Node, index: number) => boolean): Node[] {\n return this._dependents.filter(by);\n }\n\n public find(by: (value: Node, index: number) => boolean): Node | undefined {\n return this._dependents.find(by);\n }\n\n public some(by: (value: Node, index: number) => boolean): boolean {\n return this._dependents.some(by);\n }\n\n public get dependents(): Node[] {\n return this._dependents;\n }\n\n public get dependees(): Node[] {\n return this._dependees;\n }\n\n private _dependents: Node[] = [];\n private _dependees: Node[] = [];\n\n /** @experimental DO NOT USE. For time being, dirty checking is for `type=entryPoint && state !== 'done'` (full rebuild of entry point). */\n public dependsOn(dependent: Node | Node[]) {\n const newDeps = dependent instanceof Array ? dependent : [dependent];\n\n for (const newDep of newDeps) {\n if (newDep._dependees.some(x => x.url === this.url)) {\n // nodes already depends on each other\n continue;\n }\n\n newDep._dependees.push(this);\n this._dependents.push(newDep);\n }\n }\n}\n"]}
|
|
@@ -49,7 +49,7 @@ class StylesheetProcessor {
|
|
|
49
49
|
.css.toString();
|
|
50
50
|
case '.less':
|
|
51
51
|
// this is the only way I found to make LESS sync
|
|
52
|
-
let cmd = `node node_modules/less/bin/lessc ${filePath} --less-plugin-npm-import="prefix=~"`;
|
|
52
|
+
let cmd = `node node_modules/less/bin/lessc "${filePath}" --less-plugin-npm-import="prefix=~"`;
|
|
53
53
|
if (this.styleIncludePaths.length) {
|
|
54
54
|
cmd = `${cmd} --include-path=${this.styleIncludePaths.join(':')}`;
|
|
55
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stylesheet-processor.js","sourceRoot":"","sources":["../../../../../src/lib/ng-v5/entry-point/resources/stylesheet-processor.ts"],"names":[],"mappings":";;AAAA,6BAA6B;AAC7B,yCAAyC;AACzC,8DAA2D;AAC3D,iDAAyC;AAEzC,YAAY;AACZ,6CAA6C;AAC7C,6CAA6C;AAC7C,kEAAkE;AAClE,mCAAmC;AACnC,0CAA0C;AAC1C,mDAA2C;AAC3C,kCAAkC;AAClC,iCAAiC;AAEjC,MAAa,mBAAmB;IAG9B,YAAqB,QAAgB,EAAW,MAAe,EAAW,iBAA4B;QAAjF,aAAQ,GAAR,QAAQ,CAAQ;QAAW,WAAM,GAAN,MAAM,CAAS;QAAW,sBAAiB,GAAjB,iBAAiB,CAAW;QACpG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,CAAC,QAAgB,EAAE,OAAe;QACvC,mDAAmD;QACnD,MAAM,WAAW,GAAW,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEvE,6CAA6C;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE;YACxD,IAAI,EAAE,QAAQ;YACd,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;SACrD,CAAC,CAAC;QAEH,4BAA4B;QAC5B,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE3D,OAAO,MAAM,CAAC,GAAG,CAAC;IACpB,CAAC;IAEO,kBAAkB,CAAC,QAAgB,EAAE,OAAe;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEnC,GAAG,CAAC,KAAK,CAAC,aAAa,GAAG,SAAS,QAAQ,EAAE,CAAC,CAAC;QAE/C,QAAQ,GAAG,EAAE;YACX,KAAK,OAAO,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,IAAI;qBACR,UAAU,CAAC;oBACV,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,OAAO;oBACb,cAAc,EAAE,OAAO,KAAK,GAAG;oBAC/B,QAAQ,EAAE,qBAAqB;oBAC/B,YAAY,EAAE,IAAI,CAAC,iBAAiB;iBACrC,CAAC;qBACD,GAAG,CAAC,QAAQ,EAAE,CAAC;YAEpB,KAAK,OAAO;gBACV,iDAAiD;gBACjD,IAAI,GAAG,GAAG,
|
|
1
|
+
{"version":3,"file":"stylesheet-processor.js","sourceRoot":"","sources":["../../../../../src/lib/ng-v5/entry-point/resources/stylesheet-processor.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from 'path';\nimport * as log from '../../../util/log';\nimport { CssUrl } from '../../../ng-package-format/shared';\nimport { execSync } from 'child_process';\n\n// CSS Tools\nimport * as autoprefixer from 'autoprefixer';\nimport * as browserslist from 'browserslist';\nimport * as nodeSassTildeImporter from 'node-sass-tilde-importer';\nimport * as postcss from 'postcss';\nimport * as postcssUrl from 'postcss-url';\nimport postcssClean from './postcss-clean';\nimport * as sass from 'node-sass';\nimport * as stylus from 'stylus';\n\nexport class StylesheetProcessor {\n private postCssProcessor: postcss.Processor;\n\n constructor(readonly basePath: string, readonly cssUrl?: CssUrl, readonly styleIncludePaths?: string[]) {\n this.postCssProcessor = this.createPostCssProcessor(basePath, cssUrl);\n }\n\n process(filePath: string, content: string) {\n // Render pre-processor language (sass, styl, less)\n const renderedCss: string = this.renderPreProcessor(filePath, content);\n\n // Render postcss (autoprefixing and friends)\n const result = this.postCssProcessor.process(renderedCss, {\n from: filePath,\n to: filePath.replace(path.extname(filePath), '.css')\n });\n\n // Log warnings from postcss\n result.warnings().forEach(msg => log.warn(msg.toString()));\n\n return result.css;\n }\n\n private renderPreProcessor(filePath: string, content: string): string {\n const ext = path.extname(filePath);\n\n log.debug(`rendering ${ext} from ${filePath}`);\n\n switch (ext) {\n case '.sass':\n case '.scss':\n return sass\n .renderSync({\n file: filePath,\n data: content,\n indentedSyntax: '.sass' === ext,\n importer: nodeSassTildeImporter,\n includePaths: this.styleIncludePaths\n })\n .css.toString();\n\n case '.less':\n // this is the only way I found to make LESS sync\n let cmd = `node node_modules/less/bin/lessc \"${filePath}\" --less-plugin-npm-import=\"prefix=~\"`;\n if (this.styleIncludePaths.length) {\n cmd = `${cmd} --include-path=${this.styleIncludePaths.join(':')}`;\n }\n\n return execSync(cmd).toString();\n\n case '.styl':\n case '.stylus':\n return (\n stylus(content)\n // add paths for resolve\n .set('paths', [this.basePath, '.', ...this.styleIncludePaths, 'node_modules'])\n // add support for resolving plugins from node_modules\n .set('filename', filePath)\n // turn on url resolver in stylus, same as flag --resolve-url\n .set('resolve url', true)\n .define('url', stylus.resolver(undefined))\n .render()\n );\n\n case '.css':\n default:\n return content;\n }\n }\n\n private createPostCssProcessor(basePath: string, cssUrl?: CssUrl): postcss.Processor {\n log.debug(`determine browserslist for ${basePath}`);\n const browsers = browserslist(undefined, { path: basePath });\n\n const postCssPlugins = [];\n\n if (cssUrl !== CssUrl.none) {\n log.debug(`postcssUrl: ${cssUrl}`);\n postCssPlugins.push(postcssUrl({ url: cssUrl }));\n }\n\n // this is important to be executed post running `postcssUrl`\n postCssPlugins.push(\n autoprefixer({ browsers, grid: true }),\n postcssClean({\n level: {\n 2: {\n specialComments: false\n }\n }\n })\n );\n\n return postcss(postCssPlugins);\n }\n}\n"]}
|
|
@@ -8,7 +8,7 @@ const log = require("../../util/log");
|
|
|
8
8
|
const nodes_1 = require("../nodes");
|
|
9
9
|
const cache_compiler_host_1 = require("../../ts/cache-compiler-host");
|
|
10
10
|
const array_1 = require("../../util/array");
|
|
11
|
-
const
|
|
11
|
+
const path_1 = require("../../util/path");
|
|
12
12
|
exports.analyseSourcesTransform = rxjs_1.pipe(operators_1.map(graph => {
|
|
13
13
|
const entryPoints = graph.filter(x => nodes_1.isEntryPoint(x) && x.state !== 'done');
|
|
14
14
|
for (let entryPoint of entryPoints) {
|
|
@@ -24,18 +24,23 @@ exports.analyseSourcesTransform = rxjs_1.pipe(operators_1.map(graph => {
|
|
|
24
24
|
* @param entryPoints List of all entry points.
|
|
25
25
|
*/
|
|
26
26
|
function analyseEntryPoint(graph, entryPoint, entryPoints) {
|
|
27
|
-
const { analysisModuleResolutionCache } = entryPoint.cache;
|
|
27
|
+
const { analysisModuleResolutionCache, oldPrograms, analysisSourcesFileCache } = entryPoint.cache;
|
|
28
|
+
const oldProgram = oldPrograms && oldPrograms['analysis'];
|
|
28
29
|
const { moduleId } = entryPoint.data.entryPoint;
|
|
29
30
|
log.debug(`Analysing sources for ${moduleId}`);
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
31
|
+
const tsConfigOptions = Object.assign({}, entryPoint.data.tsConfig.options, { skipLibCheck: true, types: [] });
|
|
32
|
+
const compilerHost = cache_compiler_host_1.cacheCompilerHost(graph, entryPoint, tsConfigOptions, analysisModuleResolutionCache, undefined, analysisSourcesFileCache);
|
|
33
|
+
compilerHost.resolveModuleNames = (moduleNames, containingFile) => {
|
|
34
|
+
return moduleNames.map(moduleName => {
|
|
35
|
+
if (!moduleName.startsWith('.')) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
const { resolvedModule } = ts.resolveModuleName(moduleName, path_1.ensureUnixPath(containingFile), tsConfigOptions, compilerHost, analysisModuleResolutionCache);
|
|
39
|
+
return resolvedModule;
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
const program = ts.createProgram(entryPoint.data.tsConfig.rootNames, tsConfigOptions, compilerHost, oldProgram);
|
|
43
|
+
const diagnostics = program.getOptionsDiagnostics();
|
|
39
44
|
if (diagnostics.length) {
|
|
40
45
|
throw new Error(ng.formatDiagnostics(diagnostics));
|
|
41
46
|
}
|
|
@@ -43,7 +48,6 @@ function analyseEntryPoint(graph, entryPoint, entryPoints) {
|
|
|
43
48
|
// https://github.com/angular/angular/issues/24010
|
|
44
49
|
let moduleStatements = [];
|
|
45
50
|
program
|
|
46
|
-
.getTsProgram()
|
|
47
51
|
.getSourceFiles()
|
|
48
52
|
.filter(x => !/node_modules|\.ngfactory|\.ngstyle|(\.d\.ts$)/.test(x.fileName))
|
|
49
53
|
.forEach(sourceFile => {
|
|
@@ -61,6 +65,8 @@ function analyseEntryPoint(graph, entryPoint, entryPoints) {
|
|
|
61
65
|
}
|
|
62
66
|
});
|
|
63
67
|
});
|
|
68
|
+
log.debug(`tsc program structure is reused: ${oldProgram ? oldProgram.structureIsReused : 'No old program'}`);
|
|
69
|
+
entryPoint.cache.oldPrograms = Object.assign({}, entryPoint.cache.oldPrograms, { ['analysis']: program });
|
|
64
70
|
moduleStatements = array_1.unique(moduleStatements);
|
|
65
71
|
moduleStatements.forEach(moduleName => {
|
|
66
72
|
const dep = entryPoints.find(ep => ep.data.entryPoint.moduleId === moduleName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyse-sources.transform.js","sourceRoot":"","sources":["../../../../src/lib/ng-v5/init/analyse-sources.transform.ts"],"names":[],"mappings":";;AAAA,4CAA4C;AAC5C,iCAAiC;AACjC,+BAA4B;AAC5B,8CAAqC;AACrC,sCAAsC;AAEtC,oCAAwD;AACxD,sEAAiE;AACjE,4CAA0C;
|
|
1
|
+
{"version":3,"file":"analyse-sources.transform.js","sourceRoot":"","sources":["../../../../src/lib/ng-v5/init/analyse-sources.transform.ts"],"names":[],"mappings":"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","sourcesContent":["import * as ng from '@angular/compiler-cli';\nimport * as ts from 'typescript';\nimport { pipe } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport * as log from '../../util/log';\nimport { Transform } from '../../brocc/transform';\nimport { isEntryPoint, EntryPointNode } from '../nodes';\nimport { cacheCompilerHost } from '../../ts/cache-compiler-host';\nimport { unique } from '../../util/array';\nimport { BuildGraph } from '../../brocc/build-graph';\nimport { ensureUnixPath } from '../../util/path';\n\nexport const analyseSourcesTransform: Transform = pipe(\n map(graph => {\n const entryPoints = graph.filter(x => isEntryPoint(x) && x.state !== 'done') as EntryPointNode[];\n for (let entryPoint of entryPoints) {\n analyseEntryPoint(graph, entryPoint, entryPoints);\n }\n\n return graph;\n })\n);\n\n/**\n * Analyses an entrypoint, searching for TypeScript dependencies and additional resources (Templates and Stylesheets).\n *\n * @param graph Build graph\n * @param entryPoint Current entry point that should be analysed.\n * @param entryPoints List of all entry points.\n */\nfunction analyseEntryPoint(graph: BuildGraph, entryPoint: EntryPointNode, entryPoints: EntryPointNode[]) {\n const { analysisModuleResolutionCache, oldPrograms, analysisSourcesFileCache } = entryPoint.cache;\n const oldProgram = oldPrograms && (oldPrograms['analysis'] as ts.Program | undefined);\n const { moduleId } = entryPoint.data.entryPoint;\n\n log.debug(`Analysing sources for ${moduleId}`);\n\n const tsConfigOptions = {\n ...entryPoint.data.tsConfig.options,\n skipLibCheck: true,\n types: []\n };\n\n const compilerHost = cacheCompilerHost(\n graph,\n entryPoint,\n tsConfigOptions,\n analysisModuleResolutionCache,\n undefined,\n analysisSourcesFileCache\n );\n\n compilerHost.resolveModuleNames = (moduleNames: string[], containingFile: string) => {\n return moduleNames.map(moduleName => {\n if (!moduleName.startsWith('.')) {\n return undefined;\n }\n\n const { resolvedModule } = ts.resolveModuleName(\n moduleName,\n ensureUnixPath(containingFile),\n tsConfigOptions,\n compilerHost,\n analysisModuleResolutionCache\n );\n\n return resolvedModule;\n });\n };\n\n const program: ts.Program = ts.createProgram(\n entryPoint.data.tsConfig.rootNames,\n tsConfigOptions,\n compilerHost,\n oldProgram\n );\n\n const diagnostics = program.getOptionsDiagnostics();\n if (diagnostics.length) {\n throw new Error(ng.formatDiagnostics(diagnostics));\n }\n\n // this is a workaround due to the below\n // https://github.com/angular/angular/issues/24010\n let moduleStatements: string[] = [];\n program\n .getSourceFiles()\n .filter(x => !/node_modules|\\.ngfactory|\\.ngstyle|(\\.d\\.ts$)/.test(x.fileName))\n .forEach(sourceFile => {\n sourceFile.statements\n .filter(x => ts.isImportDeclaration(x) || ts.isExportDeclaration(x))\n .forEach((node: ts.ImportDeclaration | ts.ExportDeclaration) => {\n const { moduleSpecifier } = node;\n if (!moduleSpecifier) {\n return;\n }\n\n const text = moduleSpecifier.getText();\n const trimmedText = text.substring(1, text.length - 1);\n if (!trimmedText.startsWith('.')) {\n moduleStatements.push(trimmedText);\n }\n });\n });\n\n log.debug(\n `tsc program structure is reused: ${oldProgram ? (oldProgram as any).structureIsReused : 'No old program'}`\n );\n\n entryPoint.cache.oldPrograms = { ...entryPoint.cache.oldPrograms, ['analysis']: program };\n\n moduleStatements = unique(moduleStatements);\n moduleStatements.forEach(moduleName => {\n const dep = entryPoints.find(ep => ep.data.entryPoint.moduleId === moduleName);\n if (dep) {\n log.debug(`Found entry point dependency: ${moduleId} -> ${moduleName}`);\n\n if (moduleId === moduleName) {\n throw new Error(`Entry point ${moduleName} has a circular dependency on itself.`);\n }\n\n entryPoint.dependsOn(dep);\n }\n });\n}\n"]}
|
package/lib/ng-v5/nodes.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as ts from 'typescript';
|
|
2
|
-
import { ParsedConfiguration } from '@angular/compiler-cli';
|
|
2
|
+
import { ParsedConfiguration, Program } from '@angular/compiler-cli';
|
|
3
3
|
import { Node } from '../brocc/node';
|
|
4
4
|
import { NgEntryPoint } from '../ng-package-format/entry-point';
|
|
5
5
|
import { NgPackage } from '../ng-package-format/package';
|
|
@@ -26,10 +26,13 @@ export declare function ngUrl(path: string): string;
|
|
|
26
26
|
export declare class EntryPointNode extends Node {
|
|
27
27
|
readonly url: string;
|
|
28
28
|
readonly sourcesFileCache?: FileCache;
|
|
29
|
+
readonly analysisSourcesFileCache?: FileCache;
|
|
29
30
|
readonly type = "application/ng-entry-point";
|
|
30
|
-
constructor(url: string, sourcesFileCache?: FileCache);
|
|
31
|
+
constructor(url: string, sourcesFileCache?: FileCache, analysisSourcesFileCache?: FileCache);
|
|
31
32
|
cache: {
|
|
33
|
+
oldPrograms?: Record<ts.ScriptTarget | 'analysis', Program | ts.Program>;
|
|
32
34
|
sourcesFileCache: FileCache;
|
|
35
|
+
analysisSourcesFileCache: FileCache;
|
|
33
36
|
moduleResolutionCache: ts.ModuleResolutionCache;
|
|
34
37
|
analysisModuleResolutionCache: ts.ModuleResolutionCache;
|
|
35
38
|
};
|
|
@@ -44,5 +47,6 @@ export declare class PackageNode extends Node {
|
|
|
44
47
|
data: NgPackage;
|
|
45
48
|
cache: {
|
|
46
49
|
sourcesFileCache: FileCache;
|
|
50
|
+
analysisSourcesFileCache: FileCache;
|
|
47
51
|
};
|
|
48
52
|
}
|
package/lib/ng-v5/nodes.js
CHANGED
|
@@ -49,19 +49,24 @@ function ngUrl(path) {
|
|
|
49
49
|
}
|
|
50
50
|
exports.ngUrl = ngUrl;
|
|
51
51
|
class EntryPointNode extends node_1.Node {
|
|
52
|
-
constructor(url, sourcesFileCache) {
|
|
52
|
+
constructor(url, sourcesFileCache, analysisSourcesFileCache) {
|
|
53
53
|
super(url);
|
|
54
54
|
this.url = url;
|
|
55
55
|
this.sourcesFileCache = sourcesFileCache;
|
|
56
|
+
this.analysisSourcesFileCache = analysisSourcesFileCache;
|
|
56
57
|
this.type = exports.TYPE_NG_ENTRY_POINT;
|
|
57
58
|
this.cache = {
|
|
58
59
|
sourcesFileCache: new file_cache_1.FileCache(),
|
|
60
|
+
analysisSourcesFileCache: new file_cache_1.FileCache(),
|
|
59
61
|
moduleResolutionCache: ts.createModuleResolutionCache(process.cwd(), s => s),
|
|
60
62
|
analysisModuleResolutionCache: ts.createModuleResolutionCache(process.cwd(), s => s)
|
|
61
63
|
};
|
|
62
64
|
if (sourcesFileCache) {
|
|
63
65
|
this.cache.sourcesFileCache = sourcesFileCache;
|
|
64
66
|
}
|
|
67
|
+
if (analysisSourcesFileCache) {
|
|
68
|
+
this.cache.analysisSourcesFileCache = analysisSourcesFileCache;
|
|
69
|
+
}
|
|
65
70
|
}
|
|
66
71
|
}
|
|
67
72
|
exports.EntryPointNode = EntryPointNode;
|
|
@@ -70,7 +75,8 @@ class PackageNode extends node_1.Node {
|
|
|
70
75
|
super(...arguments);
|
|
71
76
|
this.type = exports.TYPE_NG_PACKAGE;
|
|
72
77
|
this.cache = {
|
|
73
|
-
sourcesFileCache: new file_cache_1.FileCache()
|
|
78
|
+
sourcesFileCache: new file_cache_1.FileCache(),
|
|
79
|
+
analysisSourcesFileCache: new file_cache_1.FileCache()
|
|
74
80
|
};
|
|
75
81
|
}
|
|
76
82
|
}
|
package/lib/ng-v5/nodes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../src/lib/ng-v5/nodes.ts"],"names":[],"mappings":";;AAAA,iCAAiC;AAEjC,wCAAqC;AACrC,4CAA4D;AAI5D,mDAA+C;AAElC,QAAA,eAAe,GAAG,wBAAwB,CAAC;AAC3C,QAAA,mBAAmB,GAAG,4BAA4B,CAAC;AAEhE,oDAAoD;AACvC,QAAA,iBAAiB,GAAG,SAAS,CAAC;AAE3C,kCAAkC;AACrB,QAAA,eAAe,GAAG,OAAO,CAAC;AAEvC,SAAgB,YAAY,CAAC,IAAU;IACrC,OAAO,IAAI,CAAC,IAAI,KAAK,2BAAmB,CAAC;AAC3C,CAAC;AAFD,oCAEC;AAED,SAAgB,SAAS,CAAC,IAAU;IAClC,OAAO,IAAI,CAAC,IAAI,KAAK,uBAAe,CAAC;AACvC,CAAC;AAFD,8BAEC;AAED,SAAgB,YAAY;IAC1B,OAAO,WAAE,CAAC,YAAY,CAAC,CAAC;AAC1B,CAAC;AAFD,oCAEC;AAED,SAAgB,sBAAsB;IACpC,OAAO,WAAE,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,qBAAY,CAAC,CAAC;AAC5C,CAAC;AAFD,wDAEC;AAED,SAAgB,iBAAiB;IAC/B,OAAO,WAAE,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,gBAAO,CAAC,CAAC;AACvC,CAAC;AAFD,8CAEC;AAED,SAAgB,SAAS,CAAC,KAAa;IACrC,OAAO,KAAK,CAAC,UAAU,CAAC,yBAAiB,CAAC,CAAC;AAC7C,CAAC;AAFD,8BAEC;AAED,SAAgB,OAAO,CAAC,IAAY;IAClC,OAAO,GAAG,yBAAiB,GAAG,IAAI,EAAE,CAAC;AACvC,CAAC;AAFD,0BAEC;AAED,SAAgB,WAAW,CAAC,GAAW;IACrC,IAAI,GAAG,CAAC,UAAU,CAAC,yBAAiB,CAAC,EAAE;QACrC,OAAO,GAAG,CAAC,SAAS,CAAC,yBAAiB,CAAC,MAAM,CAAC,CAAC;KAChD;AACH,CAAC;AAJD,kCAIC;AAED,SAAgB,KAAK,CAAC,IAAY;IAChC,OAAO,GAAG,uBAAe,GAAG,IAAI,EAAE,CAAC;AACrC,CAAC;AAFD,sBAEC;AAED,MAAa,cAAe,SAAQ,WAAI;IAGtC,
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../src/lib/ng-v5/nodes.ts"],"names":[],"mappings":";;AAAA,iCAAiC;AAEjC,wCAAqC;AACrC,4CAA4D;AAI5D,mDAA+C;AAElC,QAAA,eAAe,GAAG,wBAAwB,CAAC;AAC3C,QAAA,mBAAmB,GAAG,4BAA4B,CAAC;AAEhE,oDAAoD;AACvC,QAAA,iBAAiB,GAAG,SAAS,CAAC;AAE3C,kCAAkC;AACrB,QAAA,eAAe,GAAG,OAAO,CAAC;AAEvC,SAAgB,YAAY,CAAC,IAAU;IACrC,OAAO,IAAI,CAAC,IAAI,KAAK,2BAAmB,CAAC;AAC3C,CAAC;AAFD,oCAEC;AAED,SAAgB,SAAS,CAAC,IAAU;IAClC,OAAO,IAAI,CAAC,IAAI,KAAK,uBAAe,CAAC;AACvC,CAAC;AAFD,8BAEC;AAED,SAAgB,YAAY;IAC1B,OAAO,WAAE,CAAC,YAAY,CAAC,CAAC;AAC1B,CAAC;AAFD,oCAEC;AAED,SAAgB,sBAAsB;IACpC,OAAO,WAAE,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,qBAAY,CAAC,CAAC;AAC5C,CAAC;AAFD,wDAEC;AAED,SAAgB,iBAAiB;IAC/B,OAAO,WAAE,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,gBAAO,CAAC,CAAC;AACvC,CAAC;AAFD,8CAEC;AAED,SAAgB,SAAS,CAAC,KAAa;IACrC,OAAO,KAAK,CAAC,UAAU,CAAC,yBAAiB,CAAC,CAAC;AAC7C,CAAC;AAFD,8BAEC;AAED,SAAgB,OAAO,CAAC,IAAY;IAClC,OAAO,GAAG,yBAAiB,GAAG,IAAI,EAAE,CAAC;AACvC,CAAC;AAFD,0BAEC;AAED,SAAgB,WAAW,CAAC,GAAW;IACrC,IAAI,GAAG,CAAC,UAAU,CAAC,yBAAiB,CAAC,EAAE;QACrC,OAAO,GAAG,CAAC,SAAS,CAAC,yBAAiB,CAAC,MAAM,CAAC,CAAC;KAChD;AACH,CAAC;AAJD,kCAIC;AAED,SAAgB,KAAK,CAAC,IAAY;IAChC,OAAO,GAAG,uBAAe,GAAG,IAAI,EAAE,CAAC;AACrC,CAAC;AAFD,sBAEC;AAED,MAAa,cAAe,SAAQ,WAAI;IAGtC,YACkB,GAAW,EAClB,gBAA4B,EAC5B,wBAAoC;QAE7C,KAAK,CAAC,GAAG,CAAC,CAAC;QAJK,QAAG,GAAH,GAAG,CAAQ;QAClB,qBAAgB,GAAhB,gBAAgB,CAAY;QAC5B,6BAAwB,GAAxB,wBAAwB,CAAY;QALtC,SAAI,GAAG,2BAAmB,CAAC;QAkBpC,UAAK,GAMD;YACF,gBAAgB,EAAE,IAAI,sBAAS,EAAE;YACjC,wBAAwB,EAAE,IAAI,sBAAS,EAAE;YACzC,qBAAqB,EAAE,EAAE,CAAC,2BAA2B,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5E,6BAA6B,EAAE,EAAE,CAAC,2BAA2B,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACrF,CAAC;QApBA,IAAI,gBAAgB,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;SAChD;QAED,IAAI,wBAAwB,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;SAChE;IACH,CAAC;CAoBF;AArCD,wCAqCC;AAED,MAAa,WAAY,SAAQ,WAAI;IAArC;;QACW,SAAI,GAAG,uBAAe,CAAC;QAGhC,UAAK,GAAG;YACN,gBAAgB,EAAE,IAAI,sBAAS,EAAE;YACjC,wBAAwB,EAAE,IAAI,sBAAS,EAAE;SAC1C,CAAC;IACJ,CAAC;CAAA;AARD,kCAQC","sourcesContent":["import * as ts from 'typescript';\nimport { ParsedConfiguration, Program } from '@angular/compiler-cli';\nimport { Node } from '../brocc/node';\nimport { by, isInProgress, isDirty } from '../brocc/select';\nimport { NgEntryPoint } from '../ng-package-format/entry-point';\nimport { NgPackage } from '../ng-package-format/package';\nimport { DestinationFiles } from '../ng-package-format/shared';\nimport { FileCache } from '../file/file-cache';\n\nexport const TYPE_NG_PACKAGE = 'application/ng-package';\nexport const TYPE_NG_ENTRY_POINT = 'application/ng-entry-point';\n\n/** A node that can be read through the `fs` api. */\nexport const URL_PROTOCOL_FILE = 'file://';\n\n/** A node specific to angular. */\nexport const 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() {\n return by(isEntryPoint);\n}\n\nexport function isEntryPointInProgress() {\n return by(isEntryPoint).and(isInProgress);\n}\n\nexport function isEntryPointDirty() {\n return by(isEntryPoint).and(isDirty);\n}\n\nexport function isFileUrl(value: string): boolean {\n return value.startsWith(URL_PROTOCOL_FILE);\n}\n\nexport function fileUrl(path: string): string {\n return `${URL_PROTOCOL_FILE}${path}`;\n}\n\nexport function fileUrlPath(url: string): string {\n if (url.startsWith(URL_PROTOCOL_FILE)) {\n return url.substring(URL_PROTOCOL_FILE.length);\n }\n}\n\nexport function ngUrl(path: string): string {\n return `${URL_PROTOCOL_NG}${path}`;\n}\n\nexport class EntryPointNode extends Node {\n readonly type = TYPE_NG_ENTRY_POINT;\n\n constructor(\n public readonly url: string,\n readonly sourcesFileCache?: FileCache,\n readonly analysisSourcesFileCache?: FileCache\n ) {\n super(url);\n\n if (sourcesFileCache) {\n this.cache.sourcesFileCache = sourcesFileCache;\n }\n\n if (analysisSourcesFileCache) {\n this.cache.analysisSourcesFileCache = analysisSourcesFileCache;\n }\n }\n\n cache: {\n oldPrograms?: Record<ts.ScriptTarget | 'analysis', Program | ts.Program>;\n sourcesFileCache: FileCache;\n analysisSourcesFileCache: FileCache;\n moduleResolutionCache: ts.ModuleResolutionCache;\n analysisModuleResolutionCache: ts.ModuleResolutionCache;\n } = {\n sourcesFileCache: new FileCache(),\n analysisSourcesFileCache: new FileCache(),\n moduleResolutionCache: ts.createModuleResolutionCache(process.cwd(), s => s),\n analysisModuleResolutionCache: ts.createModuleResolutionCache(process.cwd(), s => s)\n };\n\n data: {\n destinationFiles: DestinationFiles;\n entryPoint: NgEntryPoint;\n tsConfig?: ParsedConfiguration;\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 analysisSourcesFileCache: new FileCache()\n };\n}\n"]}
|
|
@@ -55,7 +55,7 @@ exports.packageTransformFactory = (project, options, initTsConfigTransform, anal
|
|
|
55
55
|
const ngPkg = graph.get(pkgUri);
|
|
56
56
|
const entryPoints = [ngPkg.data.primary, ...ngPkg.data.secondaries].map(entryPoint => {
|
|
57
57
|
const { destinationFiles, moduleId } = entryPoint;
|
|
58
|
-
const node = new nodes_1.EntryPointNode(nodes_1.ngUrl(moduleId), ngPkg.cache.sourcesFileCache);
|
|
58
|
+
const node = new nodes_1.EntryPointNode(nodes_1.ngUrl(moduleId), ngPkg.cache.sourcesFileCache, ngPkg.cache.analysisSourcesFileCache);
|
|
59
59
|
node.data = { entryPoint, destinationFiles };
|
|
60
60
|
node.state = 'dirty';
|
|
61
61
|
ngPkg.dependsOn(node);
|
|
@@ -76,16 +76,20 @@ const watchTransformFactory = (project, _options, analyseSourcesTransform, entry
|
|
|
76
76
|
const { data, cache } = graph.find(nodes_1.isPackage);
|
|
77
77
|
return file_watcher_1.createFileWatch(data.src, [data.dest]).pipe(operators_1.tap(fileChange => {
|
|
78
78
|
const { filePath } = fileChange;
|
|
79
|
-
const { sourcesFileCache } = cache;
|
|
79
|
+
const { sourcesFileCache, analysisSourcesFileCache } = cache;
|
|
80
80
|
const cachedSourceFile = sourcesFileCache.get(filePath);
|
|
81
81
|
if (!cachedSourceFile) {
|
|
82
82
|
return;
|
|
83
83
|
}
|
|
84
84
|
const { declarationFileName } = cachedSourceFile;
|
|
85
|
-
sourcesFileCache.delete(filePath);
|
|
86
|
-
sourcesFileCache.delete(declarationFileName);
|
|
87
85
|
const uriToClean = [filePath, declarationFileName].map(x => nodes_1.fileUrl(path_1.ensureUnixPath(x)));
|
|
88
|
-
|
|
86
|
+
let nodesToClean = graph.filter(node => uriToClean.some(uri => uri === node.url));
|
|
87
|
+
nodesToClean = array_1.flatten([...nodesToClean, ...nodesToClean.map(x => x.dependees)]);
|
|
88
|
+
// delete node that changes
|
|
89
|
+
nodesToClean.forEach(node => {
|
|
90
|
+
analysisSourcesFileCache.delete(nodes_1.fileUrlPath(node.url));
|
|
91
|
+
sourcesFileCache.delete(nodes_1.fileUrlPath(node.url));
|
|
92
|
+
});
|
|
89
93
|
const entryPoints = graph.filter(nodes_1.isEntryPoint);
|
|
90
94
|
entryPoints.forEach(entryPoint => {
|
|
91
95
|
const isDirty = entryPoint.dependents.some(x => nodesToClean.some(node => node.url === x.url));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.transform.js","sourceRoot":"","sources":["../../../src/lib/ng-v5/package.transform.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from 'path';\nimport { Observable, of as observableOf, pipe, NEVER, from } from 'rxjs';\nimport {\n concatMap,\n map,\n switchMap,\n tap,\n mapTo,\n catchError,\n startWith,\n debounceTime,\n filter,\n takeLast,\n defaultIfEmpty\n} from 'rxjs/operators';\nimport { BuildGraph } from '../brocc/build-graph';\nimport { DepthBuilder } from '../brocc/depth';\nimport { STATE_IN_PROGESS } from '../brocc/node';\nimport { Transform } from '../brocc/transform';\nimport * as log from '../util/log';\nimport { rimraf } from '../util/rimraf';\nimport { PackageNode, EntryPointNode, ngUrl, isEntryPoint, byEntryPoint, isPackage, fileUrl } from './nodes';\nimport { discoverPackages } from './discover-packages';\nimport { createFileWatch } from '../file/file-watcher';\nimport { NgPackagrOptions } from './options.di';\nimport { flatten } from '../util/array';\nimport { copyFile } from '../util/copy';\nimport { ensureUnixPath } from '../util/path';\n\n/**\n * A transformation for building an npm package:\n *\n * - discoverPackages\n * - options\n * - initTsConfig\n * - analyzeTsSources (thereby extracting template and stylesheet files)\n * - for each entry point\n * - run the entryPontTransform\n * - writeNpmPackage\n *\n * @param project Project token, reference to `ng-package.json`\n * @param options ng-packagr options\n * @param initTsConfigTransform Transformation initializing the tsconfig of each entry point.\n * @param analyseSourcesTransform Transformation analyzing the typescript source files of each entry point.\n * @param entryPointTransform Transformation for asset rendering and compilation of a single entry point.\n */\nexport const packageTransformFactory = (\n project: string,\n options: NgPackagrOptions,\n initTsConfigTransform: Transform,\n analyseSourcesTransform: Transform,\n entryPointTransform: Transform\n) => (source$: Observable<BuildGraph>): Observable<BuildGraph> => {\n const pkgUri = ngUrl(project);\n\n const buildTransform = options.watch\n ? watchTransformFactory(project, options, analyseSourcesTransform, entryPointTransform)\n : buildTransformFactory(project, analyseSourcesTransform, entryPointTransform);\n\n return source$.pipe(\n tap(() => log.info(`Building Angular Package`)),\n // Discover packages and entry points\n switchMap(graph => {\n const pkg = discoverPackages({ project });\n\n return from(pkg).pipe(\n map(value => {\n const ngPkg = new PackageNode(pkgUri);\n ngPkg.data = value;\n\n return graph.put(ngPkg);\n })\n );\n }),\n // Clean the primary dest folder (should clean all secondary sub-directory, as well)\n switchMap(graph => {\n const { dest, deleteDestPath } = graph.get(pkgUri).data;\n return from(deleteDestPath ? rimraf(dest) : Promise.resolve());\n }, (graph, _) => graph),\n // Add entry points to graph\n map(graph => {\n const ngPkg = graph.get(pkgUri) as PackageNode;\n const entryPoints = [ngPkg.data.primary, ...ngPkg.data.secondaries].map(entryPoint => {\n const { destinationFiles, moduleId } = entryPoint;\n const node = new EntryPointNode(ngUrl(moduleId), ngPkg.cache.sourcesFileCache);\n node.data = { entryPoint, destinationFiles };\n node.state = 'dirty';\n ngPkg.dependsOn(node);\n\n return node;\n });\n\n return graph.put(entryPoints);\n }),\n // Initialize the tsconfig for each entry point\n initTsConfigTransform,\n // perform build\n buildTransform\n );\n};\n\nconst watchTransformFactory = (\n project: string,\n _options: NgPackagrOptions,\n analyseSourcesTransform: Transform,\n entryPointTransform: Transform\n) => (source$: Observable<BuildGraph>): Observable<BuildGraph> => {\n const CompleteWaitingForFileChange = '\\nCompilation complete. Watching for file changes...';\n const FileChangeDetected = '\\nFile change detected. Starting incremental compilation...';\n const FailedWaitingForFileChange = '\\nCompilation failed. Watching for file changes...';\n\n return source$.pipe(\n switchMap(graph => {\n const { data, cache } = graph.find(isPackage) as PackageNode;\n return createFileWatch(data.src, [data.dest]).pipe(\n tap(fileChange => {\n const { filePath } = fileChange;\n const { sourcesFileCache } = cache;\n const cachedSourceFile = sourcesFileCache.get(filePath);\n\n if (!cachedSourceFile) {\n return;\n }\n\n const { declarationFileName } = cachedSourceFile;\n\n sourcesFileCache.delete(filePath);\n sourcesFileCache.delete(declarationFileName);\n\n const uriToClean = [filePath, declarationFileName].map(x => fileUrl(ensureUnixPath(x)));\n const nodesToClean = graph.filter(node => uriToClean.some(uri => uri === node.url));\n\n const entryPoints = graph.filter(isEntryPoint) as EntryPointNode[];\n entryPoints.forEach(entryPoint => {\n const isDirty = entryPoint.dependents.some(x => nodesToClean.some(node => node.url === x.url));\n if (isDirty) {\n entryPoint.state = 'dirty';\n const { metadata } = entryPoint.data.destinationFiles;\n sourcesFileCache.delete(metadata);\n }\n });\n }),\n debounceTime(200),\n tap(() => log.msg(FileChangeDetected)),\n startWith(undefined),\n mapTo(graph)\n );\n }),\n switchMap(graph => {\n return observableOf(graph).pipe(\n buildTransformFactory(project, analyseSourcesTransform, entryPointTransform),\n tap(() => log.msg(CompleteWaitingForFileChange)),\n catchError(error => {\n log.error(error);\n log.msg(FailedWaitingForFileChange);\n return NEVER;\n })\n );\n })\n );\n};\n\nconst buildTransformFactory = (project: string, analyseSourcesTransform: Transform, entryPointTransform: Transform) => (\n source$: Observable<BuildGraph>\n): Observable<BuildGraph> => {\n const pkgUri = ngUrl(project);\n return source$.pipe(\n // Analyse dependencies and external resources for each entry point\n analyseSourcesTransform,\n // Next, run through the entry point transformation (assets rendering, code compilation)\n scheduleEntryPoints(entryPointTransform),\n // Write npm package to dest folder\n writeNpmPackage(pkgUri),\n tap(graph => {\n const ngPkg = graph.get(pkgUri);\n log.success(`Built Angular Package!\n - from: ${ngPkg.data.src}\n - to: ${ngPkg.data.dest}`);\n })\n );\n};\n\nconst writeNpmPackage = (pkgUri: string): Transform =>\n pipe(\n switchMap(graph => {\n const { data } = graph.get(pkgUri);\n const filesToCopy = Promise.all(\n [`${data.src}/LICENSE`, `${data.src}/README.md`].map(src =>\n copyFile(src, path.join(data.dest, path.basename(src)))\n )\n );\n\n return from(filesToCopy).pipe(map(() => graph));\n })\n );\n\nconst scheduleEntryPoints = (epTransform: Transform): Transform =>\n pipe(\n concatMap(graph => {\n // Calculate node/dependency depth and determine build order\n const depthBuilder = new DepthBuilder();\n const entryPoints = graph.filter(isEntryPoint);\n entryPoints.forEach(entryPoint => {\n const deps = entryPoint.filter(isEntryPoint).map(ep => ep.url);\n depthBuilder.add(entryPoint.url, deps);\n });\n\n // The array index is the depth.\n const groups = depthBuilder.build();\n\n // Build entry points with lower depth values first.\n return from(flatten(groups)).pipe(\n map(epUrl => graph.find(byEntryPoint().and(ep => ep.url === epUrl)) as EntryPointNode),\n filter(entryPoint => entryPoint.state !== 'done'),\n concatMap(ep =>\n observableOf(ep).pipe(\n // Mark the entry point as 'in-progress'\n tap(entryPoint => (entryPoint.state = STATE_IN_PROGESS)),\n mapTo(graph),\n epTransform\n )\n ),\n takeLast(1), // don't use last as sometimes it this will cause 'no elements in sequence',\n defaultIfEmpty(graph)\n );\n })\n );\n"]}
|
|
1
|
+
{"version":3,"file":"package.transform.js","sourceRoot":"","sources":["../../../src/lib/ng-v5/package.transform.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from 'path';\nimport { Observable, of as observableOf, pipe, NEVER, from } from 'rxjs';\nimport {\n concatMap,\n map,\n switchMap,\n tap,\n mapTo,\n catchError,\n startWith,\n debounceTime,\n filter,\n takeLast,\n defaultIfEmpty\n} from 'rxjs/operators';\nimport { BuildGraph } from '../brocc/build-graph';\nimport { DepthBuilder } from '../brocc/depth';\nimport { STATE_IN_PROGESS } from '../brocc/node';\nimport { Transform } from '../brocc/transform';\nimport * as log from '../util/log';\nimport { rimraf } from '../util/rimraf';\nimport {\n PackageNode,\n EntryPointNode,\n ngUrl,\n isEntryPoint,\n byEntryPoint,\n isPackage,\n fileUrl,\n fileUrlPath\n} from './nodes';\nimport { discoverPackages } from './discover-packages';\nimport { createFileWatch } from '../file/file-watcher';\nimport { NgPackagrOptions } from './options.di';\nimport { flatten } from '../util/array';\nimport { copyFile } from '../util/copy';\nimport { ensureUnixPath } from '../util/path';\n\n/**\n * A transformation for building an npm package:\n *\n * - discoverPackages\n * - options\n * - initTsConfig\n * - analyzeTsSources (thereby extracting template and stylesheet files)\n * - for each entry point\n * - run the entryPontTransform\n * - writeNpmPackage\n *\n * @param project Project token, reference to `ng-package.json`\n * @param options ng-packagr options\n * @param initTsConfigTransform Transformation initializing the tsconfig of each entry point.\n * @param analyseSourcesTransform Transformation analyzing the typescript source files of each entry point.\n * @param entryPointTransform Transformation for asset rendering and compilation of a single entry point.\n */\nexport const packageTransformFactory = (\n project: string,\n options: NgPackagrOptions,\n initTsConfigTransform: Transform,\n analyseSourcesTransform: Transform,\n entryPointTransform: Transform\n) => (source$: Observable<BuildGraph>): Observable<BuildGraph> => {\n const pkgUri = ngUrl(project);\n\n const buildTransform = options.watch\n ? watchTransformFactory(project, options, analyseSourcesTransform, entryPointTransform)\n : buildTransformFactory(project, analyseSourcesTransform, entryPointTransform);\n\n return source$.pipe(\n tap(() => log.info(`Building Angular Package`)),\n // Discover packages and entry points\n switchMap(graph => {\n const pkg = discoverPackages({ project });\n\n return from(pkg).pipe(\n map(value => {\n const ngPkg = new PackageNode(pkgUri);\n ngPkg.data = value;\n\n return graph.put(ngPkg);\n })\n );\n }),\n // Clean the primary dest folder (should clean all secondary sub-directory, as well)\n switchMap(\n graph => {\n const { dest, deleteDestPath } = graph.get(pkgUri).data;\n return from(deleteDestPath ? rimraf(dest) : Promise.resolve());\n },\n (graph, _) => graph\n ),\n // Add entry points to graph\n map(graph => {\n const ngPkg = graph.get(pkgUri) as PackageNode;\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.analysisSourcesFileCache\n );\n node.data = { entryPoint, destinationFiles };\n node.state = 'dirty';\n ngPkg.dependsOn(node);\n\n return node;\n });\n\n return graph.put(entryPoints);\n }),\n // Initialize the tsconfig for each entry point\n initTsConfigTransform,\n // perform build\n buildTransform\n );\n};\n\nconst watchTransformFactory = (\n project: string,\n _options: NgPackagrOptions,\n analyseSourcesTransform: Transform,\n entryPointTransform: Transform\n) => (source$: Observable<BuildGraph>): Observable<BuildGraph> => {\n const CompleteWaitingForFileChange = '\\nCompilation complete. Watching for file changes...';\n const FileChangeDetected = '\\nFile change detected. Starting incremental compilation...';\n const FailedWaitingForFileChange = '\\nCompilation failed. Watching for file changes...';\n\n return source$.pipe(\n switchMap(graph => {\n const { data, cache } = graph.find(isPackage) as PackageNode;\n return createFileWatch(data.src, [data.dest]).pipe(\n tap(fileChange => {\n const { filePath } = fileChange;\n const { sourcesFileCache, analysisSourcesFileCache } = cache;\n const cachedSourceFile = sourcesFileCache.get(filePath);\n\n if (!cachedSourceFile) {\n return;\n }\n\n const { declarationFileName } = cachedSourceFile;\n\n const uriToClean = [filePath, declarationFileName].map(x => fileUrl(ensureUnixPath(x)));\n let nodesToClean = graph.filter(node => uriToClean.some(uri => uri === node.url));\n\n nodesToClean = flatten([...nodesToClean, ...nodesToClean.map(x => x.dependees)]);\n\n // delete node that changes\n nodesToClean.forEach(node => {\n analysisSourcesFileCache.delete(fileUrlPath(node.url));\n sourcesFileCache.delete(fileUrlPath(node.url));\n });\n\n const entryPoints = graph.filter(isEntryPoint) as EntryPointNode[];\n entryPoints.forEach(entryPoint => {\n const isDirty = entryPoint.dependents.some(x => nodesToClean.some(node => node.url === x.url));\n if (isDirty) {\n entryPoint.state = 'dirty';\n const { metadata } = entryPoint.data.destinationFiles;\n sourcesFileCache.delete(metadata);\n }\n });\n }),\n debounceTime(200),\n tap(() => log.msg(FileChangeDetected)),\n startWith(undefined),\n mapTo(graph)\n );\n }),\n switchMap(graph => {\n return observableOf(graph).pipe(\n buildTransformFactory(project, analyseSourcesTransform, entryPointTransform),\n tap(() => log.msg(CompleteWaitingForFileChange)),\n catchError(error => {\n log.error(error);\n log.msg(FailedWaitingForFileChange);\n return NEVER;\n })\n );\n })\n );\n};\n\nconst buildTransformFactory = (project: string, analyseSourcesTransform: Transform, entryPointTransform: Transform) => (\n source$: Observable<BuildGraph>\n): Observable<BuildGraph> => {\n const pkgUri = ngUrl(project);\n return source$.pipe(\n // Analyse dependencies and external resources for each entry point\n analyseSourcesTransform,\n // Next, run through the entry point transformation (assets rendering, code compilation)\n scheduleEntryPoints(entryPointTransform),\n // Write npm package to dest folder\n writeNpmPackage(pkgUri),\n tap(graph => {\n const ngPkg = graph.get(pkgUri);\n log.success(`Built Angular Package!\n - from: ${ngPkg.data.src}\n - to: ${ngPkg.data.dest}`);\n })\n );\n};\n\nconst writeNpmPackage = (pkgUri: string): Transform =>\n pipe(\n switchMap(graph => {\n const { data } = graph.get(pkgUri);\n const filesToCopy = Promise.all(\n [`${data.src}/LICENSE`, `${data.src}/README.md`].map(src =>\n copyFile(src, path.join(data.dest, path.basename(src)))\n )\n );\n\n return from(filesToCopy).pipe(map(() => graph));\n })\n );\n\nconst scheduleEntryPoints = (epTransform: Transform): Transform =>\n pipe(\n concatMap(graph => {\n // Calculate node/dependency depth and determine build order\n const depthBuilder = new DepthBuilder();\n const entryPoints = graph.filter(isEntryPoint);\n entryPoints.forEach(entryPoint => {\n const deps = entryPoint.filter(isEntryPoint).map(ep => ep.url);\n depthBuilder.add(entryPoint.url, deps);\n });\n\n // The array index is the depth.\n const groups = depthBuilder.build();\n\n // Build entry points with lower depth values first.\n return from(flatten(groups)).pipe(\n map(epUrl => graph.find(byEntryPoint().and(ep => ep.url === epUrl)) as EntryPointNode),\n filter(entryPoint => entryPoint.state !== 'done'),\n concatMap(ep =>\n observableOf(ep).pipe(\n // Mark the entry point as 'in-progress'\n tap(entryPoint => (entryPoint.state = STATE_IN_PROGESS)),\n mapTo(graph),\n epTransform\n )\n ),\n takeLast(1), // don't use last as sometimes it this will cause 'no elements in sequence',\n defaultIfEmpty(graph)\n );\n })\n );\n"]}
|
|
@@ -26,18 +26,47 @@ function compileSourceFiles(graph, entryPoint, tsConfig, moduleResolutionCache,
|
|
|
26
26
|
options: tsConfigOptions,
|
|
27
27
|
tsHost: tsCompilerHost
|
|
28
28
|
});
|
|
29
|
-
// Don't use `ng.emit` as it doesn't output all errors.
|
|
30
|
-
// https://github.com/angular/angular/issues/24024
|
|
31
29
|
const emitFlags = tsConfigOptions.declaration ? tsConfig.emitFlags : ng.EmitFlags.JS;
|
|
32
|
-
const
|
|
30
|
+
const scriptTarget = tsConfigOptions.target;
|
|
31
|
+
const cache = entryPoint.cache;
|
|
32
|
+
const oldProgram = cache.oldPrograms && cache.oldPrograms[scriptTarget];
|
|
33
|
+
const ngProgram = ng.createProgram({
|
|
33
34
|
rootNames: tsConfig.rootNames,
|
|
34
35
|
options: tsConfigOptions,
|
|
35
36
|
host: ngCompilerHost,
|
|
36
|
-
|
|
37
|
-
emitFlags
|
|
37
|
+
oldProgram
|
|
38
38
|
});
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
yield ngProgram.loadNgStructureAsync();
|
|
40
|
+
log.debug(`ngc program structure is reused: ${oldProgram ? oldProgram.getTsProgram().structureIsReused : 'No old program'}`);
|
|
41
|
+
cache.oldPrograms = Object.assign({}, cache.oldPrograms, { [scriptTarget]: ngProgram });
|
|
42
|
+
const allDiagnostics = [
|
|
43
|
+
...ngProgram.getNgOptionDiagnostics(),
|
|
44
|
+
...ngProgram.getTsSyntacticDiagnostics(),
|
|
45
|
+
...ngProgram.getTsSemanticDiagnostics(),
|
|
46
|
+
...ngProgram.getNgSemanticDiagnostics(),
|
|
47
|
+
...ngProgram.getNgStructuralDiagnostics()
|
|
48
|
+
];
|
|
49
|
+
// if we have an error we don't want to transpile.
|
|
50
|
+
const hasError = ng.exitCodeFromResult(allDiagnostics) > 0;
|
|
51
|
+
if (!hasError) {
|
|
52
|
+
// certain errors are only emitted by a compilation hence append to previous diagnostics
|
|
53
|
+
const { diagnostics } = ngProgram.emit({
|
|
54
|
+
emitCallback: create_emit_callback_1.createEmitCallback(tsConfigOptions),
|
|
55
|
+
emitFlags
|
|
56
|
+
});
|
|
57
|
+
allDiagnostics.push(...diagnostics);
|
|
58
|
+
}
|
|
59
|
+
if (allDiagnostics.length === 0) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const exitCode = ng.exitCodeFromResult(allDiagnostics);
|
|
63
|
+
const formattedDiagnostics = ng.formatDiagnostics(allDiagnostics);
|
|
64
|
+
if (exitCode !== 0) {
|
|
65
|
+
throw new Error(formattedDiagnostics);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
log.msg(formattedDiagnostics);
|
|
69
|
+
}
|
|
41
70
|
});
|
|
42
71
|
}
|
|
43
72
|
exports.compileSourceFiles = compileSourceFiles;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile-source-files.js","sourceRoot":"","sources":["../../../src/lib/ngc/compile-source-files.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,4CAA4C;AAE5C,mCAAmC;AACnC,iEAA4D;AAC5D,+FAAwF;AACxF,mEAA8D;AAK9D,SAAsB,kBAAkB,CACtC,KAAiB,EACjB,UAA0B,EAC1B,QAAgC,EAChC,qBAA+C,EAC/C,mBAAwC,EACxC,YAA0C,EAC1C,cAAuB;;QAEvB,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;QAEvC,MAAM,eAAe,qBAA4B,QAAQ,CAAC,OAAO,EAAK,YAAY,CAAE,CAAC;QAErF,IAAI,cAAc,GAAG,uCAAiB,CACpC,KAAK,EACL,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,mBAAmB,CACpB,CAAC;QACF,IAAI,cAAc,EAAE;YAClB,cAAc,GAAG,iEAA6B,CAAC,cAAc,EAAE,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;SAC1G;QAED,kBAAkB;QAClB,MAAM,cAAc,GAAG,EAAE,CAAC,kBAAkB,CAAC;YAC3C,OAAO,EAAE,eAAe;YACxB,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;QAEH,
|
|
1
|
+
{"version":3,"file":"compile-source-files.js","sourceRoot":"","sources":["../../../src/lib/ngc/compile-source-files.ts"],"names":[],"mappings":"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","sourcesContent":["import * as ng from '@angular/compiler-cli';\nimport * as ts from 'typescript';\nimport * as log from '../util/log';\nimport { createEmitCallback } from './create-emit-callback';\nimport { redirectWriteFileCompilerHost } from '../ts/redirect-write-file-compiler-host';\nimport { cacheCompilerHost } from '../ts/cache-compiler-host';\nimport { StylesheetProcessor } from '../ng-v5/entry-point/resources/stylesheet-processor';\nimport { BuildGraph } from '../brocc/build-graph';\nimport { EntryPointNode } from '../ng-v5/nodes';\n\nexport async function compileSourceFiles(\n graph: BuildGraph,\n entryPoint: EntryPointNode,\n tsConfig: ng.ParsedConfiguration,\n moduleResolutionCache: ts.ModuleResolutionCache,\n stylesheetProcessor: StylesheetProcessor,\n extraOptions?: Partial<ng.CompilerOptions>,\n declarationDir?: string\n) {\n log.debug(`ngc (v${ng.VERSION.full})`);\n\n const tsConfigOptions: ng.CompilerOptions = { ...tsConfig.options, ...extraOptions };\n\n let tsCompilerHost = cacheCompilerHost(\n graph,\n entryPoint,\n tsConfigOptions,\n moduleResolutionCache,\n stylesheetProcessor\n );\n if (declarationDir) {\n tsCompilerHost = redirectWriteFileCompilerHost(tsCompilerHost, tsConfigOptions.basePath, declarationDir);\n }\n\n // ng.CompilerHost\n const ngCompilerHost = ng.createCompilerHost({\n options: tsConfigOptions,\n tsHost: tsCompilerHost\n });\n\n const emitFlags = tsConfigOptions.declaration ? tsConfig.emitFlags : ng.EmitFlags.JS;\n\n const scriptTarget = tsConfigOptions.target;\n const cache = entryPoint.cache;\n const oldProgram = cache.oldPrograms && (cache.oldPrograms[scriptTarget] as ng.Program | undefined);\n\n const ngProgram = ng.createProgram({\n rootNames: tsConfig.rootNames,\n options: tsConfigOptions,\n host: ngCompilerHost,\n oldProgram\n });\n\n await ngProgram.loadNgStructureAsync();\n\n log.debug(\n `ngc program structure is reused: ${\n oldProgram ? (oldProgram.getTsProgram() as any).structureIsReused : 'No old program'\n }`\n );\n\n cache.oldPrograms = { ...cache.oldPrograms, [scriptTarget]: ngProgram };\n\n const allDiagnostics = [\n ...ngProgram.getNgOptionDiagnostics(),\n ...ngProgram.getTsSyntacticDiagnostics(),\n ...ngProgram.getTsSemanticDiagnostics(),\n ...ngProgram.getNgSemanticDiagnostics(),\n ...ngProgram.getNgStructuralDiagnostics()\n ];\n\n // if we have an error we don't want to transpile.\n const hasError = ng.exitCodeFromResult(allDiagnostics) > 0;\n if (!hasError) {\n // certain errors are only emitted by a compilation hence append to previous diagnostics\n const { diagnostics } = ngProgram.emit({\n emitCallback: createEmitCallback(tsConfigOptions),\n emitFlags\n });\n\n allDiagnostics.push(...diagnostics);\n }\n\n if (allDiagnostics.length === 0) {\n return;\n }\n\n const exitCode = ng.exitCodeFromResult(allDiagnostics);\n const formattedDiagnostics = ng.formatDiagnostics(allDiagnostics);\n if (exitCode !== 0) {\n throw new Error(formattedDiagnostics);\n } else {\n log.msg(formattedDiagnostics);\n }\n}\n"]}
|
|
@@ -37,7 +37,7 @@ function createEmitCallback(options) {
|
|
|
37
37
|
transformDecorators,
|
|
38
38
|
transformTypesToClosure
|
|
39
39
|
};
|
|
40
|
-
return ({ program, targetSourceFile, writeFile, cancellationToken, emitOnlyDtsFiles, customTransformers = {}, host, options }) => tsickle.emitWithTsickle(program, Object.assign({}, tsickleHost, { options, host }), host, options, targetSourceFile, writeFile, cancellationToken, emitOnlyDtsFiles, {
|
|
40
|
+
return ({ program, targetSourceFile, writeFile, cancellationToken, emitOnlyDtsFiles, customTransformers = {}, host, options }) => tsickle.emitWithTsickle(program, Object.assign({}, tsickleHost, { options, moduleResolutionHost: host }), host, options, targetSourceFile, writeFile, cancellationToken, emitOnlyDtsFiles, {
|
|
41
41
|
beforeTs: customTransformers.before,
|
|
42
42
|
afterTs: customTransformers.after
|
|
43
43
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-emit-callback.js","sourceRoot":"","sources":["../../../src/lib/ngc/create-emit-callback.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,0EAA0E;AAC1E,uIAAuI;;AAEvI;;;;;;GAMG;AAEH,4IAA4I;AAC5I,MAAM,eAAe,GAAG,oEAAoE,CAAC;AAE7F,+CAAmC;AAGnC,kGAAkG;AAClG,SAAgB,kBAAkB,CAAC,OAA4B;IAC7D,MAAM,mBAAmB,GAAG,OAAO,CAAC,aAAa,KAAK,YAAY,CAAC;IACnE,MAAM,uBAAuB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IACnE,IAAI,CAAC,mBAAmB,IAAI,CAAC,uBAAuB,EAAE;QACpD,OAAO,SAAS,CAAC;KAClB;IACD,IAAI,mBAAmB,EAAE;QACvB,mFAAmF;QACnF,iEAAiE;QACjE,mCAAmC;QACnC,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;KACtC;IACD,MAAM,WAAW,GAWb;QACF,2BAA2B,EAAE,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;QACpG,gBAAgB,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE;QAC/C,2BAA2B,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK;QAC/C,kBAAkB,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ;QACxC,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,IAAI;QACb,2BAA2B,EAAE,KAAK;QAClC,mBAAmB;QACnB,uBAAuB;KACxB,CAAC;IAEF,OAAO,CAAC,EACN,OAAO,EACP,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GAAG,EAAE,EACvB,IAAI,EACJ,OAAO,EACR,EAAE,EAAE,CACH,OAAO,CAAC,eAAe,CACrB,OAAO,oBACF,WAAW,IAAE,OAAO,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"create-emit-callback.js","sourceRoot":"","sources":["../../../src/lib/ngc/create-emit-callback.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,0EAA0E;AAC1E,uIAAuI;;AAEvI;;;;;;GAMG;AAEH,4IAA4I;AAC5I,MAAM,eAAe,GAAG,oEAAoE,CAAC;AAE7F,+CAAmC;AAGnC,kGAAkG;AAClG,SAAgB,kBAAkB,CAAC,OAA4B;IAC7D,MAAM,mBAAmB,GAAG,OAAO,CAAC,aAAa,KAAK,YAAY,CAAC;IACnE,MAAM,uBAAuB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IACnE,IAAI,CAAC,mBAAmB,IAAI,CAAC,uBAAuB,EAAE;QACpD,OAAO,SAAS,CAAC;KAClB;IACD,IAAI,mBAAmB,EAAE;QACvB,mFAAmF;QACnF,iEAAiE;QACjE,mCAAmC;QACnC,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;KACtC;IACD,MAAM,WAAW,GAWb;QACF,2BAA2B,EAAE,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;QACpG,gBAAgB,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE;QAC/C,2BAA2B,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK;QAC/C,kBAAkB,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ;QACxC,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,IAAI;QACb,2BAA2B,EAAE,KAAK;QAClC,mBAAmB;QACnB,uBAAuB;KACxB,CAAC;IAEF,OAAO,CAAC,EACN,OAAO,EACP,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GAAG,EAAE,EACvB,IAAI,EACJ,OAAO,EACR,EAAE,EAAE,CACH,OAAO,CAAC,eAAe,CACrB,OAAO,oBACF,WAAW,IAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,KACrD,IAAI,EACJ,OAAO,EACP,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB;QACE,QAAQ,EAAE,kBAAkB,CAAC,MAAM;QACnC,OAAO,EAAE,kBAAkB,CAAC,KAAK;KAClC,CACF,CAAC;AACN,CAAC;AA3DD,gDA2DC","sourcesContent":["// XX: internal in ngc's `main()`, a tsickle emit callback is passed to the tsc compiler\n// ... blatanlty copy-paste the emit callback here. it's not a public api.\n// ... @link https://github.com/angular/angular/blob/24bf3e2a251634811096b939e61d63297934579e/packages/compiler-cli/src/main.ts#L36-L38\n\n/*\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// @link https://github.com/angular/angular/blob/24bf3e2a251634811096b939e61d63297934579e/packages/compiler-cli/src/transformers/util.ts#L14\nconst GENERATED_FILES = /(.*?)\\.(ngfactory|shim\\.ngstyle|ngstyle|ngsummary)\\.(js|d\\.ts|ts)$/;\n\nimport * as tsickle from 'tsickle';\nimport * as api from '@angular/compiler-cli/src/transformers/api';\n\n// @link https://github.com/angular/angular/blob/83d207d/packages/compiler-cli/src/main.ts#L42-L84\nexport function createEmitCallback(options: api.CompilerOptions): api.TsEmitCallback | undefined {\n const transformDecorators = options.annotationsAs !== 'decorators';\n const transformTypesToClosure = options.annotateForClosureCompiler;\n if (!transformDecorators && !transformTypesToClosure) {\n return undefined;\n }\n if (transformDecorators) {\n // This is needed as a workaround for https://github.com/angular/tsickle/issues/635\n // Otherwise tsickle might emit references to non imported values\n // as TypeScript elided the import.\n options.emitDecoratorMetadata = true;\n }\n const tsickleHost: Pick<\n tsickle.TsickleHost,\n | 'shouldSkipTsickleProcessing'\n | 'pathToModuleName'\n | 'shouldIgnoreWarningsForPath'\n | 'fileNameToModuleId'\n | 'googmodule'\n | 'untyped'\n | 'convertIndexImportShorthand'\n | 'transformDecorators'\n | 'transformTypesToClosure'\n > = {\n shouldSkipTsickleProcessing: fileName => /\\.d\\.ts$/.test(fileName) || GENERATED_FILES.test(fileName),\n pathToModuleName: (_context, _importPath) => '',\n shouldIgnoreWarningsForPath: _filePath => false,\n fileNameToModuleId: fileName => fileName,\n googmodule: false,\n untyped: true,\n convertIndexImportShorthand: false,\n transformDecorators,\n transformTypesToClosure\n };\n\n return ({\n program,\n targetSourceFile,\n writeFile,\n cancellationToken,\n emitOnlyDtsFiles,\n customTransformers = {},\n host,\n options\n }) =>\n tsickle.emitWithTsickle(\n program,\n { ...tsickleHost, options, moduleResolutionHost: host },\n host,\n options,\n targetSourceFile,\n writeFile,\n cancellationToken,\n emitOnlyDtsFiles,\n {\n beforeTs: customTransformers.before,\n afterTs: customTransformers.after\n }\n );\n}\n"]}
|
|
@@ -3,4 +3,5 @@ import * as ng from '@angular/compiler-cli';
|
|
|
3
3
|
import { StylesheetProcessor } from '../ng-v5/entry-point/resources/stylesheet-processor';
|
|
4
4
|
import { EntryPointNode } from '../ng-v5/nodes';
|
|
5
5
|
import { BuildGraph } from '../brocc/build-graph';
|
|
6
|
-
|
|
6
|
+
import { FileCache } from '../file/file-cache';
|
|
7
|
+
export declare function cacheCompilerHost(graph: BuildGraph, entryPoint: EntryPointNode, compilerOptions: ng.CompilerOptions, moduleResolutionCache: ts.ModuleResolutionCache, stylesheetProcessor?: StylesheetProcessor, sourcesFileCache?: FileCache): ng.CompilerHost;
|
|
@@ -6,16 +6,19 @@ const path = require("path");
|
|
|
6
6
|
const path_1 = require("../util/path");
|
|
7
7
|
const nodes_1 = require("../ng-v5/nodes");
|
|
8
8
|
const node_1 = require("../brocc/node");
|
|
9
|
-
function cacheCompilerHost(graph, entryPoint, compilerOptions, moduleResolutionCache, stylesheetProcessor) {
|
|
10
|
-
const { sourcesFileCache } = entryPoint.cache;
|
|
9
|
+
function cacheCompilerHost(graph, entryPoint, compilerOptions, moduleResolutionCache, stylesheetProcessor, sourcesFileCache = entryPoint.cache.sourcesFileCache) {
|
|
11
10
|
const compilerHost = ng.createCompilerHost({ options: compilerOptions });
|
|
12
|
-
const
|
|
11
|
+
const getNode = (fileName) => {
|
|
13
12
|
const nodeUri = nodes_1.fileUrl(path_1.ensureUnixPath(fileName));
|
|
14
13
|
let node = graph.get(nodeUri);
|
|
15
14
|
if (!node) {
|
|
16
15
|
node = new node_1.Node(nodeUri);
|
|
17
16
|
graph.put(node);
|
|
18
17
|
}
|
|
18
|
+
return node;
|
|
19
|
+
};
|
|
20
|
+
const addDependee = (fileName) => {
|
|
21
|
+
const node = getNode(fileName);
|
|
19
22
|
entryPoint.dependsOn(node);
|
|
20
23
|
};
|
|
21
24
|
return Object.assign({}, compilerHost, {
|
|
@@ -56,13 +59,15 @@ function cacheCompilerHost(graph, entryPoint, compilerOptions, moduleResolutionC
|
|
|
56
59
|
const { resolvedModule } = ts.resolveModuleName(moduleName, path_1.ensureUnixPath(containingFile), compilerOptions, compilerHost, moduleResolutionCache);
|
|
57
60
|
return resolvedModule && resolvedModule.resolvedFileName;
|
|
58
61
|
}, resourceNameToFileName: (resourceName, containingFilePath) => {
|
|
59
|
-
|
|
62
|
+
const resourcePath = path.resolve(path.dirname(containingFilePath), resourceName);
|
|
63
|
+
const containingNode = getNode(containingFilePath);
|
|
64
|
+
const resourceNode = getNode(resourcePath);
|
|
65
|
+
containingNode.dependsOn(resourceNode);
|
|
66
|
+
return resourcePath;
|
|
60
67
|
}, readResource: (fileName) => {
|
|
61
68
|
addDependee(fileName);
|
|
62
69
|
const cache = sourcesFileCache.getOrCreate(fileName);
|
|
63
70
|
if (cache.content === undefined) {
|
|
64
|
-
// todo: transform styles here.
|
|
65
|
-
// the empty string is needed because of include paths file's won't be resolved properly.
|
|
66
71
|
cache.content = compilerHost.readFile.call(this, fileName);
|
|
67
72
|
if (!/(html|htm)$/.test(path.extname(fileName))) {
|
|
68
73
|
cache.content = stylesheetProcessor.process(fileName, cache.content);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-compiler-host.js","sourceRoot":"","sources":["../../../src/lib/ts/cache-compiler-host.ts"],"names":[],"mappings":";;AAAA,iCAAiC;AACjC,4CAA4C;AAC5C,6BAA6B;AAC7B,uCAA8C;AAE9C,0CAAyD;AACzD,wCAAqC;
|
|
1
|
+
{"version":3,"file":"cache-compiler-host.js","sourceRoot":"","sources":["../../../src/lib/ts/cache-compiler-host.ts"],"names":[],"mappings":"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","sourcesContent":["import * as ts from 'typescript';\nimport * as ng from '@angular/compiler-cli';\nimport * as path from 'path';\nimport { ensureUnixPath } from '../util/path';\nimport { StylesheetProcessor } from '../ng-v5/entry-point/resources/stylesheet-processor';\nimport { EntryPointNode, fileUrl } from '../ng-v5/nodes';\nimport { Node } from '../brocc/node';\nimport { BuildGraph } from '../brocc/build-graph';\nimport { FileCache } from '../file/file-cache';\n\nexport function cacheCompilerHost(\n graph: BuildGraph,\n entryPoint: EntryPointNode,\n compilerOptions: ng.CompilerOptions,\n moduleResolutionCache: ts.ModuleResolutionCache,\n stylesheetProcessor?: StylesheetProcessor,\n sourcesFileCache: FileCache = entryPoint.cache.sourcesFileCache\n): ng.CompilerHost {\n const compilerHost = ng.createCompilerHost({ options: compilerOptions });\n\n const getNode = (fileName: string) => {\n const nodeUri = fileUrl(ensureUnixPath(fileName));\n let node = graph.get(nodeUri);\n\n if (!node) {\n node = new Node(nodeUri);\n graph.put(node);\n }\n\n return node;\n };\n\n const addDependee = (fileName: string) => {\n const node = getNode(fileName);\n entryPoint.dependsOn(node);\n };\n\n return {\n ...compilerHost,\n\n // ts specific\n fileExists: (fileName: string) => {\n const cache = sourcesFileCache.getOrCreate(fileName);\n if (cache.exists === undefined) {\n cache.exists = compilerHost.fileExists.call(this, fileName);\n }\n return cache.exists;\n },\n\n getSourceFile: (fileName: string, languageVersion: ts.ScriptTarget) => {\n addDependee(fileName);\n\n const cache = sourcesFileCache.getOrCreate(fileName);\n if (!cache.sourceFile) {\n cache.sourceFile = compilerHost.getSourceFile.call(this, fileName, languageVersion);\n }\n return cache.sourceFile;\n },\n\n writeFile: (\n fileName: string,\n data: string,\n writeByteOrderMark: boolean,\n onError?: (message: string) => void,\n sourceFiles?: ReadonlyArray<ts.SourceFile>\n ) => {\n if (fileName.endsWith('.d.ts')) {\n sourceFiles.forEach(source => {\n const cache = sourcesFileCache.getOrCreate(source.fileName);\n if (!cache.declarationFileName) {\n cache.declarationFileName = ensureUnixPath(fileName);\n }\n });\n }\n\n compilerHost.writeFile.call(this, fileName, data, writeByteOrderMark, onError, sourceFiles);\n },\n\n readFile: (fileName: string) => {\n addDependee(fileName);\n\n const cache = sourcesFileCache.getOrCreate(fileName);\n if (cache.content === undefined) {\n cache.content = compilerHost.readFile.call(this, fileName);\n }\n return cache.content;\n },\n\n // ng specific\n moduleNameToFileName: (moduleName: string, containingFile: string) => {\n const { resolvedModule } = ts.resolveModuleName(\n moduleName,\n ensureUnixPath(containingFile),\n compilerOptions,\n compilerHost,\n moduleResolutionCache\n );\n\n return resolvedModule && resolvedModule.resolvedFileName;\n },\n\n resourceNameToFileName: (resourceName: string, containingFilePath: string) => {\n const resourcePath = path.resolve(path.dirname(containingFilePath), resourceName);\n const containingNode = getNode(containingFilePath);\n const resourceNode = getNode(resourcePath);\n containingNode.dependsOn(resourceNode);\n\n return resourcePath;\n },\n\n readResource: (fileName: string) => {\n addDependee(fileName);\n\n const cache = sourcesFileCache.getOrCreate(fileName);\n if (cache.content === undefined) {\n cache.content = compilerHost.readFile.call(this, fileName);\n if (!/(html|htm)$/.test(path.extname(fileName))) {\n cache.content = stylesheetProcessor.process(fileName, cache.content);\n }\n cache.exists = true;\n }\n\n return cache.content;\n }\n };\n}\n"]}
|
package/lib/util/array.js
CHANGED
package/lib/util/array.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../../src/lib/util/array.ts"],"names":[],"mappings":";;AAAA,SAAgB,OAAO,CAAI,KAAc;IACvC,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAFD,0BAEC;AAED,SAAgB,OAAO,CAAI,KAAqB;IAC9C,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC;AAFD,0BAEC;AAED,SAAgB,MAAM,CAAI,KAAU;IAClC,
|
|
1
|
+
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../../src/lib/util/array.ts"],"names":[],"mappings":";;AAAA,SAAgB,OAAO,CAAI,KAAc;IACvC,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAFD,0BAEC;AAED,SAAgB,OAAO,CAAI,KAAqB;IAC9C,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC;AAFD,0BAEC;AAED,SAAgB,MAAM,CAAI,KAAU;IAClC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,CAAC;AAFD,wBAEC","sourcesContent":["export function toArray<T>(value: T | T[]): T[] {\n return [].concat(value);\n}\n\nexport function flatten<T>(value: Array<T | T[]>): T[] {\n return [].concat.apply([], value);\n}\n\nexport function unique<T>(value: T[]): T[] {\n return [...new Set(value)];\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ng-packagr",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.7.1",
|
|
4
4
|
"description": "Compile and package a TypeScript library to Angular Package Format",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"less-plugin-npm-import": "^2.1.0",
|
|
42
42
|
"node-sass": "^4.9.3",
|
|
43
43
|
"node-sass-tilde-importer": "^1.0.0",
|
|
44
|
-
"opencollective": "^
|
|
44
|
+
"opencollective-postinstall": "^2.0.1",
|
|
45
45
|
"postcss": "^7.0.0",
|
|
46
46
|
"postcss-url": "^8.0.0",
|
|
47
47
|
"read-pkg-up": "^4.0.0",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"rollup": "^0.67.0",
|
|
50
50
|
"rollup-plugin-commonjs": "^9.1.3",
|
|
51
51
|
"rollup-plugin-json": "^3.1.0",
|
|
52
|
-
"rollup-plugin-node-resolve": "^
|
|
52
|
+
"rollup-plugin-node-resolve": "^4.0.0",
|
|
53
53
|
"rollup-plugin-sourcemaps": "^0.4.2",
|
|
54
54
|
"rxjs": "^6.0.0",
|
|
55
55
|
"stylus": "^0.54.5",
|
|
@@ -57,11 +57,11 @@
|
|
|
57
57
|
"update-notifier": "^2.3.0"
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
60
|
-
"@angular/compiler": "^6.0.0 || ^7.0.0-beta.0",
|
|
61
|
-
"@angular/compiler-cli": "^6.0.0 || ^7.0.0-beta.0",
|
|
62
|
-
"tsickle": ">=0.
|
|
60
|
+
"@angular/compiler": "^6.0.0 || ^7.0.0 || ^7.2.0-beta.0",
|
|
61
|
+
"@angular/compiler-cli": "^6.0.0 || ^7.0.0 || ^7.2.0-beta.0",
|
|
62
|
+
"tsickle": ">=0.34.0",
|
|
63
63
|
"tslib": "^1.9.0",
|
|
64
|
-
"typescript": ">= 2.7 <3.
|
|
64
|
+
"typescript": ">= 2.7 <3.3"
|
|
65
65
|
},
|
|
66
66
|
"collective": {
|
|
67
67
|
"type": "opencollective",
|
|
@@ -75,6 +75,6 @@
|
|
|
75
75
|
}
|
|
76
76
|
},
|
|
77
77
|
"scripts": {
|
|
78
|
-
"postinstall": "opencollective
|
|
78
|
+
"postinstall": "opencollective-postinstall"
|
|
79
79
|
}
|
|
80
80
|
}
|