@testgorilla/tgo-coding-test 1.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/testgorilla-tgo-coding-test.mjs +94 -94
- package/fesm2022/testgorilla-tgo-coding-test.mjs.map +1 -1
- package/lib/components/configurations/configurations.component.d.ts +1 -1
- package/package.json +15 -17
- package/esm2022/index.mjs +0 -12
- package/esm2022/lib/components/code-editor/code-editor.component.mjs +0 -335
- package/esm2022/lib/components/code-editor/code-editor.service.mjs +0 -72
- package/esm2022/lib/components/code-editor/helpers/c-helper.mjs +0 -40
- package/esm2022/lib/components/code-editor/helpers/code-editor-helper.base.mjs +0 -11
- package/esm2022/lib/components/code-editor/helpers/code-editor-helper.model.mjs +0 -2
- package/esm2022/lib/components/code-editor/helpers/cpp-helper.mjs +0 -41
- package/esm2022/lib/components/code-editor/helpers/csharp-helper.mjs +0 -42
- package/esm2022/lib/components/code-editor/helpers/go-helper.mjs +0 -42
- package/esm2022/lib/components/code-editor/helpers/index.mjs +0 -16
- package/esm2022/lib/components/code-editor/helpers/java-helper.mjs +0 -42
- package/esm2022/lib/components/code-editor/helpers/javascript-helper.mjs +0 -26
- package/esm2022/lib/components/code-editor/helpers/kotlin-helper.mjs +0 -42
- package/esm2022/lib/components/code-editor/helpers/php-helper.mjs +0 -26
- package/esm2022/lib/components/code-editor/helpers/python-helper.mjs +0 -26
- package/esm2022/lib/components/code-editor/helpers/r-helper.mjs +0 -26
- package/esm2022/lib/components/code-editor/helpers/ruby-helper.mjs +0 -26
- package/esm2022/lib/components/code-editor/helpers/scala-helper.mjs +0 -41
- package/esm2022/lib/components/code-editor/helpers/sql-helper.mjs +0 -34
- package/esm2022/lib/components/code-editor/helpers/swift-helper.mjs +0 -40
- package/esm2022/lib/components/code-editor/helpers/typescript-helper.mjs +0 -41
- package/esm2022/lib/components/code-editor/models/code-editor.model.mjs +0 -2
- package/esm2022/lib/components/code-editor/models/coding-snapshot.model.mjs +0 -2
- package/esm2022/lib/components/coding-question/coding-question.component.mjs +0 -126
- package/esm2022/lib/components/coding-section/coding-section.component.mjs +0 -188
- package/esm2022/lib/components/common/truncated-text/truncated-text.component.mjs +0 -38
- package/esm2022/lib/components/configurations/configurations.component.mjs +0 -97
- package/esm2022/lib/components/instructions/instructions.component.mjs +0 -139
- package/esm2022/lib/components/panel/panel.component.mjs +0 -34
- package/esm2022/lib/components/runnable-editor/runnable-editor.component.mjs +0 -169
- package/esm2022/lib/components/tests/test-cases/test-cases.component.mjs +0 -198
- package/esm2022/lib/components/tests/test-cases-content/test-cases-content.component.mjs +0 -96
- package/esm2022/lib/components/tests/test-cases-status/test-cases-status.component.mjs +0 -21
- package/esm2022/lib/components/tests/test-results.component.mjs +0 -127
- package/esm2022/lib/components/tgo-coding-test/tgo-coding-test.component.mjs +0 -280
- package/esm2022/lib/components/tgo-coding-test-candidate-view/tgo-coding-test-candidate-view.component.mjs +0 -476
- package/esm2022/lib/config/index.mjs +0 -2
- package/esm2022/lib/config/tgo-coding-test.config.mjs +0 -2
- package/esm2022/lib/config/tgo-coding-test.provider.mjs +0 -34
- package/esm2022/lib/config/tgo-coding-test.token.mjs +0 -14
- package/esm2022/lib/models/auto-saved-data.mjs +0 -2
- package/esm2022/lib/models/code-event.mjs +0 -2
- package/esm2022/lib/models/coderunner-execution-results.mjs +0 -2
- package/esm2022/lib/models/configs.mjs +0 -2
- package/esm2022/lib/models/language-change-action.mjs +0 -2
- package/esm2022/lib/models/lat-languages.mjs +0 -3
- package/esm2022/lib/models/mixpanel-events.mjs +0 -2
- package/esm2022/lib/models/mode.mjs +0 -2
- package/esm2022/lib/models/paste-data.mjs +0 -2
- package/esm2022/lib/models/programming-language.mjs +0 -2
- package/esm2022/lib/models/test-cases.mjs +0 -7
- package/esm2022/lib/models/theme.mjs +0 -2
- package/esm2022/lib/models/translations.mjs +0 -2
- package/esm2022/lib/models/view-mode.mjs +0 -8
- package/esm2022/lib/pipes/memoize-func.pipe.mjs +0 -39
- package/esm2022/lib/services/candidate-coding-test-services/candidature-api.service.mjs +0 -19
- package/esm2022/lib/services/candidate-coding-test-services/coderunner-api.service.mjs +0 -58
- package/esm2022/lib/services/candidate-coding-test-services/coding-test-tour.service.mjs +0 -89
- package/esm2022/lib/services/candidate-coding-test-services/coding-test.service.mjs +0 -490
- package/esm2022/lib/services/candidate-coding-test-services/index.mjs +0 -5
- package/esm2022/lib/services/coding-test-config.service.mjs +0 -51
- package/esm2022/lib/services/configurations.service.mjs +0 -89
- package/esm2022/lib/services/lib-coding-test.service.mjs +0 -106
- package/esm2022/lib/services/storage.service.mjs +0 -624
- package/esm2022/lib/services/test-cases.service.mjs +0 -30
- package/esm2022/lib/services/theme.service.mjs +0 -36
- package/esm2022/lib/utils/additional-languages/erlang.mjs +0 -103
- package/esm2022/lib/utils/resize-element.mjs +0 -13
- package/esm2022/lib/utils/time-to-ms.util.mjs +0 -11
- package/esm2022/shared/index.mjs +0 -5
- package/esm2022/shared/lib/components/audio-animation/audio-animation.component.mjs +0 -114
- package/esm2022/shared/lib/components/audio-animation/index.mjs +0 -2
- package/esm2022/shared/lib/components/index.mjs +0 -3
- package/esm2022/shared/lib/components/vimeo-video/index.mjs +0 -2
- package/esm2022/shared/lib/components/vimeo-video/vimeo-video.component.mjs +0 -101
- package/esm2022/shared/lib/models/answer.mjs +0 -2
- package/esm2022/shared/lib/models/assessment.mjs +0 -2
- package/esm2022/shared/lib/models/environment.mjs +0 -2
- package/esm2022/shared/lib/models/index.mjs +0 -9
- package/esm2022/shared/lib/models/question-component.mjs +0 -2
- package/esm2022/shared/lib/models/question.mjs +0 -2
- package/esm2022/shared/lib/models/test.mjs +0 -2
- package/esm2022/shared/lib/models/translations.mjs +0 -2
- package/esm2022/shared/lib/models/window.mjs +0 -2
- package/esm2022/shared/lib/services/api/api.service.mjs +0 -97
- package/esm2022/shared/lib/services/api/mocked-api.service.mjs +0 -131
- package/esm2022/shared/lib/services/environment/environment.service.mjs +0 -13
- package/esm2022/shared/lib/services/index.mjs +0 -10
- package/esm2022/shared/lib/services/localization/languages.model.mjs +0 -19
- package/esm2022/shared/lib/services/localization/transloco-lazy-module-utils.mjs +0 -27
- package/esm2022/shared/lib/services/localization/transloco-testing.module.mjs +0 -11
- package/esm2022/shared/lib/services/media/media.service.mjs +0 -129
- package/esm2022/shared/lib/services/mixpanel/mixpanel.service.mjs +0 -30
- package/esm2022/shared/lib/services/theme/theme.service.mjs +0 -24
- package/esm2022/shared/test-mocks/assessment-test.mock.mjs +0 -112
- package/esm2022/shared/test-mocks/index.mjs +0 -3
- package/esm2022/shared/test-mocks/tgo-ui.mock.mjs +0 -39
- package/esm2022/testgorilla-tgo-coding-test.mjs +0 -5
|
@@ -15,7 +15,7 @@ export declare class ConfigurationsComponent implements OnInit {
|
|
|
15
15
|
formattingOptions: {
|
|
16
16
|
[key: string]: {
|
|
17
17
|
label: string;
|
|
18
|
-
value:
|
|
18
|
+
value: import("@testgorilla/tgo-coding-test").Themes | number;
|
|
19
19
|
}[];
|
|
20
20
|
};
|
|
21
21
|
codingAssistanceOptions: {
|
package/package.json
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@testgorilla/tgo-coding-test",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@angular/animations": "^
|
|
6
|
-
"@angular/common": "^
|
|
7
|
-
"@angular/core": "^
|
|
8
|
-
"@angular/forms": "^
|
|
9
|
-
"@angular/material": "
|
|
10
|
-
"@angular/router": "^
|
|
5
|
+
"@angular/animations": "^19.2.17",
|
|
6
|
+
"@angular/common": "^19.2.17",
|
|
7
|
+
"@angular/core": "^19.2.17",
|
|
8
|
+
"@angular/forms": "^19.2.17",
|
|
9
|
+
"@angular/material": "19.2.19",
|
|
10
|
+
"@angular/router": "^19.2.17",
|
|
11
11
|
"@ngneat/transloco": "~4.3.0",
|
|
12
12
|
"@ngneat/until-destroy": "10.0.0",
|
|
13
|
-
"@testgorilla/tgo-ui": "^
|
|
14
|
-
"angular-split": "^
|
|
15
|
-
"jest-preset-angular": "
|
|
16
|
-
"monaco-editor": "0.
|
|
13
|
+
"@testgorilla/tgo-ui": "^4.0.0",
|
|
14
|
+
"angular-split": "^19.0.0",
|
|
15
|
+
"jest-preset-angular": "14.4.2",
|
|
16
|
+
"monaco-editor": "0.52.2",
|
|
17
17
|
"ngx-guided-tour": "^2.0.1",
|
|
18
|
-
"ngx-monaco-editor-v2": "^
|
|
19
|
-
"ngx-quill": "^
|
|
20
|
-
"ngx-webstorage": "^
|
|
18
|
+
"ngx-monaco-editor-v2": "^19.0.2",
|
|
19
|
+
"ngx-quill": "^27.1.2",
|
|
20
|
+
"ngx-webstorage": "^19.0.1",
|
|
21
21
|
"quill": "^2.0.3",
|
|
22
22
|
"rxjs": "~7.8.1"
|
|
23
23
|
},
|
|
@@ -33,12 +33,10 @@
|
|
|
33
33
|
},
|
|
34
34
|
".": {
|
|
35
35
|
"types": "./index.d.ts",
|
|
36
|
-
"esm2022": "./esm2022/testgorilla-tgo-coding-test.mjs",
|
|
37
|
-
"esm": "./esm2022/testgorilla-tgo-coding-test.mjs",
|
|
38
36
|
"default": "./fesm2022/testgorilla-tgo-coding-test.mjs"
|
|
39
37
|
}
|
|
40
38
|
},
|
|
41
39
|
"dependencies": {
|
|
42
40
|
"tslib": "^2.3.0"
|
|
43
41
|
}
|
|
44
|
-
}
|
|
42
|
+
}
|
package/esm2022/index.mjs
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Public API Surface of coding-test
|
|
3
|
-
*/
|
|
4
|
-
export { TgoCodingTestComponent } from './lib/components/tgo-coding-test/tgo-coding-test.component';
|
|
5
|
-
export { TgoCodingTestCandidateViewComponent } from './lib/components/tgo-coding-test-candidate-view/tgo-coding-test-candidate-view.component';
|
|
6
|
-
export { ViewMode } from './lib/models/view-mode';
|
|
7
|
-
export { LibCodingTestService } from './lib/services/lib-coding-test.service';
|
|
8
|
-
export { StorageCodingService } from './lib/services/storage.service';
|
|
9
|
-
export { CodingTestConfigService } from './lib/services/coding-test-config.service';
|
|
10
|
-
// Configuration exports
|
|
11
|
-
export { provideTgoCodingTest, } from './lib/config';
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy90Z28tY29kaW5nLXRlc3Qvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDcEcsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMEZBQTBGLENBQUM7QUFZL0ksT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSWxELE9BQU8sRUFBRSxvQkFBb0IsRUFBbUIsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVwRix3QkFBd0I7QUFDeEIsT0FBTyxFQUVMLG9CQUFvQixHQUNyQixNQUFNLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgY29kaW5nLXRlc3RcbiAqL1xuXG5leHBvcnQgeyBUZ29Db2RpbmdUZXN0Q29tcG9uZW50IH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy90Z28tY29kaW5nLXRlc3QvdGdvLWNvZGluZy10ZXN0LmNvbXBvbmVudCc7XG5leHBvcnQgeyBUZ29Db2RpbmdUZXN0Q2FuZGlkYXRlVmlld0NvbXBvbmVudCB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGdvLWNvZGluZy10ZXN0LWNhbmRpZGF0ZS12aWV3L3Rnby1jb2RpbmctdGVzdC1jYW5kaWRhdGUtdmlldy5jb21wb25lbnQnO1xuLy8gTm90ZTogQ29kaW5nVGVzdE1vZHVsZSBpcyBrZXB0IGludGVybmFsIGZvciBub3cgYW5kIG5vdCBleHBvc2VkIGluIHRoZSBwdWJsaWMgQVBJXG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvZGluZy10ZXN0Lm1vZHVsZSc7XG5leHBvcnQgeyBDb25maWcgYXMgTGliQ29kaW5nQ29uZmlnIH0gZnJvbSAnLi9saWIvbW9kZWxzL2NvbmZpZ3MnO1xuZXhwb3J0IHtcbiAgQ3VzdG9tVGVzdENhc2UsXG4gIEV4YW1wbGVUZXN0Q2FzZSxcbiAgVGVzdENhc2VSZXN1bHQsXG4gIFRlc3RDYXNlRGVsZXRpb25BY3Rpb24sXG4gIFRlc3RDYXNlRGVsZXRpb25EYXRhLFxufSBmcm9tICcuL2xpYi9tb2RlbHMvdGVzdC1jYXNlcyc7XG5leHBvcnQgeyBUaGVtZXMgfSBmcm9tICcuL2xpYi9tb2RlbHMvdGhlbWUnO1xuZXhwb3J0IHsgVmlld01vZGUgfSBmcm9tICcuL2xpYi9tb2RlbHMvdmlldy1tb2RlJztcbmV4cG9ydCB7IExBVExhbmd1YWdlLCBMQVRMYW5ndWFnZXMgfSBmcm9tICcuL2xpYi9tb2RlbHMvbGF0LWxhbmd1YWdlcyc7XG5leHBvcnQgeyBDb2RlRWRpdG9yTGFuZ3VhZ2VzIH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb2RlLWVkaXRvci9oZWxwZXJzL2NvZGUtZWRpdG9yLWhlbHBlci5tb2RlbCc7XG5leHBvcnQgeyBNb2RlcyB9IGZyb20gJy4vbGliL21vZGVscy9tb2RlJztcbmV4cG9ydCB7IExpYkNvZGluZ1Rlc3RTZXJ2aWNlLCBSZXNldENvZGVBY3Rpb24gfSBmcm9tICcuL2xpYi9zZXJ2aWNlcy9saWItY29kaW5nLXRlc3Quc2VydmljZSc7XG5leHBvcnQgeyBTdG9yYWdlQ29kaW5nU2VydmljZSB9IGZyb20gJy4vbGliL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XG5leHBvcnQgeyBDb2RpbmdUZXN0Q29uZmlnU2VydmljZSB9IGZyb20gJy4vbGliL3NlcnZpY2VzL2NvZGluZy10ZXN0LWNvbmZpZy5zZXJ2aWNlJztcblxuLy8gQ29uZmlndXJhdGlvbiBleHBvcnRzXG5leHBvcnQge1xuICBUZ29Db2RpbmdUZXN0Q29uZmlnLFxuICBwcm92aWRlVGdvQ29kaW5nVGVzdCxcbn0gZnJvbSAnLi9saWIvY29uZmlnJztcbiJdfQ==
|
|
@@ -1,335 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, inject, Input, Output, ViewChild, } from '@angular/core';
|
|
3
|
-
import { CommonModule } from '@angular/common';
|
|
4
|
-
import { FormsModule } from '@angular/forms';
|
|
5
|
-
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
|
6
|
-
import { combineLatest, distinctUntilChanged, filter, first, interval, map, take } from 'rxjs';
|
|
7
|
-
import { MonacoEditorModule } from 'ngx-monaco-editor-v2';
|
|
8
|
-
import { erlangLanguage } from '../../utils/additional-languages/erlang';
|
|
9
|
-
import { ConfigurationsService } from '../../services/configurations.service';
|
|
10
|
-
import { LibCodingTestService } from '../../services/lib-coding-test.service';
|
|
11
|
-
import { StorageCodingService } from '../../services/storage.service';
|
|
12
|
-
import { CodeEditorService } from './code-editor.service';
|
|
13
|
-
import * as i0 from "@angular/core";
|
|
14
|
-
import * as i1 from "@angular/forms";
|
|
15
|
-
import * as i2 from "ngx-monaco-editor-v2";
|
|
16
|
-
let CodeEditorComponent = class CodeEditorComponent {
|
|
17
|
-
libCodingTestService = inject(LibCodingTestService);
|
|
18
|
-
configurationsService = inject(ConfigurationsService);
|
|
19
|
-
codeEditorService = inject(CodeEditorService);
|
|
20
|
-
changeDetectorRef = inject(ChangeDetectorRef);
|
|
21
|
-
StorageCodingService = inject(StorageCodingService);
|
|
22
|
-
initCode;
|
|
23
|
-
functionParams;
|
|
24
|
-
functionName;
|
|
25
|
-
returnType;
|
|
26
|
-
hasCodingConfigPanel;
|
|
27
|
-
isReadonly;
|
|
28
|
-
autoHeight;
|
|
29
|
-
shouldGenerateInitCode;
|
|
30
|
-
set snapshot(snap) {
|
|
31
|
-
if (snap) {
|
|
32
|
-
this.currentSnapshot = snap;
|
|
33
|
-
this.handleSnapshot(snap.text);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
pasteEvent = new EventEmitter();
|
|
37
|
-
codeChange = new EventEmitter();
|
|
38
|
-
codeEditorElRef;
|
|
39
|
-
code = '';
|
|
40
|
-
codePublished = '';
|
|
41
|
-
codeLanguage = '';
|
|
42
|
-
editorOptions = {
|
|
43
|
-
theme: "vs-dark" /* MonacoColorTheme.Dark */,
|
|
44
|
-
fontSize: '14',
|
|
45
|
-
scrollBeyondLastLine: false,
|
|
46
|
-
minimap: { enabled: false },
|
|
47
|
-
fixedOverflowWidgets: true,
|
|
48
|
-
insertSpaces: false,
|
|
49
|
-
detectIndentation: false,
|
|
50
|
-
automaticLayout: true,
|
|
51
|
-
};
|
|
52
|
-
editor;
|
|
53
|
-
previousConfig = this.StorageCodingService.getSavedConfig();
|
|
54
|
-
currentSnapshot;
|
|
55
|
-
previousMonacoDecoration;
|
|
56
|
-
pasteListener;
|
|
57
|
-
contentChangedSub;
|
|
58
|
-
ngOnInit() {
|
|
59
|
-
if (!this.previousConfig) {
|
|
60
|
-
this.previousConfig = this.configurationsService.getInitialConfig();
|
|
61
|
-
}
|
|
62
|
-
if (this.hasCodingConfigPanel) {
|
|
63
|
-
this.updateIDEConfig();
|
|
64
|
-
}
|
|
65
|
-
this.listenUpdates();
|
|
66
|
-
this.setupConfigs();
|
|
67
|
-
this.setupCode();
|
|
68
|
-
}
|
|
69
|
-
ngOnChanges(changes) {
|
|
70
|
-
if (typeof changes.initCode?.currentValue === 'string') {
|
|
71
|
-
this.code = changes.initCode.currentValue;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
ngOnDestroy() {
|
|
75
|
-
this.contentChangedSub?.dispose();
|
|
76
|
-
this.pasteListener?.dispose();
|
|
77
|
-
}
|
|
78
|
-
initEditor(editor) {
|
|
79
|
-
this.editor = editor;
|
|
80
|
-
this.pasteListener = this.editor.onDidPaste(event => this.catchEvent(event));
|
|
81
|
-
if (this.currentSnapshot) {
|
|
82
|
-
this.handleSnapshot(this.currentSnapshot.text);
|
|
83
|
-
}
|
|
84
|
-
if (this.autoHeight) {
|
|
85
|
-
this.listenContentHeight(editor);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
catchEvent(event) {
|
|
89
|
-
const data = this.editor.getModel()?.getValueInRange(event.range);
|
|
90
|
-
if (data) {
|
|
91
|
-
this.pasteEvent.emit({ type: 'paste', data });
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
publishCode(code) {
|
|
95
|
-
if (code !== this.codePublished) {
|
|
96
|
-
this.codePublished = code;
|
|
97
|
-
this.codeChange.emit(this.codePublished);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
updateIDEConfig() {
|
|
101
|
-
this.configurationsService.config$
|
|
102
|
-
.pipe(distinctUntilChanged(), untilDestroyed(this))
|
|
103
|
-
.subscribe((config) => {
|
|
104
|
-
let configObject = {};
|
|
105
|
-
// eslint-disable-next-line guard-for-in
|
|
106
|
-
for (const key in config) {
|
|
107
|
-
if (config[key] !== this.previousConfig[key]) {
|
|
108
|
-
switch (key) {
|
|
109
|
-
case "Color theme" /* FormattingOptions.ColorTheme */:
|
|
110
|
-
configObject = {
|
|
111
|
-
theme: config["Color theme" /* FormattingOptions.ColorTheme */] === "theme-default" /* Themes.Default */
|
|
112
|
-
? "vs" /* MonacoColorTheme.Light */
|
|
113
|
-
: "vs-dark" /* MonacoColorTheme.Dark */,
|
|
114
|
-
};
|
|
115
|
-
break;
|
|
116
|
-
case "Auto-complete" /* CodingAssistanceOptions.AutoComplete */:
|
|
117
|
-
configObject = {
|
|
118
|
-
quickSuggestions: {
|
|
119
|
-
other: config["Auto-complete" /* CodingAssistanceOptions.AutoComplete */],
|
|
120
|
-
},
|
|
121
|
-
};
|
|
122
|
-
break;
|
|
123
|
-
case "Auto-brackets" /* CodingAssistanceOptions.AutoBrackets */:
|
|
124
|
-
configObject = {
|
|
125
|
-
autoClosingBrackets: config["Auto-brackets" /* CodingAssistanceOptions.AutoBrackets */] ? 'always' : 'never',
|
|
126
|
-
};
|
|
127
|
-
break;
|
|
128
|
-
case "Tab size" /* FormattingOptions.TabSize */:
|
|
129
|
-
configObject = {
|
|
130
|
-
tabSize: config["Tab size" /* FormattingOptions.TabSize */],
|
|
131
|
-
};
|
|
132
|
-
break;
|
|
133
|
-
case "Font size" /* FormattingOptions.FontSize */:
|
|
134
|
-
configObject = {
|
|
135
|
-
fontSize: config["Font size" /* FormattingOptions.FontSize */],
|
|
136
|
-
};
|
|
137
|
-
break;
|
|
138
|
-
case "Error highlighting" /* CodingAssistanceOptions.ErrorHighlighting */:
|
|
139
|
-
this.libCodingTestService.currentLanguage$.pipe(take(1)).subscribe(language => {
|
|
140
|
-
if (language === "javascript" /* CodeEditorLanguages.Javascript */) {
|
|
141
|
-
window['monaco'].languages.typescript.javascriptDefaults.setDiagnosticsOptions({
|
|
142
|
-
noSemanticValidation: !config["Error highlighting" /* CodingAssistanceOptions.ErrorHighlighting */],
|
|
143
|
-
noSyntaxValidation: !config["Error highlighting" /* CodingAssistanceOptions.ErrorHighlighting */],
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
else if (language === "typescript" /* CodeEditorLanguages.Typescript */) {
|
|
147
|
-
window['monaco'].languages.typescript.typescriptDefaults.setDiagnosticsOptions({
|
|
148
|
-
noSemanticValidation: !config["Error highlighting" /* CodingAssistanceOptions.ErrorHighlighting */],
|
|
149
|
-
noSyntaxValidation: !config["Error highlighting" /* CodingAssistanceOptions.ErrorHighlighting */],
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
break;
|
|
154
|
-
}
|
|
155
|
-
this.editorOptions = Object.assign({}, this.editorOptions, configObject);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
this.changeDetectorRef.detectChanges();
|
|
159
|
-
this.previousConfig = config;
|
|
160
|
-
});
|
|
161
|
-
this.editorOptions = Object.assign({}, this.editorOptions, {
|
|
162
|
-
automaticLayout: true,
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
listenContentHeight(editor) {
|
|
166
|
-
const updateHeight = () => {
|
|
167
|
-
window.requestAnimationFrame(() => {
|
|
168
|
-
const { width } = this.codeEditorElRef.nativeElement.getBoundingClientRect();
|
|
169
|
-
const contentHeight = Math.min(1000, editor.getContentHeight());
|
|
170
|
-
this.codeEditorElRef.nativeElement.style.height = `${contentHeight}px`;
|
|
171
|
-
editor.layout({ width, height: contentHeight });
|
|
172
|
-
});
|
|
173
|
-
};
|
|
174
|
-
this.contentChangedSub = editor.onDidContentSizeChange(updateHeight);
|
|
175
|
-
updateHeight();
|
|
176
|
-
}
|
|
177
|
-
setupConfigs() {
|
|
178
|
-
const { functionParams: params, functionName: name, returnType } = this;
|
|
179
|
-
const config = this.previousConfig;
|
|
180
|
-
const wordWrap = this.currentSnapshot ? 'on' : 'off';
|
|
181
|
-
const theme = this.getInitialColorTheme(config, this.currentSnapshot);
|
|
182
|
-
this.libCodingTestService.currentLanguage$.pipe(untilDestroyed(this)).subscribe((language) => {
|
|
183
|
-
if (this.shouldGenerateInitCode) {
|
|
184
|
-
this.codeEditorService.setHelper(language, { params, name, returnType });
|
|
185
|
-
this.codeLanguage = this.codeEditorService.getEditorLang();
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
if (language === "c++" /* CodeEditorLanguages.Cpp */) {
|
|
189
|
-
this.codeLanguage = "cpp" /* CodeEditorLanguages.CppEditor */;
|
|
190
|
-
}
|
|
191
|
-
else if (language === "c#" /* CodeEditorLanguages.CSharp */ || language === "c#_legacy" /* CodeEditorLanguages.CSharpLegacy */) {
|
|
192
|
-
this.codeLanguage = "csharp" /* CodeEditorLanguages.CSharpEditor */;
|
|
193
|
-
}
|
|
194
|
-
else if (language === "sqlite3" /* CodeEditorLanguages.Sqlite */) {
|
|
195
|
-
this.codeLanguage = "sql" /* CodeEditorLanguages.Sql */;
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
this.codeLanguage = language;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
this.editorOptions = Object.assign({}, this.editorOptions, {
|
|
202
|
-
language: this.codeLanguage,
|
|
203
|
-
});
|
|
204
|
-
});
|
|
205
|
-
this.editorOptions = Object.assign({}, this.editorOptions, {
|
|
206
|
-
readOnly: this.isReadonly,
|
|
207
|
-
quickSuggestions: {
|
|
208
|
-
other: config["Auto-complete" /* CodingAssistanceOptions.AutoComplete */],
|
|
209
|
-
},
|
|
210
|
-
autoClosingBrackets: config["Auto-brackets" /* CodingAssistanceOptions.AutoBrackets */] ? 'always' : 'never',
|
|
211
|
-
tabSize: config["Tab size" /* FormattingOptions.TabSize */],
|
|
212
|
-
fontSize: config["Font size" /* FormattingOptions.FontSize */],
|
|
213
|
-
theme,
|
|
214
|
-
wordWrap,
|
|
215
|
-
});
|
|
216
|
-
const monacoLibraryReady$ = interval(100).pipe(map(() => window.monaco), filter(Boolean), first());
|
|
217
|
-
combineLatest({
|
|
218
|
-
monaco: monacoLibraryReady$,
|
|
219
|
-
language: this.libCodingTestService.currentLanguage$,
|
|
220
|
-
})
|
|
221
|
-
.pipe(take(1))
|
|
222
|
-
.subscribe(result => {
|
|
223
|
-
if (result.language === "javascript" /* CodeEditorLanguages.Javascript */) {
|
|
224
|
-
result.monaco.languages.typescript.javascriptDefaults.setDiagnosticsOptions({
|
|
225
|
-
noSemanticValidation: !config["Error highlighting" /* CodingAssistanceOptions.ErrorHighlighting */],
|
|
226
|
-
noSyntaxValidation: !config["Error highlighting" /* CodingAssistanceOptions.ErrorHighlighting */],
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
else if (result.language === "typescript" /* CodeEditorLanguages.Typescript */) {
|
|
230
|
-
result.monaco.languages.typescript.typescriptDefaults.setDiagnosticsOptions({
|
|
231
|
-
noSemanticValidation: !config["Error highlighting" /* CodingAssistanceOptions.ErrorHighlighting */],
|
|
232
|
-
noSyntaxValidation: !config["Error highlighting" /* CodingAssistanceOptions.ErrorHighlighting */],
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
result.monaco.languages.register({ id: "erlang" /* CodeEditorLanguages.Erlang */ });
|
|
236
|
-
result.monaco.languages.setMonarchTokensProvider("erlang" /* CodeEditorLanguages.Erlang */, erlangLanguage);
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
getInitialColorTheme(config, snapshot) {
|
|
240
|
-
let theme;
|
|
241
|
-
if (snapshot) {
|
|
242
|
-
theme = "vs-dark" /* MonacoColorTheme.Dark */;
|
|
243
|
-
}
|
|
244
|
-
else {
|
|
245
|
-
theme = config["Color theme" /* FormattingOptions.ColorTheme */] === "theme-default" /* Themes.Default */ ? "vs" /* MonacoColorTheme.Light */ : "vs-dark" /* MonacoColorTheme.Dark */;
|
|
246
|
-
}
|
|
247
|
-
return theme;
|
|
248
|
-
}
|
|
249
|
-
setupCode(calledFromReset = false) {
|
|
250
|
-
this.handleInitCode(calledFromReset);
|
|
251
|
-
this.publishCode(this.code);
|
|
252
|
-
}
|
|
253
|
-
handleInitCode(calledFromReset = false) {
|
|
254
|
-
if (calledFromReset) {
|
|
255
|
-
this.code = this.libCodingTestService.getInitCode();
|
|
256
|
-
}
|
|
257
|
-
else if (this.initCode) {
|
|
258
|
-
this.code = this.initCode;
|
|
259
|
-
}
|
|
260
|
-
else if (this.currentSnapshot) {
|
|
261
|
-
return;
|
|
262
|
-
}
|
|
263
|
-
else if (this.shouldGenerateInitCode) {
|
|
264
|
-
this.code = this.codeEditorService.getInitCode();
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
listenUpdates() {
|
|
268
|
-
this.libCodingTestService.codeReset$
|
|
269
|
-
.pipe(filter(val => val === "confirm" /* ResetCodeAction.Confirm */), untilDestroyed(this))
|
|
270
|
-
.subscribe(() => {
|
|
271
|
-
this.setupCode(true);
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
handleSnapshot(code) {
|
|
275
|
-
this.code = code;
|
|
276
|
-
if (!this.editor) {
|
|
277
|
-
return;
|
|
278
|
-
}
|
|
279
|
-
this.editor.setValue(code); // make sure editor model has the latest value of the code
|
|
280
|
-
if (this.previousMonacoDecoration) {
|
|
281
|
-
this.previousMonacoDecoration.clear();
|
|
282
|
-
}
|
|
283
|
-
if (this.currentSnapshot.copied_text) {
|
|
284
|
-
// if the snapshot contains copyPasted code, find it's range in monaco
|
|
285
|
-
const matches = this.editor
|
|
286
|
-
.getModel()
|
|
287
|
-
.findMatches(this.currentSnapshot.copied_text, false, false, true, null, true);
|
|
288
|
-
if (matches.length) {
|
|
289
|
-
// if the range is found in editor model, decorate it with additional class to highlight on the ui
|
|
290
|
-
this.previousMonacoDecoration = this.editor.createDecorationsCollection([
|
|
291
|
-
{
|
|
292
|
-
range: matches[0].range,
|
|
293
|
-
options: { inlineClassName: 'copy-pasted-code' },
|
|
294
|
-
},
|
|
295
|
-
]);
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CodeEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
300
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CodeEditorComponent, isStandalone: true, selector: "tgo-code-editor", inputs: { initCode: "initCode", functionParams: "functionParams", functionName: "functionName", returnType: "returnType", hasCodingConfigPanel: "hasCodingConfigPanel", isReadonly: "isReadonly", autoHeight: "autoHeight", shouldGenerateInitCode: "shouldGenerateInitCode", snapshot: "snapshot" }, outputs: { pasteEvent: "pasteEvent", codeChange: "codeChange" }, viewQueries: [{ propertyName: "codeEditorElRef", first: true, predicate: ["editor"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container notranslate\" translate=\"no\">\n <ngx-monaco-editor\n #editor\n class=\"editor\"\n [options]=\"editorOptions\"\n [(ngModel)]=\"code\"\n (ngModelChange)=\"publishCode($event)\"\n (onInit)=\"initEditor($event)\"\n ></ngx-monaco-editor>\n</div>\n", styles: [":host{display:block;height:100%;max-width:100%;max-height:100%}.container{height:100%;background-color:var(--code-editor-background)}.editor{height:100%}.editor ::ng-deep .copy-pasted-code{background-color:#ff0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MonacoEditorModule }, { kind: "component", type: i2.EditorComponent, selector: "ngx-monaco-editor", inputs: ["options", "model"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
301
|
-
};
|
|
302
|
-
CodeEditorComponent = __decorate([
|
|
303
|
-
UntilDestroy()
|
|
304
|
-
], CodeEditorComponent);
|
|
305
|
-
export { CodeEditorComponent };
|
|
306
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CodeEditorComponent, decorators: [{
|
|
307
|
-
type: Component,
|
|
308
|
-
args: [{ standalone: true, selector: 'tgo-code-editor', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, FormsModule, MonacoEditorModule], template: "<div class=\"container notranslate\" translate=\"no\">\n <ngx-monaco-editor\n #editor\n class=\"editor\"\n [options]=\"editorOptions\"\n [(ngModel)]=\"code\"\n (ngModelChange)=\"publishCode($event)\"\n (onInit)=\"initEditor($event)\"\n ></ngx-monaco-editor>\n</div>\n", styles: [":host{display:block;height:100%;max-width:100%;max-height:100%}.container{height:100%;background-color:var(--code-editor-background)}.editor{height:100%}.editor ::ng-deep .copy-pasted-code{background-color:#ff0}\n"] }]
|
|
309
|
-
}], propDecorators: { initCode: [{
|
|
310
|
-
type: Input
|
|
311
|
-
}], functionParams: [{
|
|
312
|
-
type: Input
|
|
313
|
-
}], functionName: [{
|
|
314
|
-
type: Input
|
|
315
|
-
}], returnType: [{
|
|
316
|
-
type: Input
|
|
317
|
-
}], hasCodingConfigPanel: [{
|
|
318
|
-
type: Input
|
|
319
|
-
}], isReadonly: [{
|
|
320
|
-
type: Input
|
|
321
|
-
}], autoHeight: [{
|
|
322
|
-
type: Input
|
|
323
|
-
}], shouldGenerateInitCode: [{
|
|
324
|
-
type: Input
|
|
325
|
-
}], snapshot: [{
|
|
326
|
-
type: Input
|
|
327
|
-
}], pasteEvent: [{
|
|
328
|
-
type: Output
|
|
329
|
-
}], codeChange: [{
|
|
330
|
-
type: Output
|
|
331
|
-
}], codeEditorElRef: [{
|
|
332
|
-
type: ViewChild,
|
|
333
|
-
args: ['editor', { read: ElementRef }]
|
|
334
|
-
}] } });
|
|
335
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGdvLWNvZGluZy10ZXN0L3NyYy9saWIvY29tcG9uZW50cy9jb2RlLWVkaXRvci9jb2RlLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90Z28tY29kaW5nLXRlc3Qvc3JjL2xpYi9jb21wb25lbnRzL2NvZGUtZWRpdG9yL2NvZGUtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXJFLE9BQU8sRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFHekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFtQixNQUFNLHdDQUF3QyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFD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QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQzs4QkFTL0MsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFFTyxRQUFRO3NCQUFwQixLQUFLO2dCQU9JLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFFb0MsZUFBZTtzQkFBekQsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBlZGl0b3IsIElEaXNwb3NhYmxlIH0gZnJvbSAnbW9uYWNvLWVkaXRvcic7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBmaXJzdCwgaW50ZXJ2YWwsIG1hcCwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTW9uYWNvRWRpdG9yTW9kdWxlIH0gZnJvbSAnbmd4LW1vbmFjby1lZGl0b3ItdjInO1xuXG5pbXBvcnQgeyBlcmxhbmdMYW5ndWFnZSB9IGZyb20gJy4uLy4uL3V0aWxzL2FkZGl0aW9uYWwtbGFuZ3VhZ2VzL2VybGFuZyc7XG5pbXBvcnQgeyBDb2RpbmdBc3Npc3RhbmNlT3B0aW9ucywgQ29uZmlnLCBGb3JtYXR0aW5nT3B0aW9ucyB9IGZyb20gJy4uLy4uL21vZGVscy9jb25maWdzJztcbmltcG9ydCB7IFRoZW1lcyB9IGZyb20gJy4uLy4uL21vZGVscy90aGVtZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25maWd1cmF0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IExpYkNvZGluZ1Rlc3RTZXJ2aWNlLCBSZXNldENvZGVBY3Rpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9saWItY29kaW5nLXRlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlQ29kaW5nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBDb2RlRWRpdG9yU2VydmljZSB9IGZyb20gJy4vY29kZS1lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBDb2RlRWRpdG9yRnVuY1BhcmFtLCBDb2RlRWRpdG9yTGFuZ3VhZ2VzLCBDb2RlRWRpdG9yVHlwZXNNYXAgfSBmcm9tICcuL2hlbHBlcnMvY29kZS1lZGl0b3ItaGVscGVyLm1vZGVsJztcbmltcG9ydCB7IE1vbmFjb0NvbG9yVGhlbWUsIFBhc3RlRGF0YSB9IGZyb20gJy4vbW9kZWxzL2NvZGUtZWRpdG9yLm1vZGVsJztcbmltcG9ydCB7IENvZGluZ1NuYXBzaG90IH0gZnJvbSAnLi9tb2RlbHMvY29kaW5nLXNuYXBzaG90Lm1vZGVsJztcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICd0Z28tY29kZS1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vY29kZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2RlLWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIE1vbmFjb0VkaXRvck1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIENvZGVFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgcHJpdmF0ZSByZWFkb25seSBsaWJDb2RpbmdUZXN0U2VydmljZSA9IGluamVjdChMaWJDb2RpbmdUZXN0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlndXJhdGlvbnNTZXJ2aWNlID0gaW5qZWN0KENvbmZpZ3VyYXRpb25zU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29kZUVkaXRvclNlcnZpY2UgPSBpbmplY3QoQ29kZUVkaXRvclNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBTdG9yYWdlQ29kaW5nU2VydmljZSA9IGluamVjdChTdG9yYWdlQ29kaW5nU2VydmljZSk7XG5cbiAgQElucHV0KCkgaW5pdENvZGU6IHN0cmluZztcbiAgQElucHV0KCkgZnVuY3Rpb25QYXJhbXM6IENvZGVFZGl0b3JGdW5jUGFyYW1bXTtcbiAgQElucHV0KCkgZnVuY3Rpb25OYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJldHVyblR5cGU6IGtleW9mIENvZGVFZGl0b3JUeXBlc01hcDtcbiAgQElucHV0KCkgaGFzQ29kaW5nQ29uZmlnUGFuZWw6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzUmVhZG9ubHk6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGF1dG9IZWlnaHQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNob3VsZEdlbmVyYXRlSW5pdENvZGU6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgc2V0IHNuYXBzaG90KHNuYXA6IENvZGluZ1NuYXBzaG90KSB7XG4gICAgaWYgKHNuYXApIHtcbiAgICAgIHRoaXMuY3VycmVudFNuYXBzaG90ID0gc25hcDtcbiAgICAgIHRoaXMuaGFuZGxlU25hcHNob3Qoc25hcC50ZXh0KTtcbiAgICB9XG4gIH1cblxuICBAT3V0cHV0KCkgcGFzdGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8UGFzdGVEYXRhPigpO1xuICBAT3V0cHV0KCkgY29kZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2VkaXRvcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjb2RlRWRpdG9yRWxSZWY6IEVsZW1lbnRSZWY7XG5cbiAgY29kZSA9ICcnO1xuICBjb2RlUHVibGlzaGVkID0gJyc7XG4gIGNvZGVMYW5ndWFnZSA9ICcnO1xuICBlZGl0b3JPcHRpb25zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge1xuICAgIHRoZW1lOiBNb25hY29Db2xvclRoZW1lLkRhcmssXG4gICAgZm9udFNpemU6ICcxNCcsXG4gICAgc2Nyb2xsQmV5b25kTGFzdExpbmU6IGZhbHNlLFxuICAgIG1pbmltYXA6IHsgZW5hYmxlZDogZmFsc2UgfSxcbiAgICBmaXhlZE92ZXJmbG93V2lkZ2V0czogdHJ1ZSxcbiAgICBpbnNlcnRTcGFjZXM6IGZhbHNlLFxuICAgIGRldGVjdEluZGVudGF0aW9uOiBmYWxzZSxcbiAgICBhdXRvbWF0aWNMYXlvdXQ6IHRydWUsXG4gIH07XG5cbiAgZWRpdG9yOiBlZGl0b3IuSUNvZGVFZGl0b3I7XG4gIHByZXZpb3VzQ29uZmlnID0gdGhpcy5TdG9yYWdlQ29kaW5nU2VydmljZS5nZXRTYXZlZENvbmZpZygpO1xuXG4gIGN1cnJlbnRTbmFwc2hvdDogQ29kaW5nU25hcHNob3Q7XG4gIHByZXZpb3VzTW9uYWNvRGVjb3JhdGlvbjogZWRpdG9yLklFZGl0b3JEZWNvcmF0aW9uc0NvbGxlY3Rpb247XG5cbiAgcHJpdmF0ZSBwYXN0ZUxpc3RlbmVyOiBJRGlzcG9zYWJsZTtcbiAgcHJpdmF0ZSBjb250ZW50Q2hhbmdlZFN1YjogSURpc3Bvc2FibGU7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByZXZpb3VzQ29uZmlnKSB7XG4gICAgICB0aGlzLnByZXZpb3VzQ29uZmlnID0gdGhpcy5jb25maWd1cmF0aW9uc1NlcnZpY2UuZ2V0SW5pdGlhbENvbmZpZygpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0NvZGluZ0NvbmZpZ1BhbmVsKSB7XG4gICAgICB0aGlzLnVwZGF0ZUlERUNvbmZpZygpO1xuICAgIH1cbiAgICB0aGlzLmxpc3RlblVwZGF0ZXMoKTtcblxuICAgIHRoaXMuc2V0dXBDb25maWdzKCk7XG4gICAgdGhpcy5zZXR1cENvZGUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIGNoYW5nZXMuaW5pdENvZGU/LmN1cnJlbnRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuY29kZSA9IGNoYW5nZXMuaW5pdENvZGUuY3VycmVudFZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY29udGVudENoYW5nZWRTdWI/LmRpc3Bvc2UoKTtcbiAgICB0aGlzLnBhc3RlTGlzdGVuZXI/LmRpc3Bvc2UoKTtcbiAgfVxuXG4gIGluaXRFZGl0b3IoZWRpdG9yOiBlZGl0b3IuSUNvZGVFZGl0b3IpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcblxuICAgIHRoaXMucGFzdGVMaXN0ZW5lciA9IHRoaXMuZWRpdG9yLm9uRGlkUGFzdGUoZXZlbnQgPT4gdGhpcy5jYXRjaEV2ZW50KGV2ZW50KSk7XG5cbiAgICBpZiAodGhpcy5jdXJyZW50U25hcHNob3QpIHtcbiAgICAgIHRoaXMuaGFuZGxlU25hcHNob3QodGhpcy5jdXJyZW50U25hcHNob3QudGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXV0b0hlaWdodCkge1xuICAgICAgdGhpcy5saXN0ZW5Db250ZW50SGVpZ2h0KGVkaXRvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjYXRjaEV2ZW50KGV2ZW50OiBlZGl0b3IuSVBhc3RlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5lZGl0b3IuZ2V0TW9kZWwoKT8uZ2V0VmFsdWVJblJhbmdlKGV2ZW50LnJhbmdlKTtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5wYXN0ZUV2ZW50LmVtaXQoeyB0eXBlOiAncGFzdGUnLCBkYXRhIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1Ymxpc2hDb2RlKGNvZGUpOiB2b2lkIHtcbiAgICBpZiAoY29kZSAhPT0gdGhpcy5jb2RlUHVibGlzaGVkKSB7XG4gICAgICB0aGlzLmNvZGVQdWJsaXNoZWQgPSBjb2RlO1xuICAgICAgdGhpcy5jb2RlQ2hhbmdlLmVtaXQodGhpcy5jb2RlUHVibGlzaGVkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUlERUNvbmZpZygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25zU2VydmljZS5jb25maWckXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNvbmZpZzogQ29uZmlnKSA9PiB7XG4gICAgICAgIGxldCBjb25maWdPYmplY3QgPSB7fTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGd1YXJkLWZvci1pblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBjb25maWcpIHtcbiAgICAgICAgICBpZiAoY29uZmlnW2tleV0gIT09IHRoaXMucHJldmlvdXNDb25maWdba2V5XSkge1xuICAgICAgICAgICAgc3dpdGNoIChrZXkgYXMgRm9ybWF0dGluZ09wdGlvbnMgfCBDb2RpbmdBc3Npc3RhbmNlT3B0aW9ucykge1xuICAgICAgICAgICAgICBjYXNlIEZvcm1hdHRpbmdPcHRpb25zLkNvbG9yVGhlbWU6XG4gICAgICAgICAgICAgICAgY29uZmlnT2JqZWN0ID0ge1xuICAgICAgICAgICAgICAgICAgdGhlbWU6XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ1tGb3JtYXR0aW5nT3B0aW9ucy5Db2xvclRoZW1lXSA9PT0gVGhlbWVzLkRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICA/IE1vbmFjb0NvbG9yVGhlbWUuTGlnaHRcbiAgICAgICAgICAgICAgICAgICAgICA6IE1vbmFjb0NvbG9yVGhlbWUuRGFyayxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgQ29kaW5nQXNzaXN0YW5jZU9wdGlvbnMuQXV0b0NvbXBsZXRlOlxuICAgICAgICAgICAgICAgIGNvbmZpZ09iamVjdCA9IHtcbiAgICAgICAgICAgICAgICAgIHF1aWNrU3VnZ2VzdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgb3RoZXI6IGNvbmZpZ1tDb2RpbmdBc3Npc3RhbmNlT3B0aW9ucy5BdXRvQ29tcGxldGVdLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgQ29kaW5nQXNzaXN0YW5jZU9wdGlvbnMuQXV0b0JyYWNrZXRzOlxuICAgICAgICAgICAgICAgIGNvbmZpZ09iamVjdCA9IHtcbiAgICAgICAgICAgICAgICAgIGF1dG9DbG9zaW5nQnJhY2tldHM6IGNvbmZpZ1tDb2RpbmdBc3Npc3RhbmNlT3B0aW9ucy5BdXRvQnJhY2tldHNdID8gJ2Fsd2F5cycgOiAnbmV2ZXInLFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBGb3JtYXR0aW5nT3B0aW9ucy5UYWJTaXplOlxuICAgICAgICAgICAgICAgIGNvbmZpZ09iamVjdCA9IHtcbiAgICAgICAgICAgICAgICAgIHRhYlNpemU6IGNvbmZpZ1tGb3JtYXR0aW5nT3B0aW9ucy5UYWJTaXplXSxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgRm9ybWF0dGluZ09wdGlvbnMuRm9udFNpemU6XG4gICAgICAgICAgICAgICAgY29uZmlnT2JqZWN0ID0ge1xuICAgICAgICAgICAgICAgICAgZm9udFNpemU6IGNvbmZpZ1tGb3JtYXR0aW5nT3B0aW9ucy5Gb250U2l6ZV0sXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIENvZGluZ0Fzc2lzdGFuY2VPcHRpb25zLkVycm9ySGlnaGxpZ2h0aW5nOlxuICAgICAgICAgICAgICAgIHRoaXMubGliQ29kaW5nVGVzdFNlcnZpY2UuY3VycmVudExhbmd1YWdlJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShsYW5ndWFnZSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAobGFuZ3VhZ2UgPT09IENvZGVFZGl0b3JMYW5ndWFnZXMuSmF2YXNjcmlwdCkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3dbJ21vbmFjbyddLmxhbmd1YWdlcy50eXBlc2NyaXB0LmphdmFzY3JpcHREZWZhdWx0cy5zZXREaWFnbm9zdGljc09wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgIG5vU2VtYW50aWNWYWxpZGF0aW9uOiAhY29uZmlnW0NvZGluZ0Fzc2lzdGFuY2VPcHRpb25zLkVycm9ySGlnaGxpZ2h0aW5nXSxcbiAgICAgICAgICAgICAgICAgICAgICBub1N5bnRheFZhbGlkYXRpb246ICFjb25maWdbQ29kaW5nQXNzaXN0YW5jZU9wdGlvbnMuRXJyb3JIaWdobGlnaHRpbmddLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGFuZ3VhZ2UgPT09IENvZGVFZGl0b3JMYW5ndWFnZXMuVHlwZXNjcmlwdCkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3dbJ21vbmFjbyddLmxhbmd1YWdlcy50eXBlc2NyaXB0LnR5cGVzY3JpcHREZWZhdWx0cy5zZXREaWFnbm9zdGljc09wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgIG5vU2VtYW50aWNWYWxpZGF0aW9uOiAhY29uZmlnW0NvZGluZ0Fzc2lzdGFuY2VPcHRpb25zLkVycm9ySGlnaGxpZ2h0aW5nXSxcbiAgICAgICAgICAgICAgICAgICAgICBub1N5bnRheFZhbGlkYXRpb246ICFjb25maWdbQ29kaW5nQXNzaXN0YW5jZU9wdGlvbnMuRXJyb3JIaWdobGlnaHRpbmddLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZWRpdG9yT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZWRpdG9yT3B0aW9ucywgY29uZmlnT2JqZWN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMucHJldmlvdXNDb25maWcgPSBjb25maWc7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZWRpdG9yT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZWRpdG9yT3B0aW9ucywge1xuICAgICAgYXV0b21hdGljTGF5b3V0OiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Db250ZW50SGVpZ2h0KGVkaXRvcjogZWRpdG9yLklDb2RlRWRpdG9yKTogdm9pZCB7XG4gICAgY29uc3QgdXBkYXRlSGVpZ2h0ID0gKCkgPT4ge1xuICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgd2lkdGggfSA9IHRoaXMuY29kZUVkaXRvckVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRIZWlnaHQgPSBNYXRoLm1pbigxMDAwLCBlZGl0b3IuZ2V0Q29udGVudEhlaWdodCgpKTtcbiAgICAgICAgdGhpcy5jb2RlRWRpdG9yRWxSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBgJHtjb250ZW50SGVpZ2h0fXB4YDtcbiAgICAgICAgZWRpdG9yLmxheW91dCh7IHdpZHRoLCBoZWlnaHQ6IGNvbnRlbnRIZWlnaHQgfSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy5jb250ZW50Q2hhbmdlZFN1YiA9IGVkaXRvci5vbkRpZENvbnRlbnRTaXplQ2hhbmdlKHVwZGF0ZUhlaWdodCk7XG4gICAgdXBkYXRlSGVpZ2h0KCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQ29uZmlncygpOiB2b2lkIHtcbiAgICBjb25zdCB7IGZ1bmN0aW9uUGFyYW1zOiBwYXJhbXMsIGZ1bmN0aW9uTmFtZTogbmFtZSwgcmV0dXJuVHlwZSB9ID0gdGhpcztcblxuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMucHJldmlvdXNDb25maWc7XG5cbiAgICBjb25zdCB3b3JkV3JhcCA9IHRoaXMuY3VycmVudFNuYXBzaG90ID8gJ29uJyA6ICdvZmYnO1xuICAgIGNvbnN0IHRoZW1lID0gdGhpcy5nZXRJbml0aWFsQ29sb3JUaGVtZShjb25maWcsIHRoaXMuY3VycmVudFNuYXBzaG90KTtcblxuICAgIHRoaXMubGliQ29kaW5nVGVzdFNlcnZpY2UuY3VycmVudExhbmd1YWdlJC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKGxhbmd1YWdlOiBDb2RlRWRpdG9yTGFuZ3VhZ2VzKSA9PiB7XG4gICAgICBpZiAodGhpcy5zaG91bGRHZW5lcmF0ZUluaXRDb2RlKSB7XG4gICAgICAgIHRoaXMuY29kZUVkaXRvclNlcnZpY2Uuc2V0SGVscGVyKGxhbmd1YWdlLCB7IHBhcmFtcywgbmFtZSwgcmV0dXJuVHlwZSB9KTtcbiAgICAgICAgdGhpcy5jb2RlTGFuZ3VhZ2UgPSB0aGlzLmNvZGVFZGl0b3JTZXJ2aWNlLmdldEVkaXRvckxhbmcoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChsYW5ndWFnZSA9PT0gQ29kZUVkaXRvckxhbmd1YWdlcy5DcHApIHtcbiAgICAgICAgICB0aGlzLmNvZGVMYW5ndWFnZSA9IENvZGVFZGl0b3JMYW5ndWFnZXMuQ3BwRWRpdG9yO1xuICAgICAgICB9IGVsc2UgaWYgKGxhbmd1YWdlID09PSBDb2RlRWRpdG9yTGFuZ3VhZ2VzLkNTaGFycCB8fCBsYW5ndWFnZSA9PT0gQ29kZUVkaXRvckxhbmd1YWdlcy5DU2hhcnBMZWdhY3kpIHtcbiAgICAgICAgICB0aGlzLmNvZGVMYW5ndWFnZSA9IENvZGVFZGl0b3JMYW5ndWFnZXMuQ1NoYXJwRWRpdG9yO1xuICAgICAgICB9IGVsc2UgaWYgKGxhbmd1YWdlID09PSBDb2RlRWRpdG9yTGFuZ3VhZ2VzLlNxbGl0ZSkge1xuICAgICAgICAgIHRoaXMuY29kZUxhbmd1YWdlID0gQ29kZUVkaXRvckxhbmd1YWdlcy5TcWw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jb2RlTGFuZ3VhZ2UgPSBsYW5ndWFnZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5lZGl0b3JPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5lZGl0b3JPcHRpb25zLCB7XG4gICAgICAgIGxhbmd1YWdlOiB0aGlzLmNvZGVMYW5ndWFnZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5lZGl0b3JPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5lZGl0b3JPcHRpb25zLCB7XG4gICAgICByZWFkT25seTogdGhpcy5pc1JlYWRvbmx5LFxuICAgICAgcXVpY2tTdWdnZXN0aW9uczoge1xuICAgICAgICBvdGhlcjogY29uZmlnW0NvZGluZ0Fzc2lzdGFuY2VPcHRpb25zLkF1dG9Db21wbGV0ZV0sXG4gICAgICB9LFxuICAgICAgYXV0b0Nsb3NpbmdCcmFja2V0czogY29uZmlnW0NvZGluZ0Fzc2lzdGFuY2VPcHRpb25zLkF1dG9CcmFja2V0c10gPyAnYWx3YXlzJyA6ICduZXZlcicsXG4gICAgICB0YWJTaXplOiBjb25maWdbRm9ybWF0dGluZ09wdGlvbnMuVGFiU2l6ZV0sXG4gICAgICBmb250U2l6ZTogY29uZmlnW0Zvcm1hdHRpbmdPcHRpb25zLkZvbnRTaXplXSxcbiAgICAgIHRoZW1lLFxuICAgICAgd29yZFdyYXAsXG4gICAgfSk7XG4gICAgY29uc3QgbW9uYWNvTGlicmFyeVJlYWR5JCA9IGludGVydmFsKDEwMCkucGlwZShcbiAgICAgIG1hcCgoKSA9PiB3aW5kb3cubW9uYWNvKSxcbiAgICAgIGZpbHRlcihCb29sZWFuKSxcbiAgICAgIGZpcnN0KClcbiAgICApO1xuICAgIGNvbWJpbmVMYXRlc3Qoe1xuICAgICAgbW9uYWNvOiBtb25hY29MaWJyYXJ5UmVhZHkkLFxuICAgICAgbGFuZ3VhZ2U6IHRoaXMubGliQ29kaW5nVGVzdFNlcnZpY2UuY3VycmVudExhbmd1YWdlJCxcbiAgICB9KVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdC5sYW5ndWFnZSA9PT0gQ29kZUVkaXRvckxhbmd1YWdlcy5KYXZhc2NyaXB0KSB7XG4gICAgICAgICAgcmVzdWx0Lm1vbmFjby5sYW5ndWFnZXMudHlwZXNjcmlwdC5qYXZhc2NyaXB0RGVmYXVsdHMuc2V0RGlhZ25vc3RpY3NPcHRpb25zKHtcbiAgICAgICAgICAgIG5vU2VtYW50aWNWYWxpZGF0aW9uOiAhY29uZmlnW0NvZGluZ0Fzc2lzdGFuY2VPcHRpb25zLkVycm9ySGlnaGxpZ2h0aW5nXSxcbiAgICAgICAgICAgIG5vU3ludGF4VmFsaWRhdGlvbjogIWNvbmZpZ1tDb2RpbmdBc3Npc3RhbmNlT3B0aW9ucy5FcnJvckhpZ2hsaWdodGluZ10sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0Lmxhbmd1YWdlID09PSBDb2RlRWRpdG9yTGFuZ3VhZ2VzLlR5cGVzY3JpcHQpIHtcbiAgICAgICAgICByZXN1bHQubW9uYWNvLmxhbmd1YWdlcy50eXBlc2NyaXB0LnR5cGVzY3JpcHREZWZhdWx0cy5zZXREaWFnbm9zdGljc09wdGlvbnMoe1xuICAgICAgICAgICAgbm9TZW1hbnRpY1ZhbGlkYXRpb246ICFjb25maWdbQ29kaW5nQXNzaXN0YW5jZU9wdGlvbnMuRXJyb3JIaWdobGlnaHRpbmddLFxuICAgICAgICAgICAgbm9TeW50YXhWYWxpZGF0aW9uOiAhY29uZmlnW0NvZGluZ0Fzc2lzdGFuY2VPcHRpb25zLkVycm9ySGlnaGxpZ2h0aW5nXSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQubW9uYWNvLmxhbmd1YWdlcy5yZWdpc3Rlcih7IGlkOiBDb2RlRWRpdG9yTGFuZ3VhZ2VzLkVybGFuZyB9KTtcbiAgICAgICAgcmVzdWx0Lm1vbmFjby5sYW5ndWFnZXMuc2V0TW9uYXJjaFRva2Vuc1Byb3ZpZGVyKENvZGVFZGl0b3JMYW5ndWFnZXMuRXJsYW5nLCBlcmxhbmdMYW5ndWFnZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5pdGlhbENvbG9yVGhlbWUoY29uZmlnOiBDb25maWcsIHNuYXBzaG90OiBDb2RpbmdTbmFwc2hvdCk6IHN0cmluZyB7XG4gICAgbGV0IHRoZW1lOiBNb25hY29Db2xvclRoZW1lO1xuXG4gICAgaWYgKHNuYXBzaG90KSB7XG4gICAgICB0aGVtZSA9IE1vbmFjb0NvbG9yVGhlbWUuRGFyaztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhlbWUgPSBjb25maWdbRm9ybWF0dGluZ09wdGlvbnMuQ29sb3JUaGVtZV0gPT09IFRoZW1lcy5EZWZhdWx0ID8gTW9uYWNvQ29sb3JUaGVtZS5MaWdodCA6IE1vbmFjb0NvbG9yVGhlbWUuRGFyaztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhlbWU7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQ29kZShjYWxsZWRGcm9tUmVzZXQgPSBmYWxzZSkge1xuICAgIHRoaXMuaGFuZGxlSW5pdENvZGUoY2FsbGVkRnJvbVJlc2V0KTtcbiAgICB0aGlzLnB1Ymxpc2hDb2RlKHRoaXMuY29kZSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUluaXRDb2RlKGNhbGxlZEZyb21SZXNldCA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKGNhbGxlZEZyb21SZXNldCkge1xuICAgICAgdGhpcy5jb2RlID0gdGhpcy5saWJDb2RpbmdUZXN0U2VydmljZS5nZXRJbml0Q29kZSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pbml0Q29kZSkge1xuICAgICAgdGhpcy5jb2RlID0gdGhpcy5pbml0Q29kZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudFNuYXBzaG90KSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICh0aGlzLnNob3VsZEdlbmVyYXRlSW5pdENvZGUpIHtcbiAgICAgIHRoaXMuY29kZSA9IHRoaXMuY29kZUVkaXRvclNlcnZpY2UuZ2V0SW5pdENvZGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblVwZGF0ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5saWJDb2RpbmdUZXN0U2VydmljZS5jb2RlUmVzZXQkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKHZhbCA9PiB2YWwgPT09IFJlc2V0Q29kZUFjdGlvbi5Db25maXJtKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNldHVwQ29kZSh0cnVlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTbmFwc2hvdChjb2RlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xuXG4gICAgaWYgKCF0aGlzLmVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZWRpdG9yLnNldFZhbHVlKGNvZGUpOyAvLyBtYWtlIHN1cmUgZWRpdG9yIG1vZGVsIGhhcyB0aGUgbGF0ZXN0IHZhbHVlIG9mIHRoZSBjb2RlXG5cbiAgICBpZiAodGhpcy5wcmV2aW91c01vbmFjb0RlY29yYXRpb24pIHtcbiAgICAgIHRoaXMucHJldmlvdXNNb25hY29EZWNvcmF0aW9uLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VycmVudFNuYXBzaG90LmNvcGllZF90ZXh0KSB7XG4gICAgICAvLyBpZiB0aGUgc25hcHNob3QgY29udGFpbnMgY29weVBhc3RlZCBjb2RlLCBmaW5kIGl0J3MgcmFuZ2UgaW4gbW9uYWNvXG4gICAgICBjb25zdCBtYXRjaGVzID0gdGhpcy5lZGl0b3JcbiAgICAgICAgLmdldE1vZGVsKClcbiAgICAgICAgLmZpbmRNYXRjaGVzKHRoaXMuY3VycmVudFNuYXBzaG90LmNvcGllZF90ZXh0LCBmYWxzZSwgZmFsc2UsIHRydWUsIG51bGwsIHRydWUpO1xuXG4gICAgICBpZiAobWF0Y2hlcy5sZW5ndGgpIHtcbiAgICAgICAgLy8gaWYgdGhlIHJhbmdlIGlzIGZvdW5kIGluIGVkaXRvciBtb2RlbCwgZGVjb3JhdGUgaXQgd2l0aCBhZGRpdGlvbmFsIGNsYXNzIHRvIGhpZ2hsaWdodCBvbiB0aGUgdWlcbiAgICAgICAgdGhpcy5wcmV2aW91c01vbmFjb0RlY29yYXRpb24gPSB0aGlzLmVkaXRvci5jcmVhdGVEZWNvcmF0aW9uc0NvbGxlY3Rpb24oW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJhbmdlOiBtYXRjaGVzWzBdLnJhbmdlLFxuICAgICAgICAgICAgb3B0aW9uczogeyBpbmxpbmVDbGFzc05hbWU6ICdjb3B5LXBhc3RlZC1jb2RlJyB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lciBub3RyYW5zbGF0ZVwiIHRyYW5zbGF0ZT1cIm5vXCI+XG4gIDxuZ3gtbW9uYWNvLWVkaXRvclxuICAgICNlZGl0b3JcbiAgICBjbGFzcz1cImVkaXRvclwiXG4gICAgW29wdGlvbnNdPVwiZWRpdG9yT3B0aW9uc1wiXG4gICAgWyhuZ01vZGVsKV09XCJjb2RlXCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJwdWJsaXNoQ29kZSgkZXZlbnQpXCJcbiAgICAob25Jbml0KT1cImluaXRFZGl0b3IoJGV2ZW50KVwiXG4gID48L25neC1tb25hY28tZWRpdG9yPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { CodeEditorCHelper, CodeEditorCppHelper, CodeEditorCSharpHelper, CodeEditorGoHelper, CodeEditorJavaHelper, CodeEditorJavascriptHelper, CodeEditorKotlinHelper, CodeEditorPhpHelper, CodeEditorPythonHelper, CodeEditorRHelper, CodeEditorRubyHelper, CodeEditorScalaHelper, CodeEditorSqlHelper, CodeEditorSwiftHelper, CodeEditorTypescriptHelper, } from './helpers';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class CodeEditorService {
|
|
5
|
-
helper;
|
|
6
|
-
setHelper(language, funcParams) {
|
|
7
|
-
this.helper = this.createHelper(language, funcParams);
|
|
8
|
-
}
|
|
9
|
-
getInitCode() {
|
|
10
|
-
return this.helper.getInitCode();
|
|
11
|
-
}
|
|
12
|
-
getEditorLang() {
|
|
13
|
-
return this.helper.getEditorLang();
|
|
14
|
-
}
|
|
15
|
-
createHelper(lang, funcParams) {
|
|
16
|
-
// todo: review this logic according to new TAT, remove generated init code if not needed ?
|
|
17
|
-
switch (lang) {
|
|
18
|
-
case "javascript" /* CodeEditorLanguages.Javascript */:
|
|
19
|
-
return new CodeEditorJavascriptHelper(funcParams);
|
|
20
|
-
case "typescript" /* CodeEditorLanguages.Typescript */:
|
|
21
|
-
return new CodeEditorTypescriptHelper(funcParams);
|
|
22
|
-
case "php" /* CodeEditorLanguages.Php */:
|
|
23
|
-
return new CodeEditorPhpHelper(funcParams);
|
|
24
|
-
case "python" /* CodeEditorLanguages.Python */:
|
|
25
|
-
return new CodeEditorPythonHelper(funcParams);
|
|
26
|
-
case "java" /* CodeEditorLanguages.Java */:
|
|
27
|
-
return new CodeEditorJavaHelper(funcParams);
|
|
28
|
-
case "ruby" /* CodeEditorLanguages.Ruby */:
|
|
29
|
-
return new CodeEditorRubyHelper(funcParams);
|
|
30
|
-
case "c" /* CodeEditorLanguages.C */:
|
|
31
|
-
return new CodeEditorCHelper(funcParams);
|
|
32
|
-
case "c++" /* CodeEditorLanguages.Cpp */:
|
|
33
|
-
return new CodeEditorCppHelper(funcParams);
|
|
34
|
-
case "r" /* CodeEditorLanguages.R */:
|
|
35
|
-
return new CodeEditorRHelper(funcParams);
|
|
36
|
-
case "scala" /* CodeEditorLanguages.Scala */:
|
|
37
|
-
return new CodeEditorScalaHelper(funcParams);
|
|
38
|
-
case "c#" /* CodeEditorLanguages.CSharp */:
|
|
39
|
-
case "c#_legacy" /* CodeEditorLanguages.CSharpLegacy */:
|
|
40
|
-
return new CodeEditorCSharpHelper(funcParams);
|
|
41
|
-
case "go" /* CodeEditorLanguages.Go */:
|
|
42
|
-
return new CodeEditorGoHelper(funcParams);
|
|
43
|
-
case "sql" /* CodeEditorLanguages.Sql */:
|
|
44
|
-
case "sqlite3" /* CodeEditorLanguages.Sqlite */:
|
|
45
|
-
return new CodeEditorSqlHelper(funcParams);
|
|
46
|
-
default: {
|
|
47
|
-
const versionedHelper = lang && this.getVersionedHelper(lang, funcParams);
|
|
48
|
-
if (!versionedHelper) {
|
|
49
|
-
throw new Error(`language ${lang} is not supported`);
|
|
50
|
-
}
|
|
51
|
-
return versionedHelper;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
getVersionedHelper(lang, funcParams) {
|
|
56
|
-
if (lang.startsWith("kotlin" /* CodeEditorLanguages.Kotlin */)) {
|
|
57
|
-
return new CodeEditorKotlinHelper(funcParams);
|
|
58
|
-
}
|
|
59
|
-
if (lang.startsWith("swift" /* CodeEditorLanguages.Swift */)) {
|
|
60
|
-
return new CodeEditorSwiftHelper(funcParams);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CodeEditorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
64
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CodeEditorService, providedIn: 'root' });
|
|
65
|
-
}
|
|
66
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CodeEditorService, decorators: [{
|
|
67
|
-
type: Injectable,
|
|
68
|
-
args: [{
|
|
69
|
-
providedIn: 'root',
|
|
70
|
-
}]
|
|
71
|
-
}] });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1lZGl0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3Rnby1jb2RpbmctdGVzdC9zcmMvbGliL2NvbXBvbmVudHMvY29kZS1lZGl0b3IvY29kZS1lZGl0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLDBCQUEwQixFQUMxQixzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLDBCQUEwQixHQUMzQixNQUFNLFdBQVcsQ0FBQzs7QUFVbkIsTUFBTSxPQUFPLGlCQUFpQjtJQUNwQixNQUFNLENBQW1CO0lBRWpDLFNBQVMsQ0FBQyxRQUFnQixFQUFFLFVBQWlDO1FBQzNELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFZLEVBQUUsVUFBaUM7UUFDbEUsMkZBQTJGO1FBQzNGLFFBQVEsSUFBMkIsRUFBRSxDQUFDO1lBQ3BDO2dCQUNFLE9BQU8sSUFBSSwwQkFBMEIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNwRDtnQkFDRSxPQUFPLElBQUksMEJBQTBCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDcEQ7Z0JBQ0UsT0FBTyxJQUFJLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdDO2dCQUNFLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNoRDtnQkFDRSxPQUFPLElBQUksb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDOUM7Z0JBQ0UsT0FBTyxJQUFJLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzlDO2dCQUNFLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMzQztnQkFDRSxPQUFPLElBQUksbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDN0M7Z0JBQ0UsT0FBTyxJQUFJLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzNDO2dCQUNFLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQywyQ0FBZ0M7WUFDaEM7Z0JBQ0UsT0FBTyxJQUFJLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2hEO2dCQUNFLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1Qyx5Q0FBNkI7WUFDN0I7Z0JBQ0UsT0FBTyxJQUFJLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ1IsTUFBTSxlQUFlLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBRTFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksbUJBQW1CLENBQUMsQ0FBQztnQkFDdkQsQ0FBQztnQkFFRCxPQUFPLGVBQWUsQ0FBQztZQUN6QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxJQUFZLEVBQUUsVUFBaUM7UUFDeEUsSUFBSSxJQUFJLENBQUMsVUFBVSwyQ0FBNEIsRUFBRSxDQUFDO1lBQ2hELE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSx5Q0FBMkIsRUFBRSxDQUFDO1lBQy9DLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQzt3R0FqRVUsaUJBQWlCOzRHQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvZGVFZGl0b3JDSGVscGVyLFxuICBDb2RlRWRpdG9yQ3BwSGVscGVyLFxuICBDb2RlRWRpdG9yQ1NoYXJwSGVscGVyLFxuICBDb2RlRWRpdG9yR29IZWxwZXIsXG4gIENvZGVFZGl0b3JKYXZhSGVscGVyLFxuICBDb2RlRWRpdG9ySmF2YXNjcmlwdEhlbHBlcixcbiAgQ29kZUVkaXRvcktvdGxpbkhlbHBlcixcbiAgQ29kZUVkaXRvclBocEhlbHBlcixcbiAgQ29kZUVkaXRvclB5dGhvbkhlbHBlcixcbiAgQ29kZUVkaXRvclJIZWxwZXIsXG4gIENvZGVFZGl0b3JSdWJ5SGVscGVyLFxuICBDb2RlRWRpdG9yU2NhbGFIZWxwZXIsXG4gIENvZGVFZGl0b3JTcWxIZWxwZXIsXG4gIENvZGVFZGl0b3JTd2lmdEhlbHBlcixcbiAgQ29kZUVkaXRvclR5cGVzY3JpcHRIZWxwZXIsXG59IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQge1xuICBDb2RlRWRpdG9yRnVuY09wdGlvbnMsXG4gIENvZGVFZGl0b3JIZWxwZXIsXG4gIENvZGVFZGl0b3JMYW5ndWFnZXMsXG59IGZyb20gJy4vaGVscGVycy9jb2RlLWVkaXRvci1oZWxwZXIubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ29kZUVkaXRvclNlcnZpY2Uge1xuICBwcml2YXRlIGhlbHBlcjogQ29kZUVkaXRvckhlbHBlcjtcblxuICBzZXRIZWxwZXIobGFuZ3VhZ2U6IHN0cmluZywgZnVuY1BhcmFtczogQ29kZUVkaXRvckZ1bmNPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5oZWxwZXIgPSB0aGlzLmNyZWF0ZUhlbHBlcihsYW5ndWFnZSwgZnVuY1BhcmFtcyk7XG4gIH1cblxuICBnZXRJbml0Q29kZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5nZXRJbml0Q29kZSgpO1xuICB9XG5cbiAgZ2V0RWRpdG9yTGFuZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5nZXRFZGl0b3JMYW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUhlbHBlcihsYW5nOiBzdHJpbmcsIGZ1bmNQYXJhbXM6IENvZGVFZGl0b3JGdW5jT3B0aW9ucyk6IENvZGVFZGl0b3JIZWxwZXIge1xuICAgIC8vIHRvZG86IHJldmlldyB0aGlzIGxvZ2ljIGFjY29yZGluZyB0byBuZXcgVEFULCByZW1vdmUgZ2VuZXJhdGVkIGluaXQgY29kZSBpZiBub3QgbmVlZGVkID9cbiAgICBzd2l0Y2ggKGxhbmcgYXMgQ29kZUVkaXRvckxhbmd1YWdlcykge1xuICAgICAgY2FzZSBDb2RlRWRpdG9yTGFuZ3VhZ2VzLkphdmFzY3JpcHQ6XG4gICAgICAgIHJldHVybiBuZXcgQ29kZUVkaXRvckphdmFzY3JpcHRIZWxwZXIoZnVuY1BhcmFtcyk7XG4gICAgICBjYXNlIENvZGVFZGl0b3JMYW5ndWFnZXMuVHlwZXNjcmlwdDpcbiAgICAgICAgcmV0dXJuIG5ldyBDb2RlRWRpdG9yVHlwZXNjcmlwdEhlbHBlcihmdW5jUGFyYW1zKTtcbiAgICAgIGNhc2UgQ29kZUVkaXRvckxhbmd1YWdlcy5QaHA6XG4gICAgICAgIHJldHVybiBuZXcgQ29kZUVkaXRvclBocEhlbHBlcihmdW5jUGFyYW1zKTtcbiAgICAgIGNhc2UgQ29kZUVkaXRvckxhbmd1YWdlcy5QeXRob246XG4gICAgICAgIHJldHVybiBuZXcgQ29kZUVkaXRvclB5dGhvbkhlbHBlcihmdW5jUGFyYW1zKTtcbiAgICAgIGNhc2UgQ29kZUVkaXRvckxhbmd1YWdlcy5KYXZhOlxuICAgICAgICByZXR1cm4gbmV3IENvZGVFZGl0b3JKYXZhSGVscGVyKGZ1bmNQYXJhbXMpO1xuICAgICAgY2FzZSBDb2RlRWRpdG9yTGFuZ3VhZ2VzLlJ1Ynk6XG4gICAgICAgIHJldHVybiBuZXcgQ29kZUVkaXRvclJ1YnlIZWxwZXIoZnVuY1BhcmFtcyk7XG4gICAgICBjYXNlIENvZGVFZGl0b3JMYW5ndWFnZXMuQzpcbiAgICAgICAgcmV0dXJuIG5ldyBDb2RlRWRpdG9yQ0hlbHBlcihmdW5jUGFyYW1zKTtcbiAgICAgIGNhc2UgQ29kZUVkaXRvckxhbmd1YWdlcy5DcHA6XG4gICAgICAgIHJldHVybiBuZXcgQ29kZUVkaXRvckNwcEhlbHBlcihmdW5jUGFyYW1zKTtcbiAgICAgIGNhc2UgQ29kZUVkaXRvckxhbmd1YWdlcy5SOlxuICAgICAgICByZXR1cm4gbmV3IENvZGVFZGl0b3JSSGVscGVyKGZ1bmNQYXJhbXMpO1xuICAgICAgY2FzZSBDb2RlRWRpdG9yTGFuZ3VhZ2VzLlNjYWxhOlxuICAgICAgICByZXR1cm4gbmV3IENvZGVFZGl0b3JTY2FsYUhlbHBlcihmdW5jUGFyYW1zKTtcbiAgICAgIGNhc2UgQ29kZUVkaXRvckxhbmd1YWdlcy5DU2hhcnA6XG4gICAgICBjYXNlIENvZGVFZGl0b3JMYW5ndWFnZXMuQ1NoYXJwTGVnYWN5OlxuICAgICAgICByZXR1cm4gbmV3IENvZGVFZGl0b3JDU2hhcnBIZWxwZXIoZnVuY1BhcmFtcyk7XG4gICAgICBjYXNlIENvZGVFZGl0b3JMYW5ndWFnZXMuR286XG4gICAgICAgIHJldHVybiBuZXcgQ29kZUVkaXRvckdvSGVscGVyKGZ1bmNQYXJhbXMpO1xuICAgICAgY2FzZSBDb2RlRWRpdG9yTGFuZ3VhZ2VzLlNxbDpcbiAgICAgIGNhc2UgQ29kZUVkaXRvckxhbmd1YWdlcy5TcWxpdGU6XG4gICAgICAgIHJldHVybiBuZXcgQ29kZUVkaXRvclNxbEhlbHBlcihmdW5jUGFyYW1zKTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29uc3QgdmVyc2lvbmVkSGVscGVyID0gbGFuZyAmJiB0aGlzLmdldFZlcnNpb25lZEhlbHBlcihsYW5nLCBmdW5jUGFyYW1zKTtcblxuICAgICAgICBpZiAoIXZlcnNpb25lZEhlbHBlcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgbGFuZ3VhZ2UgJHtsYW5nfSBpcyBub3Qgc3VwcG9ydGVkYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmVyc2lvbmVkSGVscGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmVyc2lvbmVkSGVscGVyKGxhbmc6IHN0cmluZywgZnVuY1BhcmFtczogQ29kZUVkaXRvckZ1bmNPcHRpb25zKTogQ29kZUVkaXRvckhlbHBlciB7XG4gICAgaWYgKGxhbmcuc3RhcnRzV2l0aChDb2RlRWRpdG9yTGFuZ3VhZ2VzLktvdGxpbikpIHtcbiAgICAgIHJldHVybiBuZXcgQ29kZUVkaXRvcktvdGxpbkhlbHBlcihmdW5jUGFyYW1zKTtcbiAgICB9XG4gICAgaWYgKGxhbmcuc3RhcnRzV2l0aChDb2RlRWRpdG9yTGFuZ3VhZ2VzLlN3aWZ0KSkge1xuICAgICAgcmV0dXJuIG5ldyBDb2RlRWRpdG9yU3dpZnRIZWxwZXIoZnVuY1BhcmFtcyk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { CodeEditorHelperBase } from './code-editor-helper.base';
|
|
2
|
-
export class CodeEditorCHelper extends CodeEditorHelperBase {
|
|
3
|
-
functionOptions;
|
|
4
|
-
language = "c" /* CodeEditorLanguages.C */;
|
|
5
|
-
typesMap = {
|
|
6
|
-
boolean: 'bool',
|
|
7
|
-
int: 'int',
|
|
8
|
-
number: 'int',
|
|
9
|
-
double: 'double',
|
|
10
|
-
float: 'float',
|
|
11
|
-
str: 'char *',
|
|
12
|
-
array_boolean: 'bool *',
|
|
13
|
-
array_int: 'int *',
|
|
14
|
-
array_float: 'float *',
|
|
15
|
-
array_double: 'double *',
|
|
16
|
-
};
|
|
17
|
-
constructor(functionOptions) {
|
|
18
|
-
super();
|
|
19
|
-
this.functionOptions = functionOptions;
|
|
20
|
-
}
|
|
21
|
-
getInitCode() {
|
|
22
|
-
return `${this.getFunctionOpening()}\t //Insert your code here \n}`;
|
|
23
|
-
}
|
|
24
|
-
getFunctionOpening() {
|
|
25
|
-
const { name: funcName, returnType } = this.functionOptions;
|
|
26
|
-
const params = this.getParamsString();
|
|
27
|
-
const showingReturnType = this.parseType(returnType);
|
|
28
|
-
return `${showingReturnType} ${funcName}(${params}) {\n`;
|
|
29
|
-
}
|
|
30
|
-
getParamsString() {
|
|
31
|
-
const { params } = this.functionOptions;
|
|
32
|
-
let paramsString = '';
|
|
33
|
-
if (params && params.length > 0) {
|
|
34
|
-
params.forEach(values => (paramsString += `${this.parseType(values.type)} ${values.name}, `));
|
|
35
|
-
paramsString = paramsString.slice(0, -2);
|
|
36
|
-
}
|
|
37
|
-
return paramsString;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYy1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90Z28tY29kaW5nLXRlc3Qvc3JjL2xpYi9jb21wb25lbnRzL2NvZGUtZWRpdG9yL2hlbHBlcnMvYy1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFRakUsTUFBTSxPQUFPLGlCQUFrQixTQUFRLG9CQUFvQjtJQWVyQztJQWRwQixRQUFRLG1DQUF5QjtJQUNqQyxRQUFRLEdBQXVCO1FBQzdCLE9BQU8sRUFBRSxNQUFNO1FBQ2YsR0FBRyxFQUFFLEtBQUs7UUFDVixNQUFNLEVBQUUsS0FBSztRQUNiLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLEtBQUssRUFBRSxPQUFPO1FBQ2QsR0FBRyxFQUFFLFFBQVE7UUFDYixhQUFhLEVBQUUsUUFBUTtRQUN2QixTQUFTLEVBQUUsT0FBTztRQUNsQixXQUFXLEVBQUUsU0FBUztRQUN0QixZQUFZLEVBQUUsVUFBVTtLQUN6QixDQUFDO0lBRUYsWUFBb0IsZUFBc0M7UUFDeEQsS0FBSyxFQUFFLENBQUM7UUFEVSxvQkFBZSxHQUFmLGVBQWUsQ0FBdUI7SUFFMUQsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLGdDQUFnQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM1RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdEMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXJELE9BQU8sR0FBRyxpQkFBaUIsSUFBSSxRQUFRLElBQUksTUFBTSxPQUFPLENBQUM7SUFDM0QsQ0FBQztJQUVPLGVBQWU7UUFDckIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDeEMsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBRXRCLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM5RixZQUFZLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29kZUVkaXRvckhlbHBlckJhc2UgfSBmcm9tICcuL2NvZGUtZWRpdG9yLWhlbHBlci5iYXNlJztcbmltcG9ydCB7XG4gIENvZGVFZGl0b3JGdW5jT3B0aW9ucyxcbiAgQ29kZUVkaXRvckhlbHBlcixcbiAgQ29kZUVkaXRvckxhbmd1YWdlcyxcbiAgQ29kZUVkaXRvclR5cGVzTWFwLFxufSBmcm9tICcuL2NvZGUtZWRpdG9yLWhlbHBlci5tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBDb2RlRWRpdG9yQ0hlbHBlciBleHRlbmRzIENvZGVFZGl0b3JIZWxwZXJCYXNlIGltcGxlbWVudHMgQ29kZUVkaXRvckhlbHBlciB7XG4gIGxhbmd1YWdlID0gQ29kZUVkaXRvckxhbmd1YWdlcy5DO1xuICB0eXBlc01hcDogQ29kZUVkaXRvclR5cGVzTWFwID0ge1xuICAgIGJvb2xlYW46ICdib29sJyxcbiAgICBpbnQ6ICdpbnQnLFxuICAgIG51bWJlcjogJ2ludCcsXG4gICAgZG91YmxlOiAnZG91YmxlJyxcbiAgICBmbG9hdDogJ2Zsb2F0JyxcbiAgICBzdHI6ICdjaGFyIConLFxuICAgIGFycmF5X2Jvb2xlYW46ICdib29sIConLFxuICAgIGFycmF5X2ludDogJ2ludCAqJyxcbiAgICBhcnJheV9mbG9hdDogJ2Zsb2F0IConLFxuICAgIGFycmF5X2RvdWJsZTogJ2RvdWJsZSAqJyxcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZ1bmN0aW9uT3B0aW9uczogQ29kZUVkaXRvckZ1bmNPcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGdldEluaXRDb2RlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuZ2V0RnVuY3Rpb25PcGVuaW5nKCl9XFx0IC8vSW5zZXJ0IHlvdXIgY29kZSBoZXJlIFxcbn1gO1xuICB9XG5cbiAgZ2V0RnVuY3Rpb25PcGVuaW5nKCk6IHN0cmluZyB7XG4gICAgY29uc3QgeyBuYW1lOiBmdW5jTmFtZSwgcmV0dXJuVHlwZSB9ID0gdGhpcy5mdW5jdGlvbk9wdGlvbnM7XG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5nZXRQYXJhbXNTdHJpbmcoKTtcbiAgICBjb25zdCBzaG93aW5nUmV0dXJuVHlwZSA9IHRoaXMucGFyc2VUeXBlKHJldHVyblR5cGUpO1xuXG4gICAgcmV0dXJuIGAke3Nob3dpbmdSZXR1cm5UeXBlfSAke2Z1bmNOYW1lfSgke3BhcmFtc30pIHtcXG5gO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJhbXNTdHJpbmcoKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IHBhcmFtcyB9ID0gdGhpcy5mdW5jdGlvbk9wdGlvbnM7XG4gICAgbGV0IHBhcmFtc1N0cmluZyA9ICcnO1xuXG4gICAgaWYgKHBhcmFtcyAmJiBwYXJhbXMubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLmZvckVhY2godmFsdWVzID0+IChwYXJhbXNTdHJpbmcgKz0gYCR7dGhpcy5wYXJzZVR5cGUodmFsdWVzLnR5cGUpfSAke3ZhbHVlcy5uYW1lfSwgYCkpO1xuICAgICAgcGFyYW1zU3RyaW5nID0gcGFyYW1zU3RyaW5nLnNsaWNlKDAsIC0yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyYW1zU3RyaW5nO1xuICB9XG59XG4iXX0=
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export class CodeEditorHelperBase {
|
|
2
|
-
language;
|
|
3
|
-
typesMap;
|
|
4
|
-
getEditorLang() {
|
|
5
|
-
return this.language;
|
|
6
|
-
}
|
|
7
|
-
parseType(type) {
|
|
8
|
-
return this.typesMap[type];
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1lZGl0b3ItaGVscGVyLmJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90Z28tY29kaW5nLXRlc3Qvc3JjL2xpYi9jb21wb25lbnRzL2NvZGUtZWRpdG9yL2hlbHBlcnMvY29kZS1lZGl0b3ItaGVscGVyLmJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFnQixvQkFBb0I7SUFDOUIsUUFBUSxDQUFzQjtJQUM5QixRQUFRLENBQXFCO0lBSXZDLGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVTLFNBQVMsQ0FBQyxJQUE4QjtRQUNoRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29kZUVkaXRvckxhbmd1YWdlcywgQ29kZUVkaXRvclR5cGVzTWFwIH0gZnJvbSAnLi9jb2RlLWVkaXRvci1oZWxwZXIubW9kZWwnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29kZUVkaXRvckhlbHBlckJhc2Uge1xuICBwcm90ZWN0ZWQgbGFuZ3VhZ2U6IENvZGVFZGl0b3JMYW5ndWFnZXM7XG4gIHByb3RlY3RlZCB0eXBlc01hcDogQ29kZUVkaXRvclR5cGVzTWFwO1xuXG4gIGFic3RyYWN0IGdldEZ1bmN0aW9uT3BlbmluZygpOiBzdHJpbmc7XG5cbiAgZ2V0RWRpdG9yTGFuZygpOiBDb2RlRWRpdG9yTGFuZ3VhZ2VzIHtcbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZVR5cGUodHlwZToga2V5b2YgQ29kZUVkaXRvclR5cGVzTWFwKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50eXBlc01hcFt0eXBlXTtcbiAgfVxufVxuIl19
|