@theia/playwright 1.48.1 → 1.48.2

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 (159) hide show
  1. package/README.md +54 -54
  2. package/lib/index.d.ts +30 -30
  3. package/lib/index.js +48 -48
  4. package/lib/tests/theia-app.test.d.ts +1 -1
  5. package/lib/tests/theia-app.test.js +29 -29
  6. package/lib/tests/theia-application-shell.test.d.ts +1 -1
  7. package/lib/tests/theia-application-shell.test.js +57 -57
  8. package/lib/tests/theia-explorer-view.test.d.ts +1 -1
  9. package/lib/tests/theia-explorer-view.test.js +183 -183
  10. package/lib/tests/theia-getting-started.test.d.ts +1 -1
  11. package/lib/tests/theia-getting-started.test.js +45 -45
  12. package/lib/tests/theia-main-menu.test.d.ts +1 -1
  13. package/lib/tests/theia-main-menu.test.js +111 -111
  14. package/lib/tests/theia-output-view.test.d.ts +1 -1
  15. package/lib/tests/theia-output-view.test.js +78 -78
  16. package/lib/tests/theia-preference-view.test.d.ts +1 -1
  17. package/lib/tests/theia-preference-view.test.js +101 -101
  18. package/lib/tests/theia-problems-view.test.d.ts +1 -1
  19. package/lib/tests/theia-problems-view.test.js +54 -54
  20. package/lib/tests/theia-quick-command.test.d.ts +1 -1
  21. package/lib/tests/theia-quick-command.test.js +69 -69
  22. package/lib/tests/theia-sample-app.test.d.ts +1 -1
  23. package/lib/tests/theia-sample-app.test.js +57 -57
  24. package/lib/tests/theia-status-bar.test.d.ts +1 -1
  25. package/lib/tests/theia-status-bar.test.js +44 -44
  26. package/lib/tests/theia-terminal-view.test.d.ts +1 -1
  27. package/lib/tests/theia-terminal-view.test.js +78 -78
  28. package/lib/tests/theia-text-editor.test.d.ts +1 -1
  29. package/lib/tests/theia-text-editor.test.js +155 -155
  30. package/lib/tests/theia-toolbar.test.d.ts +1 -1
  31. package/lib/tests/theia-toolbar.test.js +61 -61
  32. package/lib/tests/theia-workspace.test.d.ts +1 -1
  33. package/lib/tests/theia-workspace.test.js +72 -72
  34. package/lib/theia-about-dialog.d.ts +4 -4
  35. package/lib/theia-about-dialog.js +26 -26
  36. package/lib/theia-app-loader.d.ts +19 -19
  37. package/lib/theia-app-loader.js +129 -129
  38. package/lib/theia-app.d.ts +50 -50
  39. package/lib/theia-app.js +153 -153
  40. package/lib/theia-context-menu.d.ts +8 -8
  41. package/lib/theia-context-menu.js +37 -37
  42. package/lib/theia-dialog.d.ts +28 -28
  43. package/lib/theia-dialog.js +99 -99
  44. package/lib/theia-editor.d.ts +9 -9
  45. package/lib/theia-editor.js +68 -68
  46. package/lib/theia-explorer-view.d.ts +47 -47
  47. package/lib/theia-explorer-view.js +273 -273
  48. package/lib/theia-main-menu.d.ts +12 -12
  49. package/lib/theia-main-menu.js +53 -53
  50. package/lib/theia-menu-item.d.ts +14 -14
  51. package/lib/theia-menu-item.js +66 -66
  52. package/lib/theia-menu.d.ts +16 -16
  53. package/lib/theia-menu.js +86 -86
  54. package/lib/theia-monaco-editor.d.ts +15 -15
  55. package/lib/theia-monaco-editor.js +75 -75
  56. package/lib/theia-notification-indicator.d.ts +7 -7
  57. package/lib/theia-notification-indicator.js +44 -44
  58. package/lib/theia-notification-overlay.d.ts +22 -22
  59. package/lib/theia-notification-overlay.js +79 -79
  60. package/lib/theia-output-channel.d.ts +24 -24
  61. package/lib/theia-output-channel.js +71 -71
  62. package/lib/theia-output-view.d.ts +9 -9
  63. package/lib/theia-output-view.js +81 -81
  64. package/lib/theia-page-object.d.ts +7 -7
  65. package/lib/theia-page-object.js +27 -27
  66. package/lib/theia-preference-view.d.ts +84 -84
  67. package/lib/theia-preference-view.js +209 -209
  68. package/lib/theia-problem-indicator.d.ts +8 -8
  69. package/lib/theia-problem-indicator.js +38 -38
  70. package/lib/theia-problem-view.d.ts +5 -5
  71. package/lib/theia-problem-view.js +30 -30
  72. package/lib/theia-quick-command-palette.d.ts +12 -12
  73. package/lib/theia-quick-command-palette.js +78 -78
  74. package/lib/theia-rename-dialog.d.ts +5 -5
  75. package/lib/theia-rename-dialog.js +34 -34
  76. package/lib/theia-status-bar.d.ts +13 -13
  77. package/lib/theia-status-bar.js +39 -39
  78. package/lib/theia-status-indicator.d.ts +10 -10
  79. package/lib/theia-status-indicator.js +48 -48
  80. package/lib/theia-terminal.d.ts +13 -13
  81. package/lib/theia-terminal.js +59 -59
  82. package/lib/theia-text-editor.d.ts +26 -26
  83. package/lib/theia-text-editor.js +120 -120
  84. package/lib/theia-toggle-bottom-indicator.d.ts +4 -4
  85. package/lib/theia-toggle-bottom-indicator.js +26 -26
  86. package/lib/theia-toolbar-item.d.ts +10 -10
  87. package/lib/theia-toolbar-item.js +39 -39
  88. package/lib/theia-toolbar.d.ts +19 -19
  89. package/lib/theia-toolbar.js +90 -90
  90. package/lib/theia-tree-node.d.ts +19 -19
  91. package/lib/theia-tree-node.js +72 -72
  92. package/lib/theia-view.d.ts +32 -32
  93. package/lib/theia-view.js +149 -149
  94. package/lib/theia-welcome-view.d.ts +5 -5
  95. package/lib/theia-welcome-view.js +30 -30
  96. package/lib/theia-workspace.d.ts +18 -18
  97. package/lib/theia-workspace.js +69 -69
  98. package/lib/util.d.ts +19 -19
  99. package/lib/util.js +93 -93
  100. package/package.json +2 -2
  101. package/src/index.ts +46 -46
  102. package/src/tests/resources/sample-files1/sample.txt +4 -4
  103. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder1/sampleFolder1-1/sampleFile1-1-1.txt +1 -1
  104. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder1/sampleFolder1-1/sampleFile1-1-2.txt +1 -1
  105. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder1/sampleFolder1-2/sampleFile1-2-1.txt +1 -1
  106. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder1/sampleFolder1-2/sampleFile1-2-2.txt +1 -1
  107. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder2/sampleFolder2-1/sampleFile2-1-1.txt +1 -1
  108. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder2/sampleFolder2-1/sampleFile2-1-2.txt +1 -1
  109. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder2/sampleFolder2-2/sampleFile2-2-1.txt +1 -1
  110. package/src/tests/resources/sample-files1/sampleFolder/sampleFolder2/sampleFolder2-2/sampleFile2-2-2.txt +1 -1
  111. package/src/tests/resources/sample-files2/another-sample.txt +1 -1
  112. package/src/tests/theia-app.test.ts +33 -33
  113. package/src/tests/theia-application-shell.test.ts +67 -67
  114. package/src/tests/theia-explorer-view.test.ts +211 -211
  115. package/src/tests/theia-getting-started.test.ts +50 -50
  116. package/src/tests/theia-main-menu.test.ts +133 -133
  117. package/src/tests/theia-output-view.test.ts +85 -85
  118. package/src/tests/theia-preference-view.test.ts +122 -122
  119. package/src/tests/theia-problems-view.test.ts +64 -64
  120. package/src/tests/theia-quick-command.test.ts +80 -80
  121. package/src/tests/theia-sample-app.test.ts +66 -66
  122. package/src/tests/theia-status-bar.test.ts +52 -52
  123. package/src/tests/theia-terminal-view.test.ts +90 -90
  124. package/src/tests/theia-text-editor.test.ts +187 -187
  125. package/src/tests/theia-toolbar.test.ts +69 -69
  126. package/src/tests/theia-workspace.test.ts +80 -80
  127. package/src/theia-about-dialog.ts +26 -26
  128. package/src/theia-app-loader.ts +167 -167
  129. package/src/theia-app.ts +188 -188
  130. package/src/theia-context-menu.ts +42 -42
  131. package/src/theia-dialog.ts +114 -114
  132. package/src/theia-editor.ts +73 -73
  133. package/src/theia-explorer-view.ts +311 -311
  134. package/src/theia-main-menu.ts +54 -54
  135. package/src/theia-menu-item.ts +75 -75
  136. package/src/theia-menu.ts +96 -96
  137. package/src/theia-monaco-editor.ts +83 -83
  138. package/src/theia-notification-indicator.ts +44 -44
  139. package/src/theia-notification-overlay.ts +94 -94
  140. package/src/theia-output-channel.ts +88 -88
  141. package/src/theia-output-view.ts +87 -87
  142. package/src/theia-page-object.ts +29 -29
  143. package/src/theia-preference-view.ts +240 -240
  144. package/src/theia-problem-indicator.ts +37 -37
  145. package/src/theia-problem-view.ts +30 -30
  146. package/src/theia-quick-command-palette.ts +81 -81
  147. package/src/theia-rename-dialog.ts +35 -35
  148. package/src/theia-status-bar.ts +44 -44
  149. package/src/theia-status-indicator.ts +50 -50
  150. package/src/theia-terminal.ts +69 -69
  151. package/src/theia-text-editor.ts +141 -141
  152. package/src/theia-toggle-bottom-indicator.ts +21 -21
  153. package/src/theia-toolbar-item.ts +41 -41
  154. package/src/theia-toolbar.ts +99 -99
  155. package/src/theia-tree-node.ts +81 -81
  156. package/src/theia-view.ts +177 -177
  157. package/src/theia-welcome-view.ts +31 -31
  158. package/src/theia-workspace.ts +76 -76
  159. package/src/util.ts +91 -91
