mirror of
https://github.com/microsoft/vscode.git
synced 2026-09-29 00:46:00 +01:00
Merge pull request #230238 from microsoft/joh/super-monkey
add esbuild transpiler for fast CI
This commit is contained in:
@@ -161,7 +161,7 @@ steps:
|
||||
displayName: Build server (web)
|
||||
|
||||
- ${{ else }}:
|
||||
- script: npm run gulp transpile-client-swc transpile-extensions
|
||||
- script: npm run gulp transpile-client-esbuild transpile-extensions
|
||||
env:
|
||||
GITHUB_TOKEN: "$(github-distro-mixin-password)"
|
||||
displayName: Transpile
|
||||
|
||||
@@ -275,7 +275,7 @@ steps:
|
||||
displayName: Check GLIBC and GLIBCXX dependencies in server archive
|
||||
|
||||
- ${{ else }}:
|
||||
- script: npm run gulp "transpile-client-swc" "transpile-extensions"
|
||||
- script: npm run gulp "transpile-client-esbuild" "transpile-extensions"
|
||||
env:
|
||||
GITHUB_TOKEN: "$(github-distro-mixin-password)"
|
||||
displayName: Transpile client and extensions
|
||||
|
||||
@@ -129,7 +129,7 @@ steps:
|
||||
retryCountOnTaskFailure: 3
|
||||
|
||||
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
|
||||
- powershell: npm run gulp "transpile-client-swc" "transpile-extensions"
|
||||
- powershell: npm run gulp "transpile-client-esbuild" "transpile-extensions"
|
||||
env:
|
||||
GITHUB_TOKEN: "$(github-distro-mixin-password)"
|
||||
displayName: Transpile client and extensions
|
||||
|
||||
+1
-1
@@ -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'), transpileTask('src', 'out', true)));
|
||||
const transpileClientSWCTask = task.define('transpile-client-esbuild', task.series(util.rimraf('out'), transpileTask('src', 'out', true)));
|
||||
gulp.task(transpileClientSWCTask);
|
||||
|
||||
// Transpile only
|
||||
|
||||
@@ -19,11 +19,11 @@ const util = require("./util");
|
||||
const fancyLog = require("fancy-log");
|
||||
const ansiColors = require("ansi-colors");
|
||||
const os = require("os");
|
||||
const ts = require("typescript");
|
||||
const File = require("vinyl");
|
||||
const task = require("./task");
|
||||
const index_1 = require("./mangle/index");
|
||||
const postcss_1 = require("./postcss");
|
||||
const ts = require("typescript");
|
||||
const watch = require('./watch');
|
||||
// --- gulp-tsb: compile and transpile --------------------------------
|
||||
const reporter = (0, reporter_1.createReporter)();
|
||||
@@ -52,7 +52,7 @@ function createCompile(src, { build, emitError, transpileOnly, preserveEnglish }
|
||||
const compilation = tsb.create(projectPath, overrideOptions, {
|
||||
verbose: false,
|
||||
transpileOnly: Boolean(transpileOnly),
|
||||
transpileWithSwc: typeof transpileOnly !== 'boolean' && transpileOnly.swc
|
||||
transpileWithSwc: typeof transpileOnly !== 'boolean' && transpileOnly.esbuild
|
||||
}, err => reporter(err));
|
||||
function pipeline(token) {
|
||||
const bom = require('gulp-bom');
|
||||
@@ -88,9 +88,9 @@ function createCompile(src, { build, emitError, transpileOnly, preserveEnglish }
|
||||
pipeline.projectPath = projectPath;
|
||||
return pipeline;
|
||||
}
|
||||
function transpileTask(src, out, swc) {
|
||||
function transpileTask(src, out, esbuild) {
|
||||
const task = () => {
|
||||
const transpile = createCompile(src, { build: false, emitError: true, transpileOnly: { swc }, preserveEnglish: false });
|
||||
const transpile = createCompile(src, { build: false, emitError: true, transpileOnly: { esbuild }, preserveEnglish: false });
|
||||
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
|
||||
return srcPipe
|
||||
.pipe(transpile())
|
||||
|
||||
@@ -14,12 +14,12 @@ import * as util from './util';
|
||||
import * as fancyLog from 'fancy-log';
|
||||
import * as ansiColors from 'ansi-colors';
|
||||
import * as os from 'os';
|
||||
import ts = require('typescript');
|
||||
import * as File from 'vinyl';
|
||||
import * as task from './task';
|
||||
import { Mangler } from './mangle/index';
|
||||
import { RawSourceMap } from 'source-map';
|
||||
import { gulpPostcss } from './postcss';
|
||||
import ts = require('typescript');
|
||||
const watch = require('./watch');
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ function getTypeScriptCompilerOptions(src: string): ts.CompilerOptions {
|
||||
interface ICompileTaskOptions {
|
||||
readonly build: boolean;
|
||||
readonly emitError: boolean;
|
||||
readonly transpileOnly: boolean | { swc: boolean };
|
||||
readonly transpileOnly: boolean | { esbuild: boolean };
|
||||
readonly preserveEnglish: boolean;
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ function createCompile(src: string, { build, emitError, transpileOnly, preserveE
|
||||
const compilation = tsb.create(projectPath, overrideOptions, {
|
||||
verbose: false,
|
||||
transpileOnly: Boolean(transpileOnly),
|
||||
transpileWithSwc: typeof transpileOnly !== 'boolean' && transpileOnly.swc
|
||||
transpileWithSwc: typeof transpileOnly !== 'boolean' && transpileOnly.esbuild
|
||||
}, err => reporter(err));
|
||||
|
||||
function pipeline(token?: util.ICancellationToken) {
|
||||
@@ -105,11 +105,11 @@ function createCompile(src: string, { build, emitError, transpileOnly, preserveE
|
||||
return pipeline;
|
||||
}
|
||||
|
||||
export function transpileTask(src: string, out: string, swc: boolean): task.StreamTask {
|
||||
export function transpileTask(src: string, out: string, esbuild: boolean): task.StreamTask {
|
||||
|
||||
const task = () => {
|
||||
|
||||
const transpile = createCompile(src, { build: false, emitError: true, transpileOnly: { swc }, preserveEnglish: false });
|
||||
const transpile = createCompile(src, { build: false, emitError: true, transpileOnly: { esbuild }, preserveEnglish: false });
|
||||
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
|
||||
|
||||
return srcPipe
|
||||
|
||||
@@ -14,8 +14,8 @@ const path_1 = require("path");
|
||||
const utils_1 = require("./utils");
|
||||
const fs_1 = require("fs");
|
||||
const log = require("fancy-log");
|
||||
const colors = require("ansi-colors");
|
||||
const transpiler_1 = require("./transpiler");
|
||||
const colors = require("ansi-colors");
|
||||
class EmptyDuplex extends stream_1.Duplex {
|
||||
_write(_chunk, _encoding, callback) { callback(); }
|
||||
_read() { this.push(null); }
|
||||
@@ -97,7 +97,7 @@ function create(projectPath, existingOptions, config, onError = _defaultOnError)
|
||||
if (config.transpileOnly) {
|
||||
const transpiler = !config.transpileWithSwc
|
||||
? new transpiler_1.TscTranspiler(logFn, printDiagnostic, projectPath, cmdLine)
|
||||
: new transpiler_1.SwcTranspiler(logFn, printDiagnostic, projectPath, cmdLine);
|
||||
: new transpiler_1.ESBuildTranspiler(logFn, printDiagnostic, projectPath, cmdLine);
|
||||
result = (() => createTranspileStream(transpiler));
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -12,8 +12,8 @@ import { dirname } from 'path';
|
||||
import { strings } from './utils';
|
||||
import { readFileSync, statSync } from 'fs';
|
||||
import * as log from 'fancy-log';
|
||||
import { ESBuildTranspiler, ITranspiler, TscTranspiler } from './transpiler';
|
||||
import colors = require('ansi-colors');
|
||||
import { ITranspiler, SwcTranspiler, TscTranspiler } from './transpiler';
|
||||
|
||||
export interface IncrementalCompiler {
|
||||
(token?: any): Readable & Writable;
|
||||
@@ -130,7 +130,7 @@ export function create(
|
||||
if (config.transpileOnly) {
|
||||
const transpiler = !config.transpileWithSwc
|
||||
? new TscTranspiler(logFn, printDiagnostic, projectPath, cmdLine)
|
||||
: new SwcTranspiler(logFn, printDiagnostic, projectPath, cmdLine);
|
||||
: new ESBuildTranspiler(logFn, printDiagnostic, projectPath, cmdLine);
|
||||
result = <any>(() => createTranspileStream(transpiler));
|
||||
} else {
|
||||
const _builder = builder.createTypeScriptBuilder({ logFn }, projectPath, cmdLine);
|
||||
|
||||
+44
-68
@@ -4,8 +4,8 @@
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.SwcTranspiler = exports.TscTranspiler = void 0;
|
||||
const swc = require("@swc/core");
|
||||
exports.ESBuildTranspiler = exports.TscTranspiler = void 0;
|
||||
const esbuild = require("esbuild");
|
||||
const ts = require("typescript");
|
||||
const threads = require("node:worker_threads");
|
||||
const Vinyl = require("vinyl");
|
||||
@@ -224,25 +224,41 @@ class TscTranspiler {
|
||||
}
|
||||
}
|
||||
exports.TscTranspiler = TscTranspiler;
|
||||
function _isDefaultEmpty(src) {
|
||||
return src
|
||||
.replace('"use strict";', '')
|
||||
.replace(/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm, '$1')
|
||||
.trim().length === 0;
|
||||
}
|
||||
class SwcTranspiler {
|
||||
class ESBuildTranspiler {
|
||||
_logFn;
|
||||
_onError;
|
||||
_cmdLine;
|
||||
onOutfile;
|
||||
_outputFileNames;
|
||||
_jobs = [];
|
||||
onOutfile;
|
||||
_transformOpts;
|
||||
constructor(_logFn, _onError, configFilePath, _cmdLine) {
|
||||
this._logFn = _logFn;
|
||||
this._onError = _onError;
|
||||
this._cmdLine = _cmdLine;
|
||||
_logFn('Transpile', `will use SWC to transpile source files`);
|
||||
_logFn('Transpile', `will use ESBuild to transpile source files`);
|
||||
this._outputFileNames = new OutputFileNameOracle(_cmdLine, configFilePath);
|
||||
const isExtension = configFilePath.includes('extensions');
|
||||
this._transformOpts = {
|
||||
target: ['es2022'],
|
||||
format: isExtension ? 'cjs' : 'esm',
|
||||
platform: isExtension ? 'node' : undefined,
|
||||
loader: 'ts',
|
||||
sourcemap: 'inline',
|
||||
tsconfigRaw: JSON.stringify({
|
||||
compilerOptions: {
|
||||
...this._cmdLine.options,
|
||||
...{
|
||||
module: isExtension ? ts.ModuleKind.CommonJS : undefined
|
||||
}
|
||||
}
|
||||
}),
|
||||
supported: {
|
||||
'class-static-blocks': false, // SEE https://github.com/evanw/esbuild/issues/3823,
|
||||
'dynamic-import': !isExtension, // see https://github.com/evanw/esbuild/issues/1281
|
||||
'class-field': !isExtension
|
||||
}
|
||||
};
|
||||
}
|
||||
async join() {
|
||||
const jobs = this._jobs.slice();
|
||||
@@ -250,26 +266,17 @@ class SwcTranspiler {
|
||||
await Promise.allSettled(jobs);
|
||||
}
|
||||
transpile(file) {
|
||||
if (this._cmdLine.options.noEmit) {
|
||||
// not doing ANYTHING here
|
||||
return;
|
||||
if (!(file.contents instanceof Buffer)) {
|
||||
throw Error('file.contents must be a Buffer');
|
||||
}
|
||||
const tsSrc = String(file.contents);
|
||||
const t1 = Date.now();
|
||||
let options = SwcTranspiler._swcrcEsm;
|
||||
if (this._cmdLine.options.module === ts.ModuleKind.AMD) {
|
||||
const isAmd = /\n(import|export)/m.test(tsSrc);
|
||||
if (isAmd) {
|
||||
options = SwcTranspiler._swcrcAmd;
|
||||
}
|
||||
}
|
||||
else if (this._cmdLine.options.module === ts.ModuleKind.CommonJS || this._cmdLine.options.module === ts.ModuleKind.Node16) {
|
||||
options = SwcTranspiler._swcrcCommonJS;
|
||||
}
|
||||
this._jobs.push(swc.transform(tsSrc, options).then(output => {
|
||||
this._jobs.push(esbuild.transform(file.contents, {
|
||||
...this._transformOpts,
|
||||
sourcefile: file.path,
|
||||
}).then(result => {
|
||||
// check if output of a DTS-files isn't just "empty" and iff so
|
||||
// skip this file
|
||||
if (file.path.endsWith('.d.ts') && _isDefaultEmpty(output.code)) {
|
||||
if (file.path.endsWith('.d.ts') && _isDefaultEmpty(result.code)) {
|
||||
return;
|
||||
}
|
||||
const outBase = this._cmdLine.options.outDir ?? file.base;
|
||||
@@ -277,51 +284,20 @@ class SwcTranspiler {
|
||||
this.onOutfile(new Vinyl({
|
||||
path: outPath,
|
||||
base: outBase,
|
||||
contents: Buffer.from(output.code),
|
||||
contents: Buffer.from(result.code),
|
||||
}));
|
||||
this._logFn('Transpile', `swc took ${Date.now() - t1}ms for ${file.path}`);
|
||||
this._logFn('Transpile', `esbuild took ${Date.now() - t1}ms for ${file.path}`);
|
||||
}).catch(err => {
|
||||
this._onError(err);
|
||||
}));
|
||||
}
|
||||
// --- .swcrc
|
||||
static _swcrcAmd = {
|
||||
exclude: '\.js$',
|
||||
jsc: {
|
||||
parser: {
|
||||
syntax: 'typescript',
|
||||
tsx: false,
|
||||
decorators: true
|
||||
},
|
||||
target: 'es2022',
|
||||
loose: false,
|
||||
minify: {
|
||||
compress: false,
|
||||
mangle: false
|
||||
},
|
||||
transform: {
|
||||
useDefineForClassFields: false,
|
||||
},
|
||||
},
|
||||
module: {
|
||||
type: 'amd',
|
||||
noInterop: false
|
||||
},
|
||||
minify: false,
|
||||
};
|
||||
static _swcrcCommonJS = {
|
||||
...this._swcrcAmd,
|
||||
module: {
|
||||
type: 'commonjs',
|
||||
importInterop: 'swc'
|
||||
}
|
||||
};
|
||||
static _swcrcEsm = {
|
||||
...this._swcrcAmd,
|
||||
module: {
|
||||
type: 'es6'
|
||||
}
|
||||
};
|
||||
}
|
||||
exports.SwcTranspiler = SwcTranspiler;
|
||||
exports.ESBuildTranspiler = ESBuildTranspiler;
|
||||
function _isDefaultEmpty(src) {
|
||||
return src
|
||||
.replace('"use strict";', '')
|
||||
.replace(/\/\/# sourceMappingURL.*^/, '')
|
||||
.replace(/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm, '$1')
|
||||
.trim().length === 0;
|
||||
}
|
||||
//# sourceMappingURL=transpiler.js.map
|
||||
+47
-76
@@ -3,7 +3,7 @@
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import * as swc from '@swc/core';
|
||||
import * as esbuild from 'esbuild';
|
||||
import * as ts from 'typescript';
|
||||
import * as threads from 'node:worker_threads';
|
||||
import * as Vinyl from 'vinyl';
|
||||
@@ -291,29 +291,46 @@ export class TscTranspiler implements ITranspiler {
|
||||
}
|
||||
}
|
||||
|
||||
function _isDefaultEmpty(src: string): boolean {
|
||||
return src
|
||||
.replace('"use strict";', '')
|
||||
.replace(/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm, '$1')
|
||||
.trim().length === 0;
|
||||
}
|
||||
|
||||
|
||||
export class SwcTranspiler implements ITranspiler {
|
||||
|
||||
onOutfile?: ((file: Vinyl) => void) | undefined;
|
||||
export class ESBuildTranspiler implements ITranspiler {
|
||||
|
||||
private readonly _outputFileNames: OutputFileNameOracle;
|
||||
private _jobs: Promise<any>[] = [];
|
||||
|
||||
onOutfile?: ((file: Vinyl) => void) | undefined;
|
||||
|
||||
private readonly _transformOpts: esbuild.TransformOptions;
|
||||
|
||||
constructor(
|
||||
private readonly _logFn: (topic: string, message: string) => void,
|
||||
private readonly _onError: (err: any) => void,
|
||||
configFilePath: string,
|
||||
private readonly _cmdLine: ts.ParsedCommandLine
|
||||
) {
|
||||
_logFn('Transpile', `will use SWC to transpile source files`);
|
||||
_logFn('Transpile', `will use ESBuild to transpile source files`);
|
||||
this._outputFileNames = new OutputFileNameOracle(_cmdLine, configFilePath);
|
||||
|
||||
const isExtension = configFilePath.includes('extensions');
|
||||
|
||||
this._transformOpts = {
|
||||
target: ['es2022'],
|
||||
format: isExtension ? 'cjs' : 'esm',
|
||||
platform: isExtension ? 'node' : undefined,
|
||||
loader: 'ts',
|
||||
sourcemap: 'inline',
|
||||
tsconfigRaw: JSON.stringify({
|
||||
compilerOptions: {
|
||||
...this._cmdLine.options,
|
||||
...{
|
||||
module: isExtension ? ts.ModuleKind.CommonJS : undefined
|
||||
} satisfies ts.CompilerOptions
|
||||
}
|
||||
}),
|
||||
supported: {
|
||||
'class-static-blocks': false, // SEE https://github.com/evanw/esbuild/issues/3823,
|
||||
'dynamic-import': !isExtension, // see https://github.com/evanw/esbuild/issues/1281
|
||||
'class-field': !isExtension
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
async join(): Promise<void> {
|
||||
@@ -323,29 +340,18 @@ export class SwcTranspiler implements ITranspiler {
|
||||
}
|
||||
|
||||
transpile(file: Vinyl): void {
|
||||
if (this._cmdLine.options.noEmit) {
|
||||
// not doing ANYTHING here
|
||||
return;
|
||||
if (!(file.contents instanceof Buffer)) {
|
||||
throw Error('file.contents must be a Buffer');
|
||||
}
|
||||
|
||||
const tsSrc = String(file.contents);
|
||||
const t1 = Date.now();
|
||||
|
||||
let options: swc.Options = SwcTranspiler._swcrcEsm;
|
||||
if (this._cmdLine.options.module === ts.ModuleKind.AMD) {
|
||||
const isAmd = /\n(import|export)/m.test(tsSrc);
|
||||
if (isAmd) {
|
||||
options = SwcTranspiler._swcrcAmd;
|
||||
}
|
||||
} else if (this._cmdLine.options.module === ts.ModuleKind.CommonJS || this._cmdLine.options.module === ts.ModuleKind.Node16) {
|
||||
options = SwcTranspiler._swcrcCommonJS;
|
||||
}
|
||||
|
||||
this._jobs.push(swc.transform(tsSrc, options).then(output => {
|
||||
this._jobs.push(esbuild.transform(file.contents, {
|
||||
...this._transformOpts,
|
||||
sourcefile: file.path,
|
||||
}).then(result => {
|
||||
|
||||
// check if output of a DTS-files isn't just "empty" and iff so
|
||||
// skip this file
|
||||
if (file.path.endsWith('.d.ts') && _isDefaultEmpty(output.code)) {
|
||||
if (file.path.endsWith('.d.ts') && _isDefaultEmpty(result.code)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -355,56 +361,21 @@ export class SwcTranspiler implements ITranspiler {
|
||||
this.onOutfile!(new Vinyl({
|
||||
path: outPath,
|
||||
base: outBase,
|
||||
contents: Buffer.from(output.code),
|
||||
contents: Buffer.from(result.code),
|
||||
}));
|
||||
|
||||
this._logFn('Transpile', `swc took ${Date.now() - t1}ms for ${file.path}`);
|
||||
this._logFn('Transpile', `esbuild took ${Date.now() - t1}ms for ${file.path}`);
|
||||
|
||||
}).catch(err => {
|
||||
this._onError(err);
|
||||
}));
|
||||
}
|
||||
|
||||
// --- .swcrc
|
||||
|
||||
|
||||
private static readonly _swcrcAmd: swc.Options = {
|
||||
exclude: '\.js$',
|
||||
jsc: {
|
||||
parser: {
|
||||
syntax: 'typescript',
|
||||
tsx: false,
|
||||
decorators: true
|
||||
},
|
||||
target: 'es2022',
|
||||
loose: false,
|
||||
minify: {
|
||||
compress: false,
|
||||
mangle: false
|
||||
},
|
||||
transform: {
|
||||
useDefineForClassFields: false,
|
||||
},
|
||||
},
|
||||
module: {
|
||||
type: 'amd',
|
||||
noInterop: false
|
||||
},
|
||||
minify: false,
|
||||
};
|
||||
|
||||
private static readonly _swcrcCommonJS: swc.Options = {
|
||||
...this._swcrcAmd,
|
||||
module: {
|
||||
type: 'commonjs',
|
||||
importInterop: 'swc'
|
||||
}
|
||||
};
|
||||
|
||||
private static readonly _swcrcEsm: swc.Options = {
|
||||
...this._swcrcAmd,
|
||||
module: {
|
||||
type: 'es6'
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function _isDefaultEmpty(src: string): boolean {
|
||||
return src
|
||||
.replace('"use strict";', '')
|
||||
.replace(/\/\/# sourceMappingURL.*^/, '')
|
||||
.replace(/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm, '$1')
|
||||
.trim().length === 0;
|
||||
}
|
||||
|
||||
@@ -181,7 +181,12 @@ suite('createEditAddingLinksForUriList', () => {
|
||||
});
|
||||
|
||||
test('Smart should be disabled in math blocks', async () => {
|
||||
const katex = (await import('@vscode/markdown-it-katex')).default;
|
||||
|
||||
let katex: any = (await import('@vscode/markdown-it-katex')).default;
|
||||
if (typeof katex === 'object') {
|
||||
katex = katex.default;
|
||||
}
|
||||
|
||||
const engine = createNewMarkdownEngine();
|
||||
(await engine.getEngine(undefined)).use(katex);
|
||||
assert.strictEqual(
|
||||
|
||||
Generated
-195
@@ -54,7 +54,6 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@playwright/test": "^1.46.1",
|
||||
"@swc/core": "1.3.62",
|
||||
"@types/cookie": "^0.3.3",
|
||||
"@types/debug": "^4.1.5",
|
||||
"@types/eslint": "^8.56.10",
|
||||
@@ -1794,200 +1793,6 @@
|
||||
"integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@swc/core": {
|
||||
"version": "1.3.62",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.62.tgz",
|
||||
"integrity": "sha512-J58hWY+/G8vOr4J6ZH9hLg0lMSijZtqIIf4HofZezGog/pVX6sJyBJ40dZ1ploFkDIlWTWvJyqtpesBKS73gkQ==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/swc"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@swc/core-darwin-arm64": "1.3.62",
|
||||
"@swc/core-darwin-x64": "1.3.62",
|
||||
"@swc/core-linux-arm-gnueabihf": "1.3.62",
|
||||
"@swc/core-linux-arm64-gnu": "1.3.62",
|
||||
"@swc/core-linux-arm64-musl": "1.3.62",
|
||||
"@swc/core-linux-x64-gnu": "1.3.62",
|
||||
"@swc/core-linux-x64-musl": "1.3.62",
|
||||
"@swc/core-win32-arm64-msvc": "1.3.62",
|
||||
"@swc/core-win32-ia32-msvc": "1.3.62",
|
||||
"@swc/core-win32-x64-msvc": "1.3.62"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@swc/helpers": "^0.5.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@swc/helpers": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-darwin-arm64": {
|
||||
"version": "1.3.62",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.62.tgz",
|
||||
"integrity": "sha512-MmGilibITz68LEje6vJlKzc2gUUSgzvB3wGLSjEORikTNeM7P8jXVxE4A8fgZqDeudJUm9HVWrxCV+pHDSwXhA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-darwin-x64": {
|
||||
"version": "1.3.62",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.62.tgz",
|
||||
"integrity": "sha512-Xl93MMB3sCWVlYWuQIB+v6EQgzoiuQYK5tNt9lsHoIEVu2zLdkQjae+5FUHZb1VYqCXIiWcULFfVz0R4Sjb7JQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-arm-gnueabihf": {
|
||||
"version": "1.3.62",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.62.tgz",
|
||||
"integrity": "sha512-nJsp6O7kCtAjTTMcIjVB0g5y1JNiYAa5q630eiwrnaHUusEFoANDdORI3Z9vXeikMkng+6yIv9/V8Rb093xLjQ==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-arm64-gnu": {
|
||||
"version": "1.3.62",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.62.tgz",
|
||||
"integrity": "sha512-XGsV93vpUAopDt5y6vPwbK1Nc/MlL55L77bAZUPIiosWD1cWWPHNtNSpriE6+I+JiMHe0pqtfS/SSTk6ZkFQVw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-arm64-musl": {
|
||||
"version": "1.3.62",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.62.tgz",
|
||||
"integrity": "sha512-ESUmJjSlTTkoBy9dMG49opcNn8BmviqStMhwyeD1G8XRnmRVCZZgoBOKdvCXmJhw8bQXDhZumeaTUB+OFUKVXg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-x64-gnu": {
|
||||
"version": "1.3.62",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.62.tgz",
|
||||
"integrity": "sha512-wnHJkt3ZBrax3SFnUHDcncG6mrSg9ZZjMhQV9Mc3JL1x1s1Gy9rGZCoBNnV/BUZWTemxIBcQbANRSDut/WO+9A==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-linux-x64-musl": {
|
||||
"version": "1.3.62",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.62.tgz",
|
||||
"integrity": "sha512-9oRbuTC/VshB66Rgwi3pTq3sPxSTIb8k9L1vJjES+dDMKa29DAjPtWCXG/pyZ00ufpFZgkGEuAHH5uqUcr1JQg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-win32-arm64-msvc": {
|
||||
"version": "1.3.62",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.62.tgz",
|
||||
"integrity": "sha512-zv14vlF2VRrxS061XkfzGjCYnOrEo5glKJjLK5PwUKysIoVrx/L8nAbFxjkX5cObdlyoqo+ekelyBPAO+4bS0w==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-win32-ia32-msvc": {
|
||||
"version": "1.3.62",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.62.tgz",
|
||||
"integrity": "sha512-8MC/PZQSsOP2iA/81tAfNRqMWyEqTS/8zKUI67vPuLvpx6NAjRn3E9qBv7iFqH79iqZNzqSMo3awnLrKZyFbcw==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@swc/core-win32-x64-msvc": {
|
||||
"version": "1.3.62",
|
||||
"resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.62.tgz",
|
||||
"integrity": "sha512-GJSmUJ95HKHZXAxiuPUmrcm/S3ivQvEzXhOZaIqYBIwUsm02vFZkClsV7eIKzWjso1t0+I/8MjrnUNaSWqh1rQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@szmarczak/http-timer": {
|
||||
"version": "4.0.6",
|
||||
"resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
|
||||
|
||||
@@ -112,7 +112,6 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@playwright/test": "^1.46.1",
|
||||
"@swc/core": "1.3.62",
|
||||
"@types/cookie": "^0.3.3",
|
||||
"@types/debug": "^4.1.5",
|
||||
"@types/eslint": "^8.56.10",
|
||||
|
||||
Reference in New Issue
Block a user