@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.
Files changed (102) hide show
  1. package/fesm2022/testgorilla-tgo-coding-test.mjs +94 -94
  2. package/fesm2022/testgorilla-tgo-coding-test.mjs.map +1 -1
  3. package/lib/components/configurations/configurations.component.d.ts +1 -1
  4. package/package.json +15 -17
  5. package/esm2022/index.mjs +0 -12
  6. package/esm2022/lib/components/code-editor/code-editor.component.mjs +0 -335
  7. package/esm2022/lib/components/code-editor/code-editor.service.mjs +0 -72
  8. package/esm2022/lib/components/code-editor/helpers/c-helper.mjs +0 -40
  9. package/esm2022/lib/components/code-editor/helpers/code-editor-helper.base.mjs +0 -11
  10. package/esm2022/lib/components/code-editor/helpers/code-editor-helper.model.mjs +0 -2
  11. package/esm2022/lib/components/code-editor/helpers/cpp-helper.mjs +0 -41
  12. package/esm2022/lib/components/code-editor/helpers/csharp-helper.mjs +0 -42
  13. package/esm2022/lib/components/code-editor/helpers/go-helper.mjs +0 -42
  14. package/esm2022/lib/components/code-editor/helpers/index.mjs +0 -16
  15. package/esm2022/lib/components/code-editor/helpers/java-helper.mjs +0 -42
  16. package/esm2022/lib/components/code-editor/helpers/javascript-helper.mjs +0 -26
  17. package/esm2022/lib/components/code-editor/helpers/kotlin-helper.mjs +0 -42
  18. package/esm2022/lib/components/code-editor/helpers/php-helper.mjs +0 -26
  19. package/esm2022/lib/components/code-editor/helpers/python-helper.mjs +0 -26
  20. package/esm2022/lib/components/code-editor/helpers/r-helper.mjs +0 -26
  21. package/esm2022/lib/components/code-editor/helpers/ruby-helper.mjs +0 -26
  22. package/esm2022/lib/components/code-editor/helpers/scala-helper.mjs +0 -41
  23. package/esm2022/lib/components/code-editor/helpers/sql-helper.mjs +0 -34
  24. package/esm2022/lib/components/code-editor/helpers/swift-helper.mjs +0 -40
  25. package/esm2022/lib/components/code-editor/helpers/typescript-helper.mjs +0 -41
  26. package/esm2022/lib/components/code-editor/models/code-editor.model.mjs +0 -2
  27. package/esm2022/lib/components/code-editor/models/coding-snapshot.model.mjs +0 -2
  28. package/esm2022/lib/components/coding-question/coding-question.component.mjs +0 -126
  29. package/esm2022/lib/components/coding-section/coding-section.component.mjs +0 -188
  30. package/esm2022/lib/components/common/truncated-text/truncated-text.component.mjs +0 -38
  31. package/esm2022/lib/components/configurations/configurations.component.mjs +0 -97
  32. package/esm2022/lib/components/instructions/instructions.component.mjs +0 -139
  33. package/esm2022/lib/components/panel/panel.component.mjs +0 -34
  34. package/esm2022/lib/components/runnable-editor/runnable-editor.component.mjs +0 -169
  35. package/esm2022/lib/components/tests/test-cases/test-cases.component.mjs +0 -198
  36. package/esm2022/lib/components/tests/test-cases-content/test-cases-content.component.mjs +0 -96
  37. package/esm2022/lib/components/tests/test-cases-status/test-cases-status.component.mjs +0 -21
  38. package/esm2022/lib/components/tests/test-results.component.mjs +0 -127
  39. package/esm2022/lib/components/tgo-coding-test/tgo-coding-test.component.mjs +0 -280
  40. package/esm2022/lib/components/tgo-coding-test-candidate-view/tgo-coding-test-candidate-view.component.mjs +0 -476
  41. package/esm2022/lib/config/index.mjs +0 -2
  42. package/esm2022/lib/config/tgo-coding-test.config.mjs +0 -2
  43. package/esm2022/lib/config/tgo-coding-test.provider.mjs +0 -34
  44. package/esm2022/lib/config/tgo-coding-test.token.mjs +0 -14
  45. package/esm2022/lib/models/auto-saved-data.mjs +0 -2
  46. package/esm2022/lib/models/code-event.mjs +0 -2
  47. package/esm2022/lib/models/coderunner-execution-results.mjs +0 -2
  48. package/esm2022/lib/models/configs.mjs +0 -2
  49. package/esm2022/lib/models/language-change-action.mjs +0 -2
  50. package/esm2022/lib/models/lat-languages.mjs +0 -3
  51. package/esm2022/lib/models/mixpanel-events.mjs +0 -2
  52. package/esm2022/lib/models/mode.mjs +0 -2
  53. package/esm2022/lib/models/paste-data.mjs +0 -2
  54. package/esm2022/lib/models/programming-language.mjs +0 -2
  55. package/esm2022/lib/models/test-cases.mjs +0 -7
  56. package/esm2022/lib/models/theme.mjs +0 -2
  57. package/esm2022/lib/models/translations.mjs +0 -2
  58. package/esm2022/lib/models/view-mode.mjs +0 -8
  59. package/esm2022/lib/pipes/memoize-func.pipe.mjs +0 -39
  60. package/esm2022/lib/services/candidate-coding-test-services/candidature-api.service.mjs +0 -19
  61. package/esm2022/lib/services/candidate-coding-test-services/coderunner-api.service.mjs +0 -58
  62. package/esm2022/lib/services/candidate-coding-test-services/coding-test-tour.service.mjs +0 -89
  63. package/esm2022/lib/services/candidate-coding-test-services/coding-test.service.mjs +0 -490
  64. package/esm2022/lib/services/candidate-coding-test-services/index.mjs +0 -5
  65. package/esm2022/lib/services/coding-test-config.service.mjs +0 -51
  66. package/esm2022/lib/services/configurations.service.mjs +0 -89
  67. package/esm2022/lib/services/lib-coding-test.service.mjs +0 -106
  68. package/esm2022/lib/services/storage.service.mjs +0 -624
  69. package/esm2022/lib/services/test-cases.service.mjs +0 -30
  70. package/esm2022/lib/services/theme.service.mjs +0 -36
  71. package/esm2022/lib/utils/additional-languages/erlang.mjs +0 -103
  72. package/esm2022/lib/utils/resize-element.mjs +0 -13
  73. package/esm2022/lib/utils/time-to-ms.util.mjs +0 -11
  74. package/esm2022/shared/index.mjs +0 -5
  75. package/esm2022/shared/lib/components/audio-animation/audio-animation.component.mjs +0 -114
  76. package/esm2022/shared/lib/components/audio-animation/index.mjs +0 -2
  77. package/esm2022/shared/lib/components/index.mjs +0 -3
  78. package/esm2022/shared/lib/components/vimeo-video/index.mjs +0 -2
  79. package/esm2022/shared/lib/components/vimeo-video/vimeo-video.component.mjs +0 -101
  80. package/esm2022/shared/lib/models/answer.mjs +0 -2
  81. package/esm2022/shared/lib/models/assessment.mjs +0 -2
  82. package/esm2022/shared/lib/models/environment.mjs +0 -2
  83. package/esm2022/shared/lib/models/index.mjs +0 -9
  84. package/esm2022/shared/lib/models/question-component.mjs +0 -2
  85. package/esm2022/shared/lib/models/question.mjs +0 -2
  86. package/esm2022/shared/lib/models/test.mjs +0 -2
  87. package/esm2022/shared/lib/models/translations.mjs +0 -2
  88. package/esm2022/shared/lib/models/window.mjs +0 -2
  89. package/esm2022/shared/lib/services/api/api.service.mjs +0 -97
  90. package/esm2022/shared/lib/services/api/mocked-api.service.mjs +0 -131
  91. package/esm2022/shared/lib/services/environment/environment.service.mjs +0 -13
  92. package/esm2022/shared/lib/services/index.mjs +0 -10
  93. package/esm2022/shared/lib/services/localization/languages.model.mjs +0 -19
  94. package/esm2022/shared/lib/services/localization/transloco-lazy-module-utils.mjs +0 -27
  95. package/esm2022/shared/lib/services/localization/transloco-testing.module.mjs +0 -11
  96. package/esm2022/shared/lib/services/media/media.service.mjs +0 -129
  97. package/esm2022/shared/lib/services/mixpanel/mixpanel.service.mjs +0 -30
  98. package/esm2022/shared/lib/services/theme/theme.service.mjs +0 -24
  99. package/esm2022/shared/test-mocks/assessment-test.mock.mjs +0 -112
  100. package/esm2022/shared/test-mocks/index.mjs +0 -3
  101. package/esm2022/shared/test-mocks/tgo-ui.mock.mjs +0 -39
  102. 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: number | import("@testgorilla/tgo-coding-test").Themes;
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": "1.0.0",
3
+ "version": "2.0.1",
4
4
  "peerDependencies": {
5
- "@angular/animations": "^18.2.13",
6
- "@angular/common": "^18.2.13",
7
- "@angular/core": "^18.2.13",
8
- "@angular/forms": "^18.2.13",
9
- "@angular/material": "18.2.14",
10
- "@angular/router": "^18.2.13",
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": "^3.0.0",
14
- "angular-split": "^18.0.0",
15
- "jest-preset-angular": "~14.2.4",
16
- "monaco-editor": "0.50.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": "^18.1.0",
19
- "ngx-quill": "^26.0.10",
20
- "ngx-webstorage": "^18.0.0",
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