@vscode/test-web 0.0.13 → 0.0.17

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.
@@ -2,276 +2,202 @@
2
2
  /******/ var __webpack_modules__ = ([
3
3
  /* 0 */,
4
4
  /* 1 */
5
+ /***/ ((__unused_webpack_module, exports) => {
6
+
7
+ (()=>{"use strict";var e={};(()=>{var r=e;Object.defineProperty(r,"__esModule",{value:!0}),r.getErrorStatusDescription=r.xhr=r.configure=void 0,r.configure=(e,r)=>{},r.xhr=async e=>{const r=new Headers;if(e.headers)for(const t in e.headers){const s=e.headers[t];Array.isArray(s)?s.forEach((e=>r.set(t,e))):r.set(t,s)}e.user&&e.password&&r.set("Authorization","Basic "+btoa(e.user+":"+e.password));const t={method:e.type,redirect:e.followRedirects>0?"follow":"manual",mode:"cors",headers:r};e.data&&(t.body=e.data);const s=new Request(e.url,t),o=await fetch(s),a={};o.headers.forEach(((e,r)=>{a[r]=e}));const n=await o.arrayBuffer();return new class{constructor(){this.status=o.status,this.headers=a}get responseText(){return(new TextDecoder).decode(n)}get body(){return new Uint8Array(n)}}},r.getErrorStatusDescription=function(e){return String(e)}})();var r=exports;for(var t in e)r[t]=e[t];e.__esModule&&Object.defineProperty(r,"__esModule",{value:!0})})();
8
+
9
+ /***/ }),
10
+ /* 2 */
5
11
  /***/ ((module) => {
6
12
 
7
13
  "use strict";
8
- module.exports = require("vscode");
14
+ module.exports = require("vscode");;
9
15
 
10
16
  /***/ }),
11
- /* 2 */
17
+ /* 3 */
12
18
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
13
19
 
14
20
  "use strict";
15
-
16
- /*---------------------------------------------------------------------------------------------
17
- * Copyright (c) Microsoft Corporation. All rights reserved.
18
- * Licensed under the MIT License. See License.txt in the project root for license information.
19
- *--------------------------------------------------------------------------------------------*/
20
- Object.defineProperty(exports, "__esModule", ({ value: true }));
21
- exports.MountsFileSystemProvider = exports.SCHEME = void 0;
22
- const vscode_1 = __webpack_require__(1);
23
- const vscode_uri_1 = __webpack_require__(3);
24
- const request_light_1 = __webpack_require__(5);
25
- exports.SCHEME = 'vscode-test-web';
26
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
- function isEntry(e) {
28
- return e && (e.type == vscode_1.FileType.Directory || e.type == vscode_1.FileType.File) && typeof e.name === 'string' && e.name.length > 0;
29
- }
30
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
- function isStat(e) {
32
- return e && (e.type == vscode_1.FileType.Directory || e.type == vscode_1.FileType.File) && typeof e.ctime === 'number' && typeof e.mtime === 'number' && typeof e.size === 'number';
33
- }
34
- function newFileStat(type, size) {
35
- return { type, ctime: Date.now(), mtime: Date.now(), size };
36
- }
37
- function modifiedFileStat(stats, size) {
38
- return { type: stats.type, ctime: stats.ctime, mtime: Date.now(), size: size !== null && size !== void 0 ? size : stats.size };
39
- }
40
- async function getStats(entry) {
41
- let stats = entry.stats;
42
- if (stats === undefined) {
43
- if (entry.serverUri) {
44
- const url = entry.serverUri.with({ query: 'stat' }).toString();
45
- const response = await (0, request_light_1.xhr)({ url });
46
- if (response.status === 200) {
47
- try {
48
- const res = JSON.parse(response.responseText);
49
- if (isStat(res)) {
50
- stats = res;
51
- }
52
- }
53
- catch {
54
- // ignore
55
- }
56
- }
57
- }
58
- if (!stats) {
59
- stats = newFileStat(entry.type, 0);
60
- }
61
- entry.stats = stats;
62
- }
63
- return stats;
64
- }
65
- async function getEntries(entry) {
66
- if (entry.entries === undefined) {
67
- entry.entries = new Map();
68
- if (entry.serverUri) {
69
- const url = entry.serverUri.with({ query: 'readdir' }).toString();
70
- const response = await (0, request_light_1.xhr)({ url });
71
- if (response.status === 200) {
72
- try {
73
- const res = JSON.parse(response.responseText);
74
- if (Array.isArray(res)) {
75
- for (const r of res) {
76
- if (isEntry(r)) {
77
- const newEntry = { type: r.type, name: r.name, serverUri: vscode_uri_1.Utils.joinPath(entry.serverUri, r.name) };
78
- entry.entries.set(newEntry.name, newEntry);
79
- }
80
- }
81
- }
82
- }
83
- catch {
84
- // ignore
85
- }
86
- }
87
- }
88
- }
89
- return entry.entries;
90
- }
91
- class MountsFileSystemProvider {
92
- constructor(serverUri) {
93
- // --- manage file events
94
- this._onDidChangeFile = new vscode_1.EventEmitter();
95
- this.onDidChangeFile = this._onDidChangeFile.event;
96
- this._bufferedChanges = [];
97
- this.root = { type: vscode_1.FileType.Directory, name: '', serverUri };
98
- }
99
- // --- manage file metadata
100
- async stat(resource) {
101
- const entry = await this._lookup(resource, false);
102
- return getStats(entry);
103
- }
104
- async readDirectory(resource) {
105
- const entry = await this._lookupAsDirectory(resource, false);
106
- const entries = await getEntries(entry);
107
- const result = [];
108
- entries.forEach((child, name) => result.push([name, child.type]));
109
- return result;
110
- }
111
- // --- manage file contents
112
- async readFile(resource) {
113
- const entry = await this._lookupAsFile(resource, false);
114
- let content = entry.content;
115
- if (content) {
116
- return content;
117
- }
118
- const serverUri = entry.serverUri;
119
- if (serverUri) {
120
- const response = await (0, request_light_1.xhr)({ url: serverUri.toString() });
121
- if (response.status >= 200 && response.status <= 204) {
122
- content = entry.content = response.body;
123
- }
124
- }
125
- if (!content) {
126
- throw vscode_1.FileSystemError.FileNotFound(resource);
127
- }
128
- return content;
129
- }
130
- async writeFile(uri, content, opts) {
131
- const basename = vscode_uri_1.Utils.basename(uri);
132
- const parent = await this._lookupParentDirectory(uri);
133
- const entries = await getEntries(parent);
134
- let entry = entries.get(basename);
135
- if (entry && entry.type === vscode_1.FileType.Directory) {
136
- throw vscode_1.FileSystemError.FileIsADirectory(uri);
137
- }
138
- if (!entry && !opts.create) {
139
- throw vscode_1.FileSystemError.FileNotFound(uri);
140
- }
141
- if (entry && opts.create && !opts.overwrite) {
142
- throw vscode_1.FileSystemError.FileExists(uri);
143
- }
144
- const stats = newFileStat(vscode_1.FileType.File, content.byteLength);
145
- if (!entry) {
146
- entry = { type: vscode_1.FileType.File, name: basename, stats, content };
147
- entries.set(basename, entry);
148
- this._fireSoon({ type: vscode_1.FileChangeType.Created, uri });
149
- }
150
- else {
151
- entry.stats = stats;
152
- entry.content = content;
153
- }
154
- this._fireSoon({ type: vscode_1.FileChangeType.Changed, uri });
155
- }
156
- // --- manage files/folders
157
- async rename(from, to, opts) {
158
- if (!opts.overwrite && await this._lookup(to, true)) {
159
- throw vscode_1.FileSystemError.FileExists(to);
160
- }
161
- const entry = await this._lookup(from, false);
162
- const oldParent = await this._lookupParentDirectory(from);
163
- const newParent = await this._lookupParentDirectory(to);
164
- const newName = vscode_uri_1.Utils.basename(to);
165
- const oldParentEntries = await getEntries(oldParent);
166
- oldParentEntries.delete(entry.name);
167
- let newEntry;
168
- if (entry.type === vscode_1.FileType.File) {
169
- newEntry = { type: vscode_1.FileType.File, name: newName, stats: entry.stats, serverUri: entry.serverUri, content: entry.content };
170
- }
171
- else {
172
- newEntry = { type: vscode_1.FileType.Directory, name: newName, stats: entry.stats, serverUri: entry.serverUri, entries: entry.entries };
173
- }
174
- const newParentEntries = await getEntries(newParent);
175
- newParentEntries.set(newName, newEntry);
176
- this._fireSoon({ type: vscode_1.FileChangeType.Deleted, uri: from }, { type: vscode_1.FileChangeType.Created, uri: to });
177
- }
178
- async delete(uri, opts) {
179
- const dirname = vscode_uri_1.Utils.dirname(uri);
180
- const basename = vscode_uri_1.Utils.basename(uri);
181
- const parent = await this._lookupAsDirectory(dirname, false);
182
- const parentEntries = await getEntries(parent);
183
- if (parentEntries.has(basename)) {
184
- parentEntries.delete(basename);
185
- parent.stats = newFileStat(parent.type, -1);
186
- this._fireSoon({ type: vscode_1.FileChangeType.Changed, uri: dirname }, { uri, type: vscode_1.FileChangeType.Deleted });
187
- }
188
- }
189
- async createDirectory(uri) {
190
- const basename = vscode_uri_1.Utils.basename(uri);
191
- const dirname = vscode_uri_1.Utils.dirname(uri);
192
- const parent = await this._lookupAsDirectory(dirname, false);
193
- const parentEntries = await getEntries(parent);
194
- const entry = { type: vscode_1.FileType.Directory, name: basename, stats: newFileStat(vscode_1.FileType.Directory, 0) };
195
- parentEntries.set(entry.name, entry);
196
- const stats = await getStats(parent);
197
- parent.stats = modifiedFileStat(stats, stats.size + 1);
198
- this._fireSoon({ type: vscode_1.FileChangeType.Changed, uri: dirname }, { type: vscode_1.FileChangeType.Created, uri });
199
- }
200
- async _lookup(uri, silent) {
201
- if (uri.scheme !== exports.SCHEME) {
202
- if (!silent) {
203
- throw vscode_1.FileSystemError.FileNotFound(uri);
204
- }
205
- else {
206
- return undefined;
207
- }
208
- }
209
- let entry = this.root;
210
- const parts = uri.path.split('/');
211
- for (const part of parts) {
212
- if (!part) {
213
- continue;
214
- }
215
- let child;
216
- if (entry.type === vscode_1.FileType.Directory) {
217
- child = (await getEntries(entry)).get(part);
218
- }
219
- if (!child) {
220
- if (!silent) {
221
- throw vscode_1.FileSystemError.FileNotFound(uri);
222
- }
223
- else {
224
- return undefined;
225
- }
226
- }
227
- entry = child;
228
- }
229
- return entry;
230
- }
231
- async _lookupAsDirectory(uri, silent) {
232
- const entry = await this._lookup(uri, silent);
233
- if ((entry === null || entry === void 0 ? void 0 : entry.type) === vscode_1.FileType.Directory) {
234
- return entry;
235
- }
236
- throw vscode_1.FileSystemError.FileNotADirectory(uri);
237
- }
238
- async _lookupAsFile(uri, silent) {
239
- const entry = await this._lookup(uri, silent);
240
- if (!entry) {
241
- throw vscode_1.FileSystemError.FileNotFound(uri);
242
- }
243
- if (entry.type === vscode_1.FileType.File) {
244
- return entry;
245
- }
246
- throw vscode_1.FileSystemError.FileIsADirectory(uri);
247
- }
248
- _lookupParentDirectory(uri) {
249
- const dirname = vscode_uri_1.Utils.dirname(uri);
250
- return this._lookupAsDirectory(dirname, false);
251
- }
252
- watch(resource, opts) {
253
- // ignore, fires for all changes...
254
- return vscode_1.Disposable.from();
255
- }
256
- _fireSoon(...changes) {
257
- this._bufferedChanges.push(...changes);
258
- if (this._fireSoonHandle) {
259
- clearTimeout(this._fireSoonHandle);
260
- }
261
- this._fireSoonHandle = setTimeout(() => {
262
- this._onDidChangeFile.fire(this._bufferedChanges);
263
- this._bufferedChanges.length = 0;
264
- }, 5);
265
- }
266
- dispose() {
267
- this._onDidChangeFile.dispose();
268
- }
269
- }
270
- exports.MountsFileSystemProvider = MountsFileSystemProvider;
21
+
22
+ /*---------------------------------------------------------------------------------------------
23
+ * Copyright (c) Microsoft Corporation. All rights reserved.
24
+ * Licensed under the MIT License. See License.txt in the project root for license information.
25
+ *--------------------------------------------------------------------------------------------*/
26
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
27
+ exports.MemFileSystemProvider = void 0;
28
+ const vscode_1 = __webpack_require__(2);
29
+ const vscode_uri_1 = __webpack_require__(4);
30
+ function newFileStat(type, size) {
31
+ return Promise.resolve({ type, ctime: Date.now(), mtime: Date.now(), size });
32
+ }
33
+ function modifiedFileStat(stats, size) {
34
+ return Promise.resolve({ type: stats.type, ctime: stats.ctime, mtime: Date.now(), size: size !== null && size !== void 0 ? size : stats.size });
35
+ }
36
+ class MemFileSystemProvider {
37
+ constructor(scheme, root) {
38
+ this.scheme = scheme;
39
+ this.root = root;
40
+ // --- manage file events
41
+ this._onDidChangeFile = new vscode_1.EventEmitter();
42
+ this.onDidChangeFile = this._onDidChangeFile.event;
43
+ this._bufferedChanges = [];
44
+ }
45
+ // --- manage file metadata
46
+ async stat(resource) {
47
+ const entry = await this._lookup(resource, false);
48
+ return entry.stats;
49
+ }
50
+ async readDirectory(resource) {
51
+ const entry = await this._lookupAsDirectory(resource, false);
52
+ const entries = await entry.entries;
53
+ const result = [];
54
+ entries.forEach((child, name) => result.push([name, child.type]));
55
+ return result;
56
+ }
57
+ // --- manage file contents
58
+ async readFile(resource) {
59
+ const entry = await this._lookupAsFile(resource, false);
60
+ return entry.content;
61
+ }
62
+ async writeFile(uri, content, opts) {
63
+ const basename = vscode_uri_1.Utils.basename(uri);
64
+ const parent = await this._lookupParentDirectory(uri);
65
+ const entries = await parent.entries;
66
+ let entry = entries.get(basename);
67
+ if (entry && entry.type === vscode_1.FileType.Directory) {
68
+ throw vscode_1.FileSystemError.FileIsADirectory(uri);
69
+ }
70
+ if (!entry && !opts.create) {
71
+ throw vscode_1.FileSystemError.FileNotFound(uri);
72
+ }
73
+ if (entry && opts.create && !opts.overwrite) {
74
+ throw vscode_1.FileSystemError.FileExists(uri);
75
+ }
76
+ const stats = newFileStat(vscode_1.FileType.File, content.byteLength);
77
+ if (!entry) {
78
+ entry = { type: vscode_1.FileType.File, name: basename, stats, content: Promise.resolve(content) };
79
+ entries.set(basename, entry);
80
+ this._fireSoon({ type: vscode_1.FileChangeType.Created, uri });
81
+ }
82
+ else {
83
+ entry.stats = stats;
84
+ entry.content = Promise.resolve(content);
85
+ }
86
+ this._fireSoon({ type: vscode_1.FileChangeType.Changed, uri });
87
+ }
88
+ // --- manage files/folders
89
+ async rename(from, to, opts) {
90
+ if (!opts.overwrite && await this._lookup(to, true)) {
91
+ throw vscode_1.FileSystemError.FileExists(to);
92
+ }
93
+ const entry = await this._lookup(from, false);
94
+ const oldParent = await this._lookupParentDirectory(from);
95
+ const newParent = await this._lookupParentDirectory(to);
96
+ const newName = vscode_uri_1.Utils.basename(to);
97
+ const oldParentEntries = await oldParent.entries;
98
+ oldParentEntries.delete(entry.name);
99
+ entry.name = newName;
100
+ const newParentEntries = await newParent.entries;
101
+ newParentEntries.set(newName, entry);
102
+ this._fireSoon({ type: vscode_1.FileChangeType.Deleted, uri: from }, { type: vscode_1.FileChangeType.Created, uri: to });
103
+ }
104
+ async delete(uri, opts) {
105
+ const dirname = vscode_uri_1.Utils.dirname(uri);
106
+ const basename = vscode_uri_1.Utils.basename(uri);
107
+ const parent = await this._lookupAsDirectory(dirname, false);
108
+ const parentEntries = await parent.entries;
109
+ if (parentEntries.has(basename)) {
110
+ parentEntries.delete(basename);
111
+ parent.stats = newFileStat(parent.type, -1);
112
+ this._fireSoon({ type: vscode_1.FileChangeType.Changed, uri: dirname }, { uri, type: vscode_1.FileChangeType.Deleted });
113
+ }
114
+ }
115
+ async createDirectory(uri) {
116
+ const basename = vscode_uri_1.Utils.basename(uri);
117
+ const dirname = vscode_uri_1.Utils.dirname(uri);
118
+ const parent = await this._lookupAsDirectory(dirname, false);
119
+ const parentEntries = await parent.entries;
120
+ const entry = { type: vscode_1.FileType.Directory, name: basename, stats: newFileStat(vscode_1.FileType.Directory, 0), entries: Promise.resolve(new Map()) };
121
+ parentEntries.set(entry.name, entry);
122
+ const stats = await parent.stats;
123
+ parent.stats = modifiedFileStat(stats, stats.size + 1);
124
+ this._fireSoon({ type: vscode_1.FileChangeType.Changed, uri: dirname }, { type: vscode_1.FileChangeType.Created, uri });
125
+ }
126
+ async _lookup(uri, silent) {
127
+ if (uri.scheme !== this.scheme) {
128
+ if (!silent) {
129
+ throw vscode_1.FileSystemError.FileNotFound(uri);
130
+ }
131
+ else {
132
+ return undefined;
133
+ }
134
+ }
135
+ let entry = this.root;
136
+ const parts = uri.path.split('/');
137
+ for (const part of parts) {
138
+ if (!part) {
139
+ continue;
140
+ }
141
+ let child;
142
+ if (entry.type === vscode_1.FileType.Directory) {
143
+ child = (await entry.entries).get(part);
144
+ }
145
+ if (!child) {
146
+ if (!silent) {
147
+ throw vscode_1.FileSystemError.FileNotFound(uri);
148
+ }
149
+ else {
150
+ return undefined;
151
+ }
152
+ }
153
+ entry = child;
154
+ }
155
+ return entry;
156
+ }
157
+ async _lookupAsDirectory(uri, silent) {
158
+ const entry = await this._lookup(uri, silent);
159
+ if ((entry === null || entry === void 0 ? void 0 : entry.type) === vscode_1.FileType.Directory) {
160
+ return entry;
161
+ }
162
+ throw vscode_1.FileSystemError.FileNotADirectory(uri);
163
+ }
164
+ async _lookupAsFile(uri, silent) {
165
+ const entry = await this._lookup(uri, silent);
166
+ if (!entry) {
167
+ throw vscode_1.FileSystemError.FileNotFound(uri);
168
+ }
169
+ if (entry.type === vscode_1.FileType.File) {
170
+ return entry;
171
+ }
172
+ throw vscode_1.FileSystemError.FileIsADirectory(uri);
173
+ }
174
+ _lookupParentDirectory(uri) {
175
+ const dirname = vscode_uri_1.Utils.dirname(uri);
176
+ return this._lookupAsDirectory(dirname, false);
177
+ }
178
+ watch(resource, opts) {
179
+ // ignore, fires for all changes...
180
+ return vscode_1.Disposable.from();
181
+ }
182
+ _fireSoon(...changes) {
183
+ this._bufferedChanges.push(...changes);
184
+ if (this._fireSoonHandle) {
185
+ clearTimeout(this._fireSoonHandle);
186
+ }
187
+ this._fireSoonHandle = setTimeout(() => {
188
+ this._onDidChangeFile.fire(this._bufferedChanges);
189
+ this._bufferedChanges.length = 0;
190
+ }, 5);
191
+ }
192
+ dispose() {
193
+ this._onDidChangeFile.dispose();
194
+ }
195
+ }
196
+ exports.MemFileSystemProvider = MemFileSystemProvider;
271
197
 
272
198
 
273
199
  /***/ }),
