mirror of https://github.com/coder/code-server.git
Files open now
This commit is contained in:
parent
5cb657b415
commit
ec909bdd0c
|
@ -6,6 +6,7 @@
|
||||||
"build:bootstrap-fork": "../../node_modules/.bin/webpack --config ./webpack.config.bootstrap.js"
|
"build:bootstrap-fork": "../../node_modules/.bin/webpack --config ./webpack.config.bootstrap.js"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"iconv-lite": "^0.4.24",
|
||||||
"spdlog": "^0.7.2",
|
"spdlog": "^0.7.2",
|
||||||
"string-replace-loader": "^2.1.1"
|
"string-replace-loader": "^2.1.1"
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
import * as iconv from "../../node_modules/iconv-lite";
|
||||||
|
import { Transform, TransformCallback } from "stream";
|
||||||
|
|
||||||
|
class IconvLiteDecoderStream extends Transform {
|
||||||
|
|
||||||
|
// tslint:disable-next-line no-any
|
||||||
|
private conv: any;
|
||||||
|
private encoding: string;
|
||||||
|
|
||||||
|
public constructor(options: { encoding: string }) {
|
||||||
|
super(options);
|
||||||
|
// tslint:disable-next-line no-any
|
||||||
|
this.conv = (iconv as any).getDecoder(options.encoding, undefined);
|
||||||
|
options.encoding = this.encoding = "utf8";
|
||||||
|
}
|
||||||
|
|
||||||
|
// tslint:disable-next-line no-any
|
||||||
|
public _transform(chunk: any, _encoding: string, done: TransformCallback): void {
|
||||||
|
if (!Buffer.isBuffer(chunk)) {
|
||||||
|
return done(new Error("Iconv decoding stream needs buffers as its input."));
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const res = this.conv.write(chunk);
|
||||||
|
if (res && res.length) {
|
||||||
|
this.push(res, this.encoding);
|
||||||
|
}
|
||||||
|
done();
|
||||||
|
} catch (error) {
|
||||||
|
done(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public _flush(done: TransformCallback): void {
|
||||||
|
try {
|
||||||
|
const res = this.conv.end();
|
||||||
|
if (res && res.length) {
|
||||||
|
this.push(res, this.encoding);
|
||||||
|
}
|
||||||
|
done();
|
||||||
|
} catch (error) {
|
||||||
|
done(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// tslint:disable-next-line no-any
|
||||||
|
public collect(cb: (error: Error | null, response?: any) => void): this {
|
||||||
|
let res = "";
|
||||||
|
this.on("error", cb);
|
||||||
|
this.on("data", (chunk) => res += chunk);
|
||||||
|
this.on("end", () => {
|
||||||
|
cb(null, res);
|
||||||
|
});
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const decodeStream = (encoding: string): NodeJS.ReadWriteStream => {
|
||||||
|
return new IconvLiteDecoderStream({ encoding });
|
||||||
|
};
|
||||||
|
|
||||||
|
// @ts-ignore
|
||||||
|
iconv.decodeStream = decodeStream;
|
||||||
|
|
||||||
|
export = iconv;
|
|
@ -1,15 +1,14 @@
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
const webpack = require("webpack");
|
const webpack = require("webpack");
|
||||||
|
|
||||||
const root = path.resolve(__dirname, "..", "..");
|
const root = path.resolve(__dirname, "../..");
|
||||||
const fills = path.join(root, "packages", "ide", "src", "fill");
|
const fills = path.join(root, "packages/ide/src/fill");
|
||||||
const vscodeFills = path.join(root, "packages", "vscode", "src", "fill");
|
const vscodeFills = path.join(root, "packages/vscode/src/fill");
|
||||||
|
|
||||||
const merge = require("webpack-merge");
|
const merge = require("webpack-merge");
|
||||||
|
|
||||||
module.exports = (env) => {
|
module.exports = (env) => {
|
||||||
const afterCompileCommand = env && env.afterCompileCommand;
|
return merge(require(path.join(root, "scripts/webpack.general.config.js"))({
|
||||||
return merge(require(path.join(root, "scripts", "webpack.general.config.js"))({
|
|
||||||
typescriptCompilerOptions: {
|
typescriptCompilerOptions: {
|
||||||
target: "es5",
|
target: "es5",
|
||||||
},
|
},
|
||||||
|
@ -77,16 +76,5 @@ module.exports = (env) => {
|
||||||
"vs/css": path.resolve(vscodeFills, "css.js"),
|
"vs/css": path.resolve(vscodeFills, "css.js"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
plugins: [
|
|
||||||
new webpack.ProgressPlugin((percentage, msg) => {
|
|
||||||
if (percentage === 1) {
|
|
||||||
if (afterCompileCommand) {
|
|
||||||
require("child_process").execSync(afterCompileCommand, {
|
|
||||||
stdio: "inherit"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
@ -42,6 +42,13 @@ fast-json-stable-stringify@^2.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
|
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
|
||||||
integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
|
integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
|
||||||
|
|
||||||
|
iconv-lite@^0.4.24:
|
||||||
|
version "0.4.24"
|
||||||
|
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
||||||
|
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
|
||||||
|
dependencies:
|
||||||
|
safer-buffer ">= 2.1.2 < 3"
|
||||||
|
|
||||||
json-schema-traverse@^0.4.1:
|
json-schema-traverse@^0.4.1:
|
||||||
version "0.4.1"
|
version "0.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
|
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
|
||||||
|
@ -90,6 +97,11 @@ punycode@^2.1.0:
|
||||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
|
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
|
||||||
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
|
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
|
||||||
|
|
||||||
|
"safer-buffer@>= 2.1.2 < 3":
|
||||||
|
version "2.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||||
|
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||||
|
|
||||||
schema-utils@^0.4.5:
|
schema-utils@^0.4.5:
|
||||||
version "0.4.7"
|
version "0.4.7"
|
||||||
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187"
|
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187"
|
||||||
|
|
|
@ -2,9 +2,9 @@ const path = require("path");
|
||||||
const HtmlWebpackPlugin = require("html-webpack-plugin");
|
const HtmlWebpackPlugin = require("html-webpack-plugin");
|
||||||
const { BundleAnalyzerPlugin } = require("webpack-bundle-analyzer");
|
const { BundleAnalyzerPlugin } = require("webpack-bundle-analyzer");
|
||||||
const PreloadWebpackPlugin = require("preload-webpack-plugin");
|
const PreloadWebpackPlugin = require("preload-webpack-plugin");
|
||||||
const root = path.resolve(__dirname, "..", "..");
|
const root = path.resolve(__dirname, "../..");
|
||||||
const fills = path.join(root, "packages", "ide", "src", "fill");
|
const fills = path.join(root, "packages/ide/src/fill");
|
||||||
const vsFills = path.join(root, "packages", "vscode", "src", "fill");
|
const vsFills = path.join(root, "packages/vscode/src/fill");
|
||||||
|
|
||||||
const merge = require("webpack-merge");
|
const merge = require("webpack-merge");
|
||||||
|
|
||||||
|
@ -74,6 +74,7 @@ module.exports = merge({
|
||||||
"node-pty": path.join(vsFills, "node-pty.ts"),
|
"node-pty": path.join(vsFills, "node-pty.ts"),
|
||||||
"graceful-fs": path.join(vsFills, "graceful-fs.ts"),
|
"graceful-fs": path.join(vsFills, "graceful-fs.ts"),
|
||||||
"spdlog": path.join(vsFills, "spdlog.ts"),
|
"spdlog": path.join(vsFills, "spdlog.ts"),
|
||||||
|
"iconv-lite": path.join(vsFills, "iconv-lite.ts"),
|
||||||
|
|
||||||
"vs/base/node/paths": path.join(vsFills, "paths.ts"),
|
"vs/base/node/paths": path.join(vsFills, "paths.ts"),
|
||||||
"vs/base/common/amd": path.join(vsFills, "amd.ts"),
|
"vs/base/common/amd": path.join(vsFills, "amd.ts"),
|
||||||
|
|
Loading…
Reference in New Issue