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.
Files changed (239) hide show
  1. package/.github/FUNDING.yml +1 -0
  2. package/README.md +15 -24
  3. package/_config.yml +1 -0
  4. package/{lib → build}/browser/browser.d.ts +0 -0
  5. package/{lib → build}/browser/browser.js +0 -0
  6. package/{lib → build}/browser/browser.js.map +0 -0
  7. package/{lib → build}/browser/event.d.ts +0 -0
  8. package/{lib → build}/browser/event.js +2 -1
  9. package/{lib → build}/browser/event.js.map +1 -1
  10. package/{lib → build}/browser/iframe.d.ts +0 -0
  11. package/{lib → build}/browser/iframe.js +0 -0
  12. package/{lib → build}/browser/iframe.js.map +0 -0
  13. package/{lib → build}/browser/keyboardEvent.d.ts +0 -0
  14. package/{lib → build}/browser/keyboardEvent.js +0 -0
  15. package/{lib → build}/browser/keyboardEvent.js.map +0 -0
  16. package/{lib → build}/browser/mouseEvent.d.ts +0 -0
  17. package/{lib → build}/browser/mouseEvent.js +0 -0
  18. package/{lib → build}/browser/mouseEvent.js.map +0 -0
  19. package/{lib → build}/common/arrays.d.ts +0 -0
  20. package/{lib → build}/common/arrays.js +0 -0
  21. package/{lib → build}/common/arrays.js.map +0 -0
  22. package/{lib → build}/common/async.d.ts +0 -0
  23. package/{lib → build}/common/async.js +0 -0
  24. package/{lib → build}/common/async.js.map +0 -0
  25. package/{lib → build}/common/charCode.d.ts +0 -0
  26. package/{lib → build}/common/charCode.js +0 -0
  27. package/{lib → build}/common/charCode.js.map +0 -0
  28. package/{lib → build}/common/color.d.ts +0 -0
  29. package/{lib → build}/common/color.js +0 -0
  30. package/{lib → build}/common/color.js.map +0 -0
  31. package/{lib → build}/common/dom.d.ts +0 -0
  32. package/{lib → build}/common/dom.js +16 -14
  33. package/build/common/dom.js.map +1 -0
  34. package/{lib → build}/common/event.d.ts +0 -0
  35. package/{lib → build}/common/event.js +1 -1
  36. package/build/common/event.js.map +1 -0
  37. package/{lib → build}/common/iterator.d.ts +0 -0
  38. package/{lib → build}/common/iterator.js +0 -0
  39. package/{lib → build}/common/iterator.js.map +0 -0
  40. package/{lib → build}/common/keyCodes.d.ts +0 -0
  41. package/{lib → build}/common/keyCodes.js +0 -0
  42. package/{lib → build}/common/keyCodes.js.map +0 -0
  43. package/{lib → build}/common/lifecycle.d.ts +0 -0
  44. package/{lib → build}/common/lifecycle.js +0 -0
  45. package/{lib → build}/common/lifecycle.js.map +0 -0
  46. package/{lib → build}/common/linkedList.d.ts +0 -0
  47. package/{lib → build}/common/linkedList.js +0 -0
  48. package/{lib → build}/common/linkedList.js.map +0 -0
  49. package/{lib → build}/common/platform.d.ts +0 -0
  50. package/{lib → build}/common/platform.js +0 -0
  51. package/{lib → build}/common/platform.js.map +0 -0
  52. package/{lib → build}/index.d.ts +0 -0
  53. package/{lib → build}/index.js +0 -0
  54. package/{lib → build}/index.js.map +0 -0
  55. package/{lib → build}/menu/menu.d.ts +0 -0
  56. package/{lib → build}/menu/menu.js +38 -38
  57. package/build/menu/menu.js.map +1 -0
  58. package/{lib → build}/menu/menuitem.d.ts +10 -2
  59. package/{lib → build}/menu/menuitem.js +70 -34
  60. package/build/menu/menuitem.js.map +1 -0
  61. package/{lib → build}/menubar.d.ts +0 -0
  62. package/{lib → build}/menubar.js +29 -30
  63. package/build/menubar.js.map +1 -0
  64. package/{lib → build}/themebar.d.ts +0 -0
  65. package/{lib → build}/themebar.js +2 -2
  66. package/build/themebar.js.map +1 -0
  67. package/{lib → build}/titlebar.d.ts +0 -0
  68. package/{lib → build}/titlebar.js +61 -58
  69. package/build/titlebar.js.map +1 -0
  70. package/package.json +13 -7
  71. package/lib/common/dom.js.map +0 -1
  72. package/lib/common/enableNativeMenuCommands.d.ts +0 -1
  73. package/lib/common/enableNativeMenuCommands.js +0 -32
  74. package/lib/common/enableNativeMenuCommands.js.map +0 -1
  75. package/lib/common/event.js.map +0 -1
  76. package/lib/main.d.ts +0 -1
  77. package/lib/main.js +0 -14
  78. package/lib/main.js.map +0 -1
  79. package/lib/menu/menu.js.map +0 -1
  80. package/lib/menu/menuitem.js.map +0 -1
  81. package/lib/menubar.js.map +0 -1
  82. package/lib/themebar.js.map +0 -1
  83. package/lib/titlebar.js.map +0 -1
  84. package/lib/vs/base/browser/browser.js +0 -150
  85. package/lib/vs/base/browser/canIUse.js +0 -58
  86. package/lib/vs/base/browser/codicons.js +0 -37
  87. package/lib/vs/base/browser/contextmenu.js +0 -9
  88. package/lib/vs/base/browser/dnd.js +0 -113
  89. package/lib/vs/base/browser/dom.js +0 -1417
  90. package/lib/vs/base/browser/event.js +0 -36
  91. package/lib/vs/base/browser/fastDomNode.js +0 -265
  92. package/lib/vs/base/browser/formattedTextRenderer.js +0 -248
  93. package/lib/vs/base/browser/globalMouseMoveMonitor.js +0 -137
  94. package/lib/vs/base/browser/history.js +0 -9
  95. package/lib/vs/base/browser/iframe.js +0 -126
  96. package/lib/vs/base/browser/keyboardEvent.js +0 -599
  97. package/lib/vs/base/browser/mouseEvent.js +0 -155
  98. package/lib/vs/base/browser/touch.js +0 -315
  99. package/lib/vs/base/browser/ui/actionbar/actionViewItems.js +0 -397
  100. package/lib/vs/base/browser/ui/actionbar/actionbar.js +0 -583
  101. package/lib/vs/base/browser/ui/checkbox/checkbox.js +0 -251
  102. package/lib/vs/base/browser/ui/codicons/codiconLabel.js +0 -31
  103. package/lib/vs/base/browser/ui/codicons/codiconStyles.js +0 -47
  104. package/lib/vs/base/browser/ui/contextview/contextview.js +0 -367
  105. package/lib/vs/base/browser/ui/dropdown/dropdown.js +0 -256
  106. package/lib/vs/base/browser/ui/dropdown/dropdownActionViewItem.js +0 -120
  107. package/lib/vs/base/browser/ui/keybindingLabel/keybindingLabel.js +0 -118
  108. package/lib/vs/base/browser/ui/list/list.js +0 -54
  109. package/lib/vs/base/browser/ui/list/listPaging.js +0 -322
  110. package/lib/vs/base/browser/ui/list/listView.js +0 -1388
  111. package/lib/vs/base/browser/ui/list/listWidget.js +0 -1709
  112. package/lib/vs/base/browser/ui/list/rangeMap.js +0 -223
  113. package/lib/vs/base/browser/ui/list/rowCache.js +0 -113
  114. package/lib/vs/base/browser/ui/list/splice.js +0 -23
  115. package/lib/vs/base/browser/ui/menu/menu.js +0 -1371
  116. package/lib/vs/base/browser/ui/menu/menubar.js +0 -1139
  117. package/lib/vs/base/browser/ui/scrollbar/abstractScrollbar.js +0 -278
  118. package/lib/vs/base/browser/ui/scrollbar/horizontalScrollbar.js +0 -115
  119. package/lib/vs/base/browser/ui/scrollbar/scrollableElement.js +0 -646
  120. package/lib/vs/base/browser/ui/scrollbar/scrollableElementOptions.js +0 -9
  121. package/lib/vs/base/browser/ui/scrollbar/scrollbarArrow.js +0 -106
  122. package/lib/vs/base/browser/ui/scrollbar/scrollbarState.js +0 -184
  123. package/lib/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.js +0 -116
  124. package/lib/vs/base/browser/ui/scrollbar/verticalScrollbar.js +0 -114
  125. package/lib/vs/base/browser/ui/selectBox/selectBox.js +0 -85
  126. package/lib/vs/base/browser/ui/selectBox/selectBoxCustom.js +0 -985
  127. package/lib/vs/base/browser/ui/selectBox/selectBoxNative.js +0 -188
  128. package/lib/vs/base/browser/ui/toolbar/toolbar.js +0 -206
  129. package/lib/vs/base/browser/ui/widget.js +0 -69
  130. package/lib/vs/base/common/actions.js +0 -224
  131. package/lib/vs/base/common/amd.js +0 -31
  132. package/lib/vs/base/common/arrays.js +0 -641
  133. package/lib/vs/base/common/assert.js +0 -21
  134. package/lib/vs/base/common/async.js +0 -966
  135. package/lib/vs/base/common/buffer.js +0 -250
  136. package/lib/vs/base/common/cache.js +0 -40
  137. package/lib/vs/base/common/cancellation.js +0 -146
  138. package/lib/vs/base/common/charCode.js +0 -9
  139. package/lib/vs/base/common/codicon.js +0 -136
  140. package/lib/vs/base/common/codicons.js +0 -1378
  141. package/lib/vs/base/common/collections.js +0 -133
  142. package/lib/vs/base/common/color.js +0 -716
  143. package/lib/vs/base/common/comparers.js +0 -280
  144. package/lib/vs/base/common/console.js +0 -142
  145. package/lib/vs/base/common/date.js +0 -113
  146. package/lib/vs/base/common/decorators.js +0 -169
  147. package/lib/vs/base/common/errorMessage.js +0 -93
  148. package/lib/vs/base/common/errors.js +0 -213
  149. package/lib/vs/base/common/errorsWithActions.js +0 -28
  150. package/lib/vs/base/common/event.js +0 -873
  151. package/lib/vs/base/common/extpath.js +0 -401
  152. package/lib/vs/base/common/filters.js +0 -948
  153. package/lib/vs/base/common/functional.js +0 -28
  154. package/lib/vs/base/common/fuzzyScorer.js +0 -811
  155. package/lib/vs/base/common/glob.js +0 -696
  156. package/lib/vs/base/common/hash.js +0 -359
  157. package/lib/vs/base/common/history.js +0 -116
  158. package/lib/vs/base/common/htmlContent.js +0 -162
  159. package/lib/vs/base/common/idGenerator.js +0 -25
  160. package/lib/vs/base/common/iterator.js +0 -118
  161. package/lib/vs/base/common/json.js +0 -1624
  162. package/lib/vs/base/common/jsonEdit.js +0 -272
  163. package/lib/vs/base/common/jsonErrorMessages.js +0 -69
  164. package/lib/vs/base/common/jsonFormatter.js +0 -316
  165. package/lib/vs/base/common/jsonSchema.js +0 -9
  166. package/lib/vs/base/common/keyCodes.js +0 -591
  167. package/lib/vs/base/common/keybindingLabels.js +0 -231
  168. package/lib/vs/base/common/keybindingParser.js +0 -142
  169. package/lib/vs/base/common/labels.js +0 -430
  170. package/lib/vs/base/common/lazy.js +0 -71
  171. package/lib/vs/base/common/lifecycle.js +0 -308
  172. package/lib/vs/base/common/linkedList.js +0 -152
  173. package/lib/vs/base/common/linkedText.js +0 -73
  174. package/lib/vs/base/common/map.js +0 -1108
  175. package/lib/vs/base/common/marshalling.js +0 -80
  176. package/lib/vs/base/common/mime.js +0 -321
  177. package/lib/vs/base/common/navigator.js +0 -50
  178. package/lib/vs/base/common/network.js +0 -160
  179. package/lib/vs/base/common/normalization.js +0 -78
  180. package/lib/vs/base/common/numbers.js +0 -55
  181. package/lib/vs/base/common/objects.js +0 -268
  182. package/lib/vs/base/common/paging.js +0 -190
  183. package/lib/vs/base/common/parsers.js +0 -78
  184. package/lib/vs/base/common/path.js +0 -1550
  185. package/lib/vs/base/common/platform.js +0 -245
  186. package/lib/vs/base/common/process.js +0 -52
  187. package/lib/vs/base/common/processes.js +0 -32
  188. package/lib/vs/base/common/range.js +0 -79
  189. package/lib/vs/base/common/resourceTree.js +0 -185
  190. package/lib/vs/base/common/resources.js +0 -421
  191. package/lib/vs/base/common/scanCode.js +0 -1472
  192. package/lib/vs/base/common/scrollable.js +0 -397
  193. package/lib/vs/base/common/search.js +0 -55
  194. package/lib/vs/base/common/sequence.js +0 -64
  195. package/lib/vs/base/common/severity.js +0 -55
  196. package/lib/vs/base/common/skipList.js +0 -234
  197. package/lib/vs/base/common/stopwatch.js +0 -45
  198. package/lib/vs/base/common/stream.js +0 -418
  199. package/lib/vs/base/common/strings.js +0 -1283
  200. package/lib/vs/base/common/styler.js +0 -9
  201. package/lib/vs/base/common/types.js +0 -296
  202. package/lib/vs/base/common/uint.js +0 -46
  203. package/lib/vs/base/common/uri.js +0 -756
  204. package/lib/vs/base/common/uriIpc.js +0 -154
  205. package/lib/vs/base/common/uuid.js +0 -70
  206. package/lib/vs/nls.mock.js +0 -31
  207. package/lib/vs/platform/actions/browser/menuEntryActionViewItem.js +0 -342
  208. package/lib/vs/platform/actions/common/actions.js +0 -456
  209. package/lib/vs/platform/actions/common/menuService.js +0 -194
  210. package/lib/vs/platform/clipboard/browser/clipboardService.js +0 -99
  211. package/lib/vs/platform/clipboard/common/clipboardService.js +0 -14
  212. package/lib/vs/platform/contextkey/common/contextkey.js +0 -1210
  213. package/lib/vs/platform/contextkey/common/contextkeys.js +0 -23
  214. package/lib/vs/platform/contextview/browser/contextView.js +0 -15
  215. package/lib/vs/platform/contextview/browser/contextViewService.js +0 -96
  216. package/lib/vs/platform/environment/common/argv.js +0 -9
  217. package/lib/vs/platform/environment/common/environment.js +0 -15
  218. package/lib/vs/platform/instantiation/common/descriptors.js +0 -25
  219. package/lib/vs/platform/instantiation/common/extensions.js +0 -26
  220. package/lib/vs/platform/instantiation/common/graph.js +0 -93
  221. package/lib/vs/platform/instantiation/common/instantiation.js +0 -84
  222. package/lib/vs/platform/instantiation/common/instantiationService.js +0 -361
  223. package/lib/vs/platform/instantiation/common/serviceCollection.js +0 -39
  224. package/lib/vs/platform/keybinding/common/baseResolvedKeybinding.js +0 -73
  225. package/lib/vs/platform/keybinding/common/keybinding.js +0 -14
  226. package/lib/vs/platform/keybinding/common/keybindingResolver.js +0 -391
  227. package/lib/vs/platform/keybinding/common/keybindingsRegistry.js +0 -229
  228. package/lib/vs/platform/keybinding/common/resolvedKeybindingItem.js +0 -47
  229. package/lib/vs/platform/keybinding/common/usLayoutResolvedKeybinding.js +0 -160
  230. package/lib/vs/platform/layout/browser/layoutService.js +0 -14
  231. package/lib/vs/platform/menubar/common/menubar.js +0 -34
  232. package/lib/vs/platform/registry/common/platform.js +0 -38
  233. package/lib/vs/platform/theme/browser/checkbox.js +0 -32
  234. package/lib/vs/platform/theme/common/colorRegistry.js +0 -1154
  235. package/lib/vs/platform/theme/common/styler.js +0 -290
  236. package/lib/vs/platform/theme/common/theme.js +0 -21
  237. package/lib/vs/platform/theme/common/themeService.js +0 -176
  238. package/lib/vs/platform/theme/common/tokenClassificationRegistry.js +0 -540
  239. 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;