274
- /* 3 */
200
+ /* 4 */
275
201
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
276
202
 
277
203
  "use strict";
@@ -280,12 +206,12 @@ __webpack_require__.r(__webpack_exports__);
280
206
  /* harmony export */ "URI": () => (/* binding */ URI),
281
207
  /* harmony export */ "Utils": () => (/* binding */ Utils)
282
208
  /* harmony export */ });
283
- /* provided dependency */ var process = __webpack_require__(4);
209
+ /* provided dependency */ var process = __webpack_require__(5);
284
210
  var LIB;LIB=(()=>{"use strict";var t={470:t=>{function e(t){if("string"!=typeof t)throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}function r(t,e){for(var r,n="",o=0,i=-1,a=0,h=0;h<=t.length;++h){if(h<t.length)r=t.charCodeAt(h);else{if(47===r)break;r=47}if(47===r){if(i===h-1||1===a);else if(i!==h-1&&2===a){if(n.length<2||2!==o||46!==n.charCodeAt(n.length-1)||46!==n.charCodeAt(n.length-2))if(n.length>2){var s=n.lastIndexOf("/");if(s!==n.length-1){-1===s?(n="",o=0):o=(n=n.slice(0,s)).length-1-n.lastIndexOf("/"),i=h,a=0;continue}}else if(2===n.length||1===n.length){n="",o=0,i=h,a=0;continue}e&&(n.length>0?n+="/..":n="..",o=2)}else n.length>0?n+="/"+t.slice(i+1,h):n=t.slice(i+1,h),o=h-i-1;i=h,a=0}else 46===r&&-1!==a?++a:a=-1}return n}var n={resolve:function(){for(var t,n="",o=!1,i=arguments.length-1;i>=-1&&!o;i--){var a;i>=0?a=arguments[i]:(void 0===t&&(t=process.cwd()),a=t),e(a),0!==a.length&&(n=a+"/"+n,o=47===a.charCodeAt(0))}return n=r(n,!o),o?n.length>0?"/"+n:"/":n.length>0?n:"."},normalize:function(t){if(e(t),0===t.length)return".";var n=47===t.charCodeAt(0),o=47===t.charCodeAt(t.length-1);return 0!==(t=r(t,!n)).length||n||(t="."),t.length>0&&o&&(t+="/"),n?"/"+t:t},isAbsolute:function(t){return e(t),t.length>0&&47===t.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var t,r=0;r<arguments.length;++r){var o=arguments[r];e(o),o.length>0&&(void 0===t?t=o:t+="/"+o)}return void 0===t?".":n.normalize(t)},relative:function(t,r){if(e(t),e(r),t===r)return"";if((t=n.resolve(t))===(r=n.resolve(r)))return"";for(var o=1;o<t.length&&47===t.charCodeAt(o);++o);for(var i=t.length,a=i-o,h=1;h<r.length&&47===r.charCodeAt(h);++h);for(var s=r.length-h,f=a<s?a:s,u=-1,c=0;c<=f;++c){if(c===f){if(s>f){if(47===r.charCodeAt(h+c))return r.slice(h+c+1);if(0===c)return r.slice(h+c)}else a>f&&(47===t.charCodeAt(o+c)?u=c:0===c&&(u=0));break}var l=t.charCodeAt(o+c);if(l!==r.charCodeAt(h+c))break;47===l&&(u=c)}var p="";for(c=o+u+1;c<=i;++c)c!==i&&47!==t.charCodeAt(c)||(0===p.length?p+="..":p+="/..");return p.length>0?p+r.slice(h+u):(h+=u,47===r.charCodeAt(h)&&++h,r.slice(h))},_makeLong:function(t){return t},dirname:function(t){if(e(t),0===t.length)return".";for(var r=t.charCodeAt(0),n=47===r,o=-1,i=!0,a=t.length-1;a>=1;--a)if(47===(r=t.charCodeAt(a))){if(!i){o=a;break}}else i=!1;return-1===o?n?"/":".":n&&1===o?"//":t.slice(0,o)},basename:function(t,r){if(void 0!==r&&"string"!=typeof r)throw new TypeError('"ext" argument must be a string');e(t);var n,o=0,i=-1,a=!0;if(void 0!==r&&r.length>0&&r.length<=t.length){if(r.length===t.length&&r===t)return"";var h=r.length-1,s=-1;for(n=t.length-1;n>=0;--n){var f=t.charCodeAt(n);if(47===f){if(!a){o=n+1;break}}else-1===s&&(a=!1,s=n+1),h>=0&&(f===r.charCodeAt(h)?-1==--h&&(i=n):(h=-1,i=s))}return o===i?i=s:-1===i&&(i=t.length),t.slice(o,i)}for(n=t.length-1;n>=0;--n)if(47===t.charCodeAt(n)){if(!a){o=n+1;break}}else-1===i&&(a=!1,i=n+1);return-1===i?"":t.slice(o,i)},extname:function(t){e(t);for(var r=-1,n=0,o=-1,i=!0,a=0,h=t.length-1;h>=0;--h){var s=t.charCodeAt(h);if(47!==s)-1===o&&(i=!1,o=h+1),46===s?-1===r?r=h:1!==a&&(a=1):-1!==r&&(a=-1);else if(!i){n=h+1;break}}return-1===r||-1===o||0===a||1===a&&r===o-1&&r===n+1?"":t.slice(r,o)},format:function(t){if(null===t||"object"!=typeof t)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof t);return function(t,e){var r=e.dir||e.root,n=e.base||(e.name||"")+(e.ext||"");return r?r===e.root?r+n:r+"/"+n:n}(0,t)},parse:function(t){e(t);var r={root:"",dir:"",base:"",ext:"",name:""};if(0===t.length)return r;var n,o=t.charCodeAt(0),i=47===o;i?(r.root="/",n=1):n=0;for(var a=-1,h=0,s=-1,f=!0,u=t.length-1,c=0;u>=n;--u)if(47!==(o=t.charCodeAt(u)))-1===s&&(f=!1,s=u+1),46===o?-1===a?a=u:1!==c&&(c=1):-1!==a&&(c=-1);else if(!f){h=u+1;break}return-1===a||-1===s||0===c||1===c&&a===s-1&&a===h+1?-1!==s&&(r.base=r.name=0===h&&i?t.slice(1,s):t.slice(h,s)):(0===h&&i?(r.name=t.slice(1,a),r.base=t.slice(1,s)):(r.name=t.slice(h,a),r.base=t.slice(h,s)),r.ext=t.slice(a,s)),h>0?r.dir=t.slice(0,h-1):i&&(r.dir="/"),r},sep:"/",delimiter:":",win32:null,posix:null};n.posix=n,t.exports=n},447:(t,e,r)=>{var n;if(r.r(e),r.d(e,{URI:()=>g,Utils:()=>O}),"object"==typeof process)n="win32"===process.platform;else if("object"==typeof navigator){var o=navigator.userAgent;n=o.indexOf("Windows")>=0}var i,a,h=(i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),s=/^\w[\w\d+.-]*$/,f=/^\//,u=/^\/\//,c="",l="/",p=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,g=function(){function t(t,e,r,n,o,i){void 0===i&&(i=!1),"object"==typeof t?(this.scheme=t.scheme||c,this.authority=t.authority||c,this.path=t.path||c,this.query=t.query||c,this.fragment=t.fragment||c):(this.scheme=function(t,e){return t||e?t:"file"}(t,i),this.authority=e||c,this.path=function(t,e){switch(t){case"https":case"http":case"file":e?e[0]!==l&&(e=l+e):e=l}return e}(this.scheme,r||c),this.query=n||c,this.fragment=o||c,function(t,e){if(!t.scheme&&e)throw new Error('[UriError]: Scheme is missing: {scheme: "", authority: "'+t.authority+'", path: "'+t.path+'", query: "'+t.query+'", fragment: "'+t.fragment+'"}');if(t.scheme&&!s.test(t.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(t.path)if(t.authority){if(!f.test(t.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(u.test(t.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}(this,i))}return t.isUri=function(e){return e instanceof t||!!e&&"string"==typeof e.authority&&"string"==typeof e.fragment&&"string"==typeof e.path&&"string"==typeof e.query&&"string"==typeof e.scheme&&"function"==typeof e.fsPath&&"function"==typeof e.with&&"function"==typeof e.toString},Object.defineProperty(t.prototype,"fsPath",{get:function(){return C(this,!1)},enumerable:!1,configurable:!0}),t.prototype.with=function(t){if(!t)return this;var e=t.scheme,r=t.authority,n=t.path,o=t.query,i=t.fragment;return void 0===e?e=this.scheme:null===e&&(e=c),void 0===r?r=this.authority:null===r&&(r=c),void 0===n?n=this.path:null===n&&(n=c),void 0===o?o=this.query:null===o&&(o=c),void 0===i?i=this.fragment:null===i&&(i=c),e===this.scheme&&r===this.authority&&n===this.path&&o===this.query&&i===this.fragment?this:new v(e,r,n,o,i)},t.parse=function(t,e){void 0===e&&(e=!1);var r=p.exec(t);return r?new v(r[2]||c,x(r[4]||c),x(r[5]||c),x(r[7]||c),x(r[9]||c),e):new v(c,c,c,c,c)},t.file=function(t){var e=c;if(n&&(t=t.replace(/\\/g,l)),t[0]===l&&t[1]===l){var r=t.indexOf(l,2);-1===r?(e=t.substring(2),t=l):(e=t.substring(2,r),t=t.substring(r)||l)}return new v("file",e,t,c,c)},t.from=function(t){return new v(t.scheme,t.authority,t.path,t.query,t.fragment)},t.prototype.toString=function(t){return void 0===t&&(t=!1),A(this,t)},t.prototype.toJSON=function(){return this},t.revive=function(e){if(e){if(e instanceof t)return e;var r=new v(e);return r._formatted=e.external,r._fsPath=e._sep===d?e.fsPath:null,r}return e},t}(),d=n?1:void 0,v=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._formatted=null,e._fsPath=null,e}return h(e,t),Object.defineProperty(e.prototype,"fsPath",{get:function(){return this._fsPath||(this._fsPath=C(this,!1)),this._fsPath},enumerable:!1,configurable:!0}),e.prototype.toString=function(t){return void 0===t&&(t=!1),t?A(this,!0):(this._formatted||(this._formatted=A(this,!1)),this._formatted)},e.prototype.toJSON=function(){var t={$mid:1};return this._fsPath&&(t.fsPath=this._fsPath,t._sep=d),this._formatted&&(t.external=this._formatted),this.path&&(t.path=this.path),this.scheme&&(t.scheme=this.scheme),this.authority&&(t.authority=this.authority),this.query&&(t.query=this.query),this.fragment&&(t.fragment=this.fragment),t},e}(g),m=((a={})[58]="%3A",a[47]="%2F",a[63]="%3F",a[35]="%23",a[91]="%5B",a[93]="%5D",a[64]="%40",a[33]="%21",a[36]="%24",a[38]="%26",a[39]="%27",a[40]="%28",a[41]="%29",a[42]="%2A",a[43]="%2B",a[44]="%2C",a[59]="%3B",a[61]="%3D",a[32]="%20",a);function y(t,e){for(var r=void 0,n=-1,o=0;o<t.length;o++){var i=t.charCodeAt(o);if(i>=97&&i<=122||i>=65&&i<=90||i>=48&&i<=57||45===i||46===i||95===i||126===i||e&&47===i)-1!==n&&(r+=encodeURIComponent(t.substring(n,o)),n=-1),void 0!==r&&(r+=t.charAt(o));else{void 0===r&&(r=t.substr(0,o));var a=m[i];void 0!==a?(-1!==n&&(r+=encodeURIComponent(t.substring(n,o)),n=-1),r+=a):-1===n&&(n=o)}}return-1!==n&&(r+=encodeURIComponent(t.substring(n))),void 0!==r?r:t}function b(t){for(var e=void 0,r=0;r<t.length;r++){var n=t.charCodeAt(r);35===n||63===n?(void 0===e&&(e=t.substr(0,r)),e+=m[n]):void 0!==e&&(e+=t[r])}return void 0!==e?e:t}function C(t,e){var r;return r=t.authority&&t.path.length>1&&"file"===t.scheme?"//"+t.authority+t.path:47===t.path.charCodeAt(0)&&(t.path.charCodeAt(1)>=65&&t.path.charCodeAt(1)<=90||t.path.charCodeAt(1)>=97&&t.path.charCodeAt(1)<=122)&&58===t.path.charCodeAt(2)?e?t.path.substr(1):t.path[1].toLowerCase()+t.path.substr(2):t.path,n&&(r=r.replace(/\//g,"\\")),r}function A(t,e){var r=e?b:y,n="",o=t.scheme,i=t.authority,a=t.path,h=t.query,s=t.fragment;if(o&&(n+=o,n+=":"),(i||"file"===o)&&(n+=l,n+=l),i){var f=i.indexOf("@");if(-1!==f){var u=i.substr(0,f);i=i.substr(f+1),-1===(f=u.indexOf(":"))?n+=r(u,!1):(n+=r(u.substr(0,f),!1),n+=":",n+=r(u.substr(f+1),!1)),n+="@"}-1===(f=(i=i.toLowerCase()).indexOf(":"))?n+=r(i,!1):(n+=r(i.substr(0,f),!1),n+=i.substr(f))}if(a){if(a.length>=3&&47===a.charCodeAt(0)&&58===a.charCodeAt(2))(c=a.charCodeAt(1))>=65&&c<=90&&(a="/"+String.fromCharCode(c+32)+":"+a.substr(3));else if(a.length>=2&&58===a.charCodeAt(1)){var c;(c=a.charCodeAt(0))>=65&&c<=90&&(a=String.fromCharCode(c+32)+":"+a.substr(2))}n+=r(a,!0)}return h&&(n+="?",n+=r(h,!1)),s&&(n+="#",n+=e?s:y(s,!1)),n}function w(t){try{return decodeURIComponent(t)}catch(e){return t.length>3?t.substr(0,3)+w(t.substr(3)):t}}var _=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function x(t){return t.match(_)?t.replace(_,(function(t){return w(t)})):t}var O,P=r(470),j=function(){for(var t=0,e=0,r=arguments.length;e<r;e++)t+=arguments[e].length;var n=Array(t),o=0;for(e=0;e<r;e++)for(var i=arguments[e],a=0,h=i.length;a<h;a++,o++)n[o]=i[a];return n},U=P.posix||P;!function(t){t.joinPath=function(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];return t.with({path:U.join.apply(U,j([t.path],e))})},t.resolvePath=function(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var n=t.path||"/";return t.with({path:U.resolve.apply(U,j([n],e))})},t.dirname=function(t){var e=U.dirname(t.path);return 1===e.length&&46===e.charCodeAt(0)?t:t.with({path:e})},t.basename=function(t){return U.basename(t.path)},t.extname=function(t){return U.extname(t.path)}}(O||(O={}))}},e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={exports:{}};return t[n](o,o.exports,r),o.exports}return r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r(447)})();const{URI,Utils}=LIB;
285
211
  //# sourceMappingURL=index.js.map
286
212
 
287
213
  /***/ }),
