1 | "use strict";
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 | Object.defineProperty(exports, "__esModule", { value: true });
|
10 | exports.DryRunSink = void 0;
|
11 | const core_1 = require("@angular-devkit/core");
|
12 | const node_1 = require("@angular-devkit/core/node");
|
13 | const rxjs_1 = require("rxjs");
|
14 | const host_1 = require("./host");
|
15 | class DryRunSink extends host_1.HostSink {
|
16 | constructor(host, force = false) {
|
17 | super(typeof host == 'string'
|
18 | ? new core_1.virtualFs.ScopedHost(new node_1.NodeJsSyncHost(), (0, core_1.normalize)(host))
|
19 | : host, force);
|
20 | this._subject = new rxjs_1.Subject();
|
21 | this._fileDoesNotExistExceptionSet = new Set();
|
22 | this._fileAlreadyExistExceptionSet = new Set();
|
23 | this.reporter = this._subject.asObservable();
|
24 | }
|
25 | _fileAlreadyExistException(path) {
|
26 | this._fileAlreadyExistExceptionSet.add(path);
|
27 | }
|
28 | _fileDoesNotExistException(path) {
|
29 | this._fileDoesNotExistExceptionSet.add(path);
|
30 | }
|
31 | _done() {
|
32 | this._fileAlreadyExistExceptionSet.forEach((path) => {
|
33 | this._subject.next({
|
34 | kind: 'error',
|
35 | description: 'alreadyExist',
|
36 | path,
|
37 | });
|
38 | });
|
39 | this._fileDoesNotExistExceptionSet.forEach((path) => {
|
40 | this._subject.next({
|
41 | kind: 'error',
|
42 | description: 'doesNotExist',
|
43 | path,
|
44 | });
|
45 | });
|
46 | this._filesToDelete.forEach((path) => {
|
47 |
|
48 | for (const [from] of this._filesToRename) {
|
49 | if (from == path) {
|
50 |
|
51 | return;
|
52 | }
|
53 | }
|
54 | this._subject.next({ kind: 'delete', path });
|
55 | });
|
56 | this._filesToRename.forEach(([path, to]) => {
|
57 | this._subject.next({ kind: 'rename', path, to });
|
58 | });
|
59 | this._filesToCreate.forEach((content, path) => {
|
60 |
|
61 | for (const [, to] of this._filesToRename) {
|
62 | if (to == path) {
|
63 |
|
64 | return;
|
65 | }
|
66 | }
|
67 | if (this._fileAlreadyExistExceptionSet.has(path) ||
|
68 | this._fileDoesNotExistExceptionSet.has(path)) {
|
69 | return;
|
70 | }
|
71 | this._subject.next({ kind: 'create', path, content: content.generate() });
|
72 | });
|
73 | this._filesToUpdate.forEach((content, path) => {
|
74 | this._subject.next({ kind: 'update', path, content: content.generate() });
|
75 | });
|
76 | this._subject.complete();
|
77 | return (0, rxjs_1.of)(undefined);
|
78 | }
|
79 | }
|
80 | exports.DryRunSink = DryRunSink;
|