@theia/navigator 1.67.0-next.56 → 1.67.0-next.59

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 (121) hide show
  1. package/lib/browser/abstract-navigator-tree-widget.d.ts +11 -0
  2. package/lib/browser/abstract-navigator-tree-widget.d.ts.map +1 -0
  3. package/lib/browser/abstract-navigator-tree-widget.js +62 -0
  4. package/lib/browser/abstract-navigator-tree-widget.js.map +1 -0
  5. package/lib/browser/file-navigator-commands.d.ts +19 -0
  6. package/lib/browser/file-navigator-commands.d.ts.map +1 -0
  7. package/lib/browser/file-navigator-commands.js +76 -0
  8. package/lib/browser/file-navigator-commands.js.map +1 -0
  9. package/lib/browser/index.d.ts +5 -0
  10. package/lib/browser/index.d.ts.map +1 -0
  11. package/lib/browser/index.js +23 -0
  12. package/lib/browser/index.js.map +1 -0
  13. package/lib/browser/navigator-container.d.ts +7 -0
  14. package/lib/browser/navigator-container.d.ts.map +1 -0
  15. package/lib/browser/navigator-container.js +48 -0
  16. package/lib/browser/navigator-container.js.map +1 -0
  17. package/lib/browser/navigator-context-key-service.d.ts +21 -0
  18. package/lib/browser/navigator-context-key-service.d.ts.map +1 -0
  19. package/lib/browser/navigator-context-key-service.js +65 -0
  20. package/lib/browser/navigator-context-key-service.js.map +1 -0
  21. package/lib/browser/navigator-contribution.d.ts +111 -0
  22. package/lib/browser/navigator-contribution.d.ts.map +1 -0
  23. package/lib/browser/navigator-contribution.js +616 -0
  24. package/lib/browser/navigator-contribution.js.map +1 -0
  25. package/lib/browser/navigator-decorator-service.d.ts +14 -0
  26. package/lib/browser/navigator-decorator-service.d.ts.map +1 -0
  27. package/lib/browser/navigator-decorator-service.js +43 -0
  28. package/lib/browser/navigator-decorator-service.js.map +1 -0
  29. package/lib/browser/navigator-diff.d.ts +39 -0
  30. package/lib/browser/navigator-diff.d.ts.map +1 -0
  31. package/lib/browser/navigator-diff.js +131 -0
  32. package/lib/browser/navigator-diff.js.map +1 -0
  33. package/lib/browser/navigator-diff.spec.d.ts +2 -0
  34. package/lib/browser/navigator-diff.spec.d.ts.map +1 -0
  35. package/lib/browser/navigator-diff.spec.js +100 -0
  36. package/lib/browser/navigator-diff.spec.js.map +1 -0
  37. package/lib/browser/navigator-filter.d.ts +72 -0
  38. package/lib/browser/navigator-filter.d.ts.map +1 -0
  39. package/lib/browser/navigator-filter.js +130 -0
  40. package/lib/browser/navigator-filter.js.map +1 -0
  41. package/lib/browser/navigator-filter.spec.d.ts +2 -0
  42. package/lib/browser/navigator-filter.spec.d.ts.map +1 -0
  43. package/lib/browser/navigator-filter.spec.js +131 -0
  44. package/lib/browser/navigator-filter.spec.js.map +1 -0
  45. package/lib/browser/navigator-frontend-module.d.ts +6 -0
  46. package/lib/browser/navigator-frontend-module.d.ts.map +1 -0
  47. package/lib/browser/navigator-frontend-module.js +76 -0
  48. package/lib/browser/navigator-frontend-module.js.map +1 -0
  49. package/lib/browser/navigator-layout-migrations.d.ts +10 -0
  50. package/lib/browser/navigator-layout-migrations.d.ts.map +1 -0
  51. package/lib/browser/navigator-layout-migrations.js +76 -0
  52. package/lib/browser/navigator-layout-migrations.js.map +1 -0
  53. package/lib/browser/navigator-model.d.ts +44 -0
  54. package/lib/browser/navigator-model.d.ts.map +1 -0
  55. package/lib/browser/navigator-model.js +229 -0
  56. package/lib/browser/navigator-model.js.map +1 -0
  57. package/lib/browser/navigator-symlink-decorator.d.ts +14 -0
  58. package/lib/browser/navigator-symlink-decorator.d.ts.map +1 -0
  59. package/lib/browser/navigator-symlink-decorator.js +74 -0
  60. package/lib/browser/navigator-symlink-decorator.js.map +1 -0
  61. package/lib/browser/navigator-tab-bar-decorator.d.ts +17 -0
  62. package/lib/browser/navigator-tab-bar-decorator.d.ts.map +1 -0
  63. package/lib/browser/navigator-tab-bar-decorator.js +71 -0
  64. package/lib/browser/navigator-tab-bar-decorator.js.map +1 -0
  65. package/lib/browser/navigator-tree.d.ts +43 -0
  66. package/lib/browser/navigator-tree.d.ts.map +1 -0
  67. package/lib/browser/navigator-tree.js +125 -0
  68. package/lib/browser/navigator-tree.js.map +1 -0
  69. package/lib/browser/navigator-widget-factory.d.ts +13 -0
  70. package/lib/browser/navigator-widget-factory.d.ts.map +1 -0
  71. package/lib/browser/navigator-widget-factory.js +76 -0
  72. package/lib/browser/navigator-widget-factory.js.map +1 -0
  73. package/lib/browser/navigator-widget.d.ts +46 -0
  74. package/lib/browser/navigator-widget.d.ts.map +1 -0
  75. package/lib/browser/navigator-widget.js +210 -0
  76. package/lib/browser/navigator-widget.js.map +1 -0
  77. package/lib/browser/open-editors-widget/navigator-deleted-editor-decorator.d.ts +16 -0
  78. package/lib/browser/open-editors-widget/navigator-deleted-editor-decorator.d.ts.map +1 -0
  79. package/lib/browser/open-editors-widget/navigator-deleted-editor-decorator.js +105 -0
  80. package/lib/browser/open-editors-widget/navigator-deleted-editor-decorator.js.map +1 -0
  81. package/lib/browser/open-editors-widget/navigator-open-editors-commands.d.ts +8 -0
  82. package/lib/browser/open-editors-widget/navigator-open-editors-commands.d.ts.map +1 -0
  83. package/lib/browser/open-editors-widget/navigator-open-editors-commands.js +48 -0
  84. package/lib/browser/open-editors-widget/navigator-open-editors-commands.js.map +1 -0
  85. package/lib/browser/open-editors-widget/navigator-open-editors-decorator-service.d.ts +8 -0
  86. package/lib/browser/open-editors-widget/navigator-open-editors-decorator-service.d.ts.map +1 -0
  87. package/lib/browser/open-editors-widget/navigator-open-editors-decorator-service.js +37 -0
  88. package/lib/browser/open-editors-widget/navigator-open-editors-decorator-service.js.map +1 -0
  89. package/lib/browser/open-editors-widget/navigator-open-editors-menus.d.ts +10 -0
  90. package/lib/browser/open-editors-widget/navigator-open-editors-menus.d.ts.map +1 -0
  91. package/lib/browser/open-editors-widget/navigator-open-editors-menus.js +28 -0
  92. package/lib/browser/open-editors-widget/navigator-open-editors-menus.js.map +1 -0
  93. package/lib/browser/open-editors-widget/navigator-open-editors-tree-model.d.ts +39 -0
  94. package/lib/browser/open-editors-widget/navigator-open-editors-tree-model.d.ts.map +1 -0
  95. package/lib/browser/open-editors-widget/navigator-open-editors-tree-model.js +251 -0
  96. package/lib/browser/open-editors-widget/navigator-open-editors-tree-model.js.map +1 -0
  97. package/lib/browser/open-editors-widget/navigator-open-editors-widget.d.ts +46 -0
  98. package/lib/browser/open-editors-widget/navigator-open-editors-widget.d.ts.map +1 -0
  99. package/lib/browser/open-editors-widget/navigator-open-editors-widget.js +225 -0
  100. package/lib/browser/open-editors-widget/navigator-open-editors-widget.js.map +1 -0
  101. package/lib/common/navigator-preferences.d.ts +15 -0
  102. package/lib/common/navigator-preferences.d.ts.map +1 -0
  103. package/lib/common/navigator-preferences.js +58 -0
  104. package/lib/common/navigator-preferences.js.map +1 -0
  105. package/lib/electron-browser/electron-navigator-menu-contribution.d.ts +22 -0
  106. package/lib/electron-browser/electron-navigator-menu-contribution.d.ts.map +1 -0
  107. package/lib/electron-browser/electron-navigator-menu-contribution.js +120 -0
  108. package/lib/electron-browser/electron-navigator-menu-contribution.js.map +1 -0
  109. package/lib/electron-browser/electron-navigator-module.d.ts +4 -0
  110. package/lib/electron-browser/electron-navigator-module.d.ts.map +1 -0
  111. package/lib/electron-browser/electron-navigator-module.js +27 -0
  112. package/lib/electron-browser/electron-navigator-module.js.map +1 -0
  113. package/lib/node/navigator-backend-module.d.ts +4 -0
  114. package/lib/node/navigator-backend-module.d.ts.map +1 -0
  115. package/lib/node/navigator-backend-module.js +23 -0
  116. package/lib/node/navigator-backend-module.js.map +1 -0
  117. package/lib/package.spec.d.ts +1 -0
  118. package/lib/package.spec.d.ts.map +1 -0
  119. package/lib/package.spec.js +26 -0
  120. package/lib/package.spec.js.map +1 -0
  121. package/package.json +5 -5