288
- /* 4 */
214
+ /* 5 */
289
215
  /***/ ((module) => {
290
216
 
291
217
  // shim for using process in browser
@@ -474,12 +400,6 @@ process.chdir = function (dir) {
474
400
  process.umask = function() { return 0; };
475
401
 
476
402
 
477
- /***/ }),
478
- /* 5 */
479
- /***/ ((__unused_webpack_module, exports) => {
480
-
481
- (()=>{"use strict";var e={};(()=>{var r=e;Object.defineProperty(r,"__esModule",{value:!0}),r.getErrorStatusDescription=r.xhr=r.configure=void 0,r.configure=(e,r)=>{},r.xhr=async e=>{const r=new Headers;if(e.headers)for(const t in e.headers){const s=e.headers[t];Array.isArray(s)?s.forEach((e=>r.set(t,e))):r.set(t,s)}e.user&&e.password&&r.set("Authorization","Basic "+btoa(e.user+":"+e.password));const t={method:e.type,redirect:e.followRedirects>0?"follow":"manual",mode:"cors",headers:r};e.data&&(t.body=e.data);const s=new Request(e.url,t),o=await fetch(s),a={};o.headers.forEach(((e,r)=>{a[r]=e}));const n=await o.arrayBuffer();return new class{constructor(){this.status=o.status,this.headers=a}get responseText(){return(new TextDecoder).decode(n)}get body(){return new Uint8Array(n)}}},r.getErrorStatusDescription=function(e){return String(e)}})();var r=exports;for(var t in e)r[t]=e[t];e.__esModule&&Object.defineProperty(r,"__esModule",{value:!0})})();
482
-
483
403
  /***/ })
484
404
  /******/ ]);
