Skip to content

Commit 6bb6200

Browse files
code-asherkylecarbs
authored andcommitted
Fix require.toUrl and walkthroughs
1 parent a353a59 commit 6bb6200

7 files changed

Lines changed: 68 additions & 25 deletions

File tree

packages/vscode/src/client.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import "./fill/require";
21
import * as paths from "./fill/paths";
32
import "./fill/platform";
43
import "./fill/storageDatabase";

packages/vscode/src/fill/amd.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ export const getPathFromAmdModule = (_: typeof require, relativePath: string): s
77
return process.mainModule.filename.slice(0, index);
88
}
99

10-
return relativePath ? URI.parse(require.toUrl(relativePath)).fsPath : "";
10+
return relativePath ? URI.file(relativePath).fsPath : "";
1111
};

packages/vscode/src/fill/dom.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ if (!("toElement" in MouseEvent.prototype)) {
2222
}
2323

2424
const _addDisposableListener = dom.addDisposableListener;
25+
// tslint:disable-next-line no-any
2526
const addDisposableListener = (node: Element | Window | Document, type: string, handler: (event: any) => void, useCapture?: boolean): IDisposable => {
2627
return _addDisposableListener(node, type === "mousewheel" ? "wheel" : type, handler, useCapture);
2728
};

packages/vscode/src/fill/require.ts

Lines changed: 0 additions & 7 deletions
This file was deleted.