@@ -0,0 +1,14 @@
1
+ import { ContributionProvider } from '@theia/core/lib/common/contribution-provider';
2
+ import { TreeDecorator, AbstractTreeDecoratorService } from '@theia/core/lib/browser/tree/tree-decorator';
3
+ /**
4
+ * Symbol for all decorators that would like to contribute into the navigator.
5
+ */
6
+ export declare const NavigatorTreeDecorator: unique symbol;
7
+ /**
8
+ * Decorator service for the navigator.
9
+ */
10
+ export declare class NavigatorDecoratorService extends AbstractTreeDecoratorService {
11
+ protected readonly contributions: ContributionProvider<TreeDecorator>;
12
+ constructor(contributions: ContributionProvider<TreeDecorator>);
13
+ }
14
+ //# sourceMappingURL=navigator-decorator-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigator-decorator-service.d.ts","sourceRoot":"","sources":["../../src/browser/navigator-decorator-service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAE1G;;GAEG;AACH,eAAO,MAAM,sBAAsB,eAAmC,CAAC;AAEvE;;GAEG;AACH,qBACa,yBAA0B,SAAQ,4BAA4B;IAEE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC,aAAa,CAAC;gBAAlD,aAAa,EAAE,oBAAoB,CAAC,aAAa,CAAC;CAIjJ"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2018 TypeFox and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.NavigatorDecoratorService = exports.NavigatorTreeDecorator = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const inversify_1 = require("@theia/core/shared/inversify");
21
+ const contribution_provider_1 = require("@theia/core/lib/common/contribution-provider");
22
+ const tree_decorator_1 = require("@theia/core/lib/browser/tree/tree-decorator");
23
+ /**
24
+ * Symbol for all decorators that would like to contribute into the navigator.
25
+ */
26
+ exports.NavigatorTreeDecorator = Symbol('NavigatorTreeDecorator');
27
+ /**
28
+ * Decorator service for the navigator.
29
+ */
30
+ let NavigatorDecoratorService = class NavigatorDecoratorService extends tree_decorator_1.AbstractTreeDecoratorService {
31
+ constructor(contributions) {
32
+ super(contributions.getContributions());
33
+ this.contributions = contributions;
34
+ }
35
+ };
36
+ exports.NavigatorDecoratorService = NavigatorDecoratorService;
37
+ exports.NavigatorDecoratorService = NavigatorDecoratorService = tslib_1.__decorate([
38
+ (0, inversify_1.injectable)(),
39
+ tslib_1.__param(0, (0, inversify_1.inject)(contribution_provider_1.ContributionProvider)),
40
+ tslib_1.__param(0, (0, inversify_1.named)(exports.NavigatorTreeDecorator)),
41
+ tslib_1.__metadata("design:paramtypes", [Object])
42
+ ], NavigatorDecoratorService);
43
+ //# sourceMappingURL=navigator-decorator-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigator-decorator-service.js","sourceRoot":"","sources":["../../src/browser/navigator-decorator-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,4DAAyE;AACzE,wFAAoF;AACpF,gFAA0G;AAE1G;;GAEG;AACU,QAAA,sBAAsB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAEvE;;GAEG;AAEI,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,6CAA4B;IAEvE,YAA4F,aAAkD;QAC1I,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAC;QADgD,kBAAa,GAAb,aAAa,CAAqC;IAE9I,CAAC;CAEJ,CAAA;AANY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,sBAAU,GAAE;IAGI,mBAAA,IAAA,kBAAM,EAAC,4CAAoB,CAAC,CAAA;IAAE,mBAAA,IAAA,iBAAK,EAAC,8BAAsB,CAAC,CAAA;;GAF/D,yBAAyB,CAMrC"}
@@ -0,0 +1,39 @@
1
+ import URI from '@theia/core/lib/common/uri';
2
+ import { SelectionService } from '@theia/core/lib/common';
3
+ import { OpenerService } from '@theia/core/lib/browser/opener-service';
4
+ import { MessageService } from '@theia/core/lib/common/message-service';
5
+ import { Command } from '@theia/core/lib/common/command';
6
+ import { FileService } from '@theia/filesystem/lib/browser/file-service';
7
+ export declare namespace NavigatorDiffCommands {
8
+ const COMPARE_FIRST: Command;
9
+ const COMPARE_SECOND: Command;
10
+ }
11
+ export declare class NavigatorDiff {
12
+ protected readonly fileService: FileService;
13
+ protected openerService: OpenerService;
14
+ protected readonly notifications: MessageService;
15
+ protected readonly selectionService: SelectionService;
16
+ constructor();
17
+ protected _firstCompareFile: URI | undefined;
18
+ protected get firstCompareFile(): URI | undefined;
19
+ protected set firstCompareFile(uri: URI | undefined);
20
+ protected _isFirstFileSelected: boolean;
21
+ get isFirstFileSelected(): boolean;
22
+ protected isDirectory(uri: URI): Promise<boolean>;
23
+ protected getURISelection(): Promise<URI | undefined>;
24
+ /**
25
+ * Adds the initial file for comparison
26
+ * @see SelectionService
27
+ * @see compareFiles
28
+ * @returns Promise<boolean> indicating whether the uri is valid
29
+ */
30
+ addFirstComparisonFile(): Promise<boolean>;
31
+ /**
32
+ * Compare selected files. First file is selected through addFirstComparisonFile
33
+ * @see SelectionService
34
+ * @see addFirstComparisonFile
35
+ * @returns Promise<boolean> indicating whether the comparison was completed successfully
36
+ */
37
+ compareFiles(): Promise<boolean>;
38
+ }
39
+ //# sourceMappingURL=navigator-diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigator-diff.d.ts","sourceRoot":"","sources":["../../src/browser/navigator-diff.ts"],"names":[],"mappings":"AAiBA,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAgB,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAQ,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAGzE,yBAAiB,qBAAqB,CAAC;IAE5B,MAAM,aAAa,SAIxB,CAAC;IACI,MAAM,cAAc,SAIzB,CAAC;CACN;AAED,qBACa,aAAa;IAEtB,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAG5C,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAGvC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC;IAGjD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;;IAMtD,SAAS,CAAC,iBAAiB,EAAE,GAAG,GAAG,SAAS,CAAa;IACzD,SAAS,KAAK,gBAAgB,IAAI,GAAG,GAAG,SAAS,CAEhD;IACD,SAAS,KAAK,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,EAGlD;IAED,SAAS,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACxC,IAAI,mBAAmB,IAAI,OAAO,CAEjC;cAEe,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;cAavC,eAAe,IAAI,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;IAa3D;;;;;OAKG;IACG,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC;IAYhD;;;;;OAKG;IACG,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;CAazC"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2019 David Saunders and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.NavigatorDiff = exports.NavigatorDiffCommands = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const inversify_1 = require("@theia/core/shared/inversify");
21
+ const common_1 = require("@theia/core/lib/common");
22
+ const opener_service_1 = require("@theia/core/lib/browser/opener-service");
23
+ const message_service_1 = require("@theia/core/lib/common/message-service");
24
+ const command_1 = require("@theia/core/lib/common/command");
25
+ const diff_uris_1 = require("@theia/core/lib/browser/diff-uris");
26
+ const file_service_1 = require("@theia/filesystem/lib/browser/file-service");
27
+ const files_1 = require("@theia/filesystem/lib/common/files");
28
+ var NavigatorDiffCommands;
29
+ (function (NavigatorDiffCommands) {
30
+ const COMPARE_CATEGORY = 'Compare';
31
+ NavigatorDiffCommands.COMPARE_FIRST = command_1.Command.toDefaultLocalizedCommand({
32
+ id: 'compare:first',
33
+ category: COMPARE_CATEGORY,
34
+ label: 'Select for Compare'
35
+ });
36
+ NavigatorDiffCommands.COMPARE_SECOND = command_1.Command.toDefaultLocalizedCommand({
37
+ id: 'compare:second',
38
+ category: COMPARE_CATEGORY,
39
+ label: 'Compare with Selected'
40
+ });
41
+ })(NavigatorDiffCommands || (exports.NavigatorDiffCommands = NavigatorDiffCommands = {}));
42
+ let NavigatorDiff = class NavigatorDiff {
43
+ constructor() {
44
+ this._firstCompareFile = undefined;
45
+ }
46
+ get firstCompareFile() {
47
+ return this._firstCompareFile;
48
+ }
49
+ set firstCompareFile(uri) {
50
+ this._firstCompareFile = uri;
51
+ this._isFirstFileSelected = true;
52
+ }
53
+ get isFirstFileSelected() {
54
+ return this._isFirstFileSelected;
55
+ }
56
+ async isDirectory(uri) {
57
+ try {
58
+ const stat = await this.fileService.resolve(uri);
59
+ return stat.isDirectory;
60
+ }
61
+ catch (e) {
62
+ if (e instanceof files_1.FileOperationError && e.fileOperationResult === 1 /* FileOperationResult.FILE_NOT_FOUND */) {
63
+ return true;
64
+ }
65
+ }
66
+ return false;
67
+ }
68
+ async getURISelection() {
69
+ const uri = common_1.UriSelection.getUri(this.selectionService.selection);
70
+ if (!uri) {
71
+ return undefined;
72
+ }
73
+ if (await this.isDirectory(uri)) {
74
+ return undefined;
75
+ }
76
+ return uri;
77
+ }
78
+ /**
79
+ * Adds the initial file for comparison
80
+ * @see SelectionService
81
+ * @see compareFiles
82
+ * @returns Promise<boolean> indicating whether the uri is valid
83
+ */
84
+ async addFirstComparisonFile() {
85
+ const uriSelected = await this.getURISelection();
86
+ if (uriSelected === undefined) {
87
+ return false;
88
+ }
89
+ this.firstCompareFile = uriSelected;
90
+ return true;
91
+ }
92
+ /**
93
+ * Compare selected files. First file is selected through addFirstComparisonFile
94
+ * @see SelectionService
95
+ * @see addFirstComparisonFile
96
+ * @returns Promise<boolean> indicating whether the comparison was completed successfully
97
+ */
98
+ async compareFiles() {
99
+ const uriSelected = await this.getURISelection();
100
+ if (this.firstCompareFile === undefined || uriSelected === undefined) {
101
+ return false;
102
+ }
103
+ const diffUri = diff_uris_1.DiffUris.encode(this.firstCompareFile, uriSelected);
104
+ (0, opener_service_1.open)(this.openerService, diffUri).catch(e => {
105
+ this.notifications.error(e.message);
106
+ });
107
+ return true;
108
+ }
109
+ };
110
+ exports.NavigatorDiff = NavigatorDiff;
111
+ tslib_1.__decorate([
112
+ (0, inversify_1.inject)(file_service_1.FileService),
113
+ tslib_1.__metadata("design:type", file_service_1.FileService)
114
+ ], NavigatorDiff.prototype, "fileService", void 0);
115
+ tslib_1.__decorate([
116
+ (0, inversify_1.inject)(opener_service_1.OpenerService),
117
+ tslib_1.__metadata("design:type", Object)
118
+ ], NavigatorDiff.prototype, "openerService", void 0);
119
+ tslib_1.__decorate([
120
+ (0, inversify_1.inject)(message_service_1.MessageService),
121
+ tslib_1.__metadata("design:type", message_service_1.MessageService)
122
+ ], NavigatorDiff.prototype, "notifications", void 0);
123
+ tslib_1.__decorate([
124
+ (0, inversify_1.inject)(common_1.SelectionService),
125
+ tslib_1.__metadata("design:type", common_1.SelectionService)
126
+ ], NavigatorDiff.prototype, "selectionService", void 0);
127
+ exports.NavigatorDiff = NavigatorDiff = tslib_1.__decorate([
128
+ (0, inversify_1.injectable)(),
129
+ tslib_1.__metadata("design:paramtypes", [])
130
+ ], NavigatorDiff);
131
+ //# sourceMappingURL=navigator-diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigator-diff.js","sourceRoot":"","sources":["../../src/browser/navigator-diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=navigator-diff.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigator-diff.spec.d.ts","sourceRoot":"","sources":["../../src/browser/navigator-diff.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2019 David Saunders and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const jsdom_1 = require("@theia/core/lib/browser/test/jsdom");
19
+ const disableJSDOM = (0, jsdom_1.enableJSDOM)();
20
+ const frontend_application_config_provider_1 = require("@theia/core/lib/browser/frontend-application-config-provider");
21
+ frontend_application_config_provider_1.FrontendApplicationConfigProvider.set({});
22
+ const chai_1 = require("chai");
23
+ const navigator_diff_1 = require("./navigator-diff");
24
+ const path = require("path");
25
+ const inversify_1 = require("@theia/core/shared/inversify");
26
+ const common_1 = require("@theia/core/lib/common");
27
+ const mock_logger_1 = require("@theia/core/lib/common/test/mock-logger");
28
+ const uri_1 = require("@theia/core/lib/common/uri");
29
+ const browser_1 = require("@theia/core/lib/browser");
30
+ const mock_opener_service_1 = require("@theia/core/lib/browser/test/mock-opener-service");
31
+ const message_service_1 = require("@theia/core/lib/common/message-service");
32
+ const message_service_protocol_1 = require("@theia/core/lib/common/message-service-protocol");
33
+ const file_uri_1 = require("@theia/core/lib/common/file-uri");
34
+ const file_service_1 = require("@theia/filesystem/lib/browser/file-service");
35
+ const disk_file_system_provider_1 = require("@theia/filesystem/lib/node/disk-file-system-provider");
36
+ disableJSDOM();
37
+ let testContainer;
38
+ beforeEach(() => {
39
+ testContainer = new inversify_1.Container();
40
+ const module = new inversify_1.ContainerModule((bind, unbind, isBound, rebind) => {
41
+ bind(common_1.ILogger).to(mock_logger_1.MockLogger).inSingletonScope();
42
+ bind(common_1.SelectionService).toSelf().inSingletonScope();
43
+ bind(navigator_diff_1.NavigatorDiff).toSelf().inSingletonScope();
44
+ bind(browser_1.OpenerService).to(mock_opener_service_1.MockOpenerService);
45
+ const fileService = new file_service_1.FileService();
46
+ fileService['resourceForError'] = (resource) => resource.toString();
47
+ fileService.registerProvider('file', new disk_file_system_provider_1.DiskFileSystemProvider());
48
+ bind(file_service_1.FileService).toConstantValue(fileService);
49
+ bind(message_service_1.MessageService).toSelf().inSingletonScope();
50
+ bind(message_service_protocol_1.MessageClient).toSelf().inSingletonScope();
51
+ });
52
+ testContainer.load(module);
53
+ });
54
+ describe('NavigatorDiff', () => {
55
+ it('should allow a valid first file to be added', async () => {
56
+ const diff = testContainer.get(navigator_diff_1.NavigatorDiff);
57
+ testContainer.get(common_1.SelectionService).selection = [{
58
+ uri: new uri_1.default(file_uri_1.FileUri.create(path.resolve(__dirname, '../../test-resources/testFileA.json')).toString())
59
+ }];
60
+ const result = await diff.addFirstComparisonFile();
61
+ (0, chai_1.expect)(result).to.be.true;
62
+ });
63
+ it('should reject invalid file when added', async () => {
64
+ const diff = testContainer.get(navigator_diff_1.NavigatorDiff);
65
+ testContainer.get(common_1.SelectionService).selection = [{
66
+ uri: new uri_1.default(file_uri_1.FileUri.create(path.resolve(__dirname, '../../test-resources/nonExistentFile.json')).toString())
67
+ }];
68
+ const result = await diff.addFirstComparisonFile();
69
+ (0, chai_1.expect)(result).to.be.false;
70
+ });
71
+ it('should run comparison when second file is added', done => {
72
+ const diff = testContainer.get(navigator_diff_1.NavigatorDiff);
73
+ testContainer.get(common_1.SelectionService).selection = [{
74
+ uri: new uri_1.default(file_uri_1.FileUri.create(path.resolve(__dirname, '../../test-resources/testFileA.json')).toString())
75
+ }];
76
+ diff.addFirstComparisonFile()
77
+ .then(result => {
78
+ testContainer.get(common_1.SelectionService).selection = [{
79
+ uri: new uri_1.default(file_uri_1.FileUri.create(path.resolve(__dirname, '../../test-resources/testFileB.json')).toString())
80
+ }];
81
+ diff.compareFiles()
82
+ .then(compareResult => {
83
+ (0, chai_1.expect)(compareResult).to.be.true;
84
+ done();
85
+ });
86
+ });
87
+ });
88
+ it('should fail to run comparison if first file not added', done => {
89
+ const diff = testContainer.get(navigator_diff_1.NavigatorDiff);
90
+ testContainer.get(common_1.SelectionService).selection = [{
91
+ uri: new uri_1.default(file_uri_1.FileUri.create(path.resolve(__dirname, '../../test-resources/testFileA.json')).toString())
92
+ }];
93
+ diff.compareFiles()
94
+ .then(compareResult => {
95
+ (0, chai_1.expect)(compareResult).to.be.false;
96
+ done();
97
+ });
98
+ });
99
+ });
100
+ //# sourceMappingURL=navigator-diff.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigator-diff.spec.js","sourceRoot":"","sources":["../../src/browser/navigator-diff.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { MaybePromise } from '@theia/core/lib/common/types';
2
+ import { Event, Emitter } from '@theia/core/lib/common/event';
3
+ import { FileSystemPreferences, FileSystemConfiguration } from '@theia/filesystem/lib/common/filesystem-preferences';
4
+ import { FileNavigatorPreferences, FileNavigatorConfiguration } from '../common/navigator-preferences';
5
+ import { PreferenceChangeEvent } from '@theia/core';
6
+ /**
7
+ * Filter for omitting elements from the navigator. For more details on the exclusion patterns,
8
+ * one should check either the manual with `man 5 gitignore` or just [here](https://git-scm.com/docs/gitignore).
9
+ */
10
+ export declare class FileNavigatorFilter {
11
+ protected readonly preferences: FileNavigatorPreferences;
12
+ protected readonly emitter: Emitter<void>;
13
+ protected filterPredicate: FileNavigatorFilter.Predicate;
14
+ protected showHiddenFiles: boolean;
15
+ protected readonly filesPreferences: FileSystemPreferences;
16
+ constructor(preferences: FileNavigatorPreferences);
17
+ protected init(): void;
18
+ protected doInit(): Promise<void>;
19
+ filter<T extends {
20
+ id: string;
21
+ }>(items: MaybePromise<T[]>): Promise<T[]>;
22
+ get onFilterChanged(): Event<void>;
23
+ protected filterItem(item: {
24
+ id: string;
25
+ }): boolean;
26
+ protected fireFilterChanged(): void;
27
+ protected onFilesPreferenceChanged(event: PreferenceChangeEvent<FileSystemConfiguration>): void;
28
+ protected onPreferenceChanged(event: PreferenceChangeEvent<FileNavigatorConfiguration>): void;
29
+ protected createFilterPredicate(exclusions: FileNavigatorFilter.Exclusions): FileNavigatorFilter.Predicate;
30
+ toggleHiddenFiles(): void;
31
+ protected interceptExclusions(exclusions: FileNavigatorFilter.Exclusions): FileNavigatorFilter.Exclusions;
32
+ }
33
+ export declare namespace FileNavigatorFilter {
34
+ /**
35
+ * File navigator filter predicate.
36
+ */
37
+ interface Predicate {
38
+ /**
39
+ * Returns `true` if the item should filtered our from the navigator. Otherwise, `true`.
40
+ *
41
+ * @param item the identifier of a tree node.
42
+ */
43
+ filter(item: {
44
+ id: string;
45
+ }): boolean;
46
+ }
47
+ namespace Predicate {
48
+ /**
49
+ * Wraps a bunch of predicates and returns with a new one that evaluates to `true` if
50
+ * each of the wrapped predicates evaluates to `true`. Otherwise, `false`.
51
+ */
52
+ function and(...predicates: Predicate[]): Predicate;
53
+ }
54
+ /**
55
+ * Type for the exclusion patterns. The property keys are the patterns, values are whether the exclusion is enabled or not.
56
+ */
57
+ interface Exclusions {
58
+ [key: string]: boolean;
59
+ }
60
+ }
61
+ /**
62
+ * Concrete filter navigator filter predicate that is decoupled from the preferences.
63
+ */
64
+ export declare class FileNavigatorFilterPredicate implements FileNavigatorFilter.Predicate {
65
+ private readonly delegate;
66
+ constructor(exclusions: FileNavigatorFilter.Exclusions);
67
+ filter(item: {
68
+ id: string;
69
+ }): boolean;
70
+ protected createDelegate(pattern: string): FileNavigatorFilter.Predicate;
71
+ }
72
+ //# sourceMappingURL=navigator-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigator-filter.d.ts","sourceRoot":"","sources":["../../src/browser/navigator-filter.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AACrH,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AACvG,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;GAGG;AACH,qBACa,mBAAmB;IAUU,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,wBAAwB;IAT9F,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAuB;IAEhE,SAAS,CAAC,eAAe,EAAE,mBAAmB,CAAC,SAAS,CAAC;IACzD,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC;IAGnC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;gBAGF,WAAW,EAAE,wBAAwB;IAI9F,SAAS,CAAC,IAAI,IAAI,IAAI;cAIN,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC,MAAM,CAAC,CAAC,SAAS;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAI9E,IAAI,eAAe,IAAI,KAAK,CAAC,IAAI,CAAC,CAEjC;IAED,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IAInD,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAInC,SAAS,CAAC,wBAAwB,CAAC,KAAK,EAAE,qBAAqB,CAAC,uBAAuB,CAAC,GAAG,IAAI;IAS/F,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,CAAC,0BAA0B,CAAC,GAAG,IAAI;IAG7F,SAAS,CAAC,qBAAqB,CAAC,UAAU,EAAE,mBAAmB,CAAC,UAAU,GAAG,mBAAmB,CAAC,SAAS;IAI1G,iBAAiB,IAAI,IAAI;IAQzB,SAAS,CAAC,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,CAAC,UAAU,GAAG,mBAAmB,CAAC,UAAU;CAO5G;AAED,yBAAiB,mBAAmB,CAAC;IAEjC;;OAEG;IACH,UAAiB,SAAS;QAEtB;;;;WAIG;QACH,MAAM,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC;KAEzC;IAED,UAAiB,SAAS,CAAC;QAEvB;;;WAGG;QACH,SAAgB,GAAG,CAAC,GAAG,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,CAIzD;KAEJ;IAED;;OAEG;IACH,UAAiB,UAAU;QACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KAC1B;CAEJ;AAED;;GAEG;AACH,qBAAa,4BAA6B,YAAW,mBAAmB,CAAC,SAAS;IAE9E,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgC;gBAE7C,UAAU,EAAE,mBAAmB,CAAC,UAAU;IAKtD,MAAM,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IAIrC,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,CAAC,SAAS;CAO3E"}
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2018 TypeFox and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.FileNavigatorFilterPredicate = exports.FileNavigatorFilter = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const inversify_1 = require("@theia/core/shared/inversify");
21
+ const minimatch_1 = require("minimatch");
22
+ const event_1 = require("@theia/core/lib/common/event");
23
+ const filesystem_preferences_1 = require("@theia/filesystem/lib/common/filesystem-preferences");
24
+ const navigator_preferences_1 = require("../common/navigator-preferences");
25
+ /**
26
+ * Filter for omitting elements from the navigator. For more details on the exclusion patterns,
27
+ * one should check either the manual with `man 5 gitignore` or just [here](https://git-scm.com/docs/gitignore).
28
+ */
29
+ let FileNavigatorFilter = class FileNavigatorFilter {
30
+ constructor(preferences) {
31
+ this.preferences = preferences;
32
+ this.emitter = new event_1.Emitter();
33
+ }
34
+ init() {
35
+ this.doInit();
36
+ }
37
+ async doInit() {
38
+ this.filterPredicate = this.createFilterPredicate(this.filesPreferences['files.exclude']);
39
+ this.filesPreferences.onPreferenceChanged(event => this.onFilesPreferenceChanged(event));
40
+ this.preferences.onPreferenceChanged(event => this.onPreferenceChanged(event));
41
+ }
42
+ async filter(items) {
43
+ return (await items).filter(item => this.filterItem(item));
44
+ }
45
+ get onFilterChanged() {
46
+ return this.emitter.event;
47
+ }
48
+ filterItem(item) {
49
+ return this.filterPredicate.filter(item);
50
+ }
51
+ fireFilterChanged() {
52
+ this.emitter.fire(undefined);
53
+ }
54
+ onFilesPreferenceChanged(event) {
55
+ const { preferenceName } = event;
56
+ if (preferenceName === 'files.exclude') {
57
+ const filesExcludes = this.filesPreferences['files.exclude'];
58
+ this.filterPredicate = this.createFilterPredicate(filesExcludes);
59
+ this.fireFilterChanged();
60
+ }
61
+ }
62
+ onPreferenceChanged(event) {
63
+ }
64
+ createFilterPredicate(exclusions) {
65
+ return new FileNavigatorFilterPredicate(this.interceptExclusions(exclusions));
66
+ }
67
+ toggleHiddenFiles() {
68
+ this.showHiddenFiles = !this.showHiddenFiles;
69
+ const filesExcludes = this.filesPreferences['files.exclude'];
70
+ this.filterPredicate = this.createFilterPredicate(filesExcludes || {});
71
+ this.fireFilterChanged();
72
+ }
73
+ interceptExclusions(exclusions) {
74
+ return {
75
+ ...exclusions,
76
+ '**/.*': this.showHiddenFiles
77
+ };
78
+ }
79
+ };
80
+ exports.FileNavigatorFilter = FileNavigatorFilter;
81
+ tslib_1.__decorate([
82
+ (0, inversify_1.inject)(filesystem_preferences_1.FileSystemPreferences),
83
+ tslib_1.__metadata("design:type", Object)
84
+ ], FileNavigatorFilter.prototype, "filesPreferences", void 0);
85
+ tslib_1.__decorate([
86
+ (0, inversify_1.postConstruct)(),
87
+ tslib_1.__metadata("design:type", Function),
88
+ tslib_1.__metadata("design:paramtypes", []),
89
+ tslib_1.__metadata("design:returntype", void 0)
90
+ ], FileNavigatorFilter.prototype, "init", null);
91
+ exports.FileNavigatorFilter = FileNavigatorFilter = tslib_1.__decorate([
92
+ (0, inversify_1.injectable)(),
93
+ tslib_1.__param(0, (0, inversify_1.inject)(navigator_preferences_1.FileNavigatorPreferences)),
94
+ tslib_1.__metadata("design:paramtypes", [Object])
95
+ ], FileNavigatorFilter);
96
+ (function (FileNavigatorFilter) {
97
+ let Predicate;
98
+ (function (Predicate) {
99
+ /**
100
+ * Wraps a bunch of predicates and returns with a new one that evaluates to `true` if
101
+ * each of the wrapped predicates evaluates to `true`. Otherwise, `false`.
102
+ */
103
+ function and(...predicates) {
104
+ return {
105
+ filter: id => predicates.every(predicate => predicate.filter(id))
106
+ };
107
+ }
108
+ Predicate.and = and;
109
+ })(Predicate = FileNavigatorFilter.Predicate || (FileNavigatorFilter.Predicate = {}));
110
+ })(FileNavigatorFilter || (exports.FileNavigatorFilter = FileNavigatorFilter = {}));
111
+ /**
112
+ * Concrete filter navigator filter predicate that is decoupled from the preferences.
113
+ */
114
+ class FileNavigatorFilterPredicate {
115
+ constructor(exclusions) {
116
+ const patterns = Object.keys(exclusions).map(pattern => ({ pattern, enabled: exclusions[pattern] })).filter(object => object.enabled).map(object => object.pattern);
117
+ this.delegate = FileNavigatorFilter.Predicate.and(...patterns.map(pattern => this.createDelegate(pattern)));
118
+ }
119
+ filter(item) {
120
+ return this.delegate.filter(item);
121
+ }
122
+ createDelegate(pattern) {
123
+ const delegate = new minimatch_1.Minimatch(pattern, { matchBase: true });
124
+ return {
125
+ filter: item => !delegate.match(item.id)
126
+ };
127
+ }
128
+ }
129
+ exports.FileNavigatorFilterPredicate = FileNavigatorFilterPredicate;
130
+ //# sourceMappingURL=navigator-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigator-filter.js","sourceRoot":"","sources":["../../src/browser/navigator-filter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=navigator-filter.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigator-filter.spec.d.ts","sourceRoot":"","sources":["../../src/browser/navigator-filter.spec.ts"],"names":[],"mappings":""}