485
405
  /************************************************************************/
@@ -542,22 +462,130 @@ var __webpack_exports__ = {};
542
462
  (() => {
543
463
  "use strict";
544
464
  var exports = __webpack_exports__;
545
-
546
- /*---------------------------------------------------------------------------------------------
547
- * Copyright (c) Microsoft Corporation. All rights reserved.
548
- * Licensed under the MIT License. See License.txt in the project root for license information.
549
- *--------------------------------------------------------------------------------------------*/
550
- Object.defineProperty(exports, "__esModule", ({ value: true }));
551
- exports.activate = void 0;
552
- const vscode = __webpack_require__(1);
553
- const fsProvider_1 = __webpack_require__(2);
554
- function activate(context) {
555
- const serverUri = context.extensionUri.with({ path: '/static/mount', query: undefined });
556
- const disposable = vscode.workspace.registerFileSystemProvider(fsProvider_1.SCHEME, new fsProvider_1.MountsFileSystemProvider(serverUri));
557
- context.subscriptions.push(disposable);
558
- console.log(`vscode-test-web-support fs provider registeres for ${fsProvider_1.SCHEME}, mount ${serverUri.toString()}`);
559
- }
560
- exports.activate = activate;
465
+
466
+ /*---------------------------------------------------------------------------------------------
467
+ * Copyright (c) Microsoft Corporation. All rights reserved.
468
+ * Licensed under the MIT License. See License.txt in the project root for license information.
469
+ *--------------------------------------------------------------------------------------------*/
470
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
471
+ exports.activate = void 0;
472
+ const request_light_1 = __webpack_require__(1);
473
+ const vscode_1 = __webpack_require__(2);
474
+ const fsProvider_1 = __webpack_require__(3);
475
+ const SCHEME = 'vscode-test-web';
476
+ function activate(context) {
477
+ const serverUri = context.extensionUri.with({ path: '/static/mount', query: undefined });
478
+ const serverBackedRootDirectory = new ServerBackedDirectory(serverUri, '');
479
+ const disposable = vscode_1.workspace.registerFileSystemProvider(SCHEME, new fsProvider_1.MemFileSystemProvider(SCHEME, serverBackedRootDirectory));
480
+ context.subscriptions.push(disposable);
481
+ console.log(`vscode-test-web-support fs provider registers for ${SCHEME}, initial content from ${serverUri.toString()}`);
482
+ }
483
+ exports.activate = activate;
484
+ class ServerBackedFile {
485
+ constructor(_serverUri, name) {
486
+ this._serverUri = _serverUri;
487
+ this.name = name;
488
+ this.type = vscode_1.FileType.File;
489
+ }
490
+ get stats() {
491
+ if (this._stats === undefined) {
492
+ this._stats = getStats(this._serverUri);
493
+ }
494
+ return this._stats;
495
+ }
496
+ set stats(stats) {
497
+ this._stats = stats;
498
+ }
499
+ get content() {
500
+ if (this._content === undefined) {
501
+ this._content = getContent(this._serverUri);
502
+ }
503
+ return this._content;
504
+ }
505
+ set content(content) {
506
+ this._content = content;
507
+ }
508
+ }
509
+ class ServerBackedDirectory {
510
+ constructor(_serverUri, name) {
511
+ this._serverUri = _serverUri;
512
+ this.name = name;
513
+ this.type = vscode_1.FileType.Directory;
514
+ }
515
+ get stats() {
516
+ if (this._stats === undefined) {
517
+ this._stats = getStats(this._serverUri);
518
+ }
519
+ return this._stats;
520
+ }
521
+ set stats(stats) {
522
+ this._stats = stats;
523
+ }
524
+ get entries() {
525
+ if (this._entries === undefined) {
526
+ this._entries = getEntries(this._serverUri);
527
+ }
528
+ return this._entries;
529
+ }
530
+ set entries(entries) {
531
+ this._entries = entries;
532
+ }
533
+ }
534
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
535
+ function isEntry(e) {
536
+ return e && (e.type === vscode_1.FileType.Directory || e.type === vscode_1.FileType.File) && typeof e.name === 'string' && e.name.length > 0;
537
+ }
538
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
539
+ function isStat(e) {
540
+ return e && (e.type === vscode_1.FileType.Directory || e.type === vscode_1.FileType.File) && typeof e.ctime === 'number' && typeof e.mtime === 'number' && typeof e.size === 'number';
541
+ }
542
+ async function getEntries(serverUri) {
543
+ const url = serverUri.with({ query: 'readdir' }).toString();
544
+ const response = await request_light_1.xhr({ url });
545
+ if (response.status === 200 && response.status <= 204) {
546
+ try {
547
+ const res = JSON.parse(response.responseText);
548
+ if (Array.isArray(res)) {
549
+ const entries = new Map();
550
+ for (const r of res) {
551
+ if (isEntry(r)) {
552
+ const childPath = vscode_1.Uri.joinPath(serverUri, r.name);
553
+ const newEntry = r.type === vscode_1.FileType.Directory ? new ServerBackedDirectory(childPath, r.name) : new ServerBackedFile(childPath, r.name);
554
+ entries.set(newEntry.name, newEntry);
555
+ }
556
+ }
557
+ return entries;
558
+ }
559
+ }
560
+ catch {
561
+ // ignore
562
+ }
563
+ console.log(`Invalid server response format for ${url.toString()}.`);
564
+ }
565
+ else {
566
+ console.log(`Invalid server response for ${url.toString()}. Status ${response.status}`);
567
+ }
568
+ return new Map();
569
+ }
570
+ async function getStats(serverUri) {
571
+ const url = serverUri.with({ query: 'stat' }).toString();
572
+ const response = await request_light_1.xhr({ url });
573
+ if (response.status === 200 && response.status <= 204) {
574
+ const res = JSON.parse(response.responseText);
575
+ if (isStat(res)) {
576
+ return res;
577
+ }
578
+ throw vscode_1.FileSystemError.FileNotFound(`Invalid server response for ${serverUri.toString()}.`);
579
+ }
580
+ throw vscode_1.FileSystemError.FileNotFound(`Invalid server response for ${serverUri.toString()}. Status ${response.status}.`);
581
+ }
582
+ async function getContent(serverUri) {
583
+ const response = await request_light_1.xhr({ url: serverUri.toString() });
584
+ if (response.status >= 200 && response.status <= 204) {
585
+ return response.body;
586
+ }
587
+ throw vscode_1.FileSystemError.FileNotFound(`Invalid server response for ${serverUri.toString()}. Status ${response.status}.`);
588
+ }
561
589
 
562
590
  })();
563
591