@testgorilla/tgo-coding-test 0.0.1 → 1.0.0
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/README.md +49 -2
- package/esm2022/index.mjs +12 -0
- package/esm2022/lib/components/code-editor/code-editor.component.mjs +335 -0
- package/esm2022/lib/components/code-editor/code-editor.service.mjs +72 -0
- package/esm2022/lib/components/code-editor/helpers/c-helper.mjs +40 -0
- package/esm2022/lib/components/code-editor/helpers/code-editor-helper.base.mjs +11 -0
- package/esm2022/lib/components/code-editor/helpers/code-editor-helper.model.mjs +2 -0
- package/esm2022/lib/components/code-editor/helpers/cpp-helper.mjs +41 -0
- package/esm2022/lib/components/code-editor/helpers/csharp-helper.mjs +42 -0
- package/esm2022/lib/components/code-editor/helpers/go-helper.mjs +42 -0
- package/esm2022/lib/components/code-editor/helpers/index.mjs +16 -0
- package/esm2022/lib/components/code-editor/helpers/java-helper.mjs +42 -0
- package/esm2022/lib/components/code-editor/helpers/javascript-helper.mjs +26 -0
- package/esm2022/lib/components/code-editor/helpers/kotlin-helper.mjs +42 -0
- package/esm2022/lib/components/code-editor/helpers/php-helper.mjs +26 -0
- package/esm2022/lib/components/code-editor/helpers/python-helper.mjs +26 -0
- package/esm2022/lib/components/code-editor/helpers/r-helper.mjs +26 -0
- package/esm2022/lib/components/code-editor/helpers/ruby-helper.mjs +26 -0
- package/esm2022/lib/components/code-editor/helpers/scala-helper.mjs +41 -0
- package/esm2022/lib/components/code-editor/helpers/sql-helper.mjs +34 -0
- package/esm2022/lib/components/code-editor/helpers/swift-helper.mjs +40 -0
- package/esm2022/lib/components/code-editor/helpers/typescript-helper.mjs +41 -0
- package/esm2022/lib/components/code-editor/models/code-editor.model.mjs +2 -0
- package/esm2022/lib/components/code-editor/models/coding-snapshot.model.mjs +2 -0
- package/esm2022/lib/components/coding-question/coding-question.component.mjs +126 -0
- package/esm2022/lib/components/coding-section/coding-section.component.mjs +188 -0
- package/esm2022/lib/components/common/truncated-text/truncated-text.component.mjs +38 -0
- package/esm2022/lib/components/configurations/configurations.component.mjs +97 -0
- package/esm2022/lib/components/instructions/instructions.component.mjs +139 -0
- package/esm2022/lib/components/panel/panel.component.mjs +34 -0
- package/esm2022/lib/components/runnable-editor/runnable-editor.component.mjs +169 -0
- package/esm2022/lib/components/tests/test-cases/test-cases.component.mjs +198 -0
- package/esm2022/lib/components/tests/test-cases-content/test-cases-content.component.mjs +96 -0
- package/esm2022/lib/components/tests/test-cases-status/test-cases-status.component.mjs +21 -0
- package/esm2022/lib/components/tests/test-results.component.mjs +127 -0
- package/esm2022/lib/components/tgo-coding-test/tgo-coding-test.component.mjs +280 -0
- package/esm2022/lib/components/tgo-coding-test-candidate-view/tgo-coding-test-candidate-view.component.mjs +476 -0
- package/esm2022/lib/config/index.mjs +2 -0
- package/esm2022/lib/config/tgo-coding-test.config.mjs +2 -0
- package/esm2022/lib/config/tgo-coding-test.provider.mjs +34 -0
- package/esm2022/lib/config/tgo-coding-test.token.mjs +14 -0
- package/esm2022/lib/models/auto-saved-data.mjs +2 -0
- package/esm2022/lib/models/code-event.mjs +2 -0
- package/esm2022/lib/models/coderunner-execution-results.mjs +2 -0
- package/esm2022/lib/models/configs.mjs +2 -0
- package/esm2022/lib/models/language-change-action.mjs +2 -0
- package/esm2022/lib/models/lat-languages.mjs +3 -0
- package/esm2022/lib/models/mixpanel-events.mjs +2 -0
- package/esm2022/lib/models/mode.mjs +2 -0
- package/esm2022/lib/models/paste-data.mjs +2 -0
- package/esm2022/lib/models/programming-language.mjs +2 -0
- package/esm2022/lib/models/test-cases.mjs +7 -0
- package/esm2022/lib/models/theme.mjs +2 -0
- package/esm2022/lib/models/translations.mjs +2 -0
- package/esm2022/lib/models/view-mode.mjs +8 -0
- package/esm2022/lib/pipes/memoize-func.pipe.mjs +39 -0
- package/esm2022/lib/services/candidate-coding-test-services/candidature-api.service.mjs +19 -0
- package/esm2022/lib/services/candidate-coding-test-services/coderunner-api.service.mjs +58 -0
- package/esm2022/lib/services/candidate-coding-test-services/coding-test-tour.service.mjs +89 -0
- package/esm2022/lib/services/candidate-coding-test-services/coding-test.service.mjs +490 -0
- package/esm2022/lib/services/candidate-coding-test-services/index.mjs +5 -0
- package/esm2022/lib/services/coding-test-config.service.mjs +51 -0
- package/esm2022/lib/services/configurations.service.mjs +89 -0
- package/esm2022/lib/services/lib-coding-test.service.mjs +106 -0
- package/esm2022/lib/services/storage.service.mjs +624 -0
- package/esm2022/lib/services/test-cases.service.mjs +30 -0
- package/esm2022/lib/services/theme.service.mjs +36 -0
- package/esm2022/lib/utils/additional-languages/erlang.mjs +103 -0
- package/esm2022/lib/utils/resize-element.mjs +13 -0
- package/esm2022/lib/utils/time-to-ms.util.mjs +11 -0
- package/esm2022/shared/index.mjs +5 -0
- package/esm2022/shared/lib/components/audio-animation/audio-animation.component.mjs +114 -0
- package/esm2022/shared/lib/components/audio-animation/index.mjs +2 -0
- package/esm2022/shared/lib/components/index.mjs +3 -0
- package/esm2022/shared/lib/components/vimeo-video/index.mjs +2 -0
- package/esm2022/shared/lib/components/vimeo-video/vimeo-video.component.mjs +101 -0
- package/esm2022/shared/lib/models/answer.mjs +2 -0
- package/esm2022/shared/lib/models/assessment.mjs +2 -0
- package/esm2022/shared/lib/models/environment.mjs +2 -0
- package/esm2022/shared/lib/models/index.mjs +9 -0
- package/esm2022/shared/lib/models/question-component.mjs +2 -0
- package/esm2022/shared/lib/models/question.mjs +2 -0
- package/esm2022/shared/lib/models/test.mjs +2 -0
- package/esm2022/shared/lib/models/translations.mjs +2 -0
- package/esm2022/shared/lib/models/window.mjs +2 -0
- package/esm2022/shared/lib/services/api/api.service.mjs +97 -0
- package/esm2022/shared/lib/services/api/mocked-api.service.mjs +131 -0
- package/esm2022/shared/lib/services/environment/environment.service.mjs +13 -0
- package/esm2022/shared/lib/services/index.mjs +10 -0
- package/esm2022/shared/lib/services/localization/languages.model.mjs +19 -0
- package/esm2022/shared/lib/services/localization/transloco-lazy-module-utils.mjs +27 -0
- package/esm2022/shared/lib/services/localization/transloco-testing.module.mjs +11 -0
- package/esm2022/shared/lib/services/media/media.service.mjs +129 -0
- package/esm2022/shared/lib/services/mixpanel/mixpanel.service.mjs +30 -0
- package/esm2022/shared/lib/services/theme/theme.service.mjs +24 -0
- package/esm2022/shared/test-mocks/assessment-test.mock.mjs +112 -0
- package/esm2022/shared/test-mocks/index.mjs +3 -0
- package/esm2022/shared/test-mocks/tgo-ui.mock.mjs +39 -0
- package/esm2022/testgorilla-tgo-coding-test.mjs +5 -0
- package/fesm2022/testgorilla-tgo-coding-test.mjs +4526 -0
- package/fesm2022/testgorilla-tgo-coding-test.mjs.map +1 -0
- package/{src/index.ts → index.d.ts} +2 -19
- package/lib/components/code-editor/code-editor.component.d.ts +54 -0
- package/lib/components/code-editor/code-editor.service.d.ts +12 -0
- package/lib/components/code-editor/helpers/c-helper.d.ts +11 -0
- package/lib/components/code-editor/helpers/code-editor-helper.base.d.ts +8 -0
- package/lib/components/code-editor/helpers/code-editor-helper.model.d.ts +62 -0
- package/lib/components/code-editor/helpers/cpp-helper.d.ts +11 -0
- package/lib/components/code-editor/helpers/csharp-helper.d.ts +12 -0
- package/lib/components/code-editor/helpers/go-helper.d.ts +12 -0
- package/lib/components/code-editor/helpers/java-helper.d.ts +12 -0
- package/lib/components/code-editor/helpers/javascript-helper.d.ts +10 -0
- package/lib/components/code-editor/helpers/kotlin-helper.d.ts +12 -0
- package/lib/components/code-editor/helpers/php-helper.d.ts +10 -0
- package/lib/components/code-editor/helpers/python-helper.d.ts +10 -0
- package/lib/components/code-editor/helpers/r-helper.d.ts +10 -0
- package/lib/components/code-editor/helpers/ruby-helper.d.ts +10 -0
- package/lib/components/code-editor/helpers/scala-helper.d.ts +12 -0
- package/lib/components/code-editor/helpers/sql-helper.d.ts +10 -0
- package/lib/components/code-editor/helpers/swift-helper.d.ts +11 -0
- package/lib/components/code-editor/helpers/typescript-helper.d.ts +11 -0
- package/lib/components/code-editor/models/code-editor.model.d.ts +8 -0
- package/lib/components/code-editor/models/coding-snapshot.model.d.ts +4 -0
- package/lib/components/coding-question/coding-question.component.d.ts +45 -0
- package/lib/components/coding-section/coding-section.component.d.ts +52 -0
- package/lib/components/common/truncated-text/truncated-text.component.d.ts +13 -0
- package/lib/components/configurations/configurations.component.d.ts +40 -0
- package/lib/components/instructions/instructions.component.d.ts +48 -0
- package/lib/components/panel/panel.component.d.ts +12 -0
- package/lib/components/runnable-editor/runnable-editor.component.d.ts +53 -0
- package/lib/components/tests/test-cases/test-cases.component.d.ts +46 -0
- package/lib/components/tests/test-cases-content/test-cases-content.component.d.ts +26 -0
- package/lib/components/tests/test-cases-status/test-cases-status.component.d.ts +9 -0
- package/lib/components/tests/test-results.component.d.ts +33 -0
- package/lib/components/tgo-coding-test/tgo-coding-test.component.d.ts +69 -0
- package/lib/components/tgo-coding-test-candidate-view/tgo-coding-test-candidate-view.component.d.ts +101 -0
- package/{src/lib/config/index.ts → lib/config/index.d.ts} +0 -1
- package/lib/config/tgo-coding-test.config.d.ts +24 -0
- package/{src/lib/config/tgo-coding-test.provider.ts → lib/config/tgo-coding-test.provider.d.ts} +6 -18
- package/lib/config/tgo-coding-test.token.d.ts +9 -0
- package/lib/models/auto-saved-data.d.ts +42 -0
- package/lib/models/code-event.d.ts +15 -0
- package/lib/models/coderunner-execution-results.d.ts +51 -0
- package/lib/models/configs.d.ts +15 -0
- package/lib/models/language-change-action.d.ts +4 -0
- package/lib/models/lat-languages.d.ts +8 -0
- package/lib/models/mixpanel-events.d.ts +3 -0
- package/lib/models/mode.d.ts +5 -0
- package/lib/models/paste-data.d.ts +4 -0
- package/lib/models/programming-language.d.ts +8 -0
- package/lib/models/test-cases.d.ts +67 -0
- package/lib/models/theme.d.ts +4 -0
- package/lib/models/translations.d.ts +1 -0
- package/lib/models/view-mode.d.ts +6 -0
- package/{src/lib/pipes/memoize-func.pipe.ts → lib/pipes/memoize-func.pipe.d.ts} +6 -14
- package/lib/services/candidate-coding-test-services/candidature-api.service.d.ts +10 -0
- package/lib/services/candidate-coding-test-services/coderunner-api.service.d.ts +18 -0
- package/lib/services/candidate-coding-test-services/coding-test-tour.service.d.ts +22 -0
- package/lib/services/candidate-coding-test-services/coding-test.service.d.ts +68 -0
- package/{src/lib/services/candidate-coding-test-services/index.ts → lib/services/candidate-coding-test-services/index.d.ts} +1 -1
- package/lib/services/coding-test-config.service.d.ts +38 -0
- package/lib/services/configurations.service.d.ts +37 -0
- package/lib/services/lib-coding-test.service.d.ts +69 -0
- package/lib/services/storage.service.d.ts +83 -0
- package/lib/services/test-cases.service.d.ts +12 -0
- package/lib/services/theme.service.d.ts +17 -0
- package/lib/utils/additional-languages/erlang.d.ts +37 -0
- package/lib/utils/resize-element.d.ts +2 -0
- package/lib/utils/time-to-ms.util.d.ts +1 -0
- package/package.json +18 -7
- package/shared/index.d.ts +4 -0
- package/shared/lib/components/audio-animation/audio-animation.component.d.ts +27 -0
- package/shared/lib/components/audio-animation/index.d.ts +1 -0
- package/shared/lib/components/index.d.ts +2 -0
- package/shared/lib/components/vimeo-video/index.d.ts +1 -0
- package/shared/lib/components/vimeo-video/vimeo-video.component.d.ts +24 -0
- package/shared/lib/models/answer.d.ts +17 -0
- package/shared/lib/models/assessment.d.ts +80 -0
- package/shared/lib/models/environment.d.ts +1 -0
- package/shared/lib/models/index.d.ts +8 -0
- package/shared/lib/models/question-component.d.ts +54 -0
- package/shared/lib/models/question.d.ts +102 -0
- package/shared/lib/models/test.d.ts +81 -0
- package/shared/lib/models/translations.d.ts +1 -0
- package/shared/lib/models/window.d.ts +6 -0
- package/shared/lib/services/api/api.service.d.ts +25 -0
- package/shared/lib/services/api/mocked-api.service.d.ts +35 -0
- package/shared/lib/services/environment/environment.service.d.ts +6 -0
- package/shared/lib/services/index.d.ts +9 -0
- package/shared/lib/services/localization/languages.model.d.ts +15 -0
- package/shared/lib/services/localization/transloco-lazy-module-utils.d.ts +11 -0
- package/shared/lib/services/localization/transloco-testing.module.d.ts +2 -0
- package/shared/lib/services/media/media.service.d.ts +29 -0
- package/shared/lib/services/mixpanel/mixpanel.service.d.ts +10 -0
- package/shared/lib/services/theme/theme.service.d.ts +8 -0
- package/shared/test-mocks/assessment-test.mock.d.ts +21 -0
- package/shared/test-mocks/index.d.ts +2 -0
- package/shared/test-mocks/tgo-ui.mock.d.ts +21 -0
- package/.eslintrc.json +0 -45
- package/jest.config.ts +0 -21
- package/ng-package.json +0 -14
- package/project.json +0 -36
- package/src/lib/components/.gitkeep +0 -0
- package/src/lib/components/code-editor/code-editor.component.html +0 -10
- package/src/lib/components/code-editor/code-editor.component.scss +0 -21
- package/src/lib/components/code-editor/code-editor.component.spec.ts +0 -136
- package/src/lib/components/code-editor/code-editor.component.ts +0 -369
- package/src/lib/components/code-editor/code-editor.mocks.ts +0 -28
- package/src/lib/components/code-editor/code-editor.service.spec.ts +0 -160
- package/src/lib/components/code-editor/code-editor.service.ts +0 -94
- package/src/lib/components/code-editor/helpers/c-helper.spec.ts +0 -39
- package/src/lib/components/code-editor/helpers/c-helper.ts +0 -51
- package/src/lib/components/code-editor/helpers/code-editor-helper.base.spec.ts +0 -30
- package/src/lib/components/code-editor/helpers/code-editor-helper.base.ts +0 -16
- package/src/lib/components/code-editor/helpers/code-editor-helper.mocks.ts +0 -24
- package/src/lib/components/code-editor/helpers/code-editor-helper.model.ts +0 -67
- package/src/lib/components/code-editor/helpers/cpp-helper.spec.ts +0 -40
- package/src/lib/components/code-editor/helpers/cpp-helper.ts +0 -52
- package/src/lib/components/code-editor/helpers/csharp-helper.spec.ts +0 -42
- package/src/lib/components/code-editor/helpers/csharp-helper.ts +0 -55
- package/src/lib/components/code-editor/helpers/go-helper.spec.ts +0 -41
- package/src/lib/components/code-editor/helpers/go-helper.ts +0 -54
- package/src/lib/components/code-editor/helpers/java-helper.spec.ts +0 -41
- package/src/lib/components/code-editor/helpers/java-helper.ts +0 -54
- package/src/lib/components/code-editor/helpers/javascript-helper.spec.ts +0 -39
- package/src/lib/components/code-editor/helpers/javascript-helper.ts +0 -32
- package/src/lib/components/code-editor/helpers/kotlin-helper.spec.ts +0 -41
- package/src/lib/components/code-editor/helpers/kotlin-helper.ts +0 -54
- package/src/lib/components/code-editor/helpers/php-helper.spec.ts +0 -39
- package/src/lib/components/code-editor/helpers/php-helper.ts +0 -32
- package/src/lib/components/code-editor/helpers/python-helper.spec.ts +0 -39
- package/src/lib/components/code-editor/helpers/python-helper.ts +0 -32
- package/src/lib/components/code-editor/helpers/r-helper.spec.ts +0 -39
- package/src/lib/components/code-editor/helpers/r-helper.ts +0 -32
- package/src/lib/components/code-editor/helpers/ruby-helper.spec.ts +0 -39
- package/src/lib/components/code-editor/helpers/ruby-helper.ts +0 -32
- package/src/lib/components/code-editor/helpers/scala-helper.spec.ts +0 -41
- package/src/lib/components/code-editor/helpers/scala-helper.ts +0 -53
- package/src/lib/components/code-editor/helpers/sql-helper.spec.ts +0 -87
- package/src/lib/components/code-editor/helpers/sql-helper.ts +0 -44
- package/src/lib/components/code-editor/helpers/swift-helper.spec.ts +0 -40
- package/src/lib/components/code-editor/helpers/swift-helper.ts +0 -51
- package/src/lib/components/code-editor/helpers/typescript-helper.spec.ts +0 -40
- package/src/lib/components/code-editor/helpers/typescript-helper.ts +0 -52
- package/src/lib/components/code-editor/models/code-editor.model.ts +0 -9
- package/src/lib/components/code-editor/models/coding-snapshot.model.ts +0 -4
- package/src/lib/components/coding-question/coding-question.component.html +0 -78
- package/src/lib/components/coding-question/coding-question.component.scss +0 -76
- package/src/lib/components/coding-question/coding-question.component.spec.ts +0 -85
- package/src/lib/components/coding-question/coding-question.component.ts +0 -102
- package/src/lib/components/coding-section/coding-section.component.html +0 -82
- package/src/lib/components/coding-section/coding-section.component.scss +0 -64
- package/src/lib/components/coding-section/coding-section.component.spec.ts +0 -257
- package/src/lib/components/coding-section/coding-section.component.ts +0 -187
- package/src/lib/components/coding-test.module.ts +0 -124
- package/src/lib/components/common/truncated-text/truncated-text.component.html +0 -6
- package/src/lib/components/common/truncated-text/truncated-text.component.scss +0 -18
- package/src/lib/components/common/truncated-text/truncated-text.component.spec.ts +0 -84
- package/src/lib/components/common/truncated-text/truncated-text.component.ts +0 -37
- package/src/lib/components/configurations/configurations.component.html +0 -57
- package/src/lib/components/configurations/configurations.component.scss +0 -42
- package/src/lib/components/configurations/configurations.component.spec.ts +0 -186
- package/src/lib/components/configurations/configurations.component.ts +0 -98
- package/src/lib/components/instructions/instructions.component.html +0 -41
- package/src/lib/components/instructions/instructions.component.scss +0 -167
- package/src/lib/components/instructions/instructions.component.spec.ts +0 -106
- package/src/lib/components/instructions/instructions.component.ts +0 -138
- package/src/lib/components/panel/panel.component.html +0 -19
- package/src/lib/components/panel/panel.component.scss +0 -41
- package/src/lib/components/panel/panel.component.spec.ts +0 -40
- package/src/lib/components/panel/panel.component.ts +0 -34
- package/src/lib/components/runnable-editor/runnable-editor.component.html +0 -75
- package/src/lib/components/runnable-editor/runnable-editor.component.scss +0 -55
- package/src/lib/components/runnable-editor/runnable-editor.component.spec.ts +0 -124
- package/src/lib/components/runnable-editor/runnable-editor.component.ts +0 -155
- package/src/lib/components/tests/test-cases/test-cases.component.html +0 -135
- package/src/lib/components/tests/test-cases/test-cases.component.scss +0 -220
- package/src/lib/components/tests/test-cases/test-cases.component.spec.ts +0 -401
- package/src/lib/components/tests/test-cases/test-cases.component.ts +0 -205
- package/src/lib/components/tests/test-cases-content/test-cases-content.component.html +0 -94
- package/src/lib/components/tests/test-cases-content/test-cases-content.component.scss +0 -103
- package/src/lib/components/tests/test-cases-content/test-cases-content.component.spec.ts +0 -122
- package/src/lib/components/tests/test-cases-content/test-cases-content.component.ts +0 -102
- package/src/lib/components/tests/test-cases-status/test-cases-status.component.html +0 -16
- package/src/lib/components/tests/test-cases-status/test-cases-status.component.scss +0 -49
- package/src/lib/components/tests/test-cases-status/test-cases-status.component.spec.ts +0 -22
- package/src/lib/components/tests/test-cases-status/test-cases-status.component.ts +0 -18
- package/src/lib/components/tests/test-results.component.html +0 -119
- package/src/lib/components/tests/test-results.component.scss +0 -189
- package/src/lib/components/tests/test-results.component.spec.ts +0 -140
- package/src/lib/components/tests/test-results.component.ts +0 -98
- package/src/lib/components/tgo-coding-test/tgo-coding-test.component.html +0 -96
- package/src/lib/components/tgo-coding-test/tgo-coding-test.component.scss +0 -6
- package/src/lib/components/tgo-coding-test/tgo-coding-test.component.spec.ts +0 -599
- package/src/lib/components/tgo-coding-test/tgo-coding-test.component.ts +0 -279
- package/src/lib/components/tgo-coding-test-candidate-view/tgo-coding-test-candidate-view.component.html +0 -36
- package/src/lib/components/tgo-coding-test-candidate-view/tgo-coding-test-candidate-view.component.scss +0 -183
- package/src/lib/components/tgo-coding-test-candidate-view/tgo-coding-test-candidate-view.component.spec.ts +0 -883
- package/src/lib/components/tgo-coding-test-candidate-view/tgo-coding-test-candidate-view.component.ts +0 -575
- package/src/lib/config/tgo-coding-test.config.ts +0 -26
- package/src/lib/config/tgo-coding-test.token.ts +0 -21
- package/src/lib/models/.gitkeep +0 -0
- package/src/lib/models/auto-saved-data.ts +0 -51
- package/src/lib/models/code-event.ts +0 -17
- package/src/lib/models/coderunner-execution-results.ts +0 -58
- package/src/lib/models/coding-lib.mocks.ts +0 -246
- package/src/lib/models/configs.ts +0 -18
- package/src/lib/models/language-change-action.ts +0 -4
- package/src/lib/models/lat-languages.ts +0 -12
- package/src/lib/models/mixpanel-events.ts +0 -3
- package/src/lib/models/mode.ts +0 -5
- package/src/lib/models/paste-data.ts +0 -4
- package/src/lib/models/programming-language.ts +0 -9
- package/src/lib/models/test-cases.ts +0 -74
- package/src/lib/models/theme.ts +0 -5
- package/src/lib/models/translations.ts +0 -1
- package/src/lib/models/view-mode.ts +0 -6
- package/src/lib/services/.gitkeep +0 -0
- package/src/lib/services/candidate-coding-test-services/candidature-api.service.spec.ts +0 -40
- package/src/lib/services/candidate-coding-test-services/candidature-api.service.ts +0 -15
- package/src/lib/services/candidate-coding-test-services/coderunner-api.service.spec.ts +0 -134
- package/src/lib/services/candidate-coding-test-services/coderunner-api.service.ts +0 -105
- package/src/lib/services/candidate-coding-test-services/coding-test-tour.service.spec.ts +0 -161
- package/src/lib/services/candidate-coding-test-services/coding-test-tour.service.ts +0 -100
- package/src/lib/services/candidate-coding-test-services/coding-test.service.spec.ts +0 -1524
- package/src/lib/services/candidate-coding-test-services/coding-test.service.ts +0 -843
- package/src/lib/services/coding-test-config.service.ts +0 -48
- package/src/lib/services/configurations.service.mocks.ts +0 -77
- package/src/lib/services/configurations.service.spec.ts +0 -79
- package/src/lib/services/configurations.service.ts +0 -111
- package/src/lib/services/index.ts +0 -0
- package/src/lib/services/lib-coding-test.service.spec.ts +0 -265
- package/src/lib/services/lib-coding-test.service.ts +0 -157
- package/src/lib/services/local-storage.service.mocks.ts +0 -22
- package/src/lib/services/storage.service.spec.ts +0 -1120
- package/src/lib/services/storage.service.ts +0 -729
- package/src/lib/services/test-cases.service.spec.ts +0 -53
- package/src/lib/services/test-cases.service.ts +0 -29
- package/src/lib/services/theme.service.spec.ts +0 -76
- package/src/lib/services/theme.service.ts +0 -34
- package/src/lib/styles/mixins.scss +0 -86
- package/src/lib/styles/styles.scss +0 -112
- package/src/lib/styles/variables.scss +0 -105
- package/src/lib/utils/.gitkeep +0 -0
- package/src/lib/utils/additional-languages/erlang.ts +0 -115
- package/src/lib/utils/resize-element.ts +0 -15
- package/src/lib/utils/time-to-ms.util.ts +0 -10
- package/src/test-setup.ts +0 -1
- package/tsconfig.json +0 -16
- package/tsconfig.lib.json +0 -12
- package/tsconfig.lib.prod.json +0 -9
- package/tsconfig.spec.json +0 -13
- /package/{src/assets → assets}/i18n/en.json +0 -0
- /package/{src/lib/components/code-editor/helpers/index.ts → lib/components/code-editor/helpers/index.d.ts} +0 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { translate } from '@ngneat/transloco';
|
|
4
|
+
import { SnackbarService } from '@testgorilla/tgo-ui';
|
|
5
|
+
import { EMPTY, throwError } from 'rxjs';
|
|
6
|
+
import { catchError } from 'rxjs/operators';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/common/http";
|
|
9
|
+
import * as i2 from "@testgorilla/tgo-ui";
|
|
10
|
+
export class ApiService {
|
|
11
|
+
httpClient;
|
|
12
|
+
snackbarService;
|
|
13
|
+
invitationUUID = '';
|
|
14
|
+
contentLanguage = '';
|
|
15
|
+
ROOT_TRANSLATIONS_SCOPE = '';
|
|
16
|
+
baseUrl = '';
|
|
17
|
+
constructor(httpClient, snackbarService) {
|
|
18
|
+
this.httpClient = httpClient;
|
|
19
|
+
this.snackbarService = snackbarService;
|
|
20
|
+
}
|
|
21
|
+
setParams(invitationUUID, contentLanguage, translationScope, baseUrl) {
|
|
22
|
+
this.invitationUUID = invitationUUID;
|
|
23
|
+
this.contentLanguage = contentLanguage;
|
|
24
|
+
this.ROOT_TRANSLATIONS_SCOPE = translationScope;
|
|
25
|
+
this.baseUrl = baseUrl;
|
|
26
|
+
}
|
|
27
|
+
getInvitationUUID() {
|
|
28
|
+
return this.invitationUUID;
|
|
29
|
+
}
|
|
30
|
+
get(url, options = {}, errorCallback = this.handleError.bind(this)) {
|
|
31
|
+
return this.httpClient
|
|
32
|
+
.get(`${this.baseUrl}${url}`, this.buildHeaders(options))
|
|
33
|
+
.pipe(catchError((error) => errorCallback(error)));
|
|
34
|
+
}
|
|
35
|
+
post(url, data, options = {}, errorCallback = this.handleError.bind(this), isStandaloneUrl = false) {
|
|
36
|
+
return this.httpClient
|
|
37
|
+
.post(isStandaloneUrl ? url : `${this.baseUrl}${url}`, data, this.buildHeaders(options))
|
|
38
|
+
.pipe(catchError((error) => errorCallback(error)));
|
|
39
|
+
}
|
|
40
|
+
put(url, data, options = {}, errorCallback = this.handleError.bind(this)) {
|
|
41
|
+
return this.httpClient
|
|
42
|
+
.put(`${this.baseUrl}${url}`, data, this.buildHeaders(options))
|
|
43
|
+
.pipe(catchError((error) => errorCallback(error)));
|
|
44
|
+
}
|
|
45
|
+
patch(url, data, options = {}, errorCallback = this.handleError.bind(this)) {
|
|
46
|
+
return this.httpClient
|
|
47
|
+
.patch(`${this.baseUrl}${url}`, data, this.buildHeaders(options))
|
|
48
|
+
.pipe(catchError((error) => errorCallback(error)));
|
|
49
|
+
}
|
|
50
|
+
delete(url, errorCallback = this.handleError.bind(this)) {
|
|
51
|
+
return this.httpClient
|
|
52
|
+
.delete(`${this.baseUrl}${url}`, this.buildHeaders({}))
|
|
53
|
+
.pipe(catchError((error) => errorCallback(error)));
|
|
54
|
+
}
|
|
55
|
+
handleError(errorObj) {
|
|
56
|
+
const { error } = errorObj;
|
|
57
|
+
if (error?.errors?.length > 0) {
|
|
58
|
+
return throwError(() => error.errors);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
console.error(errorObj.message);
|
|
62
|
+
this.snackbarService.error(this.processGenericServerError());
|
|
63
|
+
return EMPTY;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
processGenericServerError() {
|
|
67
|
+
return translate(`${this.ROOT_TRANSLATIONS_SCOPE}.ERRORS.SYSTEM_ERROR`);
|
|
68
|
+
}
|
|
69
|
+
buildHeaders(options) {
|
|
70
|
+
if (typeof window.crypto.randomUUID === 'function') {
|
|
71
|
+
options = {
|
|
72
|
+
...options,
|
|
73
|
+
'X-REQUEST-ID': window.crypto.randomUUID(),
|
|
74
|
+
'X-INVITATION-UUID': this.invitationUUID,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
const passedAuthorizationHeader = options['Authorization'];
|
|
78
|
+
const headers = {
|
|
79
|
+
headers: {
|
|
80
|
+
...options,
|
|
81
|
+
Authorization: passedAuthorizationHeader
|
|
82
|
+
? passedAuthorizationHeader
|
|
83
|
+
: `TokenCandidature ${this.invitationUUID?.replace(/-/g, '')}`,
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
if (this.contentLanguage) {
|
|
87
|
+
headers.headers['Accept-Language'] = this.contentLanguage;
|
|
88
|
+
}
|
|
89
|
+
return headers;
|
|
90
|
+
}
|
|
91
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiService, deps: [{ token: i1.HttpClient }, { token: i2.SnackbarService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
92
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiService });
|
|
93
|
+
}
|
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiService, decorators: [{
|
|
95
|
+
type: Injectable
|
|
96
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.SnackbarService }] });
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90Z28tY29kaW5nLXRlc3Qvc3JjL3NoYXJlZC9saWIvc2VydmljZXMvYXBpL2FwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxLQUFLLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUc1QyxNQUFNLE9BQU8sVUFBVTtJQU9YO0lBQ0E7SUFQRixjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDckIsdUJBQXVCLEdBQUcsRUFBRSxDQUFDO0lBQzdCLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFFckIsWUFDVSxVQUFzQixFQUN0QixlQUFnQztRQURoQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtJQUN2QyxDQUFDO0lBRUosU0FBUyxDQUNQLGNBQXNCLEVBQ3RCLGVBQXVCLEVBQ3ZCLGdCQUF3QixFQUN4QixPQUFlO1FBRWYsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLGdCQUFnQixDQUFDO1FBQ2hELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxp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ZSxDQUFDO1FBQzVELENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO3dHQTVJVSxVQUFVOzRHQUFWLFVBQVU7OzRGQUFWLFVBQVU7a0JBRHRCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRyYW5zbGF0ZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcbmltcG9ydCB7IFNuYWNrYmFyU2VydmljZSB9IGZyb20gJ0B0ZXN0Z29yaWxsYS90Z28tdWknO1xuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcGlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBpbnZpdGF0aW9uVVVJRCA9ICcnO1xuICBwcml2YXRlIGNvbnRlbnRMYW5ndWFnZSA9ICcnO1xuICBwcml2YXRlIFJPT1RfVFJBTlNMQVRJT05TX1NDT1BFID0gJyc7XG4gIHByaXZhdGUgYmFzZVVybCA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHNuYWNrYmFyU2VydmljZTogU25hY2tiYXJTZXJ2aWNlXG4gICkge31cblxuICBzZXRQYXJhbXMoXG4gICAgaW52aXRhdGlvblVVSUQ6IHN0cmluZyxcbiAgICBjb250ZW50TGFuZ3VhZ2U6IHN0cmluZyxcbiAgICB0cmFuc2xhdGlvblNjb3BlOiBzdHJpbmcsXG4gICAgYmFzZVVybDogc3RyaW5nXG4gICk6IHZvaWQge1xuICAgIHRoaXMuaW52aXRhdGlvblVVSUQgPSBpbnZpdGF0aW9uVVVJRDtcbiAgICB0aGlzLmNvbnRlbnRMYW5ndWFnZSA9IGNvbnRlbnRMYW5ndWFnZTtcbiAgICB0aGlzLlJPT1RfVFJBTlNMQVRJT05TX1NDT1BFID0gdHJhbnNsYXRpb25TY29wZTtcbiAgICB0aGlzLmJhc2VVcmwgPSBiYXNlVXJsO1xuICB9XG5cbiAgZ2V0SW52aXRhdGlvblVVSUQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbnZpdGF0aW9uVVVJRDtcbiAgfVxuXG4gIGdldDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zID0ge30sXG4gICAgZXJyb3JDYWxsYmFjayA9IHRoaXMuaGFuZGxlRXJyb3IuYmluZCh0aGlzKVxuICApOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAuZ2V0PFQ+KFxuICAgICAgICBgJHt0aGlzLmJhc2VVcmx9JHt1cmx9YCxcbiAgICAgICAgdGhpcy5idWlsZEhlYWRlcnMob3B0aW9ucylcbiAgICAgIClcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gZXJyb3JDYWxsYmFjayhlcnJvcikpKSBhcyBPYnNlcnZhYmxlPFQ+O1xuICB9XG5cbiAgcG9zdDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBkYXRhOiBvYmplY3QsXG4gICAgb3B0aW9ucyA9IHt9LFxuICAgIGVycm9yQ2FsbGJhY2sgPSB0aGlzLmhhbmRsZUVycm9yLmJpbmQodGhpcyksXG4gICAgaXNTdGFuZGFsb25lVXJsID0gZmFsc2VcbiAgKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgLnBvc3Q8VD4oXG4gICAgICAgIGlzU3RhbmRhbG9uZVVybCA/IHVybCA6IGAke3RoaXMuYmFzZVVybH0ke3VybH1gLFxuICAgICAgICBkYXRhLFxuICAgICAgICB0aGlzLmJ1aWxkSGVhZGVycyhvcHRpb25zKVxuICAgICAgKVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBlcnJvckNhbGxiYWNrKGVycm9yKSkpIGFzIE9ic2VydmFibGU8VD47XG4gIH1cblxuICBwdXQ8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgZGF0YTogb2JqZWN0LFxuICAgIG9wdGlvbnMgPSB7fSxcbiAgICBlcnJvckNhbGxiYWNrID0gdGhpcy5oYW5kbGVFcnJvci5iaW5kKHRoaXMpXG4gICk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgIC5wdXQ8VD4oXG4gICAgICAgIGAke3RoaXMuYmFzZVVybH0ke3VybH1gLFxuICAgICAgICBkYXRhLFxuICAgICAgICB0aGlzLmJ1aWxkSGVhZGVycyhvcHRpb25zKVxuICAgICAgKVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBlcnJvckNhbGxiYWNrKGVycm9yKSkpIGFzIE9ic2VydmFibGU8VD47XG4gIH1cblxuICBwYXRjaDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBkYXRhOiBvYmplY3QsXG4gICAgb3B0aW9ucyA9IHt9LFxuICAgIGVycm9yQ2FsbGJhY2sgPSB0aGlzLmhhbmRsZUVycm9yLmJpbmQodGhpcylcbiAgKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgLnBhdGNoPFQ+KFxuICAgICAgICBgJHt0aGlzLmJhc2VVcmx9JHt1cmx9YCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgdGhpcy5idWlsZEhlYWRlcnMob3B0aW9ucylcbiAgICAgIClcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gZXJyb3JDYWxsYmFjayhlcnJvcikpKSBhcyBPYnNlcnZhYmxlPFQ+O1xuICB9XG5cbiAgZGVsZXRlKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGVycm9yQ2FsbGJhY2sgPSB0aGlzLmhhbmRsZUVycm9yLmJpbmQodGhpcylcbiAgKTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAuZGVsZXRlKFxuICAgICAgICBgJHt0aGlzLmJhc2VVcmx9JHt1cmx9YCxcbiAgICAgICAgdGhpcy5idWlsZEhlYWRlcnMoe30pXG4gICAgICApXG4gICAgICAucGlwZShjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IGVycm9yQ2FsbGJhY2soZXJyb3IpKSkgYXMgT2JzZXJ2YWJsZTxvYmplY3Q+O1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvck9iajogSHR0cEVycm9yUmVzcG9uc2UpOiBPYnNlcnZhYmxlPG5ldmVyPiB7XG4gICAgY29uc3QgeyBlcnJvciB9ID0gZXJyb3JPYmo7XG4gICAgaWYgKGVycm9yPy5lcnJvcnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yLmVycm9ycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3JPYmoubWVzc2FnZSk7XG4gICAgICB0aGlzLnNuYWNrYmFyU2VydmljZS5lcnJvcih0aGlzLnByb2Nlc3NHZW5lcmljU2VydmVyRXJyb3IoKSk7XG5cbiAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NHZW5lcmljU2VydmVyRXJyb3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdHJhbnNsYXRlKGAke3RoaXMuUk9PVF9UUkFOU0xBVElPTlNfU0NPUEV9LkVSUk9SUy5TWVNURU1fRVJST1JgKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRIZWFkZXJzKG9wdGlvbnM6IG9iamVjdCk6IG9iamVjdCB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cuY3J5cHRvLnJhbmRvbVVVSUQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICdYLVJFUVVFU1QtSUQnOiB3aW5kb3cuY3J5cHRvLnJhbmRvbVVVSUQoKSxcbiAgICAgICAgJ1gtSU5WSVRBVElPTi1VVUlEJzogdGhpcy5pbnZpdGF0aW9uVVVJRCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgcGFzc2VkQXV0aG9yaXphdGlvbkhlYWRlciA9IChvcHRpb25zIGFzIHsgW2tleTogc3RyaW5nXTogYW55IH0pW1xuICAgICAgJ0F1dGhvcml6YXRpb24nXG4gICAgXTtcbiAgICBjb25zdCBoZWFkZXJzOiB7IGhlYWRlcnM6IHsgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIH0gfSA9IHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgQXV0aG9yaXphdGlvbjogcGFzc2VkQXV0aG9yaXphdGlvbkhlYWRlclxuICAgICAgICAgID8gcGFzc2VkQXV0aG9yaXphdGlvbkhlYWRlclxuICAgICAgICAgIDogYFRva2VuQ2FuZGlkYXR1cmUgJHt0aGlzLmludml0YXRpb25VVUlEPy5yZXBsYWNlKC8tL2csICcnKX1gLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuY29udGVudExhbmd1YWdlKSB7XG4gICAgICBoZWFkZXJzLmhlYWRlcnNbJ0FjY2VwdC1MYW5ndWFnZSddID0gdGhpcy5jb250ZW50TGFuZ3VhZ2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhlYWRlcnM7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { of, delay } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* MockedApiService provides fake API responses for demo/development purposes.
|
|
6
|
+
* This service mimics the real ApiService interface but returns mock data instead
|
|
7
|
+
* of making actual HTTP calls.
|
|
8
|
+
*
|
|
9
|
+
* Usage: Provide this service in place of ApiService in your demo application:
|
|
10
|
+
* ```
|
|
11
|
+
* { provide: ApiService, useClass: MockedApiService }
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export class MockedApiService {
|
|
15
|
+
invitationUUID = 'demo-uuid-12345';
|
|
16
|
+
contentLanguage = 'en';
|
|
17
|
+
ROOT_TRANSLATIONS_SCOPE = '';
|
|
18
|
+
// Simulate network delay (in ms) - set to 0 for instant responses
|
|
19
|
+
MOCK_DELAY = 500;
|
|
20
|
+
setParams(invitationUUID, contentLanguage, translationScope, baseUrl) {
|
|
21
|
+
this.invitationUUID = invitationUUID;
|
|
22
|
+
this.contentLanguage = contentLanguage;
|
|
23
|
+
this.ROOT_TRANSLATIONS_SCOPE = translationScope;
|
|
24
|
+
console.log('[MockedApiService] Params set:', {
|
|
25
|
+
invitationUUID,
|
|
26
|
+
contentLanguage,
|
|
27
|
+
translationScope,
|
|
28
|
+
baseUrl,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
getInvitationUUID() {
|
|
32
|
+
return this.invitationUUID;
|
|
33
|
+
}
|
|
34
|
+
get(url, options = {}, errorCallback) {
|
|
35
|
+
console.log('[MockedApiService] GET:', url, options);
|
|
36
|
+
return of(this.getMockResponse(url, 'GET')).pipe(delay(this.MOCK_DELAY));
|
|
37
|
+
}
|
|
38
|
+
post(url, data, options = {}, errorCallback, isStandaloneUrl = false) {
|
|
39
|
+
console.log('[MockedApiService] POST:', url, data, options);
|
|
40
|
+
return of(this.getMockResponse(url, 'POST', data)).pipe(delay(this.MOCK_DELAY));
|
|
41
|
+
}
|
|
42
|
+
put(url, data, options = {}, errorCallback) {
|
|
43
|
+
console.log('[MockedApiService] PUT:', url, data, options);
|
|
44
|
+
return of(this.getMockResponse(url, 'PUT', data)).pipe(delay(this.MOCK_DELAY));
|
|
45
|
+
}
|
|
46
|
+
patch(url, data, options = {}, errorCallback) {
|
|
47
|
+
console.log('[MockedApiService] PATCH:', url, data, options);
|
|
48
|
+
return of(this.getMockResponse(url, 'PATCH', data)).pipe(delay(this.MOCK_DELAY));
|
|
49
|
+
}
|
|
50
|
+
delete(url, errorCallback) {
|
|
51
|
+
console.log('[MockedApiService] DELETE:', url);
|
|
52
|
+
return of({}).pipe(delay(this.MOCK_DELAY));
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Returns mock responses based on the URL pattern
|
|
56
|
+
*/
|
|
57
|
+
getMockResponse(url, method, data) {
|
|
58
|
+
// CodeRunner API - Run Tests
|
|
59
|
+
if (url.includes('/api/attempts/public/')) {
|
|
60
|
+
return this.getMockCoderunnerAttemptResponse(data);
|
|
61
|
+
}
|
|
62
|
+
if (url.includes('/api/attempts/preview/')) {
|
|
63
|
+
return this.getMockCoderunnerAttemptResponse(data);
|
|
64
|
+
}
|
|
65
|
+
if (url.includes('/api/attempts/')) {
|
|
66
|
+
return this.getMockCoderunnerAttemptResponse(data);
|
|
67
|
+
}
|
|
68
|
+
// Code Events
|
|
69
|
+
if (url.includes('/api/code-events/')) {
|
|
70
|
+
return {
|
|
71
|
+
id: Math.floor(Math.random() * 10000),
|
|
72
|
+
created_at: new Date().toISOString(),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
// Programming Languages
|
|
76
|
+
if (url.includes('programming-languages')) {
|
|
77
|
+
return []; // Mock all languages
|
|
78
|
+
}
|
|
79
|
+
// Default response
|
|
80
|
+
console.warn(`[MockedApiService] No mock defined for ${method} ${url}`);
|
|
81
|
+
return { success: true, data: null };
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Returns a mock coderunner attempt response with test results
|
|
85
|
+
*/
|
|
86
|
+
getMockCoderunnerAttemptResponse(data) {
|
|
87
|
+
const requestData = data;
|
|
88
|
+
const testcases = requestData?.testcases || [];
|
|
89
|
+
// Generate mock results for each test case
|
|
90
|
+
const results = testcases.map((testcase, index) => {
|
|
91
|
+
// Make first test pass, others random for variety
|
|
92
|
+
const passed = index === 0 ? true : Math.random() > 0.3;
|
|
93
|
+
return {
|
|
94
|
+
name: testcase.name || `Test Case ${index + 1}`,
|
|
95
|
+
passed,
|
|
96
|
+
expected: testcase.solution || testcase.expected_output || 'Expected output',
|
|
97
|
+
actual: passed
|
|
98
|
+
? testcase.solution || testcase.expected_output || 'Expected output'
|
|
99
|
+
: 'Different output',
|
|
100
|
+
input: testcase.input || '',
|
|
101
|
+
error: passed ? null : 'AssertionError: Output does not match expected',
|
|
102
|
+
execution_time: Math.random() * 100,
|
|
103
|
+
memory_used: Math.floor(Math.random() * 1000000),
|
|
104
|
+
points: passed ? (testcase.points || 10) : 0,
|
|
105
|
+
};
|
|
106
|
+
});
|
|
107
|
+
const totalPoints = results.reduce((sum, r) => sum + r.points, 0);
|
|
108
|
+
const maxPoints = testcases.reduce((sum, tc) => sum + (tc.points || 10), 0);
|
|
109
|
+
return {
|
|
110
|
+
id: Math.floor(Math.random() * 100000),
|
|
111
|
+
uuid: crypto.randomUUID(),
|
|
112
|
+
created_at: new Date().toISOString(),
|
|
113
|
+
language: requestData?.language || 'python-3.10.0',
|
|
114
|
+
code: requestData?.code || '',
|
|
115
|
+
status: 'completed',
|
|
116
|
+
results,
|
|
117
|
+
score: maxPoints > 0 ? (totalPoints / maxPoints) * 100 : 0,
|
|
118
|
+
total_points: totalPoints,
|
|
119
|
+
max_points: maxPoints,
|
|
120
|
+
execution_time: results.reduce((sum, r) => sum + r.execution_time, 0),
|
|
121
|
+
compilation_error: null,
|
|
122
|
+
runtime_error: null,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MockedApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
126
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MockedApiService });
|
|
127
|
+
}
|
|
128
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MockedApiService, decorators: [{
|
|
129
|
+
type: Injectable
|
|
130
|
+
}] });
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja2VkLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGdvLWNvZGluZy10ZXN0L3NyYy9zaGFyZWQvbGliL3NlcnZpY2VzL2FwaS9tb2NrZWQtYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFN0M7Ozs7Ozs7OztHQVNHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQUNuQixjQUFjLEdBQUcsaUJBQWlCLENBQUM7SUFDbkMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUN2Qix1QkFBdUIsR0FBRyxFQUFFLENBQUM7SUFFckMsa0VBQWtFO0lBQ2pELFVBQVUsR0FBRyxHQUFHLENBQUM7SUFFbEMsU0FBUyxDQUNQLGNBQXNCLEVBQ3RCLGVBQXVCLEVBQ3ZCLGdCQUF3QixFQUN4QixPQUFlO1FBRWYsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLGdCQUFnQixDQUFDO1FBQ2hELE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLEVBQUU7WUFDNUMsY0FBYztZQUNkLGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsT0FBTztTQUNSLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELEdBQUcsQ0FDRCxHQUFXLEVBQ1gsT0FBTyxHQUFHLEVBQUUsRUFDWixhQUFpRDtRQUVqRCxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNyRCxP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RSxXQUFXO1lBQ3pCLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLGNBQWMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBVyxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQ2xGLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsYUFBYSxFQUFFLElBQUk7U0FDcEIsQ0FBQztJQUNKLENBQUM7d0dBeEtVLGdCQUFnQjs0R0FBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIGRlbGF5IH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogTW9ja2VkQXBpU2VydmljZSBwcm92aWRlcyBmYWtlIEFQSSByZXNwb25zZXMgZm9yIGRlbW8vZGV2ZWxvcG1lbnQgcHVycG9zZXMuXG4gKiBUaGlzIHNlcnZpY2UgbWltaWNzIHRoZSByZWFsIEFwaVNlcnZpY2UgaW50ZXJmYWNlIGJ1dCByZXR1cm5zIG1vY2sgZGF0YSBpbnN0ZWFkXG4gKiBvZiBtYWtpbmcgYWN0dWFsIEhUVFAgY2FsbHMuXG4gKlxuICogVXNhZ2U6IFByb3ZpZGUgdGhpcyBzZXJ2aWNlIGluIHBsYWNlIG9mIEFwaVNlcnZpY2UgaW4geW91ciBkZW1vIGFwcGxpY2F0aW9uOlxuICogYGBgXG4gKiB7IHByb3ZpZGU6IEFwaVNlcnZpY2UsIHVzZUNsYXNzOiBNb2NrZWRBcGlTZXJ2aWNlIH1cbiAqIGBgYFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTW9ja2VkQXBpU2VydmljZSB7XG4gIHByaXZhdGUgaW52aXRhdGlvblVVSUQgPSAnZGVtby11dWlkLTEyMzQ1JztcbiAgcHJpdmF0ZSBjb250ZW50TGFuZ3VhZ2UgPSAnZW4nO1xuICBwcml2YXRlIFJPT1RfVFJBTlNMQVRJT05TX1NDT1BFID0gJyc7XG5cbiAgLy8gU2ltdWxhdGUgbmV0d29yayBkZWxheSAoaW4gbXMpIC0gc2V0IHRvIDAgZm9yIGluc3RhbnQgcmVzcG9uc2VzXG4gIHByaXZhdGUgcmVhZG9ubHkgTU9DS19ERUxBWSA9IDUwMDtcblxuICBzZXRQYXJhbXMoXG4gICAgaW52aXRhdGlvblVVSUQ6IHN0cmluZyxcbiAgICBjb250ZW50TGFuZ3VhZ2U6IHN0cmluZyxcbiAgICB0cmFuc2xhdGlvblNjb3BlOiBzdHJpbmcsXG4gICAgYmFzZVVybDogc3RyaW5nXG4gICk6IHZvaWQge1xuICAgIHRoaXMuaW52aXRhdGlvblVVSUQgPSBpbnZpdGF0aW9uVVVJRDtcbiAgICB0aGlzLmNvbnRlbnRMYW5ndWFnZSA9IGNvbnRlbnRMYW5ndWFnZTtcbiAgICB0aGlzLlJPT1RfVFJBTlNMQVRJT05TX1NDT1BFID0gdHJhbnNsYXRpb25TY29wZTtcbiAgICBjb25zb2xlLmxvZygnW01vY2tlZEFwaVNlcnZpY2VdIFBhcmFtcyBzZXQ6Jywge1xuICAgICAgaW52aXRhdGlvblVVSUQsXG4gICAgICBjb250ZW50TGFuZ3VhZ2UsXG4gICAgICB0cmFuc2xhdGlvblNjb3BlLFxuICAgICAgYmFzZVVybCxcbiAgICB9KTtcbiAgfVxuXG4gIGdldEludml0YXRpb25VVUlEKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaW52aXRhdGlvblVVSUQ7XG4gIH1cblxuICBnZXQ8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9ucyA9IHt9LFxuICAgIGVycm9yQ2FsbGJhY2s/OiAoZXJyb3I6IGFueSkgPT4gT2JzZXJ2YWJsZTxuZXZlcj5cbiAgKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgY29uc29sZS5sb2coJ1tNb2NrZWRBcGlTZXJ2aWNlXSBHRVQ6JywgdXJsLCBvcHRpb25zKTtcbiAgICByZXR1cm4gb2YodGhpcy5nZXRNb2NrUmVzcG9uc2U8VD4odXJsLCAnR0VUJykgYXMgVCkucGlwZShcbiAgICAgIGRlbGF5KHRoaXMuTU9DS19ERUxBWSlcbiAgICApO1xuICB9XG5cbiAgcG9zdDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBkYXRhOiBvYmplY3QsXG4gICAgb3B0aW9ucyA9IHt9LFxuICAgIGVycm9yQ2FsbGJhY2s/OiAoZXJyb3I6IGFueSkgPT4gT2JzZXJ2YWJsZTxuZXZlcj4sXG4gICAgaXNTdGFuZGFsb25lVXJsID0gZmFsc2VcbiAgKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgY29uc29sZS5sb2coJ1tNb2NrZWRBcGlTZXJ2aWNlXSBQT1NUOicsIHVybCwgZGF0YSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIG9mKHRoaXMuZ2V0TW9ja1Jlc3BvbnNlPFQ+KHVybCwgJ1BPU1QnLCBkYXRhKSBhcyBUKS5waXBlKFxuICAgICAgZGVsYXkodGhpcy5NT0NLX0RFTEFZKVxuICAgICk7XG4gIH1cblxuICBwdXQ8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgZGF0YTogb2JqZWN0LFxuICAgIG9wdGlvbnMgPSB7fSxcbiAgICBlcnJvckNhbGxiYWNrPzogKGVycm9yOiBhbnkpID0+IE9ic2VydmFibGU8bmV2ZXI+XG4gICk6IE9ic2VydmFibGU8VD4ge1xuICAgIGNvbnNvbGUubG9nKCdbTW9ja2VkQXBpU2VydmljZV0gUFVUOicsIHVybCwgZGF0YSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIG9mKHRoaXMuZ2V0TW9ja1Jlc3BvbnNlPFQ+KHVybCwgJ1BVVCcsIGRhdGEpIGFzIFQpLnBpcGUoXG4gICAgICBkZWxheSh0aGlzLk1PQ0tfREVMQVkpXG4gICAgKTtcbiAgfVxuXG4gIHBhdGNoPFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGRhdGE6IG9iamVjdCxcbiAgICBvcHRpb25zID0ge30sXG4gICAgZXJyb3JDYWxsYmFjaz86IChlcnJvcjogYW55KSA9PiBPYnNlcnZhYmxlPG5ldmVyPlxuICApOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBjb25zb2xlLmxvZygnW01vY2tlZEFwaVNlcnZpY2VdIFBBVENIOicsIHVybCwgZGF0YSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIG9mKHRoaXMuZ2V0TW9ja1Jlc3BvbnNlPFQ+KHVybCwgJ1BBVENIJywgZGF0YSkgYXMgVCkucGlwZShcbiAgICAgIGRlbGF5KHRoaXMuTU9DS19ERUxBWSlcbiAgICApO1xuICB9XG5cbiAgZGVsZXRlKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGVycm9yQ2FsbGJhY2s/OiAoZXJyb3I6IGFueSkgPT4gT2JzZXJ2YWJsZTxuZXZlcj5cbiAgKTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcbiAgICBjb25zb2xlLmxvZygnW01vY2tlZEFwaVNlcnZpY2VdIERFTEVURTonLCB1cmwpO1xuICAgIHJldHVybiBvZih7fSkucGlwZShkZWxheSh0aGlzLk1PQ0tfREVMQVkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIG1vY2sgcmVzcG9uc2VzIGJhc2VkIG9uIHRoZSBVUkwgcGF0dGVyblxuICAgKi9cbiAgcHJpdmF0ZSBnZXRNb2NrUmVzcG9uc2U8VD4odXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBkYXRhPzogb2JqZWN0KTogVCB8IG9iamVjdCB7XG4gICAgLy8gQ29kZVJ1bm5lciBBUEkgLSBSdW4gVGVzdHNcbiAgICBpZiAodXJsLmluY2x1ZGVzKCcvYXBpL2F0dGVtcHRzL3B1YmxpYy8nKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TW9ja0NvZGVydW5uZXJBdHRlbXB0UmVzcG9uc2UoZGF0YSk7XG4gICAgfVxuXG4gICAgaWYgKHVybC5pbmNsdWRlcygnL2FwaS9hdHRlbXB0cy9wcmV2aWV3LycpKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRNb2NrQ29kZXJ1bm5lckF0dGVtcHRSZXNwb25zZShkYXRhKTtcbiAgICB9XG5cbiAgICBpZiAodXJsLmluY2x1ZGVzKCcvYXBpL2F0dGVtcHRzLycpKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRNb2NrQ29kZXJ1bm5lckF0dGVtcHRSZXNwb25zZShkYXRhKTtcbiAgICB9XG5cbiAgICAvLyBDb2RlIEV2ZW50c1xuICAgIGlmICh1cmwuaW5jbHVkZXMoJy9hcGkvY29kZS1ldmVudHMvJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwMCksXG4gICAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gUHJvZ3JhbW1pbmcgTGFuZ3VhZ2VzXG4gICAgaWYgKHVybC5pbmNsdWRlcygncHJvZ3JhbW1pbmctbGFuZ3VhZ2VzJykpIHtcbiAgICAgIHJldHVybiBbXTsgLy8gTW9jayBhbGwgbGFuZ3VhZ2VzXG4gICAgfVxuXG4gICAgLy8gRGVmYXVsdCByZXNwb25zZVxuICAgIGNvbnNvbGUud2FybihgW01vY2tlZEFwaVNlcnZpY2VdIE5vIG1vY2sgZGVmaW5lZCBmb3IgJHttZXRob2R9ICR7dXJsfWApO1xuICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIGRhdGE6IG51bGwgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbW9jayBjb2RlcnVubmVyIGF0dGVtcHQgcmVzcG9uc2Ugd2l0aCB0ZXN0IHJlc3VsdHNcbiAgICovXG4gIHByaXZhdGUgZ2V0TW9ja0NvZGVydW5uZXJBdHRlbXB0UmVzcG9uc2UoZGF0YT86IG9iamVjdCk6IG9iamVjdCB7XG4gICAgY29uc3QgcmVxdWVzdERhdGEgPSBkYXRhIGFzIGFueTtcbiAgICBjb25zdCB0ZXN0Y2FzZXMgPSByZXF1ZXN0RGF0YT8udGVzdGNhc2VzIHx8IFtdO1xuXG4gICAgLy8gR2VuZXJhdGUgbW9jayByZXN1bHRzIGZvciBlYWNoIHRlc3QgY2FzZVxuICAgIGNvbnN0IHJlc3VsdHMgPSB0ZXN0Y2FzZXMubWFwKCh0ZXN0Y2FzZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAvLyBNYWtlIGZpcnN0IHRlc3QgcGFzcywgb3RoZXJzIHJhbmRvbSBmb3IgdmFyaWV0eVxuICAgICAgY29uc3QgcGFzc2VkID0gaW5kZXggPT09IDAgPyB0cnVlIDogTWF0aC5yYW5kb20oKSA+IDAuMztcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogdGVzdGNhc2UubmFtZSB8fCBgVGVzdCBDYXNlICR7aW5kZXggKyAxfWAsXG4gICAgICAgIHBhc3NlZCxcbiAgICAgICAgZXhwZWN0ZWQ6IHRlc3RjYXNlLnNvbHV0aW9uIHx8IHRlc3RjYXNlLmV4cGVjdGVkX291dHB1dCB8fCAnRXhwZWN0ZWQgb3V0cHV0JyxcbiAgICAgICAgYWN0dWFsOiBwYXNzZWRcbiAgICAgICAgICA/IHRlc3RjYXNlLnNvbHV0aW9uIHx8IHRlc3RjYXNlLmV4cGVjdGVkX291dHB1dCB8fCAnRXhwZWN0ZWQgb3V0cHV0J1xuICAgICAgICAgIDogJ0RpZmZlcmVudCBvdXRwdXQnLFxuICAgICAgICBpbnB1dDogdGVzdGNhc2UuaW5wdXQgfHwgJycsXG4gICAgICAgIGVycm9yOiBwYXNzZWQgPyBudWxsIDogJ0Fzc2VydGlvbkVycm9yOiBPdXRwdXQgZG9lcyBub3QgbWF0Y2ggZXhwZWN0ZWQnLFxuICAgICAgICBleGVjdXRpb25fdGltZTogTWF0aC5yYW5kb20oKSAqIDEwMCxcbiAgICAgICAgbWVtb3J5X3VzZWQ6IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDApLFxuICAgICAgICBwb2ludHM6IHBhc3NlZCA/ICh0ZXN0Y2FzZS5wb2ludHMgfHwgMTApIDogMCxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCB0b3RhbFBvaW50cyA9IHJlc3VsdHMucmVkdWNlKChzdW06IG51bWJlciwgcjogYW55KSA9PiBzdW0gKyByLnBvaW50cywgMCk7XG4gICAgY29uc3QgbWF4UG9pbnRzID0gdGVzdGNhc2VzLnJlZHVjZShcbiAgICAgIChzdW06IG51bWJlciwgdGM6IGFueSkgPT4gc3VtICsgKHRjLnBvaW50cyB8fCAxMCksXG4gICAgICAwXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMDAwKSxcbiAgICAgIHV1aWQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBsYW5ndWFnZTogcmVxdWVzdERhdGE/Lmxhbmd1YWdlIHx8ICdweXRob24tMy4xMC4wJyxcbiAgICAgIGNvZGU6IHJlcXVlc3REYXRhPy5jb2RlIHx8ICcnLFxuICAgICAgc3RhdHVzOiAnY29tcGxldGVkJyxcbiAgICAgIHJlc3VsdHMsXG4gICAgICBzY29yZTogbWF4UG9pbnRzID4gMCA/ICh0b3RhbFBvaW50cyAvIG1heFBvaW50cykgKiAxMDAgOiAwLFxuICAgICAgdG90YWxfcG9pbnRzOiB0b3RhbFBvaW50cyxcbiAgICAgIG1heF9wb2ludHM6IG1heFBvaW50cyxcbiAgICAgIGV4ZWN1dGlvbl90aW1lOiByZXN1bHRzLnJlZHVjZSgoc3VtOiBudW1iZXIsIHI6IGFueSkgPT4gc3VtICsgci5leGVjdXRpb25fdGltZSwgMCksXG4gICAgICBjb21waWxhdGlvbl9lcnJvcjogbnVsbCxcbiAgICAgIHJ1bnRpbWVfZXJyb3I6IG51bGwsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class EnvironmentService {
|
|
4
|
+
get isMobile() {
|
|
5
|
+
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
|
|
6
|
+
}
|
|
7
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EnvironmentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
8
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EnvironmentService });
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EnvironmentService, decorators: [{
|
|
11
|
+
type: Injectable
|
|
12
|
+
}] });
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3Rnby1jb2RpbmctdGVzdC9zcmMvc2hhcmVkL2xpYi9zZXJ2aWNlcy9lbnZpcm9ubWVudC9lbnZpcm9ubWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsSUFBSSxRQUFRO1FBQ1YsT0FBTyxnRUFBZ0UsQ0FBQyxJQUFJLENBQzFFLFNBQVMsQ0FBQyxTQUFTLENBQ3BCLENBQUM7SUFDSixDQUFDO3dHQUxVLGtCQUFrQjs0R0FBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRW52aXJvbm1lbnRTZXJ2aWNlIHtcbiAgZ2V0IGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8SUVNb2JpbGV8T3BlcmEgTWluaS9pLnRlc3QoXG4gICAgICBuYXZpZ2F0b3IudXNlckFnZW50XG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './media/media.service';
|
|
2
|
+
export * from './theme/theme.service';
|
|
3
|
+
export * from './localization/transloco-lazy-module-utils';
|
|
4
|
+
export * from './localization/languages.model';
|
|
5
|
+
export * from './localization/transloco-testing.module';
|
|
6
|
+
export * from './api/api.service';
|
|
7
|
+
export * from './api/mocked-api.service';
|
|
8
|
+
export * from './environment/environment.service';
|
|
9
|
+
export * from './mixpanel/mixpanel.service';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90Z28tY29kaW5nLXRlc3Qvc3JjL3NoYXJlZC9saWIvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21lZGlhL21lZGlhLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi90aGVtZS90aGVtZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWxpemF0aW9uL3RyYW5zbG9jby1sYXp5LW1vZHVsZS11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2xvY2FsaXphdGlvbi9sYW5ndWFnZXMubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2NhbGl6YXRpb24vdHJhbnNsb2NvLXRlc3RpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpL2FwaS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpL21vY2tlZC1hcGkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2Vudmlyb25tZW50L2Vudmlyb25tZW50LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9taXhwYW5lbC9taXhwYW5lbC5zZXJ2aWNlJzsiXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//Languages available in the app as enum
|
|
2
|
+
export var Language;
|
|
3
|
+
(function (Language) {
|
|
4
|
+
Language["en"] = "en";
|
|
5
|
+
Language["es"] = "es";
|
|
6
|
+
Language["nl"] = "nl";
|
|
7
|
+
Language["fr"] = "fr";
|
|
8
|
+
Language["de"] = "de";
|
|
9
|
+
Language["it-it"] = "it-it";
|
|
10
|
+
Language["ja-jp"] = "ja-jp";
|
|
11
|
+
Language["pt-br"] = "pt-br";
|
|
12
|
+
Language["da-dk"] = "da-dk";
|
|
13
|
+
Language["nb-no"] = "nb-no";
|
|
14
|
+
Language["pl-pl"] = "pl-pl";
|
|
15
|
+
Language["sv-se"] = "sv-se";
|
|
16
|
+
})(Language || (Language = {}));
|
|
17
|
+
//This function retrieves all languages from the enum. It is used to initialize transloco
|
|
18
|
+
export const getAvailableLangs = () => Object.values(Language);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VzLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGdvLWNvZGluZy10ZXN0L3NyYy9zaGFyZWQvbGliL3NlcnZpY2VzL2xvY2FsaXphdGlvbi9sYW5ndWFnZXMubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0NBQXdDO0FBQ3hDLE1BQU0sQ0FBTixJQUFZLFFBYVg7QUFiRCxXQUFZLFFBQVE7SUFDbEIscUJBQVMsQ0FBQTtJQUNULHFCQUFTLENBQUE7SUFDVCxxQkFBUyxDQUFBO0lBQ1QscUJBQVMsQ0FBQTtJQUNULHFCQUFTLENBQUE7SUFDVCwyQkFBaUIsQ0FBQTtJQUNqQiwyQkFBaUIsQ0FBQTtJQUNqQiwyQkFBaUIsQ0FBQTtJQUNqQiwyQkFBaUIsQ0FBQTtJQUNqQiwyQkFBaUIsQ0FBQTtJQUNqQiwyQkFBaUIsQ0FBQTtJQUNqQiwyQkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBYlcsUUFBUSxLQUFSLFFBQVEsUUFhbkI7QUFFRCx5RkFBeUY7QUFDekYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vTGFuZ3VhZ2VzIGF2YWlsYWJsZSBpbiB0aGUgYXBwIGFzIGVudW1cbmV4cG9ydCBlbnVtIExhbmd1YWdlIHtcbiAgZW4gPSAnZW4nLFxuICBlcyA9ICdlcycsXG4gIG5sID0gJ25sJyxcbiAgZnIgPSAnZnInLFxuICBkZSA9ICdkZScsXG4gICdpdC1pdCcgPSAnaXQtaXQnLFxuICAnamEtanAnID0gJ2phLWpwJyxcbiAgJ3B0LWJyJyA9ICdwdC1icicsXG4gICdkYS1kaycgPSAnZGEtZGsnLFxuICAnbmItbm8nID0gJ25iLW5vJyxcbiAgJ3BsLXBsJyA9ICdwbC1wbCcsXG4gICdzdi1zZScgPSAnc3Ytc2UnLFxufVxuXG4vL1RoaXMgZnVuY3Rpb24gcmV0cmlldmVzIGFsbCBsYW5ndWFnZXMgZnJvbSB0aGUgZW51bS4gSXQgaXMgdXNlZCB0byBpbml0aWFsaXplIHRyYW5zbG9jb1xuZXhwb3J0IGNvbnN0IGdldEF2YWlsYWJsZUxhbmdzID0gKCkgPT4gT2JqZWN0LnZhbHVlcyhMYW5ndWFnZSk7XG5cbiJdfQ==
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { TRANSLOCO_SCOPE } from '@ngneat/transloco';
|
|
2
|
+
/**
|
|
3
|
+
* The util is based on this issue https://github.com/jsverse/transloco/issues/608#issuecomment-1416113493
|
|
4
|
+
*
|
|
5
|
+
* Transloco can't have several forRoot modules. so the only way for now to decouple translations as a separate file and context
|
|
6
|
+
* from the shell (TAS in this case) is to use TRANSLOCO_SCOPE
|
|
7
|
+
*/
|
|
8
|
+
export class TranslocoLazyModuleUtils {
|
|
9
|
+
static createInlineLoader(languages, loaderFn) {
|
|
10
|
+
const translocoInlineLoader = {};
|
|
11
|
+
languages.forEach((language) => {
|
|
12
|
+
translocoInlineLoader[language] = () => loaderFn(language);
|
|
13
|
+
});
|
|
14
|
+
return translocoInlineLoader;
|
|
15
|
+
}
|
|
16
|
+
static getScopeProvider(scope, languages, alias, loaderFn) {
|
|
17
|
+
return {
|
|
18
|
+
provide: TRANSLOCO_SCOPE,
|
|
19
|
+
useValue: {
|
|
20
|
+
scope,
|
|
21
|
+
alias,
|
|
22
|
+
loader: this.createInlineLoader(languages, loaderFn),
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLWxhenktbW9kdWxlLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGdvLWNvZGluZy10ZXN0L3NyYy9zaGFyZWQvbGliL3NlcnZpY2VzL2xvY2FsaXphdGlvbi90cmFuc2xvY28tbGF6eS1tb2R1bGUtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBTXBEOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLHdCQUF3QjtJQUMzQixNQUFNLENBQUMsa0JBQWtCLENBQy9CLFNBQXdCLEVBQ3hCLFFBQXNDO1FBRXRDLE1BQU0scUJBQXFCLEdBQTBCLEVBQUUsQ0FBQztRQUV4RCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDN0IscUJBQXFCLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxxQkFBcUIsQ0FBQztJQUMvQixDQUFDO0lBRU0sTUFBTSxDQUFDLGdCQUFnQixDQUM1QixLQUFhLEVBQ2IsU0FBd0IsRUFDeEIsS0FBYSxFQUNiLFFBQXNDO1FBRXRDLE9BQU87WUFDTCxPQUFPLEVBQUUsZUFBZTtZQUN4QixRQUFRLEVBQUU7Z0JBQ1IsS0FBSztnQkFDTCxLQUFLO2dCQUNMLE1BQU0sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQzthQUNyRDtTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUUkFOU0xPQ09fU0NPUEUgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XG5cbmludGVyZmFjZSBUcmFuc2xvY29JbmxpbmVMb2FkZXIge1xuICBba2V5OiBzdHJpbmddOiAoKSA9PiBQcm9taXNlPEpTT04+O1xufVxuXG4vKipcbiAqIFRoZSB1dGlsIGlzIGJhc2VkIG9uIHRoaXMgaXNzdWUgaHR0cHM6Ly9naXRodWIuY29tL2pzdmVyc2UvdHJhbnNsb2NvL2lzc3Vlcy82MDgjaXNzdWVjb21tZW50LTE0MTYxMTM0OTNcbiAqXG4gKiBUcmFuc2xvY28gY2FuJ3QgaGF2ZSBzZXZlcmFsIGZvclJvb3QgbW9kdWxlcy4gc28gdGhlIG9ubHkgd2F5IGZvciBub3cgdG8gZGVjb3VwbGUgdHJhbnNsYXRpb25zIGFzIGEgc2VwYXJhdGUgZmlsZSBhbmQgY29udGV4dFxuICogZnJvbSB0aGUgc2hlbGwgKFRBUyBpbiB0aGlzIGNhc2UpIGlzIHRvIHVzZSBUUkFOU0xPQ09fU0NPUEVcbiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zbG9jb0xhenlNb2R1bGVVdGlscyB7XG4gIHByaXZhdGUgc3RhdGljIGNyZWF0ZUlubGluZUxvYWRlcihcbiAgICBsYW5ndWFnZXM6IEFycmF5PHN0cmluZz4sXG4gICAgbG9hZGVyRm46IChsOiBzdHJpbmcpID0+IFByb21pc2U8SlNPTj5cbiAgKTogVHJhbnNsb2NvSW5saW5lTG9hZGVyIHtcbiAgICBjb25zdCB0cmFuc2xvY29JbmxpbmVMb2FkZXI6IFRyYW5zbG9jb0lubGluZUxvYWRlciA9IHt9O1xuXG4gICAgbGFuZ3VhZ2VzLmZvckVhY2goKGxhbmd1YWdlKSA9PiB7XG4gICAgICB0cmFuc2xvY29JbmxpbmVMb2FkZXJbbGFuZ3VhZ2VdID0gKCkgPT4gbG9hZGVyRm4obGFuZ3VhZ2UpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRyYW5zbG9jb0lubGluZUxvYWRlcjtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0U2NvcGVQcm92aWRlcihcbiAgICBzY29wZTogc3RyaW5nLFxuICAgIGxhbmd1YWdlczogQXJyYXk8c3RyaW5nPixcbiAgICBhbGlhczogc3RyaW5nLFxuICAgIGxvYWRlckZuOiAobDogc3RyaW5nKSA9PiBQcm9taXNlPEpTT04+XG4gICk6IFZhbHVlUHJvdmlkZXIge1xuICAgIHJldHVybiB7XG4gICAgICBwcm92aWRlOiBUUkFOU0xPQ09fU0NPUEUsXG4gICAgICB1c2VWYWx1ZToge1xuICAgICAgICBzY29wZSxcbiAgICAgICAgYWxpYXMsXG4gICAgICAgIGxvYWRlcjogdGhpcy5jcmVhdGVJbmxpbmVMb2FkZXIobGFuZ3VhZ2VzLCBsb2FkZXJGbiksXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuIl19
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TranslocoTestingModule, } from '@ngneat/transloco';
|
|
2
|
+
export const getTranslocoModule = (options = {}) => TranslocoTestingModule.forRoot({
|
|
3
|
+
translocoConfig: {
|
|
4
|
+
reRenderOnLangChange: false,
|
|
5
|
+
availableLangs: ['en'],
|
|
6
|
+
defaultLang: 'en',
|
|
7
|
+
},
|
|
8
|
+
preloadLangs: true,
|
|
9
|
+
...options,
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLXRlc3RpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGdvLWNvZGluZy10ZXN0L3NyYy9zaGFyZWQvbGliL3NlcnZpY2VzL2xvY2FsaXphdGlvbi90cmFuc2xvY28tdGVzdGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHNCQUFzQixHQUV2QixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsVUFBbUMsRUFBRSxFQUFFLEVBQUUsQ0FDMUUsc0JBQXNCLENBQUMsT0FBTyxDQUFDO0lBQzdCLGVBQWUsRUFBRTtRQUNmLG9CQUFvQixFQUFFLEtBQUs7UUFDM0IsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ3RCLFdBQVcsRUFBRSxJQUFJO0tBQ2xCO0lBQ0QsWUFBWSxFQUFFLElBQUk7SUFDbEIsR0FBRyxPQUFPO0NBQ1gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgVHJhbnNsb2NvVGVzdGluZ01vZHVsZSxcbiAgVHJhbnNsb2NvVGVzdGluZ09wdGlvbnMsXG59IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcblxuZXhwb3J0IGNvbnN0IGdldFRyYW5zbG9jb01vZHVsZSA9IChvcHRpb25zOiBUcmFuc2xvY29UZXN0aW5nT3B0aW9ucyA9IHt9KSA9PlxuICBUcmFuc2xvY29UZXN0aW5nTW9kdWxlLmZvclJvb3Qoe1xuICAgIHRyYW5zbG9jb0NvbmZpZzoge1xuICAgICAgcmVSZW5kZXJPbkxhbmdDaGFuZ2U6IGZhbHNlLFxuICAgICAgYXZhaWxhYmxlTGFuZ3M6IFsnZW4nXSxcbiAgICAgIGRlZmF1bHRMYW5nOiAnZW4nLFxuICAgIH0sXG4gICAgcHJlbG9hZExhbmdzOiB0cnVlLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xuIl19
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { Injectable, signal } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class MediaService {
|
|
5
|
+
mediaRecorder = null;
|
|
6
|
+
selectedMediaDevices;
|
|
7
|
+
isRecording = signal(false);
|
|
8
|
+
stopRecording() {
|
|
9
|
+
this.mediaRecorder?.stop();
|
|
10
|
+
}
|
|
11
|
+
getMediaStream(data) {
|
|
12
|
+
return navigator.mediaDevices.getUserMedia(this.getMediaStreamConstraints(data));
|
|
13
|
+
}
|
|
14
|
+
recordAudio() {
|
|
15
|
+
let checkPermissionPromise;
|
|
16
|
+
return new Observable((observer) => {
|
|
17
|
+
void this.getMediaStream({ video: false, audio: true })
|
|
18
|
+
.then((stream) => {
|
|
19
|
+
this.mediaRecorder = new MediaRecorder(stream);
|
|
20
|
+
this.mediaRecorder.start();
|
|
21
|
+
this.isRecording.set(true);
|
|
22
|
+
const audioChunks = [];
|
|
23
|
+
this.mediaRecorder.ondataavailable = (event) => {
|
|
24
|
+
audioChunks.push(event.data);
|
|
25
|
+
};
|
|
26
|
+
this.mediaRecorder.addEventListener('stop', () => {
|
|
27
|
+
const audioBlob = new Blob(audioChunks, {
|
|
28
|
+
type: 'audio/mp3',
|
|
29
|
+
});
|
|
30
|
+
observer.next({ type: 'complete', file: audioBlob });
|
|
31
|
+
this.isRecording.set(false);
|
|
32
|
+
observer.complete();
|
|
33
|
+
});
|
|
34
|
+
this.mediaRecorder.onerror = (error) => {
|
|
35
|
+
observer.error(error);
|
|
36
|
+
observer.complete();
|
|
37
|
+
};
|
|
38
|
+
const audioContext = new AudioContext();
|
|
39
|
+
const mediaStreamAudioSourceNode = audioContext.createMediaStreamSource(stream);
|
|
40
|
+
const analyserNode = audioContext.createAnalyser();
|
|
41
|
+
mediaStreamAudioSourceNode.connect(analyserNode);
|
|
42
|
+
const pcmData = new Float32Array(analyserNode.fftSize);
|
|
43
|
+
const onFrame = () => {
|
|
44
|
+
analyserNode.getFloatTimeDomainData(pcmData);
|
|
45
|
+
let sumSquares = 0.0;
|
|
46
|
+
for (const amplitude of pcmData) {
|
|
47
|
+
sumSquares += amplitude * amplitude;
|
|
48
|
+
}
|
|
49
|
+
if (sumSquares > 0) {
|
|
50
|
+
observer.next({
|
|
51
|
+
type: 'volume',
|
|
52
|
+
value: Math.sqrt(sumSquares / pcmData.length),
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
if (!checkPermissionPromise) {
|
|
57
|
+
checkPermissionPromise = this.checkPermission({
|
|
58
|
+
video: false,
|
|
59
|
+
audio: true,
|
|
60
|
+
});
|
|
61
|
+
checkPermissionPromise
|
|
62
|
+
.then((hasPermission) => {
|
|
63
|
+
if (!hasPermission) {
|
|
64
|
+
observer.error(new Error('Permission denied'));
|
|
65
|
+
observer.complete();
|
|
66
|
+
}
|
|
67
|
+
})
|
|
68
|
+
.finally(() => {
|
|
69
|
+
checkPermissionPromise = null;
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (!observer.closed) {
|
|
74
|
+
window.requestAnimationFrame(onFrame);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
window.requestAnimationFrame(onFrame);
|
|
78
|
+
})
|
|
79
|
+
.catch((error) => {
|
|
80
|
+
observer.error(error);
|
|
81
|
+
observer.complete();
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
async playAudio(url) {
|
|
86
|
+
const audio = new Audio(url);
|
|
87
|
+
await audio.play();
|
|
88
|
+
return new Promise((resolve, reject) => {
|
|
89
|
+
audio.onended = () => {
|
|
90
|
+
resolve();
|
|
91
|
+
};
|
|
92
|
+
audio.onerror = (event) => reject(event);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
setSelectedMediaDevices(data) {
|
|
96
|
+
this.selectedMediaDevices = data;
|
|
97
|
+
}
|
|
98
|
+
async checkPermission(data) {
|
|
99
|
+
try {
|
|
100
|
+
await this.getMediaStream(data);
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
console.error(err);
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
getMediaStreamConstraints(data) {
|
|
109
|
+
const audioDeviceID = this.selectedMediaDevices?.audioDeviceId;
|
|
110
|
+
const videoDeviceID = this.selectedMediaDevices?.videoDeviceId;
|
|
111
|
+
return {
|
|
112
|
+
audio: data.audio && audioDeviceID
|
|
113
|
+
? { deviceId: { exact: audioDeviceID } }
|
|
114
|
+
: data.audio,
|
|
115
|
+
video: data.video && videoDeviceID
|
|
116
|
+
? { deviceId: { exact: videoDeviceID } }
|
|
117
|
+
: data.video,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MediaService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
121
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MediaService, providedIn: 'root' });
|
|
122
|
+
}
|
|
123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MediaService, decorators: [{
|
|
124
|
+
type: Injectable,
|
|
125
|
+
args: [{
|
|
126
|
+
providedIn: 'root',
|
|
127
|
+
}]
|
|
128
|
+
}] });
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3Rnby1jb2RpbmctdGVzdC9zcmMvc2hhcmVkL2xpYi9zZXJ2aWNlcy9tZWRpYS9tZWRpYS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTWxDLE1BQU0sT0FBTyxZQUFZO0lBQ2YsYUFBYSxHQUF5QixJQUFJLENBQUM7SUFDM0Msb0JBQW9CLENBQW1DO0lBQ3RELFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFckMsYUFBYTtRQUNYLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUdkO1FBQ0MsT0FBTyxTQUFTLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FDeEMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUNyQyxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFHVCxJQUFJLHNCQUErQyxDQUFDO1FBQ3BELE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNqQyxLQUFLLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztpQkFDcEQsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxD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Q0gsQ0FBQztJQUVPLHlCQUF5QixDQUFDLElBR2pDO1FBQ0MsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLGFBQWEsQ0FBQztRQUMvRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsYUFBYSxDQUFDO1FBQy9ELE9BQU87WUFDTCxLQUFLLEVBQ0gsSUFBSSxDQUFDLEtBQUssSUFBSSxhQUFhO2dCQUN6QixDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBQUU7Z0JBQ3hDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSztZQUNoQixLQUFLLEVBQ0gsSUFBSSxDQUFDLEtBQUssSUFBSSxhQUFhO2dCQUN6QixDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBQUU7Z0JBQ3hDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSztTQUNqQixDQUFDO0lBQ0osQ0FBQzt3R0E5SVUsWUFBWTs0R0FBWixZQUFZLGNBRlgsTUFBTTs7NEZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNlbGVjdGVkTWVkaWFEZXZpY2VzIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1lZGlhU2VydmljZSB7XG4gIHByaXZhdGUgbWVkaWFSZWNvcmRlcjogTWVkaWFSZWNvcmRlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHNlbGVjdGVkTWVkaWFEZXZpY2VzOiBTZWxlY3RlZE1lZGlhRGV2aWNlcyB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgaXNSZWNvcmRpbmcgPSBzaWduYWwoZmFsc2UpO1xuXG4gIHN0b3BSZWNvcmRpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5tZWRpYVJlY29yZGVyPy5zdG9wKCk7XG4gIH1cblxuICBnZXRNZWRpYVN0cmVhbShkYXRhOiB7XG4gICAgYXVkaW86IGJvb2xlYW47XG4gICAgdmlkZW86IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPE1lZGlhU3RyZWFtPiB7XG4gICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKFxuICAgICAgdGhpcy5nZXRNZWRpYVN0cmVhbUNvbnN0cmFpbnRzKGRhdGEpXG4gICAgKTtcbiAgfVxuXG4gIHJlY29yZEF1ZGlvKCk6IE9ic2VydmFibGU8XG4gICAgeyB0eXBlOiAnY29tcGxldGUnOyBmaWxlOiBCbG9iIH0gfCB7IHR5cGU6ICd2b2x1bWUnOyB2YWx1ZTogbnVtYmVyIH1cbiAgPiB7XG4gICAgbGV0IGNoZWNrUGVybWlzc2lvblByb21pc2U6IFByb21pc2U8Ym9vbGVhbj4gfCBudWxsO1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcbiAgICAgIHZvaWQgdGhpcy5nZXRNZWRpYVN0cmVhbSh7IHZpZGVvOiBmYWxzZSwgYXVkaW86IHRydWUgfSlcbiAgICAgICAgLnRoZW4oKHN0cmVhbSkgPT4ge1xuICAgICAgICAgIHRoaXMubWVkaWFSZWNvcmRlciA9IG5ldyBNZWRpYVJlY29yZGVyKHN0cmVhbSk7XG4gICAgICAgICAgdGhpcy5tZWRpYVJlY29yZGVyLnN0YXJ0KCk7XG4gICAgICAgICAgdGhpcy5pc1JlY29yZGluZy5zZXQodHJ1ZSk7XG4gICAgICAgICAgY29uc3QgYXVkaW9DaHVua3M6IEJsb2JbXSA9IFtdO1xuICAgICAgICAgIHRoaXMubWVkaWFSZWNvcmRlci5vbmRhdGFhdmFpbGFibGUgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGF1ZGlvQ2h1bmtzLnB1c2goZXZlbnQuZGF0YSk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHRoaXMubWVkaWFSZWNvcmRlci5hZGRFdmVudExpc3RlbmVyKCdzdG9wJywgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYXVkaW9CbG9iID0gbmV3IEJsb2IoYXVkaW9DaHVua3MsIHtcbiAgICAgICAgICAgICAgdHlwZTogJ2F1ZGlvL21wMycsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG9ic2VydmVyLm5leHQoeyB0eXBlOiAnY29tcGxldGUnLCBmaWxlOiBhdWRpb0Jsb2IgfSk7XG4gICAgICAgICAgICB0aGlzLmlzUmVjb3JkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5tZWRpYVJlY29yZGVyLm9uZXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IGF1ZGlvQ29udGV4dCA9IG5ldyBBdWRpb0NvbnRleHQoKTtcbiAgICAgICAgICBjb25zdCBtZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSA9XG4gICAgICAgICAgICBhdWRpb0NvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2Uoc3RyZWFtKTtcbiAgICAgICAgICBjb25zdCBhbmFseXNlck5vZGUgPSBhdWRpb0NvbnRleHQuY3JlYXRlQW5hbHlzZXIoKTtcbiAgICAgICAgICBtZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jb25uZWN0KGFuYWx5c2VyTm9kZSk7XG5cbiAgICAgICAgICBjb25zdCBwY21EYXRhID0gbmV3IEZsb2F0MzJBcnJheShhbmFseXNlck5vZGUuZmZ0U2l6ZSk7XG4gICAgICAgICAgY29uc3Qgb25GcmFtZSA9ICgpID0+IHtcbiAgICAgICAgICAgIGFuYWx5c2VyTm9kZS5nZXRGbG9hdFRpbWVEb21haW5EYXRhKHBjbURhdGEpO1xuICAgICAgICAgICAgbGV0IHN1bVNxdWFyZXMgPSAwLjA7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFtcGxpdHVkZSBvZiBwY21EYXRhKSB7XG4gICAgICAgICAgICAgIHN1bVNxdWFyZXMgKz0gYW1wbGl0dWRlICogYW1wbGl0dWRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN1bVNxdWFyZXMgPiAwKSB7XG4gICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICd2b2x1bWUnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBNYXRoLnNxcnQoc3VtU3F1YXJlcyAvIHBjbURhdGEubGVuZ3RoKSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZiAoIWNoZWNrUGVybWlzc2lvblByb21pc2UpIHtcbiAgICAgICAgICAgICAgICBjaGVja1Blcm1pc3Npb25Qcm9taXNlID0gdGhpcy5jaGVja1Blcm1pc3Npb24oe1xuICAgICAgICAgICAgICAgICAgdmlkZW86IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgYXVkaW86IHRydWUsXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBjaGVja1Blcm1pc3Npb25Qcm9taXNlXG4gICAgICAgICAgICAgICAgICAudGhlbigoaGFzUGVybWlzc2lvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc1Blcm1pc3Npb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcihuZXcgRXJyb3IoJ1Blcm1pc3Npb24gZGVuaWVkJykpO1xuICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrUGVybWlzc2lvblByb21pc2UgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFvYnNlcnZlci5jbG9zZWQpIHtcbiAgICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShvbkZyYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUob25GcmFtZSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICBvYnNlcnZlci5lcnJvcihlcnJvcik7XG4gICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBwbGF5QXVkaW8odXJsOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBhdWRpbyA9IG5ldyBBdWRpbyh1cmwpO1xuICAgIGF3YWl0IGF1ZGlvLnBsYXkoKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgYXVkaW8ub25lbmRlZCA9ICgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfTtcbiAgICAgIGF1ZGlvLm9uZXJyb3IgPSAoZXZlbnQpID0+IHJlamVjdChldmVudCk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRTZWxlY3RlZE1lZGlhRGV2aWNlcyhkYXRhPzogU2VsZWN0ZWRNZWRpYURldmljZXMpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkTWVkaWFEZXZpY2VzID0gZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGNoZWNrUGVybWlzc2lvbihkYXRhOiB7XG4gICAgYXVkaW86IGJvb2xlYW47XG4gICAgdmlkZW86IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5nZXRNZWRpYVN0cmVhbShkYXRhKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWVkaWFTdHJlYW1Db25zdHJhaW50cyhkYXRhOiB7XG4gICAgYXVkaW86IGJvb2xlYW47XG4gICAgdmlkZW86IGJvb2xlYW47XG4gIH0pOiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzIHtcbiAgICBjb25zdCBhdWRpb0RldmljZUlEID0gdGhpcy5zZWxlY3RlZE1lZGlhRGV2aWNlcz8uYXVkaW9EZXZpY2VJZDtcbiAgICBjb25zdCB2aWRlb0RldmljZUlEID0gdGhpcy5zZWxlY3RlZE1lZGlhRGV2aWNlcz8udmlkZW9EZXZpY2VJZDtcbiAgICByZXR1cm4ge1xuICAgICAgYXVkaW86XG4gICAgICAgIGRhdGEuYXVkaW8gJiYgYXVkaW9EZXZpY2VJRFxuICAgICAgICAgID8geyBkZXZpY2VJZDogeyBleGFjdDogYXVkaW9EZXZpY2VJRCB9IH1cbiAgICAgICAgICA6IGRhdGEuYXVkaW8sXG4gICAgICB2aWRlbzpcbiAgICAgICAgZGF0YS52aWRlbyAmJiB2aWRlb0RldmljZUlEXG4gICAgICAgICAgPyB7IGRldmljZUlkOiB7IGV4YWN0OiB2aWRlb0RldmljZUlEIH0gfVxuICAgICAgICAgIDogZGF0YS52aWRlbyxcbiAgICB9O1xuICB9XG59XG5cbiJdfQ==
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import '../../models/window';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class MixpanelService {
|
|
5
|
+
mixpanel = null;
|
|
6
|
+
track(eventName, properties = {}) {
|
|
7
|
+
if (this.mixpanel) {
|
|
8
|
+
return this.sendTrackEvent(eventName, properties);
|
|
9
|
+
}
|
|
10
|
+
if (window.mixpanel) {
|
|
11
|
+
this.mixpanel = window.mixpanel;
|
|
12
|
+
return this.sendTrackEvent(eventName, properties);
|
|
13
|
+
}
|
|
14
|
+
console.error('Mixpanel is not initialized or not available');
|
|
15
|
+
}
|
|
16
|
+
sendTrackEvent(eventName, properties = {}) {
|
|
17
|
+
try {
|
|
18
|
+
this.mixpanel.track(eventName, properties);
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
console.error(error);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MixpanelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
25
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MixpanelService });
|
|
26
|
+
}
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MixpanelService, decorators: [{
|
|
28
|
+
type: Injectable
|
|
29
|
+
}] });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4cGFuZWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3Rnby1jb2RpbmctdGVzdC9zcmMvc2hhcmVkL2xpYi9zZXJ2aWNlcy9taXhwYW5lbC9taXhwYW5lbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxxQkFBcUIsQ0FBQzs7QUFHN0IsTUFBTSxPQUFPLGVBQWU7SUFDbEIsUUFBUSxHQUFrQyxJQUFJLENBQUM7SUFFdkQsS0FBSyxDQUFDLFNBQWlCLEVBQUUsYUFBNEIsRUFBRTtRQUNyRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDaEMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsT0FBTyxDQUFDLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTyxjQUFjLENBQUMsU0FBaUIsRUFBRSxhQUE0QixFQUFFO1FBQ3RFLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxRQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7d0dBdEJVLGVBQWU7NEdBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIG1peHBhbmVsIGZyb20gJ21peHBhbmVsLWJyb3dzZXInO1xuaW1wb3J0ICcuLi8uLi9tb2RlbHMvd2luZG93JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1peHBhbmVsU2VydmljZSB7XG4gIHByaXZhdGUgbWl4cGFuZWw6IHR5cGVvZiB3aW5kb3cubWl4cGFuZWwgfCBudWxsID0gbnVsbDtcblxuICB0cmFjayhldmVudE5hbWU6IHN0cmluZywgcHJvcGVydGllczogbWl4cGFuZWwuRGljdCA9IHt9KTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWl4cGFuZWwpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbmRUcmFja0V2ZW50KGV2ZW50TmFtZSwgcHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgaWYgKHdpbmRvdy5taXhwYW5lbCkge1xuICAgICAgdGhpcy5taXhwYW5lbCA9IHdpbmRvdy5taXhwYW5lbDtcbiAgICAgIHJldHVybiB0aGlzLnNlbmRUcmFja0V2ZW50KGV2ZW50TmFtZSwgcHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgY29uc29sZS5lcnJvcignTWl4cGFuZWwgaXMgbm90IGluaXRpYWxpemVkIG9yIG5vdCBhdmFpbGFibGUnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VuZFRyYWNrRXZlbnQoZXZlbnROYW1lOiBzdHJpbmcsIHByb3BlcnRpZXM6IG1peHBhbmVsLkRpY3QgPSB7fSk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLm1peHBhbmVsIS50cmFjayhldmVudE5hbWUsIHByb3BlcnRpZXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
var THEME_VARS;
|
|
4
|
+
(function (THEME_VARS) {
|
|
5
|
+
THEME_VARS["COMPANY_COLOR"] = "--color-primary-50";
|
|
6
|
+
})(THEME_VARS || (THEME_VARS = {}));
|
|
7
|
+
export class ThemeService {
|
|
8
|
+
BRAND_PINK_COLOR = '#D410AA';
|
|
9
|
+
getCompanyColor() {
|
|
10
|
+
return (this.getCSSVariableValue(THEME_VARS.COMPANY_COLOR) ||
|
|
11
|
+
this.BRAND_PINK_COLOR);
|
|
12
|
+
}
|
|
13
|
+
getCSSVariableValue(variableName) {
|
|
14
|
+
return getComputedStyle(document.documentElement)
|
|
15
|
+
.getPropertyValue(variableName)
|
|
16
|
+
.trim();
|
|
17
|
+
}
|
|
18
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
19
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThemeService });
|
|
20
|
+
}
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThemeService, decorators: [{
|
|
22
|
+
type: Injectable
|
|
23
|
+
}] });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3Rnby1jb2RpbmctdGVzdC9zcmMvc2hhcmVkL2xpYi9zZXJ2aWNlcy90aGVtZS90aGVtZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDLElBQUssVUFFSjtBQUZELFdBQUssVUFBVTtJQUNiLGtEQUFvQyxDQUFBO0FBQ3RDLENBQUMsRUFGSSxVQUFVLEtBQVYsVUFBVSxRQUVkO0FBR0QsTUFBTSxPQUFPLFlBQVk7SUFDTixnQkFBZ0IsR0FBRyxTQUFTLENBQUM7SUFFOUMsZUFBZTtRQUNiLE9BQU8sQ0FDTCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztZQUNsRCxJQUFJLENBQUMsZ0JBQWdCLENBQ3RCLENBQUM7SUFDSixDQUFDO0lBRU8sbUJBQW1CLENBQUMsWUFBb0I7UUFDOUMsT0FBTyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO2FBQzlDLGdCQUFnQixDQUFDLFlBQVksQ0FBQzthQUM5QixJQUFJLEVBQUUsQ0FBQztJQUNaLENBQUM7d0dBZFUsWUFBWTs0R0FBWixZQUFZOzs0RkFBWixZQUFZO2tCQUR4QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5lbnVtIFRIRU1FX1ZBUlMge1xuICBDT01QQU5ZX0NPTE9SID0gJy0tY29sb3ItcHJpbWFyeS01MCcsXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUaGVtZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IEJSQU5EX1BJTktfQ09MT1IgPSAnI0Q0MTBBQSc7XG5cbiAgZ2V0Q29tcGFueUNvbG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZ2V0Q1NTVmFyaWFibGVWYWx1ZShUSEVNRV9WQVJTLkNPTVBBTllfQ09MT1IpIHx8XG4gICAgICB0aGlzLkJSQU5EX1BJTktfQ09MT1JcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDU1NWYXJpYWJsZVZhbHVlKHZhcmlhYmxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXG4gICAgICAuZ2V0UHJvcGVydHlWYWx1ZSh2YXJpYWJsZU5hbWUpXG4gICAgICAudHJpbSgpO1xuICB9XG59XG5cbiJdfQ==
|