custom-electron-titlebar 3.2.6 → 3.2.10
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/.github/FUNDING.yml +1 -0
- package/README.md +15 -24
- package/_config.yml +1 -0
- package/{lib → build}/browser/browser.d.ts +0 -0
- package/{lib → build}/browser/browser.js +0 -0
- package/{lib → build}/browser/browser.js.map +0 -0
- package/{lib → build}/browser/event.d.ts +0 -0
- package/{lib → build}/browser/event.js +2 -1
- package/{lib → build}/browser/event.js.map +1 -1
- package/{lib → build}/browser/iframe.d.ts +0 -0
- package/{lib → build}/browser/iframe.js +0 -0
- package/{lib → build}/browser/iframe.js.map +0 -0
- package/{lib → build}/browser/keyboardEvent.d.ts +0 -0
- package/{lib → build}/browser/keyboardEvent.js +0 -0
- package/{lib → build}/browser/keyboardEvent.js.map +0 -0
- package/{lib → build}/browser/mouseEvent.d.ts +0 -0
- package/{lib → build}/browser/mouseEvent.js +0 -0
- package/{lib → build}/browser/mouseEvent.js.map +0 -0
- package/{lib → build}/common/arrays.d.ts +0 -0
- package/{lib → build}/common/arrays.js +0 -0
- package/{lib → build}/common/arrays.js.map +0 -0
- package/{lib → build}/common/async.d.ts +0 -0
- package/{lib → build}/common/async.js +0 -0
- package/{lib → build}/common/async.js.map +0 -0
- package/{lib → build}/common/charCode.d.ts +0 -0
- package/{lib → build}/common/charCode.js +0 -0
- package/{lib → build}/common/charCode.js.map +0 -0
- package/{lib → build}/common/color.d.ts +0 -0
- package/{lib → build}/common/color.js +0 -0
- package/{lib → build}/common/color.js.map +0 -0
- package/{lib → build}/common/dom.d.ts +0 -0
- package/{lib → build}/common/dom.js +16 -14
- package/build/common/dom.js.map +1 -0
- package/{lib → build}/common/event.d.ts +0 -0
- package/{lib → build}/common/event.js +1 -1
- package/build/common/event.js.map +1 -0
- package/{lib → build}/common/iterator.d.ts +0 -0
- package/{lib → build}/common/iterator.js +0 -0
- package/{lib → build}/common/iterator.js.map +0 -0
- package/{lib → build}/common/keyCodes.d.ts +0 -0
- package/{lib → build}/common/keyCodes.js +0 -0
- package/{lib → build}/common/keyCodes.js.map +0 -0
- package/{lib → build}/common/lifecycle.d.ts +0 -0
- package/{lib → build}/common/lifecycle.js +0 -0
- package/{lib → build}/common/lifecycle.js.map +0 -0
- package/{lib → build}/common/linkedList.d.ts +0 -0
- package/{lib → build}/common/linkedList.js +0 -0
- package/{lib → build}/common/linkedList.js.map +0 -0
- package/{lib → build}/common/platform.d.ts +0 -0
- package/{lib → build}/common/platform.js +0 -0
- package/{lib → build}/common/platform.js.map +0 -0
- package/{lib → build}/index.d.ts +0 -0
- package/{lib → build}/index.js +0 -0
- package/{lib → build}/index.js.map +0 -0
- package/{lib → build}/menu/menu.d.ts +0 -0
- package/{lib → build}/menu/menu.js +38 -38
- package/build/menu/menu.js.map +1 -0
- package/{lib → build}/menu/menuitem.d.ts +10 -2
- package/{lib → build}/menu/menuitem.js +70 -34
- package/build/menu/menuitem.js.map +1 -0
- package/{lib → build}/menubar.d.ts +0 -0
- package/{lib → build}/menubar.js +29 -30
- package/build/menubar.js.map +1 -0
- package/{lib → build}/themebar.d.ts +0 -0
- package/{lib → build}/themebar.js +2 -2
- package/build/themebar.js.map +1 -0
- package/{lib → build}/titlebar.d.ts +0 -0
- package/{lib → build}/titlebar.js +61 -58
- package/build/titlebar.js.map +1 -0
- package/package.json +13 -7
- package/lib/common/dom.js.map +0 -1
- package/lib/common/enableNativeMenuCommands.d.ts +0 -1
- package/lib/common/enableNativeMenuCommands.js +0 -32
- package/lib/common/enableNativeMenuCommands.js.map +0 -1
- package/lib/common/event.js.map +0 -1
- package/lib/main.d.ts +0 -1
- package/lib/main.js +0 -14
- package/lib/main.js.map +0 -1
- package/lib/menu/menu.js.map +0 -1
- package/lib/menu/menuitem.js.map +0 -1
- package/lib/menubar.js.map +0 -1
- package/lib/themebar.js.map +0 -1
- package/lib/titlebar.js.map +0 -1
- package/lib/vs/base/browser/browser.js +0 -150
- package/lib/vs/base/browser/canIUse.js +0 -58
- package/lib/vs/base/browser/codicons.js +0 -37
- package/lib/vs/base/browser/contextmenu.js +0 -9
- package/lib/vs/base/browser/dnd.js +0 -113
- package/lib/vs/base/browser/dom.js +0 -1417
- package/lib/vs/base/browser/event.js +0 -36
- package/lib/vs/base/browser/fastDomNode.js +0 -265
- package/lib/vs/base/browser/formattedTextRenderer.js +0 -248
- package/lib/vs/base/browser/globalMouseMoveMonitor.js +0 -137
- package/lib/vs/base/browser/history.js +0 -9
- package/lib/vs/base/browser/iframe.js +0 -126
- package/lib/vs/base/browser/keyboardEvent.js +0 -599
- package/lib/vs/base/browser/mouseEvent.js +0 -155
- package/lib/vs/base/browser/touch.js +0 -315
- package/lib/vs/base/browser/ui/actionbar/actionViewItems.js +0 -397
- package/lib/vs/base/browser/ui/actionbar/actionbar.js +0 -583
- package/lib/vs/base/browser/ui/checkbox/checkbox.js +0 -251
- package/lib/vs/base/browser/ui/codicons/codiconLabel.js +0 -31
- package/lib/vs/base/browser/ui/codicons/codiconStyles.js +0 -47
- package/lib/vs/base/browser/ui/contextview/contextview.js +0 -367
- package/lib/vs/base/browser/ui/dropdown/dropdown.js +0 -256
- package/lib/vs/base/browser/ui/dropdown/dropdownActionViewItem.js +0 -120
- package/lib/vs/base/browser/ui/keybindingLabel/keybindingLabel.js +0 -118
- package/lib/vs/base/browser/ui/list/list.js +0 -54
- package/lib/vs/base/browser/ui/list/listPaging.js +0 -322
- package/lib/vs/base/browser/ui/list/listView.js +0 -1388
- package/lib/vs/base/browser/ui/list/listWidget.js +0 -1709
- package/lib/vs/base/browser/ui/list/rangeMap.js +0 -223
- package/lib/vs/base/browser/ui/list/rowCache.js +0 -113
- package/lib/vs/base/browser/ui/list/splice.js +0 -23
- package/lib/vs/base/browser/ui/menu/menu.js +0 -1371
- package/lib/vs/base/browser/ui/menu/menubar.js +0 -1139
- package/lib/vs/base/browser/ui/scrollbar/abstractScrollbar.js +0 -278
- package/lib/vs/base/browser/ui/scrollbar/horizontalScrollbar.js +0 -115
- package/lib/vs/base/browser/ui/scrollbar/scrollableElement.js +0 -646
- package/lib/vs/base/browser/ui/scrollbar/scrollableElementOptions.js +0 -9
- package/lib/vs/base/browser/ui/scrollbar/scrollbarArrow.js +0 -106
- package/lib/vs/base/browser/ui/scrollbar/scrollbarState.js +0 -184
- package/lib/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.js +0 -116
- package/lib/vs/base/browser/ui/scrollbar/verticalScrollbar.js +0 -114
- package/lib/vs/base/browser/ui/selectBox/selectBox.js +0 -85
- package/lib/vs/base/browser/ui/selectBox/selectBoxCustom.js +0 -985
- package/lib/vs/base/browser/ui/selectBox/selectBoxNative.js +0 -188
- package/lib/vs/base/browser/ui/toolbar/toolbar.js +0 -206
- package/lib/vs/base/browser/ui/widget.js +0 -69
- package/lib/vs/base/common/actions.js +0 -224
- package/lib/vs/base/common/amd.js +0 -31
- package/lib/vs/base/common/arrays.js +0 -641
- package/lib/vs/base/common/assert.js +0 -21
- package/lib/vs/base/common/async.js +0 -966
- package/lib/vs/base/common/buffer.js +0 -250
- package/lib/vs/base/common/cache.js +0 -40
- package/lib/vs/base/common/cancellation.js +0 -146
- package/lib/vs/base/common/charCode.js +0 -9
- package/lib/vs/base/common/codicon.js +0 -136
- package/lib/vs/base/common/codicons.js +0 -1378
- package/lib/vs/base/common/collections.js +0 -133
- package/lib/vs/base/common/color.js +0 -716
- package/lib/vs/base/common/comparers.js +0 -280
- package/lib/vs/base/common/console.js +0 -142
- package/lib/vs/base/common/date.js +0 -113
- package/lib/vs/base/common/decorators.js +0 -169
- package/lib/vs/base/common/errorMessage.js +0 -93
- package/lib/vs/base/common/errors.js +0 -213
- package/lib/vs/base/common/errorsWithActions.js +0 -28
- package/lib/vs/base/common/event.js +0 -873
- package/lib/vs/base/common/extpath.js +0 -401
- package/lib/vs/base/common/filters.js +0 -948
- package/lib/vs/base/common/functional.js +0 -28
- package/lib/vs/base/common/fuzzyScorer.js +0 -811
- package/lib/vs/base/common/glob.js +0 -696
- package/lib/vs/base/common/hash.js +0 -359
- package/lib/vs/base/common/history.js +0 -116
- package/lib/vs/base/common/htmlContent.js +0 -162
- package/lib/vs/base/common/idGenerator.js +0 -25
- package/lib/vs/base/common/iterator.js +0 -118
- package/lib/vs/base/common/json.js +0 -1624
- package/lib/vs/base/common/jsonEdit.js +0 -272
- package/lib/vs/base/common/jsonErrorMessages.js +0 -69
- package/lib/vs/base/common/jsonFormatter.js +0 -316
- package/lib/vs/base/common/jsonSchema.js +0 -9
- package/lib/vs/base/common/keyCodes.js +0 -591
- package/lib/vs/base/common/keybindingLabels.js +0 -231
- package/lib/vs/base/common/keybindingParser.js +0 -142
- package/lib/vs/base/common/labels.js +0 -430
- package/lib/vs/base/common/lazy.js +0 -71
- package/lib/vs/base/common/lifecycle.js +0 -308
- package/lib/vs/base/common/linkedList.js +0 -152
- package/lib/vs/base/common/linkedText.js +0 -73
- package/lib/vs/base/common/map.js +0 -1108
- package/lib/vs/base/common/marshalling.js +0 -80
- package/lib/vs/base/common/mime.js +0 -321
- package/lib/vs/base/common/navigator.js +0 -50
- package/lib/vs/base/common/network.js +0 -160
- package/lib/vs/base/common/normalization.js +0 -78
- package/lib/vs/base/common/numbers.js +0 -55
- package/lib/vs/base/common/objects.js +0 -268
- package/lib/vs/base/common/paging.js +0 -190
- package/lib/vs/base/common/parsers.js +0 -78
- package/lib/vs/base/common/path.js +0 -1550
- package/lib/vs/base/common/platform.js +0 -245
- package/lib/vs/base/common/process.js +0 -52
- package/lib/vs/base/common/processes.js +0 -32
- package/lib/vs/base/common/range.js +0 -79
- package/lib/vs/base/common/resourceTree.js +0 -185
- package/lib/vs/base/common/resources.js +0 -421
- package/lib/vs/base/common/scanCode.js +0 -1472
- package/lib/vs/base/common/scrollable.js +0 -397
- package/lib/vs/base/common/search.js +0 -55
- package/lib/vs/base/common/sequence.js +0 -64
- package/lib/vs/base/common/severity.js +0 -55
- package/lib/vs/base/common/skipList.js +0 -234
- package/lib/vs/base/common/stopwatch.js +0 -45
- package/lib/vs/base/common/stream.js +0 -418
- package/lib/vs/base/common/strings.js +0 -1283
- package/lib/vs/base/common/styler.js +0 -9
- package/lib/vs/base/common/types.js +0 -296
- package/lib/vs/base/common/uint.js +0 -46
- package/lib/vs/base/common/uri.js +0 -756
- package/lib/vs/base/common/uriIpc.js +0 -154
- package/lib/vs/base/common/uuid.js +0 -70
- package/lib/vs/nls.mock.js +0 -31
- package/lib/vs/platform/actions/browser/menuEntryActionViewItem.js +0 -342
- package/lib/vs/platform/actions/common/actions.js +0 -456
- package/lib/vs/platform/actions/common/menuService.js +0 -194
- package/lib/vs/platform/clipboard/browser/clipboardService.js +0 -99
- package/lib/vs/platform/clipboard/common/clipboardService.js +0 -14
- package/lib/vs/platform/contextkey/common/contextkey.js +0 -1210
- package/lib/vs/platform/contextkey/common/contextkeys.js +0 -23
- package/lib/vs/platform/contextview/browser/contextView.js +0 -15
- package/lib/vs/platform/contextview/browser/contextViewService.js +0 -96
- package/lib/vs/platform/environment/common/argv.js +0 -9
- package/lib/vs/platform/environment/common/environment.js +0 -15
- package/lib/vs/platform/instantiation/common/descriptors.js +0 -25
- package/lib/vs/platform/instantiation/common/extensions.js +0 -26
- package/lib/vs/platform/instantiation/common/graph.js +0 -93
- package/lib/vs/platform/instantiation/common/instantiation.js +0 -84
- package/lib/vs/platform/instantiation/common/instantiationService.js +0 -361
- package/lib/vs/platform/instantiation/common/serviceCollection.js +0 -39
- package/lib/vs/platform/keybinding/common/baseResolvedKeybinding.js +0 -73
- package/lib/vs/platform/keybinding/common/keybinding.js +0 -14
- package/lib/vs/platform/keybinding/common/keybindingResolver.js +0 -391
- package/lib/vs/platform/keybinding/common/keybindingsRegistry.js +0 -229
- package/lib/vs/platform/keybinding/common/resolvedKeybindingItem.js +0 -47
- package/lib/vs/platform/keybinding/common/usLayoutResolvedKeybinding.js +0 -160
- package/lib/vs/platform/layout/browser/layoutService.js +0 -14
- package/lib/vs/platform/menubar/common/menubar.js +0 -34
- package/lib/vs/platform/registry/common/platform.js +0 -38
- package/lib/vs/platform/theme/browser/checkbox.js +0 -32
- package/lib/vs/platform/theme/common/colorRegistry.js +0 -1154
- package/lib/vs/platform/theme/common/styler.js +0 -290
- package/lib/vs/platform/theme/common/theme.js +0 -21
- package/lib/vs/platform/theme/common/themeService.js +0 -176
- package/lib/vs/platform/theme/common/tokenClassificationRegistry.js +0 -540
- package/lib/vs/platform/theme/test/common/testThemeService.js +0 -98
|
@@ -1,401 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*---------------------------------------------------------------------------------------------
|
|
3
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
-
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
5
|
-
*--------------------------------------------------------------------------------------------*/
|
|
6
|
-
|
|
7
|
-
Object.defineProperty(exports, "__esModule", {
|
|
8
|
-
value: true
|
|
9
|
-
});
|
|
10
|
-
exports.parseLineAndColumnAware = exports.indexOfPath = exports.isRootOrDriveLetter = exports.sanitizeFilePath = exports.isWindowsDriveLetter = exports.isEqualOrParent = exports.isEqual = exports.isValidBasename = exports.isUNC = exports.getRoot = exports.toSlashes = exports.isPathSeparator = void 0;
|
|
11
|
-
|
|
12
|
-
const platform_1 = require("./platform");
|
|
13
|
-
|
|
14
|
-
const strings_1 = require("./strings");
|
|
15
|
-
|
|
16
|
-
const path_1 = require("./path");
|
|
17
|
-
|
|
18
|
-
const types_1 = require("./types");
|
|
19
|
-
|
|
20
|
-
function isPathSeparator(code) {
|
|
21
|
-
return code === 47
|
|
22
|
-
/* Slash */
|
|
23
|
-
|| code === 92
|
|
24
|
-
/* Backslash */
|
|
25
|
-
;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
exports.isPathSeparator = isPathSeparator;
|
|
29
|
-
/**
|
|
30
|
-
* Takes a Windows OS path and changes backward slashes to forward slashes.
|
|
31
|
-
* This should only be done for OS paths from Windows (or user provided paths potentially from Windows).
|
|
32
|
-
* Using it on a Linux or MaxOS path might change it.
|
|
33
|
-
*/
|
|
34
|
-
|
|
35
|
-
function toSlashes(osPath) {
|
|
36
|
-
return osPath.replace(/[\\/]/g, path_1.posix.sep);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
exports.toSlashes = toSlashes;
|
|
40
|
-
/**
|
|
41
|
-
* Computes the _root_ this path, like `getRoot('c:\files') === c:\`,
|
|
42
|
-
* `getRoot('files:///files/path') === files:///`,
|
|
43
|
-
* or `getRoot('\\server\shares\path') === \\server\shares\`
|
|
44
|
-
*/
|
|
45
|
-
|
|
46
|
-
function getRoot(path, sep = path_1.posix.sep) {
|
|
47
|
-
if (!path) {
|
|
48
|
-
return '';
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const len = path.length;
|
|
52
|
-
const firstLetter = path.charCodeAt(0);
|
|
53
|
-
|
|
54
|
-
if (isPathSeparator(firstLetter)) {
|
|
55
|
-
if (isPathSeparator(path.charCodeAt(1))) {
|
|
56
|
-
// UNC candidate \\localhost\shares\ddd
|
|
57
|
-
// ^^^^^^^^^^^^^^^^^^^
|
|
58
|
-
if (!isPathSeparator(path.charCodeAt(2))) {
|
|
59
|
-
let pos = 3;
|
|
60
|
-
const start = pos;
|
|
61
|
-
|
|
62
|
-
for (; pos < len; pos++) {
|
|
63
|
-
if (isPathSeparator(path.charCodeAt(pos))) {
|
|
64
|
-
break;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
if (start !== pos && !isPathSeparator(path.charCodeAt(pos + 1))) {
|
|
69
|
-
pos += 1;
|
|
70
|
-
|
|
71
|
-
for (; pos < len; pos++) {
|
|
72
|
-
if (isPathSeparator(path.charCodeAt(pos))) {
|
|
73
|
-
return path.slice(0, pos + 1) // consume this separator
|
|
74
|
-
.replace(/[\\/]/g, sep);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
} // /user/far
|
|
80
|
-
// ^
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
return sep;
|
|
84
|
-
} else if (isWindowsDriveLetter(firstLetter)) {
|
|
85
|
-
// check for windows drive letter c:\ or c:
|
|
86
|
-
if (path.charCodeAt(1) === 58
|
|
87
|
-
/* Colon */
|
|
88
|
-
) {
|
|
89
|
-
if (isPathSeparator(path.charCodeAt(2))) {
|
|
90
|
-
// C:\fff
|
|
91
|
-
// ^^^
|
|
92
|
-
return path.slice(0, 2) + sep;
|
|
93
|
-
} else {
|
|
94
|
-
// C:
|
|
95
|
-
// ^^
|
|
96
|
-
return path.slice(0, 2);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
} // check for URI
|
|
100
|
-
// scheme://authority/path
|
|
101
|
-
// ^^^^^^^^^^^^^^^^^^^
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
let pos = path.indexOf('://');
|
|
105
|
-
|
|
106
|
-
if (pos !== -1) {
|
|
107
|
-
pos += 3; // 3 -> "://".length
|
|
108
|
-
|
|
109
|
-
for (; pos < len; pos++) {
|
|
110
|
-
if (isPathSeparator(path.charCodeAt(pos))) {
|
|
111
|
-
return path.slice(0, pos + 1); // consume this separator
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
return '';
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
exports.getRoot = getRoot;
|
|
120
|
-
/**
|
|
121
|
-
* Check if the path follows this pattern: `\\hostname\sharename`.
|
|
122
|
-
*
|
|
123
|
-
* @see https://msdn.microsoft.com/en-us/library/gg465305.aspx
|
|
124
|
-
* @return A boolean indication if the path is a UNC path, on none-windows
|
|
125
|
-
* always false.
|
|
126
|
-
*/
|
|
127
|
-
|
|
128
|
-
function isUNC(path) {
|
|
129
|
-
if (!platform_1.isWindows) {
|
|
130
|
-
// UNC is a windows concept
|
|
131
|
-
return false;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
if (!path || path.length < 5) {
|
|
135
|
-
// at least \\a\b
|
|
136
|
-
return false;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
let code = path.charCodeAt(0);
|
|
140
|
-
|
|
141
|
-
if (code !== 92
|
|
142
|
-
/* Backslash */
|
|
143
|
-
) {
|
|
144
|
-
return false;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
code = path.charCodeAt(1);
|
|
148
|
-
|
|
149
|
-
if (code !== 92
|
|
150
|
-
/* Backslash */
|
|
151
|
-
) {
|
|
152
|
-
return false;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
let pos = 2;
|
|
156
|
-
const start = pos;
|
|
157
|
-
|
|
158
|
-
for (; pos < path.length; pos++) {
|
|
159
|
-
code = path.charCodeAt(pos);
|
|
160
|
-
|
|
161
|
-
if (code === 92
|
|
162
|
-
/* Backslash */
|
|
163
|
-
) {
|
|
164
|
-
break;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
if (start === pos) {
|
|
169
|
-
return false;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
code = path.charCodeAt(pos + 1);
|
|
173
|
-
|
|
174
|
-
if (isNaN(code) || code === 92
|
|
175
|
-
/* Backslash */
|
|
176
|
-
) {
|
|
177
|
-
return false;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
return true;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
exports.isUNC = isUNC; // Reference: https://en.wikipedia.org/wiki/Filename
|
|
184
|
-
|
|
185
|
-
const WINDOWS_INVALID_FILE_CHARS = /[\\/:\*\?"<>\|]/g;
|
|
186
|
-
const UNIX_INVALID_FILE_CHARS = /[\\/]/g;
|
|
187
|
-
const WINDOWS_FORBIDDEN_NAMES = /^(con|prn|aux|clock\$|nul|lpt[0-9]|com[0-9])(\.(.*?))?$/i;
|
|
188
|
-
|
|
189
|
-
function isValidBasename(name, isWindowsOS = platform_1.isWindows) {
|
|
190
|
-
const invalidFileChars = isWindowsOS ? WINDOWS_INVALID_FILE_CHARS : UNIX_INVALID_FILE_CHARS;
|
|
191
|
-
|
|
192
|
-
if (!name || name.length === 0 || /^\s+$/.test(name)) {
|
|
193
|
-
return false; // require a name that is not just whitespace
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
invalidFileChars.lastIndex = 0; // the holy grail of software development
|
|
197
|
-
|
|
198
|
-
if (invalidFileChars.test(name)) {
|
|
199
|
-
return false; // check for certain invalid file characters
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
if (isWindowsOS && WINDOWS_FORBIDDEN_NAMES.test(name)) {
|
|
203
|
-
return false; // check for certain invalid file names
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
if (name === '.' || name === '..') {
|
|
207
|
-
return false; // check for reserved values
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
if (isWindowsOS && name[name.length - 1] === '.') {
|
|
211
|
-
return false; // Windows: file cannot end with a "."
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
if (isWindowsOS && name.length !== name.trim().length) {
|
|
215
|
-
return false; // Windows: file cannot end with a whitespace
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
if (name.length > 255) {
|
|
219
|
-
return false; // most file systems do not allow files > 255 length
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
return true;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
exports.isValidBasename = isValidBasename;
|
|
226
|
-
|
|
227
|
-
function isEqual(pathA, pathB, ignoreCase) {
|
|
228
|
-
const identityEquals = pathA === pathB;
|
|
229
|
-
|
|
230
|
-
if (!ignoreCase || identityEquals) {
|
|
231
|
-
return identityEquals;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
if (!pathA || !pathB) {
|
|
235
|
-
return false;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
return strings_1.equalsIgnoreCase(pathA, pathB);
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
exports.isEqual = isEqual;
|
|
242
|
-
|
|
243
|
-
function isEqualOrParent(base, parentCandidate, ignoreCase, separator = path_1.sep) {
|
|
244
|
-
if (base === parentCandidate) {
|
|
245
|
-
return true;
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
if (!base || !parentCandidate) {
|
|
249
|
-
return false;
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
if (parentCandidate.length > base.length) {
|
|
253
|
-
return false;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
if (ignoreCase) {
|
|
257
|
-
const beginsWith = strings_1.startsWithIgnoreCase(base, parentCandidate);
|
|
258
|
-
|
|
259
|
-
if (!beginsWith) {
|
|
260
|
-
return false;
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
if (parentCandidate.length === base.length) {
|
|
264
|
-
return true; // same path, different casing
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
let sepOffset = parentCandidate.length;
|
|
268
|
-
|
|
269
|
-
if (parentCandidate.charAt(parentCandidate.length - 1) === separator) {
|
|
270
|
-
sepOffset--; // adjust the expected sep offset in case our candidate already ends in separator character
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
return base.charAt(sepOffset) === separator;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
if (parentCandidate.charAt(parentCandidate.length - 1) !== separator) {
|
|
277
|
-
parentCandidate += separator;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
return base.indexOf(parentCandidate) === 0;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
exports.isEqualOrParent = isEqualOrParent;
|
|
284
|
-
|
|
285
|
-
function isWindowsDriveLetter(char0) {
|
|
286
|
-
return char0 >= 65
|
|
287
|
-
/* A */
|
|
288
|
-
&& char0 <= 90
|
|
289
|
-
/* Z */
|
|
290
|
-
|| char0 >= 97
|
|
291
|
-
/* a */
|
|
292
|
-
&& char0 <= 122
|
|
293
|
-
/* z */
|
|
294
|
-
;
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
exports.isWindowsDriveLetter = isWindowsDriveLetter;
|
|
298
|
-
|
|
299
|
-
function sanitizeFilePath(candidate, cwd) {
|
|
300
|
-
// Special case: allow to open a drive letter without trailing backslash
|
|
301
|
-
if (platform_1.isWindows && candidate.endsWith(':')) {
|
|
302
|
-
candidate += path_1.sep;
|
|
303
|
-
} // Ensure absolute
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
if (!path_1.isAbsolute(candidate)) {
|
|
307
|
-
candidate = path_1.join(cwd, candidate);
|
|
308
|
-
} // Ensure normalized
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
candidate = path_1.normalize(candidate); // Ensure no trailing slash/backslash
|
|
312
|
-
|
|
313
|
-
if (platform_1.isWindows) {
|
|
314
|
-
candidate = strings_1.rtrim(candidate, path_1.sep); // Special case: allow to open drive root ('C:\')
|
|
315
|
-
|
|
316
|
-
if (candidate.endsWith(':')) {
|
|
317
|
-
candidate += path_1.sep;
|
|
318
|
-
}
|
|
319
|
-
} else {
|
|
320
|
-
candidate = strings_1.rtrim(candidate, path_1.sep); // Special case: allow to open root ('/')
|
|
321
|
-
|
|
322
|
-
if (!candidate) {
|
|
323
|
-
candidate = path_1.sep;
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
return candidate;
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
exports.sanitizeFilePath = sanitizeFilePath;
|
|
331
|
-
|
|
332
|
-
function isRootOrDriveLetter(path) {
|
|
333
|
-
const pathNormalized = path_1.normalize(path);
|
|
334
|
-
|
|
335
|
-
if (platform_1.isWindows) {
|
|
336
|
-
if (path.length > 3) {
|
|
337
|
-
return false;
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
return isWindowsDriveLetter(pathNormalized.charCodeAt(0)) && pathNormalized.charCodeAt(1) === 58
|
|
341
|
-
/* Colon */
|
|
342
|
-
&& (path.length === 2 || pathNormalized.charCodeAt(2) === 92
|
|
343
|
-
/* Backslash */
|
|
344
|
-
);
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
return pathNormalized === path_1.posix.sep;
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
exports.isRootOrDriveLetter = isRootOrDriveLetter;
|
|
351
|
-
|
|
352
|
-
function indexOfPath(path, candidate, ignoreCase) {
|
|
353
|
-
if (candidate.length > path.length) {
|
|
354
|
-
return -1;
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
if (path === candidate) {
|
|
358
|
-
return 0;
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
if (ignoreCase) {
|
|
362
|
-
path = path.toLowerCase();
|
|
363
|
-
candidate = candidate.toLowerCase();
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
return path.indexOf(candidate);
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
exports.indexOfPath = indexOfPath;
|
|
370
|
-
|
|
371
|
-
function parseLineAndColumnAware(rawPath) {
|
|
372
|
-
const segments = rawPath.split(':'); // C:\file.txt:<line>:<column>
|
|
373
|
-
|
|
374
|
-
let path = undefined;
|
|
375
|
-
let line = undefined;
|
|
376
|
-
let column = undefined;
|
|
377
|
-
segments.forEach(segment => {
|
|
378
|
-
const segmentAsNumber = Number(segment);
|
|
379
|
-
|
|
380
|
-
if (!types_1.isNumber(segmentAsNumber)) {
|
|
381
|
-
path = !!path ? [path, segment].join(':') : segment; // a colon can well be part of a path (e.g. C:\...)
|
|
382
|
-
} else if (line === undefined) {
|
|
383
|
-
line = segmentAsNumber;
|
|
384
|
-
} else if (column === undefined) {
|
|
385
|
-
column = segmentAsNumber;
|
|
386
|
-
}
|
|
387
|
-
});
|
|
388
|
-
|
|
389
|
-
if (!path) {
|
|
390
|
-
throw new Error('Format for `--goto` should be: `FILE:LINE(:COLUMN)`');
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
return {
|
|
394
|
-
path,
|
|
395
|
-
line: line !== undefined ? line : undefined,
|
|
396
|
-
column: column !== undefined ? column : line !== undefined ? 1 : undefined // if we have a line, make sure column is also set
|
|
397
|
-
|
|
398
|
-
};
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
exports.parseLineAndColumnAware = parseLineAndColumnAware;
|