packages/web/webpack.common.config.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@ module.exports = merge({
2222
test: /\.(j|t)s/,
2323
options: {
2424
multiple: [{
25-
search: "require\\.toUrl\\(",
26-
replace: "requireToUrl(",
25+
// These will be handled by file-loader. We need the location because
26+
// they are parsed as URIs and will throw errors if not fully formed.
27+
search: "require\\.toUrl",
28+
replace: "location.protocol + '//' + location.host + '/' + require",
2729
flags: "g",
2830
}, {
2931
search: "require\\.__\\$__nodeRequire",

scripts/vscode.patch

Lines changed: 57 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -109,14 +109,14 @@ index 2bf7fe37d7..81cc668f12 100644
109109
catch (err) {
110110
errorback(err);
111111
diff --git a/src/vs/workbench/api/electron-browser/mainThreadHeapService.ts b/src/vs/workbench/api/electron-browser/mainThreadHeapService.ts
112-
index e3efb95b75..03e85113a0 100644
112+
index e3efb95b75..163bc4c994 100644
113113
--- a/src/vs/workbench/api/electron-browser/mainThreadHeapService.ts
114114
+++ b/src/vs/workbench/api/electron-browser/mainThreadHeapService.ts
115115
@@ -55,6 +55,9 @@ export class HeapService implements IHeapService {
116116

117117
private _doTrackRecursive(obj: any): Promise<any> {
118118

119-
+ // cannot control GC in the browser.
119+
+ // Cannot control GC in the browser.
120120
+ return Promise.resolve(obj);
121121
+
122122
if (isNullOrUndefined(obj)) {
@@ -144,10 +144,10 @@ index 38bf337a61..aae3a68ff5 100644
144144

145145
// Make the window active to handle the drop properly within
146146
diff --git a/src/vs/workbench/electron-browser/main.ts b/src/vs/workbench/electron-browser/main.ts
147-
index a43d63aa51..4c6df2fcd9 100644
147+
index a43d63aa51..438d0a8245 100644
148148
--- a/src/vs/workbench/electron-browser/main.ts
149149
+++ b/src/vs/workbench/electron-browser/main.ts
150-
@@ -147,13 +147,14 @@ function openWorkbench(configuration: IWindowConfiguration): Promise<void> {
150+
@@ -147,13 +147,13 @@ function openWorkbench(configuration: IWindowConfiguration): Promise<void> {
151151
shell.open();
152152

153153
// Inform user about loading issues from the loader
@@ -158,7 +158,6 @@ index a43d63aa51..4c6df2fcd9 100644
158158
- }
159159
- }
160160
- });
161-
+ // TODO: how to make this work
162161
+ // (<any>self).require.config({
163162
+ // onError: err => {
164163
+ // if (err.errorCode === 'load') {
@@ -269,20 +268,66 @@ index 2975294e75..73ffb6362d 100644
269268
// Don't use ctrl+a by default as that would override the common go to start
270269
// of prompt shell binding
271270
diff --git a/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts b/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts
272-
index 7b4e8721ac..8f26dc2f28 100644
271+
index 7b4e8721ac..96d612f940 100644
273272
--- a/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts
274273
+++ b/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts
275-
@@ -28,7 +28,9 @@ export class WalkThroughContentProvider implements ITextModelContentProvider, IW
274+
@@ -28,14 +28,16 @@ export class WalkThroughContentProvider implements ITextModelContentProvider, IW
276275
public provideTextContent(resource: URI): Thenable<ITextModel> {
277276
const query = resource.query ? JSON.parse(resource.query) : {};
278277
const content: Thenable<string | ITextBufferFactory> = (query.moduleId ? new Promise<string>((resolve, reject) => {
279278
- require([query.moduleId], content => {
280-
+ // Webpack needs this to be static or it can't include it.
279+
- try {
280+
- resolve(content.default());
281+
- } catch (err) {
282+
- reject(err);
283+
- }
284+
+ // This works because the only walkthrough that is a module is the welcome page.
285+
+ // We have to explicitly import it or Webpack won't pick it up.
281286
+ import("vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page").then((content) => {
282-
+ // require([query.moduleId], content => {
283-
try {
284-
resolve(content.default());
285-
} catch (err) {
287+
+ resolve(content.default());
288+
+ }).catch((err) => {
289+
+ reject(err);
290+
});
291+
- }) : this.textFileService.resolveTextContent(URI.file(resource.fsPath)).then(content => content.value));
292+
+ }) : (resource.scheme !== "file"
293+
+ ? fetch(resource.path).then((res) => res.text())
294+
+ : this.textFileService.resolveTextContent(URI.file(resource.fsPath)).then(content => content.value)));
295+
return content.then(content => {
296+
let codeEditorModel = this.modelService.getModel(resource);
297+
if (!codeEditorModel) {
298+
@@ -61,7 +63,7 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi
299+
}
300+
301+
public provideTextContent(resource: URI): Thenable<ITextModel> {
302+
- return this.textFileService.resolveTextContent(URI.file(resource.fsPath)).then(content => {
303+
+ return fetch(resource.path).then((res) => res.text()).then((content) => {
304+
let codeEditorModel = this.modelService.getModel(resource);
305+
if (!codeEditorModel) {
306+
const j = parseInt(resource.fragment);
307+
@@ -78,17 +80,17 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi
308+
return '';
309+
};
310+
311+
- const textBuffer = content.value.create(DefaultEndOfLine.LF);
312+
- const lineCount = textBuffer.getLineCount();
313+
- const range = new Range(1, 1, lineCount, textBuffer.getLineLength(lineCount) + 1);
314+
- const markdown = textBuffer.getValueInRange(range, EndOfLinePreference.TextDefined);
315+
- marked(markdown, { renderer });
316+
+ // const textBuffer = content.value.create(DefaultEndOfLine.LF);
317+
+ // const lineCount = textBuffer.getLineCount();
318+
+ // const range = new Range(1, 1, lineCount, textBuffer.getLineLength(lineCount) + 1);
319+
+ // const markdown = textBuffer.getValueInRange(range, EndOfLinePreference.TextDefined);
320+
+ marked(content, { renderer });
321+
322+
const languageId = this.modeService.getModeIdForLanguageName(languageName);
323+
const languageSelection = this.modeService.create(languageId);
324+
codeEditorModel = this.modelService.createModel(codeSnippet, languageSelection, resource);
325+
} else {
326+
- this.modelService.updateModel(codeEditorModel, content.value);
327+
+ this.modelService.updateModel(codeEditorModel, content);
328+
}
329+
330+
return codeEditorModel;
286331
diff --git a/src/vs/workbench/services/themes/electron-browser/fileIconThemeData.ts b/src/vs/workbench/services/themes/electron-browser/fileIconThemeData.ts
287332
index 5b4136989f..25ccc0fe9e 100644
288333
--- a/src/vs/workbench/services/themes/electron-browser/fileIconThemeData.ts

scripts/webpack.general.config.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ module.exports = (options = {}) => ({
1717
test: /\.(js)/,
1818
exclude: /test/,
1919
}, {
20-
test: /\.(txt|d\.ts|test.ts|perf.data.js|jxs|md|scpt|exe|sh|less)$/,
20+
test: /\.(txt|d\.ts|test.ts|perf.data.js|jxs|scpt|exe|sh|less)$/,
2121
use: [{
2222
loader: "ignore-loader",
2323
}],
@@ -49,9 +49,12 @@ module.exports = (options = {}) => ({
4949
loader: "sass-loader",
5050
}],
5151
}, {
52-
test: /\.(svg|png|ttf|woff|eot)$/,
52+
test: /\.(svg|png|ttf|woff|eot|md)$/,
5353
use: [{
5454
loader: "file-loader",
55+
options: {
56+
name: "[path][name].[ext]",
57+
},
5558
}],
5659
}, {
5760
test: /\.wasm$/,

0 commit comments

Comments
 (0)