@@ -1,76 +1,76 @@
1
- // *****************************************************************************
2
- // Copyright (C) 2021 logi.cals GmbH, EclipseSource and others.
3
- //
4
- // This program and the accompanying materials are made available under the
5
- // terms of the Eclipse Public License v. 2.0 which is available at
6
- // http://www.eclipse.org/legal/epl-2.0.
7
- //
8
- // This Source Code may also be made available under the following Secondary
9
- // Licenses when the conditions for such availability set forth in the Eclipse
10
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
- // with the GNU Classpath Exception which is available at
12
- // https://www.gnu.org/software/classpath/license.html.
13
- //
14
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
- // *****************************************************************************
16
-
17
- import * as fs from 'fs-extra';
18
- import { resolve } from 'path';
19
- import { OSUtil, urlEncodePath } from './util';
20
-
21
- export class TheiaWorkspace {
22
-
23
- protected workspacePath: string;
24
-
25
- /**
26
- * Creates a Theia workspace location with the specified path to files that shall be copied to this workspace.
27
- * The `pathOfFilesToInitialize` must be relative to cwd of the node process.
28
- *
29
- * @param {string[]} pathOfFilesToInitialize Path to files or folders that shall be copied to the workspace
30
- */
31
- constructor(protected pathOfFilesToInitialize?: string[]) {
32
- this.workspacePath = fs.mkdtempSync(`${OSUtil.tmpDir}${OSUtil.fileSeparator}cloud-ws-`);
33
- }
34
-
35
- /** Performs the file system operations preparing the workspace location synchronously. */
36
- initialize(): void {
37
- if (this.pathOfFilesToInitialize) {
38
- for (const initPath of this.pathOfFilesToInitialize) {
39
- const absoluteInitPath = resolve(process.cwd(), initPath);
40
- if (!fs.pathExistsSync(absoluteInitPath)) {
41
- throw Error('Workspace does not exist at ' + absoluteInitPath);
42
- }
43
- fs.copySync(absoluteInitPath, this.workspacePath);
44
- }
45
- }
46
- }
47
-
48
- get path(): string {
49
- let workspacePath = this.workspacePath;
50
- if (!OSUtil.osStartsWithFileSeparator(this.workspacePath)) {
51
- workspacePath = `${OSUtil.fileSeparator}${workspacePath}`;
52
- }
53
- if (OSUtil.isWindows) {
54
- // Drive letters in windows paths have to be lower case
55
- workspacePath = workspacePath.replace(/.:/, matchedChar => matchedChar.toLowerCase());
56
- }
57
- return workspacePath;
58
- }
59
-
60
- get urlEncodedPath(): string {
61
- return urlEncodePath(this.path);
62
- }
63
-
64
- get escapedPath(): string {
65
- return this.path.replace(/:/g, '%3A');
66
- }
67
-
68
- clear(): void {
69
- fs.emptyDirSync(this.workspacePath);
70
- }
71
-
72
- remove(): void {
73
- fs.removeSync(this.workspacePath);
74
- }
75
-
76
- }
1
+ // *****************************************************************************
2
+ // Copyright (C) 2021 logi.cals GmbH, EclipseSource and others.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import * as fs from 'fs-extra';
18
+ import { resolve } from 'path';
19
+ import { OSUtil, urlEncodePath } from './util';
20
+
21
+ export class TheiaWorkspace {
22
+
23
+ protected workspacePath: string;
24
+
25
+ /**
26
+ * Creates a Theia workspace location with the specified path to files that shall be copied to this workspace.
27
+ * The `pathOfFilesToInitialize` must be relative to cwd of the node process.
28
+ *
29
+ * @param {string[]} pathOfFilesToInitialize Path to files or folders that shall be copied to the workspace
30
+ */
31
+ constructor(protected pathOfFilesToInitialize?: string[]) {
32
+ this.workspacePath = fs.mkdtempSync(`${OSUtil.tmpDir}${OSUtil.fileSeparator}cloud-ws-`);
33
+ }
34
+
35
+ /** Performs the file system operations preparing the workspace location synchronously. */
36
+ initialize(): void {
37
+ if (this.pathOfFilesToInitialize) {
38
+ for (const initPath of this.pathOfFilesToInitialize) {
39
+ const absoluteInitPath = resolve(process.cwd(), initPath);
40
+ if (!fs.pathExistsSync(absoluteInitPath)) {
41
+ throw Error('Workspace does not exist at ' + absoluteInitPath);
42
+ }
43
+ fs.copySync(absoluteInitPath, this.workspacePath);
44
+ }
45
+ }
46
+ }
47
+
48
+ get path(): string {
49
+ let workspacePath = this.workspacePath;
50
+ if (!OSUtil.osStartsWithFileSeparator(this.workspacePath)) {
51
+ workspacePath = `${OSUtil.fileSeparator}${workspacePath}`;
52
+ }
53
+ if (OSUtil.isWindows) {
54
+ // Drive letters in windows paths have to be lower case
55
+ workspacePath = workspacePath.replace(/.:/, matchedChar => matchedChar.toLowerCase());
56
+ }
57
+ return workspacePath;
58
+ }
59
+
60
+ get urlEncodedPath(): string {
61
+ return urlEncodePath(this.path);
62
+ }
63
+
64
+ get escapedPath(): string {
65
+ return this.path.replace(/:/g, '%3A');
66
+ }
67
+
68
+ clear(): void {
69
+ fs.emptyDirSync(this.workspacePath);
70
+ }
71
+
72
+ remove(): void {
73
+ fs.removeSync(this.workspacePath);
74
+ }
75
+
76
+ }
package/src/util.ts CHANGED
@@ -1,91 +1,91 @@
1
- // *****************************************************************************
2
- // Copyright (C) 2021 logi.cals GmbH, EclipseSource and others.
3
- //
4
- // This program and the accompanying materials are made available under the
5
- // terms of the Eclipse Public License v. 2.0 which is available at
6
- // http://www.eclipse.org/legal/epl-2.0.
7
- //
8
- // This Source Code may also be made available under the following Secondary
9
- // Licenses when the conditions for such availability set forth in the Eclipse
10
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
- // with the GNU Classpath Exception which is available at
12
- // https://www.gnu.org/software/classpath/license.html.
13
- //
14
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
- // *****************************************************************************
16
-
17
- import { ElementHandle } from '@playwright/test';
18
- import { tmpdir, platform } from 'os';
19
- import { sep } from 'path';
20
-
21
- export const USER_KEY_TYPING_DELAY = 80;
22
-
23
- export function normalizeId(nodeId: string): string {
24
- // Special characters (i.e. in our case '.',':','/','%', and '\\') in CSS IDs have to be escaped
25
- return nodeId.replace(/[.:,%/\\]/g, matchedChar => '\\' + matchedChar);
26
- }
27
-
28
- export function urlEncodePath(path: string): string {
29
- return path.replace(/\\/g, '/');
30
- }
31
-
32
- export async function toTextContentArray(items: ElementHandle<SVGElement | HTMLElement>[]): Promise<string[]> {
33
- const contents = items.map(item => item.textContent());
34
- const resolvedContents = await Promise.all(contents);
35
- return resolvedContents.filter(text => text !== undefined) as string[];
36
- }
37
-
38
- export function isDefined(content: string | undefined): content is string {
39
- return content !== undefined;
40
- }
41
-
42
- export function isNotNull(content: string | null): content is string {
43
- return content !== null;
44
- }
45
-
46
- export async function textContent(elementPromise: Promise<ElementHandle<SVGElement | HTMLElement> | null>): Promise<string | undefined> {
47
- const element = await elementPromise;
48
- if (!element) {
49
- return undefined;
50
- }
51
- const content = await element.textContent();
52
- return content ? content : undefined;
53
- }
54
-
55
- export async function containsClass(elementPromise: Promise<ElementHandle<SVGElement | HTMLElement> | null> | undefined, cssClass: string): Promise<boolean> {
56
- return elementContainsClass(await elementPromise, cssClass);
57
- }
58
-
59
- export async function elementContainsClass(element: ElementHandle<SVGElement | HTMLElement> | null | undefined, cssClass: string): Promise<boolean> {
60
- if (element) {
61
- const classValue = await element.getAttribute('class');
62
- if (classValue) {
63
- return classValue?.split(' ').includes(cssClass);
64
- }
65
- }
66
- return false;
67
- }
68
-
69
- export async function isElementVisible(elementPromise: Promise<ElementHandle<SVGElement | HTMLElement> | null>): Promise<boolean> {
70
- const element = await elementPromise;
71
- return element ? element.isVisible() : false;
72
- }
73
-
74
- export async function elementId(element: ElementHandle<SVGElement | HTMLElement>): Promise<string> {
75
- const id = await element.getAttribute('id');
76
- if (id === null) { throw new Error('Could not get ID of ' + element); }
77
- return id;
78
- }
79
-
80
- export namespace OSUtil {
81
- export const isWindows = platform() === 'win32';
82
- export const isMacOS = platform() === 'darwin';
83
- // The platform-specific file separator '\' or '/'.
84
- export const fileSeparator = sep;
85
- // The platform-specific location of the temporary directory.
86
- export const tmpDir = tmpdir();
87
-
88
- export function osStartsWithFileSeparator(path: string): boolean {
89
- return path.startsWith(fileSeparator);
90
- }
91
- }
1
+ // *****************************************************************************
2
+ // Copyright (C) 2021 logi.cals GmbH, EclipseSource and others.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { ElementHandle } from '@playwright/test';
18
+ import { tmpdir, platform } from 'os';
19
+ import { sep } from 'path';
20
+
21
+ export const USER_KEY_TYPING_DELAY = 80;
22
+
23
+ export function normalizeId(nodeId: string): string {
24
+ // Special characters (i.e. in our case '.',':','/','%', and '\\') in CSS IDs have to be escaped
25
+ return nodeId.replace(/[.:,%/\\]/g, matchedChar => '\\' + matchedChar);
26
+ }
27
+
28
+ export function urlEncodePath(path: string): string {
29
+ return path.replace(/\\/g, '/');
30
+ }
31
+
32
+ export async function toTextContentArray(items: ElementHandle<SVGElement | HTMLElement>[]): Promise<string[]> {
33
+ const contents = items.map(item => item.textContent());
34
+ const resolvedContents = await Promise.all(contents);
35
+ return resolvedContents.filter(text => text !== undefined) as string[];
36
+ }
37
+
38
+ export function isDefined(content: string | undefined): content is string {
39
+ return content !== undefined;
40
+ }
41
+
42
+ export function isNotNull(content: string | null): content is string {
43
+ return content !== null;
44
+ }
45
+
46
+ export async function textContent(elementPromise: Promise<ElementHandle<SVGElement | HTMLElement> | null>): Promise<string | undefined> {
47
+ const element = await elementPromise;
48
+ if (!element) {
49
+ return undefined;
50
+ }
51
+ const content = await element.textContent();
52
+ return content ? content : undefined;
53
+ }
54
+
55
+ export async function containsClass(elementPromise: Promise<ElementHandle<SVGElement | HTMLElement> | null> | undefined, cssClass: string): Promise<boolean> {
56
+ return elementContainsClass(await elementPromise, cssClass);
57
+ }
58
+
59
+ export async function elementContainsClass(element: ElementHandle<SVGElement | HTMLElement> | null | undefined, cssClass: string): Promise<boolean> {
60
+ if (element) {
61
+ const classValue = await element.getAttribute('class');
62
+ if (classValue) {
63
+ return classValue?.split(' ').includes(cssClass);
64
+ }
65
+ }
66
+ return false;
67
+ }
68
+
69
+ export async function isElementVisible(elementPromise: Promise<ElementHandle<SVGElement | HTMLElement> | null>): Promise<boolean> {
70
+ const element = await elementPromise;
71
+ return element ? element.isVisible() : false;
72
+ }
73
+
74
+ export async function elementId(element: ElementHandle<SVGElement | HTMLElement>): Promise<string> {
75
+ const id = await element.getAttribute('id');
76
+ if (id === null) { throw new Error('Could not get ID of ' + element); }
77
+ return id;
78
+ }
79
+
80
+ export namespace OSUtil {
81
+ export const isWindows = platform() === 'win32';
82
+ export const isMacOS = platform() === 'darwin';
83
+ // The platform-specific file separator '\' or '/'.
84
+ export const fileSeparator = sep;
85
+ // The platform-specific location of the temporary directory.
86
+ export const tmpDir = tmpdir();
87
+
88
+ export function osStartsWithFileSeparator(path: string): boolean {
89
+ return path.startsWith(fileSeparator);
90
+ }
91
+ }