Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

joh/swc lib #160274

Merged
merged 3 commits into from Sep 7, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion build/gulpfile.extensions.js
Expand Up @@ -110,7 +110,7 @@ const tasks = compilations.map(function (tsconfigFile) {
overrideOptions.inlineSources = Boolean(build);
overrideOptions.base = path.dirname(absolutePath);

const compilation = tsb.create(absolutePath, overrideOptions, { verbose: false, transpileOnly, transpileOnlyIncludesDts: transpileOnly }, err => reporter(err.toString()));
const compilation = tsb.create(absolutePath, overrideOptions, { verbose: false, transpileOnly, transpileOnlyIncludesDts: transpileOnly, transpileWithSwc: true }, err => reporter(err.toString()));

const pipeline = function () {
const input = es.through();
Expand Down
2 changes: 1 addition & 1 deletion build/gulpfile.js
Expand Up @@ -20,7 +20,7 @@ gulp.task(compileApiProposalNamesTask);
gulp.task(watchApiProposalNamesTask);

// SWC Client Transpile
const transpileClientSWCTask = task.define('transpile-client-swc', task.series(util.rimraf('out'), util.buildWebNodePaths('out'), transpileClientSWC('src', 'out')));
const transpileClientSWCTask = task.define('transpile-client-swc', task.series(util.rimraf('out'), util.buildWebNodePaths('out'), transpileTask('src', 'out', true)));
gulp.task(transpileClientSWCTask);

// Transpile only
Expand Down
33 changes: 8 additions & 25 deletions build/lib/compilation.js
Expand Up @@ -4,7 +4,7 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.watchApiProposalNamesTask = exports.compileApiProposalNamesTask = exports.watchTask = exports.compileTask = exports.transpileTask = exports.transpileClientSWC = void 0;
exports.watchApiProposalNamesTask = exports.compileApiProposalNamesTask = exports.watchTask = exports.compileTask = exports.transpileTask = void 0;
const es = require("event-stream");
const fs = require("fs");
const gulp = require("gulp");
Expand All @@ -18,28 +18,7 @@ const ansiColors = require("ansi-colors");
const os = require("os");
const File = require("vinyl");
const task = require("./task");
const swc_1 = require("./swc");
const watch = require('./watch');
// --- SWC: transpile -------------------------------------
function transpileClientSWC(src, out) {
return function () {
// run SWC sync and put files straight onto the disk
const swcPromise = (0, swc_1.createSwcClientStream)().exec();
// copy none TS resources, like CSS, images, onto the disk
const bom = require('gulp-bom');
const utf8Filter = util.filter(data => /(\/|\\)test(\/|\\).*utf8/.test(data.path));
const tsFilter = util.filter(data => !/\.ts$/.test(data.path));
const srcStream = gulp.src(`${src}/**`, { base: `${src}` });
const copyStream = srcStream
.pipe(utf8Filter)
.pipe(bom()) // this is required to preserve BOM in test files that loose it otherwise
.pipe(utf8Filter.restore)
.pipe(tsFilter);
const copyPromise = util.streamToPromise(copyStream.pipe(gulp.dest(out)));
return Promise.all([swcPromise, copyPromise]);
};
}
exports.transpileClientSWC = transpileClientSWC;
// --- gulp-tsb: compile and transpile --------------------------------
const reporter = (0, reporter_1.createReporter)();
function getTypeScriptCompilerOptions(src) {
Expand All @@ -64,7 +43,11 @@ function createCompile(src, build, emitError, transpileOnly) {
if (!build) {
overrideOptions.inlineSourceMap = true;
}
const compilation = tsb.create(projectPath, overrideOptions, { verbose: false, transpileOnly }, err => reporter(err));
const compilation = tsb.create(projectPath, overrideOptions, {
verbose: false,
transpileOnly: Boolean(transpileOnly),
transpileWithSwc: typeof transpileOnly !== 'boolean' && transpileOnly.swc
}, err => reporter(err));
function pipeline(token) {
const bom = require('gulp-bom');
const utf8Filter = util.filter(data => /(\/|\\)test(\/|\\).*utf8/.test(data.path));
Expand Down Expand Up @@ -95,9 +78,9 @@ function createCompile(src, build, emitError, transpileOnly) {
};
return pipeline;
}
function transpileTask(src, out) {
function transpileTask(src, out, swc) {
return function () {
const transpile = createCompile(src, false, true, true);
const transpile = createCompile(src, false, true, { swc });
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
return srcPipe
.pipe(transpile())
Expand Down
41 changes: 8 additions & 33 deletions build/lib/compilation.ts
Expand Up @@ -17,38 +17,9 @@ import * as os from 'os';
import ts = require('typescript');
import * as File from 'vinyl';
import * as task from './task';
import { createSwcClientStream } from './swc';
const watch = require('./watch');


// --- SWC: transpile -------------------------------------

export function transpileClientSWC(src: string, out: string) {

return function () {

// run SWC sync and put files straight onto the disk
const swcPromise = createSwcClientStream().exec();

// copy none TS resources, like CSS, images, onto the disk
const bom = require('gulp-bom') as typeof import('gulp-bom');
const utf8Filter = util.filter(data => /(\/|\\)test(\/|\\).*utf8/.test(data.path));
const tsFilter = util.filter(data => !/\.ts$/.test(data.path));
const srcStream = gulp.src(`${src}/**`, { base: `${src}` });

const copyStream = srcStream
.pipe(utf8Filter)
.pipe(bom()) // this is required to preserve BOM in test files that loose it otherwise
.pipe(utf8Filter.restore)
.pipe(tsFilter);

const copyPromise = util.streamToPromise(copyStream.pipe(gulp.dest(out)));

return Promise.all([swcPromise, copyPromise]);
};

}

// --- gulp-tsb: compile and transpile --------------------------------

const reporter = createReporter();
Expand All @@ -68,7 +39,7 @@ function getTypeScriptCompilerOptions(src: string): ts.CompilerOptions {
return options;
}

function createCompile(src: string, build: boolean, emitError: boolean, transpileOnly: boolean) {
function createCompile(src: string, build: boolean, emitError: boolean, transpileOnly: boolean | { swc: boolean }) {
const tsb = require('./tsb') as typeof import('./tsb');
const sourcemaps = require('gulp-sourcemaps') as typeof import('gulp-sourcemaps');

Expand All @@ -79,7 +50,11 @@ function createCompile(src: string, build: boolean, emitError: boolean, transpil
overrideOptions.inlineSourceMap = true;
}

const compilation = tsb.create(projectPath, overrideOptions, { verbose: false, transpileOnly }, err => reporter(err));
const compilation = tsb.create(projectPath, overrideOptions, {
verbose: false,
transpileOnly: Boolean(transpileOnly),
transpileWithSwc: typeof transpileOnly !== 'boolean' && transpileOnly.swc
}, err => reporter(err));

function pipeline(token?: util.ICancellationToken) {
const bom = require('gulp-bom') as typeof import('gulp-bom');
Expand Down Expand Up @@ -115,11 +90,11 @@ function createCompile(src: string, build: boolean, emitError: boolean, transpil
return pipeline;
}

export function transpileTask(src: string, out: string): () => NodeJS.ReadWriteStream {
export function transpileTask(src: string, out: string, swc: boolean): () => NodeJS.ReadWriteStream {

return function () {

const transpile = createCompile(src, false, true, true);
const transpile = createCompile(src, false, true, { swc });
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });

return srcPipe
Expand Down
22 changes: 0 additions & 22 deletions build/lib/swc/.swcrc-amd

This file was deleted.

22 changes: 0 additions & 22 deletions build/lib/swc/.swcrc-no-mod

This file was deleted.

74 changes: 0 additions & 74 deletions build/lib/swc/index.js

This file was deleted.

80 changes: 0 additions & 80 deletions build/lib/swc/index.ts

This file was deleted.

4 changes: 3 additions & 1 deletion build/lib/tsb/index.js
Expand Up @@ -92,7 +92,9 @@ function create(projectPath, existingOptions, config, onError = _defaultOnError)
}
let result;
if (config.transpileOnly) {
const transpiler = new transpiler_1.Transpiler(logFn, printDiagnostic, projectPath, cmdLine);
const transpiler = !config.transpileWithSwc
? new transpiler_1.TscTranspiler(logFn, printDiagnostic, projectPath, cmdLine)
: new transpiler_1.SwcTranspiler(logFn, printDiagnostic, projectPath, cmdLine);
result = (() => createTranspileStream(transpiler));
}
else {
Expand Down