Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/build/lib/bundle.ts
3520 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
export interface IEntryPoint {
7
name: string;
8
include?: string[];
9
dest?: string;
10
}
11
12
export function removeAllTSBoilerplate(source: string) {
13
const seen = new Array<boolean>(BOILERPLATE.length).fill(true, 0, BOILERPLATE.length);
14
return removeDuplicateTSBoilerplate(source, seen);
15
}
16
17
// Taken from typescript compiler => emitFiles
18
const BOILERPLATE = [
19
{ start: /^var __extends/, end: /^}\)\(\);$/ },
20
{ start: /^var __assign/, end: /^};$/ },
21
{ start: /^var __decorate/, end: /^};$/ },
22
{ start: /^var __metadata/, end: /^};$/ },
23
{ start: /^var __param/, end: /^};$/ },
24
{ start: /^var __awaiter/, end: /^};$/ },
25
{ start: /^var __generator/, end: /^};$/ },
26
{ start: /^var __createBinding/, end: /^}\)\);$/ },
27
{ start: /^var __setModuleDefault/, end: /^}\);$/ },
28
{ start: /^var __importStar/, end: /^};$/ },
29
{ start: /^var __addDisposableResource/, end: /^};$/ },
30
{ start: /^var __disposeResources/, end: /^}\);$/ },
31
];
32
33
function removeDuplicateTSBoilerplate(source: string, SEEN_BOILERPLATE: boolean[] = []): string {
34
const lines = source.split(/\r\n|\n|\r/);
35
const newLines: string[] = [];
36
let IS_REMOVING_BOILERPLATE = false, END_BOILERPLATE: RegExp;
37
38
for (let i = 0; i < lines.length; i++) {
39
const line = lines[i];
40
if (IS_REMOVING_BOILERPLATE) {
41
newLines.push('');
42
if (END_BOILERPLATE!.test(line)) {
43
IS_REMOVING_BOILERPLATE = false;
44
}
45
} else {
46
for (let j = 0; j < BOILERPLATE.length; j++) {
47
const boilerplate = BOILERPLATE[j];
48
if (boilerplate.start.test(line)) {
49
if (SEEN_BOILERPLATE[j]) {
50
IS_REMOVING_BOILERPLATE = true;
51
END_BOILERPLATE = boilerplate.end;
52
} else {
53
SEEN_BOILERPLATE[j] = true;
54
}
55
}
56
}
57
if (IS_REMOVING_BOILERPLATE) {
58
newLines.push('');
59
} else {
60
newLines.push(line);
61
}
62
}
63
}
64
return newLines.join('\n');
65
}
66
67