@kontur.candy/tools 2.210.1-cgroupv2.0 → 2.210.1-cgroupv2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/distr/Common/AsyncUtils.js +18 -0
- package/distr/Common/AsyncUtils.js.map +1 -0
- package/distr/Common/AutoValidationUtils.js +8 -0
- package/distr/Common/AutoValidationUtils.js.map +1 -0
- package/distr/Common/CandyApiClient/CandyApiClient.js +578 -0
- package/distr/Common/CandyApiClient/CandyApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/CandyApiClientContext.js +18 -0
- package/distr/Common/CandyApiClient/CandyApiClientContext.js.map +1 -0
- package/distr/Common/CandyApiClient/ClientDraftInfo/ClientDraftInfoResponse.js +6 -0
- package/distr/Common/CandyApiClient/ClientDraftInfo/ClientDraftInfoResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/ClientDraftInfo/FnsFormInfo.js +6 -0
- package/distr/Common/CandyApiClient/ClientDraftInfo/FnsFormInfo.js.map +1 -0
- package/distr/Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl.js +12 -0
- package/distr/Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl.js.map +1 -0
- package/distr/Common/CandyApiClient/ClientDraftInfo/PrintInfo.js +6 -0
- package/distr/Common/CandyApiClient/ClientDraftInfo/PrintInfo.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js +33 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js +35 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js +20 -0
- package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/Data/TaxRebate1152026.js +89 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/Data/TaxRebate1152026.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js +42 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakePicklists.js +9 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakePicklists.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js +6 -0
- package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js +18 -0
- package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js +15 -0
- package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestQueryFilter.js +19 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestQueryFilter.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestRequest.js +6 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestRequest.js.map +1 -0
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js +248 -0
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/ICandyApiClient.js +6 -0
- package/distr/Common/CandyApiClient/ICandyApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/IsBuffer.js +15 -0
- package/distr/Common/CandyApiClient/IsBuffer.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Attachments/Attacments.js +6 -0
- package/distr/Common/CandyApiClient/Types/Attachments/Attacments.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Attachments/GetAttachmentsResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/Attachments/GetAttachmentsResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/ChangeSet/ServerChangeSet.js +6 -0
- package/distr/Common/CandyApiClient/Types/ChangeSet/ServerChangeSet.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/CreateDraft/CreateDraftResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/CreateDraft/CreateDraftResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/DiagResourcesResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/DiagResourcesResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/DraftActions/CombineFufResult.js +24 -0
- package/distr/Common/CandyApiClient/Types/DraftActions/CombineFufResult.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/DraftActions/ConvertDraftRequest.js +6 -0
- package/distr/Common/CandyApiClient/Types/DraftActions/ConvertDraftRequest.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js +6 -0
- package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/DraftActions/FufSizeTooLargeError.js +9 -0
- package/distr/Common/CandyApiClient/Types/DraftActions/FufSizeTooLargeError.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/DraftFullId.js +6 -0
- package/distr/Common/CandyApiClient/Types/DraftFullId.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/CandyPopdProtocol.js +12 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/CandyPopdProtocol.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/ResolveInnerPathRequest.js +6 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/ResolveInnerPathRequest.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/ResolvePathResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/ResolvePathResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js +17 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/ExplanatoryNote/CreateExplanatoryNoteResponse.js +13 -0
- package/distr/Common/CandyApiClient/Types/ExplanatoryNote/CreateExplanatoryNoteResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/FeatureFlags/FeatureFlagsResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/FeatureFlags/FeatureFlagsResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Focus/FocusServerResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/Focus/FocusServerResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Focus/FocusTypes.js +15 -0
- package/distr/Common/CandyApiClient/Types/Focus/FocusTypes.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/GetInner/ServerInnerResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/GetInner/ServerInnerResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/GetInner/ServerRawResponse.js +9 -0
- package/distr/Common/CandyApiClient/Types/GetInner/ServerRawResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/GetInner/ServerRequisitesResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/GetInner/ServerRequisitesResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Guid.js +6 -0
- package/distr/Common/CandyApiClient/Types/Guid.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/InstancesDeleting/InstancesDeletingRule.js +6 -0
- package/distr/Common/CandyApiClient/Types/InstancesDeleting/InstancesDeletingRule.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/MassActions/MassActionParameters.js +6 -0
- package/distr/Common/CandyApiClient/Types/MassActions/MassActionParameters.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/MassActions/ValueForInstancesSettingRule.js +6 -0
- package/distr/Common/CandyApiClient/Types/MassActions/ValueForInstancesSettingRule.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Presentations/DraftPresentationType.js +24 -0
- package/distr/Common/CandyApiClient/Types/Presentations/DraftPresentationType.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Presentations/PresentationContent.js +6 -0
- package/distr/Common/CandyApiClient/Types/Presentations/PresentationContent.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Print/PrintResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/Print/PrintResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Print/PrintType.js +12 -0
- package/distr/Common/CandyApiClient/Types/Print/PrintType.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/AndExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/AndExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CompareExpression.js +19 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CompareExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CountCallExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CountCallExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/DecimalConstantExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/DecimalConstantExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/InstanceIdCallExpression.js +13 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/InstanceIdCallExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/NotExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/NotExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/OrExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/OrExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringConstantExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringConstantExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringMatchExpression.js +21 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringMatchExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/SumCallExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/SumCallExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/TernaryExpression.js +19 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/TernaryExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/ValueReferenceExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/ValueReferenceExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryExpression.js +6 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryRequest.js +26 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryRequest.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/SelectClause.js +16 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/SelectClause.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/SortingRule.js +16 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/SortingRule.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Staff/EmployeeInfo.js +6 -0
- package/distr/Common/CandyApiClient/Types/Staff/EmployeeInfo.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesOptions.js +6 -0
- package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesOptions.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesRequest.js +6 -0
- package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesRequest.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Staff/StaffInfo.js +6 -0
- package/distr/Common/CandyApiClient/Types/Staff/StaffInfo.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Tasks/GetTasksServerResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/Tasks/GetTasksServerResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Tasks/Tasks.js +14 -0
- package/distr/Common/CandyApiClient/Types/Tasks/Tasks.js.map +1 -0
- package/distr/Common/CollectionUtils.js +15 -0
- package/distr/Common/CollectionUtils.js.map +1 -0
- package/distr/Common/CommonConstants/SectionNames.js +11 -0
- package/distr/Common/CommonConstants/SectionNames.js.map +1 -0
- package/distr/Common/Comparers.js +63 -0
- package/distr/Common/Comparers.js.map +1 -0
- package/distr/Common/EmotionStorybookWorkaroundViaAliases.js +22 -0
- package/distr/Common/EmotionStorybookWorkaroundViaAliases.js.map +1 -0
- package/distr/Common/EndPoints.js +16 -0
- package/distr/Common/EndPoints.js.map +1 -0
- package/distr/Common/Enums/ButtonSettingsTypeEnum.js +12 -0
- package/distr/Common/Enums/ButtonSettingsTypeEnum.js.map +1 -0
- package/distr/Common/Errors.js +44 -0
- package/distr/Common/Errors.js.map +1 -0
- package/distr/Common/ExtractGFVPath/ExtractGFVPath.js +31 -0
- package/distr/Common/ExtractGFVPath/ExtractGFVPath.js.map +1 -0
- package/distr/Common/FSPrinterClient/FSPrinterClient.js +153 -0
- package/distr/Common/FSPrinterClient/FSPrinterClient.js.map +1 -0
- package/distr/Common/FSPrinterClient/FakeFSPrinterClient.js +19 -0
- package/distr/Common/FSPrinterClient/FakeFSPrinterClient.js.map +1 -0
- package/distr/Common/FSPrinterClient/IFSPrinterClient.js +39 -0
- package/distr/Common/FSPrinterClient/IFSPrinterClient.js.map +1 -0
- package/distr/Common/FormActionHandlers/ContextualActionNames.js +14 -0
- package/distr/Common/FormActionHandlers/ContextualActionNames.js.map +1 -0
- package/distr/Common/FormActionHandlers/ControlNamedContextualAction.js +6 -0
- package/distr/Common/FormActionHandlers/ControlNamedContextualAction.js.map +1 -0
- package/distr/Common/FormPathUtils.js +21 -0
- package/distr/Common/FormPathUtils.js.map +1 -0
- package/distr/Common/Funcs.js +11 -0
- package/distr/Common/Funcs.js.map +1 -0
- package/distr/Common/GFV.js +6 -0
- package/distr/Common/GFV.js.map +1 -0
- package/distr/Common/GetRngSchemaFileExtension.js +26 -0
- package/distr/Common/GetRngSchemaFileExtension.js.map +1 -0
- package/distr/Common/Hooks/UseLocalStorage.js +35 -0
- package/distr/Common/Hooks/UseLocalStorage.js.map +1 -0
- package/distr/Common/HttpClient/AuthenticationMode.js +31 -0
- package/distr/Common/HttpClient/AuthenticationMode.js.map +1 -0
- package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js +9 -0
- package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js.map +1 -0
- package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithPolyfill.js +9 -0
- package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithPolyfill.js.map +1 -0
- package/distr/Common/HttpClient/FetchImplementation/Fetch.js +6 -0
- package/distr/Common/HttpClient/FetchImplementation/Fetch.js.map +1 -0
- package/distr/Common/HttpClient/FetchImplementation/NativeBrowserFetch.js +8 -0
- package/distr/Common/HttpClient/FetchImplementation/NativeBrowserFetch.js.map +1 -0
- package/distr/Common/HttpClient/FetchImplementation/NodeFetch.js +36 -0
- package/distr/Common/HttpClient/FetchImplementation/NodeFetch.js.map +1 -0
- package/distr/Common/HttpClient/HttpClient.js +313 -0
- package/distr/Common/HttpClient/HttpClient.js.map +1 -0
- package/distr/Common/HttpClient/HttpClientAuthenticationProvider.js +6 -0
- package/distr/Common/HttpClient/HttpClientAuthenticationProvider.js.map +1 -0
- package/distr/Common/HttpClient/IHttpClient.js +6 -0
- package/distr/Common/HttpClient/IHttpClient.js.map +1 -0
- package/distr/Common/IndentString.js +16 -0
- package/distr/Common/IndentString.js.map +1 -0
- package/distr/Common/IntRangeUtils.js +32 -0
- package/distr/Common/IntRangeUtils.js.map +1 -0
- package/distr/Common/IterableUtils.js +288 -0
- package/distr/Common/IterableUtils.js.map +1 -0
- package/distr/Common/KCLangRuntimeUtils.js +266 -0
- package/distr/Common/KCLangRuntimeUtils.js.map +1 -0
- package/distr/Common/ModelPath/AbsoluteModelFieldPath.js +55 -0
- package/distr/Common/ModelPath/AbsoluteModelFieldPath.js.map +1 -0
- package/distr/Common/ModelPath/BuildIterationSequence.js +41 -0
- package/distr/Common/ModelPath/BuildIterationSequence.js.map +1 -0
- package/distr/Common/ModelPath/EachCurrentCollision.js +12 -0
- package/distr/Common/ModelPath/EachCurrentCollision.js.map +1 -0
- package/distr/Common/ModelPath/IEquatable.js +6 -0
- package/distr/Common/ModelPath/IEquatable.js.map +1 -0
- package/distr/Common/ModelPath/Map/AbsoluteModelPathMap.js +23 -0
- package/distr/Common/ModelPath/Map/AbsoluteModelPathMap.js.map +1 -0
- package/distr/Common/ModelPath/Map/Map2.js +99 -0
- package/distr/Common/ModelPath/Map/Map2.js.map +1 -0
- package/distr/Common/ModelPath/Map/ModelPathMap.js +23 -0
- package/distr/Common/ModelPath/Map/ModelPathMap.js.map +1 -0
- package/distr/Common/ModelPath/ModelPath.js +476 -0
- package/distr/Common/ModelPath/ModelPath.js.map +1 -0
- package/distr/Common/ModelPath/ModelPathBuilder.js +42 -0
- package/distr/Common/ModelPath/ModelPathBuilder.js.map +1 -0
- package/distr/Common/ModelPath/ModelPathHelper.js +34 -0
- package/distr/Common/ModelPath/ModelPathHelper.js.map +1 -0
- package/distr/Common/ModelPath/PathMatcher.js +95 -0
- package/distr/Common/ModelPath/PathMatcher.js.map +1 -0
- package/distr/Common/ModelPath/PathSplitHelper.js +21 -0
- package/distr/Common/ModelPath/PathSplitHelper.js.map +1 -0
- package/distr/Common/ModelPath/Set/AbsoluteModelPathSet.js +31 -0
- package/distr/Common/ModelPath/Set/AbsoluteModelPathSet.js.map +1 -0
- package/distr/Common/ModelPath/Set/AbsoluteResolvedModelPathSet.js +31 -0
- package/distr/Common/ModelPath/Set/AbsoluteResolvedModelPathSet.js.map +1 -0
- package/distr/Common/ModelPath/Set/ModelPathSet.js +31 -0
- package/distr/Common/ModelPath/Set/ModelPathSet.js.map +1 -0
- package/distr/Common/ModelPath/Set/Set2.js +59 -0
- package/distr/Common/ModelPath/Set/Set2.js.map +1 -0
- package/distr/Common/NidusClient/ContextualNidusClient/ContextualNidusClient.js +33 -0
- package/distr/Common/NidusClient/ContextualNidusClient/ContextualNidusClient.js.map +1 -0
- package/distr/Common/NidusClient/ContextualNidusClient/IContextualNidusClient.js +6 -0
- package/distr/Common/NidusClient/ContextualNidusClient/IContextualNidusClient.js.map +1 -0
- package/distr/Common/NidusClient/Fakes/CreateUniqueNidusEntryId.js +11 -0
- package/distr/Common/NidusClient/Fakes/CreateUniqueNidusEntryId.js.map +1 -0
- package/distr/Common/NidusClient/Fakes/FakeNidusClient.js +66 -0
- package/distr/Common/NidusClient/Fakes/FakeNidusClient.js.map +1 -0
- package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js +108 -0
- package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js.map +1 -0
- package/distr/Common/NidusClient/INidusClient.js +14 -0
- package/distr/Common/NidusClient/INidusClient.js.map +1 -0
- package/distr/Common/NidusClient/NidusClientContext.js +34 -0
- package/distr/Common/NidusClient/NidusClientContext.js.map +1 -0
- package/distr/Common/NidusClient/NidusClientImpl.js +55 -0
- package/distr/Common/NidusClient/NidusClientImpl.js.map +1 -0
- package/distr/Common/PathConstants.js +11 -0
- package/distr/Common/PathConstants.js.map +1 -0
- package/distr/Common/PicklistApiClient/IPicklistApiClient.js +6 -0
- package/distr/Common/PicklistApiClient/IPicklistApiClient.js.map +1 -0
- package/distr/Common/PicklistApiClient/PicklistApiClient.js +31 -0
- package/distr/Common/PicklistApiClient/PicklistApiClient.js.map +1 -0
- package/distr/Common/PicklistApiClient/PicklistRequestV2Builder.js +36 -0
- package/distr/Common/PicklistApiClient/PicklistRequestV2Builder.js.map +1 -0
- package/distr/Common/PicklistApiClient/Serializers/DigestFilterColumnSerializer.js +53 -0
- package/distr/Common/PicklistApiClient/Serializers/DigestFilterColumnSerializer.js.map +1 -0
- package/distr/Common/PicklistApiClient/Serializers/DigestLogicalFilterSerializer.js +37 -0
- package/distr/Common/PicklistApiClient/Serializers/DigestLogicalFilterSerializer.js.map +1 -0
- package/distr/Common/PicklistApiClient/Types/PicklistRequestV2.js +6 -0
- package/distr/Common/PicklistApiClient/Types/PicklistRequestV2.js.map +1 -0
- package/distr/Common/PicklistApiClient/Types/PicklistResultV2.js +6 -0
- package/distr/Common/PicklistApiClient/Types/PicklistResultV2.js.map +1 -0
- package/distr/Common/RngSchemeTypes/types.js +6 -0
- package/distr/Common/RngSchemeTypes/types.js.map +1 -0
- package/distr/Common/StringArrayKey.js +26 -0
- package/distr/Common/StringArrayKey.js.map +1 -0
- package/distr/Common/TextExtractor/TextExtractorTypes.js +6 -0
- package/distr/Common/TextExtractor/TextExtractorTypes.js.map +1 -0
- package/distr/Common/TypingUtils.js +118 -0
- package/distr/Common/TypingUtils.js.map +1 -0
- package/distr/Common/UUID.js +14 -0
- package/distr/Common/UUID.js.map +1 -0
- package/distr/Common/UseAsyncEffect.js +20 -0
- package/distr/Common/UseAsyncEffect.js.map +1 -0
- package/distr/Common/UseShowOnce.js +60 -0
- package/distr/Common/UseShowOnce.js.map +1 -0
- package/distr/Common/UseTypedSelector.js +10 -0
- package/distr/Common/UseTypedSelector.js.map +1 -0
- package/distr/Common/WellKnownDirectories.js +14 -0
- package/distr/Common/WellKnownDirectories.js.map +1 -0
- package/distr/Common/hashUtils.js +14 -0
- package/distr/Common/hashUtils.js.map +1 -0
- package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js +77 -0
- package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js.map +1 -0
- package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js +14 -0
- package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Engine/AcquireFormEngine.js +22 -0
- package/distr/Tools/src/BuildTasks/Engine/AcquireFormEngine.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js +88 -0
- package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js +82 -0
- package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Engine/EngineSource.js +10 -0
- package/distr/Tools/src/BuildTasks/Engine/EngineSource.js.map +1 -0
- package/distr/Tools/src/BuildTasks/EngineStructureUtils.js +42 -0
- package/distr/Tools/src/BuildTasks/EngineStructureUtils.js.map +1 -0
- package/distr/Tools/src/BuildTasks/EngineVersionUtils.js +30 -0
- package/distr/Tools/src/BuildTasks/EngineVersionUtils.js.map +1 -0
- package/distr/Tools/src/BuildTasks/FSTask.js +67 -0
- package/distr/Tools/src/BuildTasks/FSTask.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Form/CompileForm.js +52 -0
- package/distr/Tools/src/BuildTasks/Form/CompileForm.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Form/GenerateForm.js +44 -0
- package/distr/Tools/src/BuildTasks/Form/GenerateForm.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js +37 -0
- package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js +25 -0
- package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js +31 -0
- package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js +27 -0
- package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js +95 -0
- package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js +126 -0
- package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js +174 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js +121 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ProcessSugarWorker.js +45 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ProcessSugarWorker.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js +52 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js +49 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js +19 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js.map +1 -0
- package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js +64 -0
- package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js.map +1 -0
- package/distr/Tools/src/BuildTasks/ProcessUtils/ShellProcessHandle.js +84 -0
- package/distr/Tools/src/BuildTasks/ProcessUtils/ShellProcessHandle.js.map +1 -0
- package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js +174 -0
- package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js.map +1 -0
- package/distr/Tools/src/BuildTasks/ReadFormSource.js +112 -0
- package/distr/Tools/src/BuildTasks/ReadFormSource.js.map +1 -0
- package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +107 -0
- package/distr/Tools/src/BuildTasks/ResolveFormInfo.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Version.js +41 -0
- package/distr/Tools/src/BuildTasks/Version.js.map +1 -0
- package/distr/Tools/src/BuildTasks/WriteFormMeta.js +27 -0
- package/distr/Tools/src/BuildTasks/WriteFormMeta.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js +28 -0
- package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js +169 -0
- package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildForms/ClearSourceMapForProduction.js +24 -0
- package/distr/Tools/src/CLICommands/BuildForms/ClearSourceMapForProduction.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +234 -0
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/BuildLogsWebsocketController.js +36 -0
- package/distr/Tools/src/CLICommands/BuildServer/BuildLogsWebsocketController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js +112 -0
- package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +158 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +94 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +129 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerCandyWidgetController.js +45 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerCandyWidgetController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsController.js +76 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js +67 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +65 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js +117 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js +22 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js +96 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +231 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/CandyWidgetDevServer.js +70 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/CandyWidgetDevServer.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ClientJsDevServer.js +57 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ClientJsDevServer.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/EngineDevServer.js +67 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/EngineDevServer.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ReportGeneratorErrorToPageBody.js +21 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ReportGeneratorErrorToPageBody.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +52 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorker.js +80 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorker.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorkerFactory.js +31 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorkerFactory.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IInputFileSystem.js +6 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IInputFileSystem.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IWatchFileSystem.js +6 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IWatchFileSystem.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js +184 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +213 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js +28 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.js +6 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js +110 -0
- package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/StdStreamsIntercepter.js +50 -0
- package/distr/Tools/src/CLICommands/BuildServer/StdStreamsIntercepter.js.map +1 -0
- package/distr/Tools/src/CLICommands/CommonOptions/BuildDebugOnlyOption.js +19 -0
- package/distr/Tools/src/CLICommands/CommonOptions/BuildDebugOnlyOption.js.map +1 -0
- package/distr/Tools/src/CLICommands/CommonOptions/CommonOptionDefintions.js +30 -0
- package/distr/Tools/src/CLICommands/CommonOptions/CommonOptionDefintions.js.map +1 -0
- package/distr/Tools/src/CLICommands/CommonOptions/CommonOptions.js +6 -0
- package/distr/Tools/src/CLICommands/CommonOptions/CommonOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js +163 -0
- package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +112 -0
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js.map +1 -0
- package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js +34 -0
- package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js +50 -0
- package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js.map +1 -0
- package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js +54 -0
- package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js.map +1 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/autocalc/{gfv}./320/232/320/241.candy.js.kclang +0 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/converters/{gfv}.AfterMerge.xslt +11 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/converters/{gfv}.BeforePreload.xslt +11 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/converters/{gfv}.fufPatcher.xslt +11 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/converters/{gfv}.outer.inner.json +1 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/fetchfunctions/{gfv}.fetchfunctions.js +2 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/fetchfunctions/{gfv}.fetchfunctions.js.map +1 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/form.json +12 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/helpers/addPril1.txt +6 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/presentations.json +8 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/schemas/{gfv}.0.rng.xml +20 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/sugar/index.sugar.xml +10 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/browser/Smoke.test.js +16 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/browser/Smoke.test.js.map +1 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/ui/DemoTest.test.js +23 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/ui/DemoTest.test.js.map +1 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/validations/validations.KC.kclang +0 -0
- package/distr/Tools/src/CLICommands/InitForm/InitFormOptions.js +34 -0
- package/distr/Tools/src/CLICommands/InitForm/InitFormOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +117 -0
- package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js.map +1 -0
- package/distr/Tools/src/CLICommands/Localization/LocalizationOptions.js +44 -0
- package/distr/Tools/src/CLICommands/Localization/LocalizationOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/Localization/RunLocalization.js +73 -0
- package/distr/Tools/src/CLICommands/Localization/RunLocalization.js.map +1 -0
- package/distr/Tools/src/CLICommands/RenameFiles/RenameFilesOptions.js +25 -0
- package/distr/Tools/src/CLICommands/RenameFiles/RenameFilesOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js +38 -0
- package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js.map +1 -0
- package/distr/Tools/src/CLICommands/SugarExtractor/ExtractTextsFromSugarController.js +36 -0
- package/distr/Tools/src/CLICommands/SugarExtractor/ExtractTextsFromSugarController.js.map +1 -0
- package/distr/Tools/src/CLICommands/SugarExtractor/Utils.js +50 -0
- package/distr/Tools/src/CLICommands/SugarExtractor/Utils.js.map +1 -0
- package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +144 -0
- package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js.map +1 -0
- package/distr/Tools/src/CLICommands/UpgradeForm/UpgradeFormOptions.js +78 -0
- package/distr/Tools/src/CLICommands/UpgradeForm/UpgradeFormOptions.js.map +1 -0
- package/distr/Tools/src/CandyCLI.js +144 -0
- package/distr/Tools/src/CandyCLI.js.map +1 -0
- package/distr/Tools/src/CheckNodeJsVersion.js +32 -0
- package/distr/Tools/src/CheckNodeJsVersion.js.map +1 -0
- package/distr/Tools/src/Commons/ApiClient/ToolsApiClient.js +28 -0
- package/distr/Tools/src/Commons/ApiClient/ToolsApiClient.js.map +1 -0
- package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js +93 -0
- package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js.map +1 -0
- package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplicationContext.js +24 -0
- package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplicationContext.js.map +1 -0
- package/distr/Tools/src/Commons/ErrorUntyped.js +6 -0
- package/distr/Tools/src/Commons/ErrorUntyped.js.map +1 -0
- package/distr/Tools/src/Commons/EventObject.js +74 -0
- package/distr/Tools/src/Commons/EventObject.js.map +1 -0
- package/distr/Tools/src/Commons/ExecUtils.js +38 -0
- package/distr/Tools/src/Commons/ExecUtils.js.map +1 -0
- package/distr/Tools/src/Commons/ExtractGfvsFromFileName.js +21 -0
- package/distr/Tools/src/Commons/ExtractGfvsFromFileName.js.map +1 -0
- package/distr/Tools/src/Commons/FormGlobsUtils.js +137 -0
- package/distr/Tools/src/Commons/FormGlobsUtils.js.map +1 -0
- package/distr/Tools/src/Commons/FormLocationInfo.js +6 -0
- package/distr/Tools/src/Commons/FormLocationInfo.js.map +1 -0
- package/distr/Tools/src/Commons/FsUtils.js +35 -0
- package/distr/Tools/src/Commons/FsUtils.js.map +1 -0
- package/distr/Tools/src/Commons/GetCpuLimits.js +64 -0
- package/distr/Tools/src/Commons/GetCpuLimits.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js +38 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js +57 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/NotFoundWebError.js +15 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/NotFoundWebError.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/CookieParamParamBinder.js +18 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/CookieParamParamBinder.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/IParamBinder.js +6 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/IParamBinder.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/JsonBodyParamBinder.js +14 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/JsonBodyParamBinder.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/StringBodyParamBinder.js +17 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/StringBodyParamBinder.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlParamBinder.js +22 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlParamBinder.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlQueryParamBinder.js +20 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlQueryParamBinder.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js +46 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomActionResultHandler.js +13 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomActionResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js +18 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js +13 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js +13 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/IResultHandler.js +6 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/IResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js +13 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js +13 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js +113 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results.js +24 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js +106 -0
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js +22 -0
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js.map +1 -0
- package/distr/Tools/src/Commons/Locks/Lock.js +24 -0
- package/distr/Tools/src/Commons/Locks/Lock.js.map +1 -0
- package/distr/Tools/src/Commons/Locks/LockHandle.js +17 -0
- package/distr/Tools/src/Commons/Locks/LockHandle.js.map +1 -0
- package/distr/Tools/src/Commons/Locks/ReadWriteLockCollection.js +31 -0
- package/distr/Tools/src/Commons/Locks/ReadWriteLockCollection.js.map +1 -0
- package/distr/Tools/src/Commons/Logging/ELKLogger.js +56 -0
- package/distr/Tools/src/Commons/Logging/ELKLogger.js.map +1 -0
- package/distr/Tools/src/Commons/Logging/ILogger.js +25 -0
- package/distr/Tools/src/Commons/Logging/ILogger.js.map +1 -0
- package/distr/Tools/src/Commons/Logging/InMemoryLogger.js +61 -0
- package/distr/Tools/src/Commons/Logging/InMemoryLogger.js.map +1 -0
- package/distr/Tools/src/Commons/Logging/Logger.js +78 -0
- package/distr/Tools/src/Commons/Logging/Logger.js.map +1 -0
- package/distr/Tools/src/Commons/Logging/StaticLogger.js +37 -0
- package/distr/Tools/src/Commons/Logging/StaticLogger.js.map +1 -0
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.d.js +2 -0
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.d.js.map +1 -0
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js +152 -0
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js.map +1 -0
- package/distr/Tools/src/Commons/PathPattern.js +42 -0
- package/distr/Tools/src/Commons/PathPattern.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/AggregatedError.js +16 -0
- package/distr/Tools/src/Commons/TasksCore/AggregatedError.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/BuildTask.js +6 -0
- package/distr/Tools/src/Commons/TasksCore/BuildTask.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js +668 -0
- package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js +77 -0
- package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/EmptyProducer.js +20 -0
- package/distr/Tools/src/Commons/TasksCore/EmptyProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/FileSystemEntriesProducer.js +48 -0
- package/distr/Tools/src/Commons/TasksCore/FileSystemEntriesProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/FileValueProducer.js +45 -0
- package/distr/Tools/src/Commons/TasksCore/FileValueProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/FixedDirectoryEntriesProducer.js +25 -0
- package/distr/Tools/src/Commons/TasksCore/FixedDirectoryEntriesProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/Observe.js +35 -0
- package/distr/Tools/src/Commons/TasksCore/Observe.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/SingleValueProducer.js +29 -0
- package/distr/Tools/src/Commons/TasksCore/SingleValueProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TimingUtils.js +13 -0
- package/distr/Tools/src/Commons/TimingUtils.js.map +1 -0
- package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +180 -0
- package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js.map +1 -0
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +145 -0
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js.map +1 -0
- package/distr/Tools/src/FormWebpackConfiguration/variables.less +132 -0
- package/distr/Tools/src/GenerateReadMe.js +54 -0
- package/distr/Tools/src/GenerateReadMe.js.map +1 -0
- package/distr/Tools/src/Keys/localhost-key.pem +116 -0
- package/distr/Tools/src/Keys/localhost.pem +35 -0
- package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +2 -0
- package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js.LICENSE.txt +49 -0
- package/distr/Tools/src/LocalServerFrontEndDist/favicon-16x16.png +0 -0
- package/distr/Tools/src/LocalServerFrontEndDist/favicon-32x32.png +0 -0
- package/distr/Tools/src/LocalServerFrontEndDist/favicon.ico +0 -0
- package/distr/Tools/src/LocalServerFrontEndDist/index.html +1 -0
- package/distr/Tools/src/LocalServerFrontEndDist/index.js +3 -0
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.LICENSE.txt +60 -0
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -0
- package/distr/Tools/src/Options/CandyToolOptions.js +20 -0
- package/distr/Tools/src/Options/CandyToolOptions.js.map +1 -0
- package/distr/Tools/src/ReadFarmConfig.js +18 -0
- package/distr/Tools/src/ReadFarmConfig.js.map +1 -0
- package/distr/Tools/src/SelfUpdate.js +121 -0
- package/distr/Tools/src/SelfUpdate.js.map +1 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +1722 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.LICENSE.txt +1 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +1076 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/jquery-1.11.3.min.js +3328 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/jquery-1.11.3.min.js.map +1 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/polyfill.min.js +6517 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/polyfill.min.js.map +1 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/testing.min.js +222 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/testing.min.js.map +1 -0
- package/distr/Tools/src/StaticFilesForResourcesDir/jquery-1.11.3.min.js +3328 -0
- package/distr/Tools/src/StaticFilesForResourcesDir/jquery-1.11.3.min.js.map +1 -0
- package/distr/Tools/src/StaticFilesForResourcesDir/polyfill.min.js +6517 -0
- package/distr/Tools/src/StaticFilesForResourcesDir/polyfill.min.js.map +1 -0
- package/distr/Tools/src/StaticFilesForResourcesDir/testing.min.js +222 -0
- package/distr/Tools/src/StaticFilesForResourcesDir/testing.min.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.AcquirePublishedGeneratorTask = void 0;
|
|
8
|
+
var _child_process = require("child_process");
|
|
9
|
+
var path = _interopRequireWildcard(require("path"));
|
|
10
|
+
var _fsExtra = require("fs-extra");
|
|
11
|
+
var _pLimit = _interopRequireDefault(require("p-limit"));
|
|
12
|
+
var _StaticLogger = require("../../Commons/Logging/StaticLogger");
|
|
13
|
+
var _ChainableValueProducer = require("../../Commons/TasksCore/ChainableValueProducer");
|
|
14
|
+
var _TypingUtils = require("../../../../Common/TypingUtils");
|
|
15
|
+
var _CreateAsyncGenerator = require("./GeneratorWorker/CreateAsyncGenerator");
|
|
16
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
17
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
18
|
+
class AcquirePublishedGeneratorTask extends _ChainableValueProducer.ObservableValueProducerBase {
|
|
19
|
+
constructor(version, candyModulesDirectory, useVersionFromCache, logger = (0, _StaticLogger.getLogger)()) {
|
|
20
|
+
super();
|
|
21
|
+
this.logger = void 0;
|
|
22
|
+
this.version = void 0;
|
|
23
|
+
this.cacheDirectory = void 0;
|
|
24
|
+
this.acquiredGenerator = void 0;
|
|
25
|
+
this.useVersionFromCache = void 0;
|
|
26
|
+
this.acquireLimit = (0, _pLimit.default)(1);
|
|
27
|
+
this.logger = logger.withPrefix("GENERATOR");
|
|
28
|
+
this.version = version;
|
|
29
|
+
this.cacheDirectory = candyModulesDirectory;
|
|
30
|
+
this.useVersionFromCache = useVersionFromCache;
|
|
31
|
+
}
|
|
32
|
+
async getCurrentValue() {
|
|
33
|
+
if (this.acquiredGenerator == undefined) {
|
|
34
|
+
await this.acquireLimit(async () => {
|
|
35
|
+
if (this.acquiredGenerator == undefined) {
|
|
36
|
+
const generatorDirectory = path.join(this.cacheDirectory, "generators", this.version);
|
|
37
|
+
const useGeneratorFromCache = this.useVersionFromCache && (await (0, _fsExtra.pathExists)(generatorDirectory));
|
|
38
|
+
if (!useGeneratorFromCache) {
|
|
39
|
+
await this.prepareGeneratorDirectory(generatorDirectory);
|
|
40
|
+
this.logger.log(`Acquiring generator ${this.version}`);
|
|
41
|
+
await this.execute(generatorDirectory, `npm install @kontur.candy/generator@${this.version}`);
|
|
42
|
+
}
|
|
43
|
+
const result = (0, _CreateAsyncGenerator.createAsyncGenerator)(path.join(generatorDirectory, "node_modules", "@kontur.candy", "generator"), false, false);
|
|
44
|
+
this.acquiredGenerator = result;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
if (this.acquiredGenerator == undefined) {
|
|
49
|
+
throw new Error("InvalidProgramState");
|
|
50
|
+
}
|
|
51
|
+
return this.acquiredGenerator;
|
|
52
|
+
}
|
|
53
|
+
async beginListening() {
|
|
54
|
+
// Нет предков и тут нечего наблюдать
|
|
55
|
+
}
|
|
56
|
+
async stopListening() {
|
|
57
|
+
// Нет предков и тут нечего наблюдать
|
|
58
|
+
}
|
|
59
|
+
async prepareGeneratorDirectory(generatorDirectory) {
|
|
60
|
+
await (0, _fsExtra.ensureDir)(generatorDirectory);
|
|
61
|
+
await (0, _fsExtra.outputFile)(path.resolve(generatorDirectory, "package.json"), `{ "name": "generator", "version": "1.0.0", "description": "Generator", "author": "" }`);
|
|
62
|
+
}
|
|
63
|
+
execute(generatorDirectory, command) {
|
|
64
|
+
const workingDirectory = generatorDirectory;
|
|
65
|
+
const [executable, ...executableArguments] = command.split(" ");
|
|
66
|
+
return new Promise((resolve, rejectPromise) => {
|
|
67
|
+
const {
|
|
68
|
+
npm_config_registry,
|
|
69
|
+
...env
|
|
70
|
+
} = process.env;
|
|
71
|
+
const watchProcess = (0, _child_process.spawn)(executable !== null && executable !== void 0 ? executable : (0, _TypingUtils.reject)(), executableArguments, {
|
|
72
|
+
cwd: workingDirectory,
|
|
73
|
+
shell: true,
|
|
74
|
+
windowsHide: true,
|
|
75
|
+
stdio: "pipe",
|
|
76
|
+
env: env
|
|
77
|
+
});
|
|
78
|
+
watchProcess.stdout.on("data", data => {
|
|
79
|
+
this.logger.verbose(data.toString());
|
|
80
|
+
});
|
|
81
|
+
watchProcess.stderr.on("data", data => {
|
|
82
|
+
this.logger.verbose(data.toString());
|
|
83
|
+
});
|
|
84
|
+
watchProcess.on("exit", code => {
|
|
85
|
+
if (code !== 0) {
|
|
86
|
+
rejectPromise(new Error(`Command ${command} exited with code ${code}`));
|
|
87
|
+
} else {
|
|
88
|
+
resolve();
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
exports.AcquirePublishedGeneratorTask = AcquirePublishedGeneratorTask;
|
|
95
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2hpbGRfcHJvY2VzcyIsInJlcXVpcmUiLCJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZnNFeHRyYSIsIl9wTGltaXQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1N0YXRpY0xvZ2dlciIsIl9DaGFpbmFibGVWYWx1ZVByb2R1Y2VyIiwiX1R5cGluZ1V0aWxzIiwiX0NyZWF0ZUFzeW5jR2VuZXJhdG9yIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiQWNxdWlyZVB1Ymxpc2hlZEdlbmVyYXRvclRhc2siLCJPYnNlcnZhYmxlVmFsdWVQcm9kdWNlckJhc2UiLCJjb25zdHJ1Y3RvciIsInZlcnNpb24iLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJ1c2VWZXJzaW9uRnJvbUNhY2hlIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIiwiY2FjaGVEaXJlY3RvcnkiLCJhY3F1aXJlZEdlbmVyYXRvciIsImFjcXVpcmVMaW1pdCIsInBMaW1pdCIsIndpdGhQcmVmaXgiLCJnZXRDdXJyZW50VmFsdWUiLCJ1bmRlZmluZWQiLCJnZW5lcmF0b3JEaXJlY3RvcnkiLCJqb2luIiwidXNlR2VuZXJhdG9yRnJvbUNhY2hlIiwicGF0aEV4aXN0cyIsInByZXBhcmVHZW5lcmF0b3JEaXJlY3RvcnkiLCJsb2ciLCJleGVjdXRlIiwicmVzdWx0IiwiY3JlYXRlQXN5bmNHZW5lcmF0b3IiLCJFcnJvciIsImJlZ2luTGlzdGVuaW5nIiwic3RvcExpc3RlbmluZyIsImVuc3VyZURpciIsIm91dHB1dEZpbGUiLCJyZXNvbHZlIiwiY29tbWFuZCIsIndvcmtpbmdEaXJlY3RvcnkiLCJleGVjdXRhYmxlIiwiZXhlY3V0YWJsZUFyZ3VtZW50cyIsInNwbGl0IiwiUHJvbWlzZSIsInJlamVjdFByb21pc2UiLCJucG1fY29uZmlnX3JlZ2lzdHJ5IiwiZW52IiwicHJvY2VzcyIsIndhdGNoUHJvY2VzcyIsInNwYXduIiwicmVqZWN0IiwiY3dkIiwic2hlbGwiLCJ3aW5kb3dzSGlkZSIsInN0ZGlvIiwic3Rkb3V0Iiwib24iLCJkYXRhIiwidmVyYm9zZSIsInRvU3RyaW5nIiwic3RkZXJyIiwiY29kZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZVB1Ymxpc2hlZEdlbmVyYXRvclRhc2sudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3Bhd24gfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBlbnN1cmVEaXIsIG91dHB1dEZpbGUsIHBhdGhFeGlzdHMgfSBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcblxuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7IE9ic2VydmFibGVWYWx1ZVByb2R1Y2VyQmFzZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9DaGFpbmFibGVWYWx1ZVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBGb3JtR2VuZXJhdG9yIH0gZnJvbSBcIi4uL0Zvcm0vR2VuZXJhdGVGb3JtXCI7XG5pbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1R5cGluZ1V0aWxzXCI7XG5cbmltcG9ydCB7IGNyZWF0ZUFzeW5jR2VuZXJhdG9yIH0gZnJvbSBcIi4vR2VuZXJhdG9yV29ya2VyL0NyZWF0ZUFzeW5jR2VuZXJhdG9yXCI7XG5cbmV4cG9ydCBjbGFzcyBBY3F1aXJlUHVibGlzaGVkR2VuZXJhdG9yVGFzayBleHRlbmRzIE9ic2VydmFibGVWYWx1ZVByb2R1Y2VyQmFzZTxGb3JtR2VuZXJhdG9yPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IElMb2dnZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjYWNoZURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgYWNxdWlyZWRHZW5lcmF0b3I/OiBGb3JtR2VuZXJhdG9yO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlVmVyc2lvbkZyb21DYWNoZTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjcXVpcmVMaW1pdCA9IHBMaW1pdCgxKTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgdmVyc2lvbjogc3RyaW5nLFxuICAgICAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICAgICAgdXNlVmVyc2lvbkZyb21DYWNoZTogYm9vbGVhbixcbiAgICAgICAgbG9nZ2VyOiBJTG9nZ2VyID0gZ2V0TG9nZ2VyKClcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5sb2dnZXIgPSBsb2dnZXIud2l0aFByZWZpeChcIkdFTkVSQVRPUlwiKTtcbiAgICAgICAgdGhpcy52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgdGhpcy5jYWNoZURpcmVjdG9yeSA9IGNhbmR5TW9kdWxlc0RpcmVjdG9yeTtcbiAgICAgICAgdGhpcy51c2VWZXJzaW9uRnJvbUNhY2hlID0gdXNlVmVyc2lvbkZyb21DYWNoZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q3VycmVudFZhbHVlKCk6IFByb21pc2U8Rm9ybUdlbmVyYXRvcj4ge1xuICAgICAgICBpZiAodGhpcy5hY3F1aXJlZEdlbmVyYXRvciA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYWNxdWlyZUxpbWl0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3F1aXJlZEdlbmVyYXRvciA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2VuZXJhdG9yRGlyZWN0b3J5ID0gcGF0aC5qb2luKHRoaXMuY2FjaGVEaXJlY3RvcnksIFwiZ2VuZXJhdG9yc1wiLCB0aGlzLnZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1c2VHZW5lcmF0b3JGcm9tQ2FjaGUgPSB0aGlzLnVzZVZlcnNpb25Gcm9tQ2FjaGUgJiYgKGF3YWl0IHBhdGhFeGlzdHMoZ2VuZXJhdG9yRGlyZWN0b3J5KSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2VHZW5lcmF0b3JGcm9tQ2FjaGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucHJlcGFyZUdlbmVyYXRvckRpcmVjdG9yeShnZW5lcmF0b3JEaXJlY3RvcnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKGBBY3F1aXJpbmcgZ2VuZXJhdG9yICR7dGhpcy52ZXJzaW9ufWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5leGVjdXRlKGdlbmVyYXRvckRpcmVjdG9yeSwgYG5wbSBpbnN0YWxsIEBrb250dXIuY2FuZHkvZ2VuZXJhdG9yQCR7dGhpcy52ZXJzaW9ufWApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY3JlYXRlQXN5bmNHZW5lcmF0b3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4oZ2VuZXJhdG9yRGlyZWN0b3J5LCBcIm5vZGVfbW9kdWxlc1wiLCBcIkBrb250dXIuY2FuZHlcIiwgXCJnZW5lcmF0b3JcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWNxdWlyZWRHZW5lcmF0b3IgPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYWNxdWlyZWRHZW5lcmF0b3IgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkUHJvZ3JhbVN0YXRlXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmFjcXVpcmVkR2VuZXJhdG9yO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBiZWdpbkxpc3RlbmluZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8g0J3QtdGCINC/0YDQtdC00LrQvtCyINC4INGC0YPRgiDQvdC10YfQtdCz0L4g0L3QsNCx0LvRjtC00LDRgtGMXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIHN0b3BMaXN0ZW5pbmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIC8vINCd0LXRgiDQv9GA0LXQtNC60L7QsiDQuCDRgtGD0YIg0L3QtdGH0LXQs9C+INC90LDQsdC70Y7QtNCw0YLRjFxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgcHJlcGFyZUdlbmVyYXRvckRpcmVjdG9yeShnZW5lcmF0b3JEaXJlY3Rvcnk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCBlbnN1cmVEaXIoZ2VuZXJhdG9yRGlyZWN0b3J5KTtcbiAgICAgICAgYXdhaXQgb3V0cHV0RmlsZShcbiAgICAgICAgICAgIHBhdGgucmVzb2x2ZShnZW5lcmF0b3JEaXJlY3RvcnksIFwicGFja2FnZS5qc29uXCIpLFxuICAgICAgICAgICAgYHsgXCJuYW1lXCI6IFwiZ2VuZXJhdG9yXCIsIFwidmVyc2lvblwiOiBcIjEuMC4wXCIsIFwiZGVzY3JpcHRpb25cIjogXCJHZW5lcmF0b3JcIiwgXCJhdXRob3JcIjogXCJcIiB9YFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXhlY3V0ZShnZW5lcmF0b3JEaXJlY3Rvcnk6IHN0cmluZywgY29tbWFuZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHdvcmtpbmdEaXJlY3RvcnkgPSBnZW5lcmF0b3JEaXJlY3Rvcnk7XG4gICAgICAgIGNvbnN0IFtleGVjdXRhYmxlLCAuLi5leGVjdXRhYmxlQXJndW1lbnRzXSA9IGNvbW1hbmQuc3BsaXQoXCIgXCIpO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdFByb21pc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgbnBtX2NvbmZpZ19yZWdpc3RyeSwgLi4uZW52IH0gPSBwcm9jZXNzLmVudjtcbiAgICAgICAgICAgIGNvbnN0IHdhdGNoUHJvY2VzcyA9IHNwYXduKGV4ZWN1dGFibGUgPz8gcmVqZWN0KCksIGV4ZWN1dGFibGVBcmd1bWVudHMsIHtcbiAgICAgICAgICAgICAgICBjd2Q6IHdvcmtpbmdEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgc2hlbGw6IHRydWUsXG4gICAgICAgICAgICAgICAgd2luZG93c0hpZGU6IHRydWUsXG4gICAgICAgICAgICAgICAgc3RkaW86IFwicGlwZVwiLFxuICAgICAgICAgICAgICAgIGVudjogZW52LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB3YXRjaFByb2Nlc3Muc3Rkb3V0Lm9uKFwiZGF0YVwiLCAoZGF0YTogQnVmZmVyIHwgc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIudmVyYm9zZShkYXRhLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB3YXRjaFByb2Nlc3Muc3RkZXJyLm9uKFwiZGF0YVwiLCAoZGF0YTogQnVmZmVyIHwgc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIudmVyYm9zZShkYXRhLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB3YXRjaFByb2Nlc3Mub24oXCJleGl0XCIsIGNvZGUgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjb2RlICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdFByb21pc2UobmV3IEVycm9yKGBDb21tYW5kICR7Y29tbWFuZH0gZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsY0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsSUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsUUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBQyxzQkFBQSxDQUFBTCxPQUFBO0FBR0EsSUFBQU0sYUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sdUJBQUEsR0FBQVAsT0FBQTtBQUVBLElBQUFRLFlBQUEsR0FBQVIsT0FBQTtBQUVBLElBQUFTLHFCQUFBLEdBQUFULE9BQUE7QUFBOEUsU0FBQVUseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQVQsd0JBQUFTLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcquirePublishedGeneratorTask.js","names":["_child_process","require","path","_interopRequireWildcard","_fsExtra","_pLimit","_interopRequireDefault","_StaticLogger","_ChainableValueProducer","_TypingUtils","_CreateAsyncGenerator","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","AcquirePublishedGeneratorTask","ObservableValueProducerBase","constructor","version","candyModulesDirectory","useVersionFromCache","logger","getLogger","cacheDirectory","acquiredGenerator","acquireLimit","pLimit","withPrefix","getCurrentValue","undefined","generatorDirectory","join","useGeneratorFromCache","pathExists","prepareGeneratorDirectory","log","execute","result","createAsyncGenerator","Error","beginListening","stopListening","ensureDir","outputFile","resolve","command","workingDirectory","executable","executableArguments","split","Promise","rejectPromise","npm_config_registry","env","process","watchProcess","spawn","reject","cwd","shell","windowsHide","stdio","stdout","on","data","verbose","toString","stderr","code","exports"],"sources":["../../../../../src/BuildTasks/Generator/AcquirePublishedGeneratorTask.ts"],"sourcesContent":["import { spawn } from \"child_process\";\nimport * as path from \"path\";\n\nimport { ensureDir, outputFile, pathExists } from \"fs-extra\";\nimport pLimit from \"p-limit\";\n\nimport { ILogger } from \"../../Commons/Logging/ILogger\";\nimport { getLogger } from \"../../Commons/Logging/StaticLogger\";\nimport { ObservableValueProducerBase } from \"../../Commons/TasksCore/ChainableValueProducer\";\nimport { FormGenerator } from \"../Form/GenerateForm\";\nimport { reject } from \"../../../../Common/TypingUtils\";\n\nimport { createAsyncGenerator } from \"./GeneratorWorker/CreateAsyncGenerator\";\n\nexport class AcquirePublishedGeneratorTask extends ObservableValueProducerBase<FormGenerator> {\n private readonly logger: ILogger;\n private readonly version: string;\n private readonly cacheDirectory: string;\n private acquiredGenerator?: FormGenerator;\n private readonly useVersionFromCache: boolean;\n private readonly acquireLimit = pLimit(1);\n\n public constructor(\n version: string,\n candyModulesDirectory: string,\n useVersionFromCache: boolean,\n logger: ILogger = getLogger()\n ) {\n super();\n this.logger = logger.withPrefix(\"GENERATOR\");\n this.version = version;\n this.cacheDirectory = candyModulesDirectory;\n this.useVersionFromCache = useVersionFromCache;\n }\n\n public async getCurrentValue(): Promise<FormGenerator> {\n if (this.acquiredGenerator == undefined) {\n await this.acquireLimit(async () => {\n if (this.acquiredGenerator == undefined) {\n const generatorDirectory = path.join(this.cacheDirectory, \"generators\", this.version);\n const useGeneratorFromCache = this.useVersionFromCache && (await pathExists(generatorDirectory));\n\n if (!useGeneratorFromCache) {\n await this.prepareGeneratorDirectory(generatorDirectory);\n this.logger.log(`Acquiring generator ${this.version}`);\n await this.execute(generatorDirectory, `npm install @kontur.candy/generator@${this.version}`);\n }\n\n const result = createAsyncGenerator(\n path.join(generatorDirectory, \"node_modules\", \"@kontur.candy\", \"generator\"),\n false,\n false\n );\n this.acquiredGenerator = result;\n }\n });\n }\n if (this.acquiredGenerator == undefined) {\n throw new Error(\"InvalidProgramState\");\n }\n return this.acquiredGenerator;\n }\n\n protected async beginListening(): Promise<void> {\n // Нет предков и тут нечего наблюдать\n }\n\n protected async stopListening(): Promise<void> {\n // Нет предков и тут нечего наблюдать\n }\n\n private async prepareGeneratorDirectory(generatorDirectory: string): Promise<void> {\n await ensureDir(generatorDirectory);\n await outputFile(\n path.resolve(generatorDirectory, \"package.json\"),\n `{ \"name\": \"generator\", \"version\": \"1.0.0\", \"description\": \"Generator\", \"author\": \"\" }`\n );\n }\n\n private execute(generatorDirectory: string, command: string): Promise<void> {\n const workingDirectory = generatorDirectory;\n const [executable, ...executableArguments] = command.split(\" \");\n return new Promise<void>((resolve, rejectPromise) => {\n const { npm_config_registry, ...env } = process.env;\n const watchProcess = spawn(executable ?? reject(), executableArguments, {\n cwd: workingDirectory,\n shell: true,\n windowsHide: true,\n stdio: \"pipe\",\n env: env,\n });\n watchProcess.stdout.on(\"data\", (data: Buffer | string) => {\n this.logger.verbose(data.toString());\n });\n watchProcess.stderr.on(\"data\", (data: Buffer | string) => {\n this.logger.verbose(data.toString());\n });\n watchProcess.on(\"exit\", code => {\n if (code !== 0) {\n rejectPromise(new Error(`Command ${command} exited with code ${code}`));\n } else {\n resolve();\n }\n });\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.BuildGeneratorFromSourcesTask = void 0;
|
|
8
|
+
var _path = _interopRequireDefault(require("path"));
|
|
9
|
+
var _chokidar = require("chokidar");
|
|
10
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
11
|
+
var _pLimit = _interopRequireDefault(require("p-limit"));
|
|
12
|
+
var _ExecUtils = require("../../Commons/ExecUtils");
|
|
13
|
+
var _ILogger = require("../../Commons/Logging/ILogger");
|
|
14
|
+
var _StaticLogger = require("../../Commons/Logging/StaticLogger");
|
|
15
|
+
var _ChainableValueProducer = require("../../Commons/TasksCore/ChainableValueProducer");
|
|
16
|
+
var _EngineStructureUtils = require("../EngineStructureUtils");
|
|
17
|
+
var _ProcessUtils = require("../ProcessUtils/ProcessUtils");
|
|
18
|
+
var _IsWebpack = require("../ClientJS/IsWebpack5");
|
|
19
|
+
var _CreateAsyncGenerator = require("./GeneratorWorker/CreateAsyncGenerator");
|
|
20
|
+
const generatorBuildLimit = (0, _pLimit.default)(1);
|
|
21
|
+
class BuildGeneratorFromSourcesTask extends _ChainableValueProducer.ObservableValueProducerBase {
|
|
22
|
+
constructor(pathToEngineSources, logger = (0, _StaticLogger.getLogger)()) {
|
|
23
|
+
super();
|
|
24
|
+
this.pathToEngineSources = void 0;
|
|
25
|
+
this.logger = void 0;
|
|
26
|
+
this.useWatch = false;
|
|
27
|
+
this.currentGenerator = void 0;
|
|
28
|
+
this.buildProcess = void 0;
|
|
29
|
+
this.buildResultWatcher = void 0;
|
|
30
|
+
this.handleUpdate = async () => {
|
|
31
|
+
this.logger.log("Generator sources updated");
|
|
32
|
+
await this.emitUpdate((0, _CreateAsyncGenerator.createAsyncGenerator)(_path.default.join(this.pathToEngineSources, "Generator"), this.useWatch, this.useWatch));
|
|
33
|
+
};
|
|
34
|
+
this.logger = logger.withPrefix("GENERATOR");
|
|
35
|
+
this.pathToEngineSources = pathToEngineSources;
|
|
36
|
+
}
|
|
37
|
+
async getCurrentValue() {
|
|
38
|
+
return generatorBuildLimit(async () => {
|
|
39
|
+
if (this.currentGenerator != undefined) {
|
|
40
|
+
return this.currentGenerator;
|
|
41
|
+
}
|
|
42
|
+
if (this.useWatch) {
|
|
43
|
+
if (this.buildProcess == undefined) {
|
|
44
|
+
this.buildProcess = await this.runWatchProcessStarted();
|
|
45
|
+
this.buildResultWatcher = await this.createBuildResultWatcher(_path.default.join(this.pathToEngineSources, "Generator", "dist"));
|
|
46
|
+
this.currentGenerator = (0, _CreateAsyncGenerator.createAsyncGenerator)(_path.default.join(this.pathToEngineSources, "Generator"), this.useWatch, this.useWatch);
|
|
47
|
+
}
|
|
48
|
+
} else {
|
|
49
|
+
this.currentGenerator = await this.acquireGeneratorFromSources();
|
|
50
|
+
}
|
|
51
|
+
if (this.currentGenerator == undefined) {
|
|
52
|
+
throw new Error("InvalidProgramState");
|
|
53
|
+
}
|
|
54
|
+
return this.currentGenerator;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
async beginListening() {
|
|
58
|
+
this.useWatch = true;
|
|
59
|
+
}
|
|
60
|
+
async stopListening() {
|
|
61
|
+
if (this.buildProcess != undefined) {
|
|
62
|
+
try {
|
|
63
|
+
const buildProcess = this.buildProcess;
|
|
64
|
+
this.buildProcess = undefined;
|
|
65
|
+
await buildProcess.kill();
|
|
66
|
+
} catch (error) {
|
|
67
|
+
this.logger.error(`Failed to stop process: ${error}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (this.buildResultWatcher != undefined) {
|
|
71
|
+
this.buildResultWatcher.close();
|
|
72
|
+
}
|
|
73
|
+
this.useWatch = false;
|
|
74
|
+
}
|
|
75
|
+
async acquireGeneratorFromSources() {
|
|
76
|
+
const action = (0, _ILogger.buildActionBegin)(this.logger, "Build generator");
|
|
77
|
+
const buildDirectory = await this.getBuildDirectory();
|
|
78
|
+
await (0, _ExecUtils.execCommandAsync)(this.logger, `npm run generator:build`, {
|
|
79
|
+
cwd: buildDirectory
|
|
80
|
+
});
|
|
81
|
+
const result = (0, _CreateAsyncGenerator.createAsyncGenerator)(_path.default.join(this.pathToEngineSources, "Generator"), this.useWatch, this.useWatch);
|
|
82
|
+
action.complete();
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
85
|
+
async getBuildDirectory() {
|
|
86
|
+
return (await (0, _EngineStructureUtils.isNewEngineStructure)(this.pathToEngineSources)) ? _path.default.join(this.pathToEngineSources, "Generator") : this.pathToEngineSources;
|
|
87
|
+
}
|
|
88
|
+
async runWatchProcessStarted() {
|
|
89
|
+
this.logger.log("Start watch");
|
|
90
|
+
const buildDirectory = await this.getBuildDirectory();
|
|
91
|
+
const result = (await (0, _IsWebpack.isYarn)(buildDirectory)) ? _ProcessUtils.ProcessUtils.createShellProcess("yarn", ["generator:build", "--watch"], buildDirectory) : _ProcessUtils.ProcessUtils.createShellProcess("npm", ["run", "generator:build", "--", "--watch"], buildDirectory);
|
|
92
|
+
result.onStdOut.subscribe(data => {
|
|
93
|
+
this.logger.verbose(data.toString());
|
|
94
|
+
});
|
|
95
|
+
result.onStdErr.subscribe(data => {
|
|
96
|
+
this.logger.verbose(data.toString());
|
|
97
|
+
});
|
|
98
|
+
result.start();
|
|
99
|
+
await this.waitFirstCompilationCompleted(result);
|
|
100
|
+
this.logger.log("Successfully complied");
|
|
101
|
+
return result;
|
|
102
|
+
}
|
|
103
|
+
async waitFirstCompilationCompleted(result) {
|
|
104
|
+
await result.waitOutputIncludesString("Successfully compiled");
|
|
105
|
+
}
|
|
106
|
+
async createBuildResultWatcher(pathToGeneratorOutputDir) {
|
|
107
|
+
let maskToObserveGeneratorChanges;
|
|
108
|
+
if (await (0, _EngineStructureUtils.isOldGeneratorSourcesStructure)(this.pathToEngineSources)) {
|
|
109
|
+
maskToObserveGeneratorChanges = ["**/*.js"];
|
|
110
|
+
} else {
|
|
111
|
+
maskToObserveGeneratorChanges = ["Generator/src/**/*.js", "index.js"];
|
|
112
|
+
}
|
|
113
|
+
const watcher = (0, _chokidar.watch)(maskToObserveGeneratorChanges, {
|
|
114
|
+
ignoreInitial: true,
|
|
115
|
+
cwd: pathToGeneratorOutputDir,
|
|
116
|
+
ignorePermissionErrors: false,
|
|
117
|
+
usePolling: true
|
|
118
|
+
});
|
|
119
|
+
const handleAnyFsEventDebounced = _lodash.default.debounce(() => this.handleUpdate(), 500);
|
|
120
|
+
watcher.on("all", handleAnyFsEventDebounced);
|
|
121
|
+
watcher.on("error", handleAnyFsEventDebounced);
|
|
122
|
+
return watcher;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.BuildGeneratorFromSourcesTask = BuildGeneratorFromSourcesTask;
|
|
126
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2Nob2tpZGFyIiwiX2xvZGFzaCIsIl9wTGltaXQiLCJfRXhlY1V0aWxzIiwiX0lMb2dnZXIiLCJfU3RhdGljTG9nZ2VyIiwiX0NoYWluYWJsZVZhbHVlUHJvZHVjZXIiLCJfRW5naW5lU3RydWN0dXJlVXRpbHMiLCJfUHJvY2Vzc1V0aWxzIiwiX0lzV2VicGFjayIsIl9DcmVhdGVBc3luY0dlbmVyYXRvciIsImdlbmVyYXRvckJ1aWxkTGltaXQiLCJwTGltaXQiLCJCdWlsZEdlbmVyYXRvckZyb21Tb3VyY2VzVGFzayIsIk9ic2VydmFibGVWYWx1ZVByb2R1Y2VyQmFzZSIsImNvbnN0cnVjdG9yIiwicGF0aFRvRW5naW5lU291cmNlcyIsImxvZ2dlciIsImdldExvZ2dlciIsInVzZVdhdGNoIiwiY3VycmVudEdlbmVyYXRvciIsImJ1aWxkUHJvY2VzcyIsImJ1aWxkUmVzdWx0V2F0Y2hlciIsImhhbmRsZVVwZGF0ZSIsImxvZyIsImVtaXRVcGRhdGUiLCJjcmVhdGVBc3luY0dlbmVyYXRvciIsInBhdGgiLCJqb2luIiwid2l0aFByZWZpeCIsImdldEN1cnJlbnRWYWx1ZSIsInVuZGVmaW5lZCIsInJ1bldhdGNoUHJvY2Vzc1N0YXJ0ZWQiLCJjcmVhdGVCdWlsZFJlc3VsdFdhdGNoZXIiLCJhY3F1aXJlR2VuZXJhdG9yRnJvbVNvdXJjZXMiLCJFcnJvciIsImJlZ2luTGlzdGVuaW5nIiwic3RvcExpc3RlbmluZyIsImtpbGwiLCJlcnJvciIsImNsb3NlIiwiYWN0aW9uIiwiYnVpbGRBY3Rpb25CZWdpbiIsImJ1aWxkRGlyZWN0b3J5IiwiZ2V0QnVpbGREaXJlY3RvcnkiLCJleGVjQ29tbWFuZEFzeW5jIiwiY3dkIiwicmVzdWx0IiwiY29tcGxldGUiLCJpc05ld0VuZ2luZVN0cnVjdHVyZSIsImlzWWFybiIsIlByb2Nlc3NVdGlscyIsImNyZWF0ZVNoZWxsUHJvY2VzcyIsIm9uU3RkT3V0Iiwic3Vic2NyaWJlIiwiZGF0YSIsInZlcmJvc2UiLCJ0b1N0cmluZyIsIm9uU3RkRXJyIiwic3RhcnQiLCJ3YWl0Rmlyc3RDb21waWxhdGlvbkNvbXBsZXRlZCIsIndhaXRPdXRwdXRJbmNsdWRlc1N0cmluZyIsInBhdGhUb0dlbmVyYXRvck91dHB1dERpciIsIm1hc2tUb09ic2VydmVHZW5lcmF0b3JDaGFuZ2VzIiwiaXNPbGRHZW5lcmF0b3JTb3VyY2VzU3RydWN0dXJlIiwid2F0Y2hlciIsIndhdGNoIiwiaWdub3JlSW5pdGlhbCIsImlnbm9yZVBlcm1pc3Npb25FcnJvcnMiLCJ1c2VQb2xsaW5nIiwiaGFuZGxlQW55RnNFdmVudERlYm91bmNlZCIsIl8iLCJkZWJvdW5jZSIsIm9uIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL0dlbmVyYXRvci9CdWlsZEdlbmVyYXRvckZyb21Tb3VyY2VzVGFzay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGU1dhdGNoZXIgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IHdhdGNoIH0gZnJvbSBcImNob2tpZGFyXCI7XG5pbXBvcnQgXyBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgcExpbWl0IGZyb20gXCJwLWxpbWl0XCI7XG5cbmltcG9ydCB7IGV4ZWNDb21tYW5kQXN5bmMgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9FeGVjVXRpbHNcIjtcbmltcG9ydCB7IGJ1aWxkQWN0aW9uQmVnaW4sIElMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL0lMb2dnZXJcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlVmFsdWVQcm9kdWNlckJhc2UgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvQ2hhaW5hYmxlVmFsdWVQcm9kdWNlclwiO1xuaW1wb3J0IHsgaXNOZXdFbmdpbmVTdHJ1Y3R1cmUsIGlzT2xkR2VuZXJhdG9yU291cmNlc1N0cnVjdHVyZSB9IGZyb20gXCIuLi9FbmdpbmVTdHJ1Y3R1cmVVdGlsc1wiO1xuaW1wb3J0IHsgRm9ybUdlbmVyYXRvciB9IGZyb20gXCIuLi9Gb3JtL0dlbmVyYXRlRm9ybVwiO1xuaW1wb3J0IHsgUHJvY2Vzc1V0aWxzIH0gZnJvbSBcIi4uL1Byb2Nlc3NVdGlscy9Qcm9jZXNzVXRpbHNcIjtcbmltcG9ydCB7IFNoZWxsUHJvY2Vzc0hhbmRsZSB9IGZyb20gXCIuLi9Qcm9jZXNzVXRpbHMvU2hlbGxQcm9jZXNzSGFuZGxlXCI7XG5pbXBvcnQgeyBpc1lhcm4gfSBmcm9tIFwiLi4vQ2xpZW50SlMvSXNXZWJwYWNrNVwiO1xuXG5pbXBvcnQgeyBjcmVhdGVBc3luY0dlbmVyYXRvciB9IGZyb20gXCIuL0dlbmVyYXRvcldvcmtlci9DcmVhdGVBc3luY0dlbmVyYXRvclwiO1xuXG5jb25zdCBnZW5lcmF0b3JCdWlsZExpbWl0ID0gcExpbWl0KDEpO1xuXG5leHBvcnQgY2xhc3MgQnVpbGRHZW5lcmF0b3JGcm9tU291cmNlc1Rhc2sgZXh0ZW5kcyBPYnNlcnZhYmxlVmFsdWVQcm9kdWNlckJhc2U8Rm9ybUdlbmVyYXRvcj4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGF0aFRvRW5naW5lU291cmNlczogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBJTG9nZ2VyO1xuICAgIHByaXZhdGUgdXNlV2F0Y2ggPSBmYWxzZTtcbiAgICBwcml2YXRlIGN1cnJlbnRHZW5lcmF0b3I/OiBGb3JtR2VuZXJhdG9yO1xuICAgIHByaXZhdGUgYnVpbGRQcm9jZXNzPzogU2hlbGxQcm9jZXNzSGFuZGxlO1xuICAgIHByaXZhdGUgYnVpbGRSZXN1bHRXYXRjaGVyPzogRlNXYXRjaGVyO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHBhdGhUb0VuZ2luZVNvdXJjZXM6IHN0cmluZywgbG9nZ2VyOiBJTG9nZ2VyID0gZ2V0TG9nZ2VyKCkpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5sb2dnZXIgPSBsb2dnZXIud2l0aFByZWZpeChcIkdFTkVSQVRPUlwiKTtcbiAgICAgICAgdGhpcy5wYXRoVG9FbmdpbmVTb3VyY2VzID0gcGF0aFRvRW5naW5lU291cmNlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q3VycmVudFZhbHVlKCk6IFByb21pc2U8Rm9ybUdlbmVyYXRvcj4ge1xuICAgICAgICByZXR1cm4gZ2VuZXJhdG9yQnVpbGRMaW1pdChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50R2VuZXJhdG9yICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRHZW5lcmF0b3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy51c2VXYXRjaCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmJ1aWxkUHJvY2VzcyA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5idWlsZFByb2Nlc3MgPSBhd2FpdCB0aGlzLnJ1bldhdGNoUHJvY2Vzc1N0YXJ0ZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5idWlsZFJlc3VsdFdhdGNoZXIgPSBhd2FpdCB0aGlzLmNyZWF0ZUJ1aWxkUmVzdWx0V2F0Y2hlcihcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbih0aGlzLnBhdGhUb0VuZ2luZVNvdXJjZXMsIFwiR2VuZXJhdG9yXCIsIFwiZGlzdFwiKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRHZW5lcmF0b3IgPSBjcmVhdGVBc3luY0dlbmVyYXRvcihcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbih0aGlzLnBhdGhUb0VuZ2luZVNvdXJjZXMsIFwiR2VuZXJhdG9yXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VXYXRjaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXNlV2F0Y2hcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEdlbmVyYXRvciA9IGF3YWl0IHRoaXMuYWNxdWlyZUdlbmVyYXRvckZyb21Tb3VyY2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50R2VuZXJhdG9yID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWRQcm9ncmFtU3RhdGVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50R2VuZXJhdG9yO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgYmVnaW5MaXN0ZW5pbmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMudXNlV2F0Y2ggPSB0cnVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBzdG9wTGlzdGVuaW5nKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5idWlsZFByb2Nlc3MgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxkUHJvY2VzcyA9IHRoaXMuYnVpbGRQcm9jZXNzO1xuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRQcm9jZXNzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGF3YWl0IGJ1aWxkUHJvY2Vzcy5raWxsKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGBGYWlsZWQgdG8gc3RvcCBwcm9jZXNzOiAke2Vycm9yfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmJ1aWxkUmVzdWx0V2F0Y2hlciAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRSZXN1bHRXYXRjaGVyLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51c2VXYXRjaCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlVXBkYXRlID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5sb2coXCJHZW5lcmF0b3Igc291cmNlcyB1cGRhdGVkXCIpO1xuICAgICAgICBhd2FpdCB0aGlzLmVtaXRVcGRhdGUoXG4gICAgICAgICAgICBjcmVhdGVBc3luY0dlbmVyYXRvcihwYXRoLmpvaW4odGhpcy5wYXRoVG9FbmdpbmVTb3VyY2VzLCBcIkdlbmVyYXRvclwiKSwgdGhpcy51c2VXYXRjaCwgdGhpcy51c2VXYXRjaClcbiAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBhc3luYyBhY3F1aXJlR2VuZXJhdG9yRnJvbVNvdXJjZXMoKTogUHJvbWlzZTxGb3JtR2VuZXJhdG9yPiB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IGJ1aWxkQWN0aW9uQmVnaW4odGhpcy5sb2dnZXIsIFwiQnVpbGQgZ2VuZXJhdG9yXCIpO1xuICAgICAgICBjb25zdCBidWlsZERpcmVjdG9yeSA9IGF3YWl0IHRoaXMuZ2V0QnVpbGREaXJlY3RvcnkoKTtcbiAgICAgICAgYXdhaXQgZXhlY0NvbW1hbmRBc3luYyh0aGlzLmxvZ2dlciwgYG5wbSBydW4gZ2VuZXJhdG9yOmJ1aWxkYCwge1xuICAgICAgICAgICAgY3dkOiBidWlsZERpcmVjdG9yeSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGNyZWF0ZUFzeW5jR2VuZXJhdG9yKFxuICAgICAgICAgICAgcGF0aC5qb2luKHRoaXMucGF0aFRvRW5naW5lU291cmNlcywgXCJHZW5lcmF0b3JcIiksXG4gICAgICAgICAgICB0aGlzLnVzZVdhdGNoLFxuICAgICAgICAgICAgdGhpcy51c2VXYXRjaFxuICAgICAgICApO1xuICAgICAgICBhY3Rpb24uY29tcGxldGUoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGdldEJ1aWxkRGlyZWN0b3J5KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgaXNOZXdFbmdpbmVTdHJ1Y3R1cmUodGhpcy5wYXRoVG9FbmdpbmVTb3VyY2VzKSlcbiAgICAgICAgICAgID8gcGF0aC5qb2luKHRoaXMucGF0aFRvRW5naW5lU291cmNlcywgXCJHZW5lcmF0b3JcIilcbiAgICAgICAgICAgIDogdGhpcy5wYXRoVG9FbmdpbmVTb3VyY2VzO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgcnVuV2F0Y2hQcm9jZXNzU3RhcnRlZCgpOiBQcm9taXNlPFNoZWxsUHJvY2Vzc0hhbmRsZT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5sb2coXCJTdGFydCB3YXRjaFwiKTtcbiAgICAgICAgY29uc3QgYnVpbGREaXJlY3RvcnkgPSBhd2FpdCB0aGlzLmdldEJ1aWxkRGlyZWN0b3J5KCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IChhd2FpdCBpc1lhcm4oYnVpbGREaXJlY3RvcnkpKVxuICAgICAgICAgICAgPyBQcm9jZXNzVXRpbHMuY3JlYXRlU2hlbGxQcm9jZXNzKFwieWFyblwiLCBbXCJnZW5lcmF0b3I6YnVpbGRcIiwgXCItLXdhdGNoXCJdLCBidWlsZERpcmVjdG9yeSlcbiAgICAgICAgICAgIDogUHJvY2Vzc1V0aWxzLmNyZWF0ZVNoZWxsUHJvY2VzcyhcIm5wbVwiLCBbXCJydW5cIiwgXCJnZW5lcmF0b3I6YnVpbGRcIiwgXCItLVwiLCBcIi0td2F0Y2hcIl0sIGJ1aWxkRGlyZWN0b3J5KTtcbiAgICAgICAgcmVzdWx0Lm9uU3RkT3V0LnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLnZlcmJvc2UoZGF0YS50b1N0cmluZygpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJlc3VsdC5vblN0ZEVyci5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci52ZXJib3NlKGRhdGEudG9TdHJpbmcoKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXN1bHQuc3RhcnQoKTtcbiAgICAgICAgYXdhaXQgdGhpcy53YWl0Rmlyc3RDb21waWxhdGlvbkNvbXBsZXRlZChyZXN1bHQpO1xuICAgICAgICB0aGlzLmxvZ2dlci5sb2coXCJTdWNjZXNzZnVsbHkgY29tcGxpZWRcIik7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyB3YWl0Rmlyc3RDb21waWxhdGlvbkNvbXBsZXRlZChyZXN1bHQ6IFNoZWxsUHJvY2Vzc0hhbmRsZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCByZXN1bHQud2FpdE91dHB1dEluY2x1ZGVzU3RyaW5nKFwiU3VjY2Vzc2Z1bGx5IGNvbXBpbGVkXCIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgY3JlYXRlQnVpbGRSZXN1bHRXYXRjaGVyKHBhdGhUb0dlbmVyYXRvck91dHB1dERpcjogc3RyaW5nKTogUHJvbWlzZTxGU1dhdGNoZXI+IHtcbiAgICAgICAgbGV0IG1hc2tUb09ic2VydmVHZW5lcmF0b3JDaGFuZ2VzOiBzdHJpbmdbXTtcbiAgICAgICAgaWYgKGF3YWl0IGlzT2xkR2VuZXJhdG9yU291cmNlc1N0cnVjdHVyZSh0aGlzLnBhdGhUb0VuZ2luZVNvdXJjZXMpKSB7XG4gICAgICAgICAgICBtYXNrVG9PYnNlcnZlR2VuZXJhdG9yQ2hhbmdlcyA9IFtcIioqLyouanNcIl07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtYXNrVG9PYnNlcnZlR2VuZXJhdG9yQ2hhbmdlcyA9IFtcIkdlbmVyYXRvci9zcmMvKiovKi5qc1wiLCBcImluZGV4LmpzXCJdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHdhdGNoZXIgPSB3YXRjaChtYXNrVG9PYnNlcnZlR2VuZXJhdG9yQ2hhbmdlcywge1xuICAgICAgICAgICAgaWdub3JlSW5pdGlhbDogdHJ1ZSxcbiAgICAgICAgICAgIGN3ZDogcGF0aFRvR2VuZXJhdG9yT3V0cHV0RGlyLFxuICAgICAgICAgICAgaWdub3JlUGVybWlzc2lvbkVycm9yczogZmFsc2UsXG4gICAgICAgICAgICB1c2VQb2xsaW5nOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgaGFuZGxlQW55RnNFdmVudERlYm91bmNlZCA9IF8uZGVib3VuY2UoKCkgPT4gdGhpcy5oYW5kbGVVcGRhdGUoKSwgNTAwKTtcbiAgICAgICAgd2F0Y2hlci5vbihcImFsbFwiLCBoYW5kbGVBbnlGc0V2ZW50RGVib3VuY2VkKTtcbiAgICAgICAgd2F0Y2hlci5vbihcImVycm9yXCIsIGhhbmRsZUFueUZzRXZlbnREZWJvdW5jZWQpO1xuICAgICAgICByZXR1cm4gd2F0Y2hlcjtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxTQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBSSxVQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxRQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxhQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyx1QkFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEscUJBQUEsR0FBQVIsT0FBQTtBQUVBLElBQUFTLGFBQUEsR0FBQVQsT0FBQTtBQUVBLElBQUFVLFVBQUEsR0FBQVYsT0FBQTtBQUVBLElBQUFXLHFCQUFB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BuildGeneratorFromSourcesTask.js","names":["_path","_interopRequireDefault","require","_chokidar","_lodash","_pLimit","_ExecUtils","_ILogger","_StaticLogger","_ChainableValueProducer","_EngineStructureUtils","_ProcessUtils","_IsWebpack","_CreateAsyncGenerator","generatorBuildLimit","pLimit","BuildGeneratorFromSourcesTask","ObservableValueProducerBase","constructor","pathToEngineSources","logger","getLogger","useWatch","currentGenerator","buildProcess","buildResultWatcher","handleUpdate","log","emitUpdate","createAsyncGenerator","path","join","withPrefix","getCurrentValue","undefined","runWatchProcessStarted","createBuildResultWatcher","acquireGeneratorFromSources","Error","beginListening","stopListening","kill","error","close","action","buildActionBegin","buildDirectory","getBuildDirectory","execCommandAsync","cwd","result","complete","isNewEngineStructure","isYarn","ProcessUtils","createShellProcess","onStdOut","subscribe","data","verbose","toString","onStdErr","start","waitFirstCompilationCompleted","waitOutputIncludesString","pathToGeneratorOutputDir","maskToObserveGeneratorChanges","isOldGeneratorSourcesStructure","watcher","watch","ignoreInitial","ignorePermissionErrors","usePolling","handleAnyFsEventDebounced","_","debounce","on","exports"],"sources":["../../../../../src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.ts"],"sourcesContent":["import { FSWatcher } from \"fs\";\nimport path from \"path\";\n\nimport { watch } from \"chokidar\";\nimport _ from \"lodash\";\nimport pLimit from \"p-limit\";\n\nimport { execCommandAsync } from \"../../Commons/ExecUtils\";\nimport { buildActionBegin, ILogger } from \"../../Commons/Logging/ILogger\";\nimport { getLogger } from \"../../Commons/Logging/StaticLogger\";\nimport { ObservableValueProducerBase } from \"../../Commons/TasksCore/ChainableValueProducer\";\nimport { isNewEngineStructure, isOldGeneratorSourcesStructure } from \"../EngineStructureUtils\";\nimport { FormGenerator } from \"../Form/GenerateForm\";\nimport { ProcessUtils } from \"../ProcessUtils/ProcessUtils\";\nimport { ShellProcessHandle } from \"../ProcessUtils/ShellProcessHandle\";\nimport { isYarn } from \"../ClientJS/IsWebpack5\";\n\nimport { createAsyncGenerator } from \"./GeneratorWorker/CreateAsyncGenerator\";\n\nconst generatorBuildLimit = pLimit(1);\n\nexport class BuildGeneratorFromSourcesTask extends ObservableValueProducerBase<FormGenerator> {\n private readonly pathToEngineSources: string;\n private readonly logger: ILogger;\n private useWatch = false;\n private currentGenerator?: FormGenerator;\n private buildProcess?: ShellProcessHandle;\n private buildResultWatcher?: FSWatcher;\n\n public constructor(pathToEngineSources: string, logger: ILogger = getLogger()) {\n super();\n this.logger = logger.withPrefix(\"GENERATOR\");\n this.pathToEngineSources = pathToEngineSources;\n }\n\n public async getCurrentValue(): Promise<FormGenerator> {\n return generatorBuildLimit(async () => {\n if (this.currentGenerator != undefined) {\n return this.currentGenerator;\n }\n if (this.useWatch) {\n if (this.buildProcess == undefined) {\n this.buildProcess = await this.runWatchProcessStarted();\n this.buildResultWatcher = await this.createBuildResultWatcher(\n path.join(this.pathToEngineSources, \"Generator\", \"dist\")\n );\n this.currentGenerator = createAsyncGenerator(\n path.join(this.pathToEngineSources, \"Generator\"),\n this.useWatch,\n this.useWatch\n );\n }\n } else {\n this.currentGenerator = await this.acquireGeneratorFromSources();\n }\n if (this.currentGenerator == undefined) {\n throw new Error(\"InvalidProgramState\");\n }\n return this.currentGenerator;\n });\n }\n\n protected async beginListening(): Promise<void> {\n this.useWatch = true;\n }\n\n protected async stopListening(): Promise<void> {\n if (this.buildProcess != undefined) {\n try {\n const buildProcess = this.buildProcess;\n this.buildProcess = undefined;\n await buildProcess.kill();\n } catch (error) {\n this.logger.error(`Failed to stop process: ${error}`);\n }\n }\n if (this.buildResultWatcher != undefined) {\n this.buildResultWatcher.close();\n }\n this.useWatch = false;\n }\n\n private readonly handleUpdate = async (): Promise<void> => {\n this.logger.log(\"Generator sources updated\");\n await this.emitUpdate(\n createAsyncGenerator(path.join(this.pathToEngineSources, \"Generator\"), this.useWatch, this.useWatch)\n );\n };\n\n private async acquireGeneratorFromSources(): Promise<FormGenerator> {\n const action = buildActionBegin(this.logger, \"Build generator\");\n const buildDirectory = await this.getBuildDirectory();\n await execCommandAsync(this.logger, `npm run generator:build`, {\n cwd: buildDirectory,\n });\n const result = createAsyncGenerator(\n path.join(this.pathToEngineSources, \"Generator\"),\n this.useWatch,\n this.useWatch\n );\n action.complete();\n return result;\n }\n\n private async getBuildDirectory(): Promise<string> {\n return (await isNewEngineStructure(this.pathToEngineSources))\n ? path.join(this.pathToEngineSources, \"Generator\")\n : this.pathToEngineSources;\n }\n\n private async runWatchProcessStarted(): Promise<ShellProcessHandle> {\n this.logger.log(\"Start watch\");\n const buildDirectory = await this.getBuildDirectory();\n const result = (await isYarn(buildDirectory))\n ? ProcessUtils.createShellProcess(\"yarn\", [\"generator:build\", \"--watch\"], buildDirectory)\n : ProcessUtils.createShellProcess(\"npm\", [\"run\", \"generator:build\", \"--\", \"--watch\"], buildDirectory);\n result.onStdOut.subscribe(data => {\n this.logger.verbose(data.toString());\n });\n result.onStdErr.subscribe(data => {\n this.logger.verbose(data.toString());\n });\n result.start();\n await this.waitFirstCompilationCompleted(result);\n this.logger.log(\"Successfully complied\");\n return result;\n }\n\n private async waitFirstCompilationCompleted(result: ShellProcessHandle): Promise<void> {\n await result.waitOutputIncludesString(\"Successfully compiled\");\n }\n\n private async createBuildResultWatcher(pathToGeneratorOutputDir: string): Promise<FSWatcher> {\n let maskToObserveGeneratorChanges: string[];\n if (await isOldGeneratorSourcesStructure(this.pathToEngineSources)) {\n maskToObserveGeneratorChanges = [\"**/*.js\"];\n } else {\n maskToObserveGeneratorChanges = [\"Generator/src/**/*.js\", \"index.js\"];\n }\n const watcher = watch(maskToObserveGeneratorChanges, {\n ignoreInitial: true,\n cwd: pathToGeneratorOutputDir,\n ignorePermissionErrors: false,\n usePolling: true,\n });\n const handleAnyFsEventDebounced = _.debounce(() => this.handleUpdate(), 500);\n watcher.on(\"all\", handleAnyFsEventDebounced);\n watcher.on(\"error\", handleAnyFsEventDebounced);\n return watcher;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createAsyncGenerator = createAsyncGenerator;
|
|
7
|
+
var _child_process = require("child_process");
|
|
8
|
+
var _StaticLogger = require("../../../Commons/Logging/StaticLogger");
|
|
9
|
+
var _IterableUtils = require("../../../../../Common/IterableUtils");
|
|
10
|
+
var _GeneratorRequireUtils = require("./GeneratorRequireUtils");
|
|
11
|
+
/* eslint-disable no-console */
|
|
12
|
+
|
|
13
|
+
class GeneratorAsyncProxy {
|
|
14
|
+
constructor(pathToGeneratorRootDir, purgeCache, useGeneratorRestarting, logger = (0, _StaticLogger.getLogger)()) {
|
|
15
|
+
this.pathToGeneratorRootDir = void 0;
|
|
16
|
+
this.generatorSourcesImporter = void 0;
|
|
17
|
+
this.purgeCache = void 0;
|
|
18
|
+
this.useGeneratorRestarting = void 0;
|
|
19
|
+
this.generatorProcess = void 0;
|
|
20
|
+
this.maxRequestNumber = 0;
|
|
21
|
+
this.processSugarDeferredMap = new Map();
|
|
22
|
+
this.useGeneratorRestarting = useGeneratorRestarting;
|
|
23
|
+
this.pathToGeneratorRootDir = pathToGeneratorRootDir;
|
|
24
|
+
this.purgeCache = purgeCache;
|
|
25
|
+
this.generatorSourcesImporter = new _GeneratorRequireUtils.GeneratorSourcesImporter(purgeCache);
|
|
26
|
+
}
|
|
27
|
+
async getLocalizedSugar(sugarFiles, resources) {
|
|
28
|
+
const localizationEntryPoint = await this.generatorSourcesImporter.importLocalization(this.pathToGeneratorRootDir);
|
|
29
|
+
if (localizationEntryPoint == undefined) {
|
|
30
|
+
throw new Error("Данная версия генератора не поддерживает локализацию.");
|
|
31
|
+
}
|
|
32
|
+
return localizationEntryPoint.getLocalizedSugar(sugarFiles, resources);
|
|
33
|
+
}
|
|
34
|
+
async getDictionary(sugarFiles, resources) {
|
|
35
|
+
const localizationEntryPoint = await this.generatorSourcesImporter.importLocalization(this.pathToGeneratorRootDir);
|
|
36
|
+
if (localizationEntryPoint == undefined) {
|
|
37
|
+
throw new Error("Данная версия генератора не поддерживает локализацию.");
|
|
38
|
+
}
|
|
39
|
+
return localizationEntryPoint.getDictionary(sugarFiles, resources);
|
|
40
|
+
}
|
|
41
|
+
async readSources(formSourcesPath, farmDirectory, hlFarmDirectoryPath) {
|
|
42
|
+
const readSources = await this.generatorSourcesImporter.importReadSources(this.pathToGeneratorRootDir);
|
|
43
|
+
const formSource = await readSources(formSourcesPath, farmDirectory, hlFarmDirectoryPath);
|
|
44
|
+
return formSource;
|
|
45
|
+
}
|
|
46
|
+
async getSugarTexts(formSourcesPath, farmDirectory, hlFarmDirectoryPath) {
|
|
47
|
+
const getSugarTexts = await this.generatorSourcesImporter.importGetSugarTexts(this.pathToGeneratorRootDir);
|
|
48
|
+
const result = await getSugarTexts(formSourcesPath, farmDirectory, hlFarmDirectoryPath);
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
async getAllDependencies(formSourcesPath, farmDirectory, hlFarmDirectoryPath) {
|
|
52
|
+
const getAllDependencies = await this.generatorSourcesImporter.importGetAllDependencies(this.pathToGeneratorRootDir);
|
|
53
|
+
if (getAllDependencies == undefined) {
|
|
54
|
+
throw new Error("This version of generator does not support dependencies extraction");
|
|
55
|
+
}
|
|
56
|
+
const formSource = await getAllDependencies(formSourcesPath, farmDirectory, hlFarmDirectoryPath);
|
|
57
|
+
return formSource;
|
|
58
|
+
}
|
|
59
|
+
async supportsDependenciesExtraction() {
|
|
60
|
+
const getAllDependenciesHash = await this.generatorSourcesImporter.importGetAllDependenciesHash(this.pathToGeneratorRootDir);
|
|
61
|
+
return getAllDependenciesHash != undefined;
|
|
62
|
+
}
|
|
63
|
+
async getAllDependenciesHash(formSourcesPath, farmDirectory, hlFarmDirectoryPath) {
|
|
64
|
+
const getAllDependenciesHash = await this.generatorSourcesImporter.importGetAllDependenciesHash(this.pathToGeneratorRootDir);
|
|
65
|
+
if (getAllDependenciesHash == undefined) {
|
|
66
|
+
throw new Error("This version of generator does not support dependencies extraction");
|
|
67
|
+
}
|
|
68
|
+
const formSource = await getAllDependenciesHash(formSourcesPath, farmDirectory, hlFarmDirectoryPath);
|
|
69
|
+
return formSource;
|
|
70
|
+
}
|
|
71
|
+
async readSourcesAndProcessSugar(formSourcesPath, farmDirectory, hlFarmDirectoryPath, generationOptions) {
|
|
72
|
+
this.maxRequestNumber++;
|
|
73
|
+
const currentRequestNumber = this.maxRequestNumber;
|
|
74
|
+
const promise = new Promise((resolve, reject) => {
|
|
75
|
+
this.processSugarDeferredMap.set(currentRequestNumber, {
|
|
76
|
+
resolve: resolve,
|
|
77
|
+
reject: reject
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
if (!this.generatorProcess) {
|
|
81
|
+
this.generatorProcess = this.forkReadSourcesAndProcessSugarWorker();
|
|
82
|
+
}
|
|
83
|
+
if (this.useGeneratorRestarting) {
|
|
84
|
+
if (this.maxRequestNumber % 10 === 0) {
|
|
85
|
+
console.log("Restarting generator");
|
|
86
|
+
this.generatorProcess.kill();
|
|
87
|
+
this.generatorProcess = undefined;
|
|
88
|
+
this.generatorProcess = this.forkReadSourcesAndProcessSugarWorker();
|
|
89
|
+
console.log("Restarted generator");
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
this.generatorProcess.send([this.pathToGeneratorRootDir, formSourcesPath, farmDirectory, hlFarmDirectoryPath, generationOptions, this.purgeCache, currentRequestNumber]);
|
|
93
|
+
const result = await promise;
|
|
94
|
+
this.processSugarDeferredMap.delete(currentRequestNumber);
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
async processSugar(sugarFiles, resources, generationOptions) {
|
|
98
|
+
this.maxRequestNumber++;
|
|
99
|
+
const currentRequestNumber = this.maxRequestNumber;
|
|
100
|
+
const promise = new Promise((resolve, reject) => {
|
|
101
|
+
this.processSugarDeferredMap.set(currentRequestNumber, {
|
|
102
|
+
resolve: resolve,
|
|
103
|
+
reject: reject
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
if (!this.generatorProcess) {
|
|
107
|
+
this.generatorProcess = this.forkProcessSugarWorker();
|
|
108
|
+
}
|
|
109
|
+
this.generatorProcess.send([this.pathToGeneratorRootDir, sugarFiles, resources, generationOptions, this.purgeCache, currentRequestNumber]);
|
|
110
|
+
const result = await promise;
|
|
111
|
+
this.processSugarDeferredMap.delete(currentRequestNumber);
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
forkProcessSugarWorker() {
|
|
115
|
+
const processSugarWorker = (0, _child_process.fork)("./ProcessSugarWorker", [], {
|
|
116
|
+
cwd: __dirname
|
|
117
|
+
});
|
|
118
|
+
processSugarWorker.on("message", response => {
|
|
119
|
+
const currentDeferred = this.processSugarDeferredMap.get(response.requestNumber);
|
|
120
|
+
if (currentDeferred == undefined) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (response.type === "Error") {
|
|
124
|
+
currentDeferred.reject(new Error(response.errorText));
|
|
125
|
+
} else {
|
|
126
|
+
const formContent = response.generatedForm;
|
|
127
|
+
const result = {};
|
|
128
|
+
for (const [key, formContentItem] of (0, _IterableUtils.iterateEntries)(formContent)) {
|
|
129
|
+
result[key] = typeof formContentItem === "string" ? formContentItem : Buffer.from(formContentItem.payload, formContentItem.encoding);
|
|
130
|
+
}
|
|
131
|
+
currentDeferred.resolve(result);
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
processSugarWorker.on("error", error => {
|
|
135
|
+
throw error;
|
|
136
|
+
});
|
|
137
|
+
return processSugarWorker;
|
|
138
|
+
}
|
|
139
|
+
forkReadSourcesAndProcessSugarWorker() {
|
|
140
|
+
const processSugarWorker = (0, _child_process.fork)("./ReadSourcesAndProcessSugarWorker", [], {
|
|
141
|
+
cwd: __dirname
|
|
142
|
+
});
|
|
143
|
+
processSugarWorker.on("message", response => {
|
|
144
|
+
const currentDeferred = this.processSugarDeferredMap.get(response.requestNumber);
|
|
145
|
+
if (currentDeferred == undefined) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
if (response.type === "Error") {
|
|
149
|
+
currentDeferred.reject(new Error(response.errorText));
|
|
150
|
+
} else {
|
|
151
|
+
const formContent = response.generatedForm;
|
|
152
|
+
const result = {};
|
|
153
|
+
for (const [key, formContentItem] of (0, _IterableUtils.iterateEntries)(formContent)) {
|
|
154
|
+
result[key] = typeof formContentItem === "string" ? formContentItem : Buffer.from(formContentItem.payload, formContentItem.encoding);
|
|
155
|
+
}
|
|
156
|
+
currentDeferred.resolve(result);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
processSugarWorker.on("error", error => {
|
|
160
|
+
throw error;
|
|
161
|
+
});
|
|
162
|
+
return processSugarWorker;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
const generatorsCache = new Map();
|
|
166
|
+
function createAsyncGenerator(pathToGeneratorRootDir, purgeCache, useGeneratorRestarting) {
|
|
167
|
+
let result = generatorsCache.get(pathToGeneratorRootDir);
|
|
168
|
+
if (result == undefined) {
|
|
169
|
+
result = new GeneratorAsyncProxy(pathToGeneratorRootDir, purgeCache, useGeneratorRestarting);
|
|
170
|
+
generatorsCache.set(pathToGeneratorRootDir, result);
|
|
171
|
+
}
|
|
172
|
+
return result;
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2hpbGRfcHJvY2VzcyIsInJlcXVpcmUiLCJfU3RhdGljTG9nZ2VyIiwiX0l0ZXJhYmxlVXRpbHMiLCJfR2VuZXJhdG9yUmVxdWlyZVV0aWxzIiwiR2VuZXJhdG9yQXN5bmNQcm94eSIsImNvbnN0cnVjdG9yIiwicGF0aFRvR2VuZXJhdG9yUm9vdERpciIsInB1cmdlQ2FjaGUiLCJ1c2VHZW5lcmF0b3JSZXN0YXJ0aW5nIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIiwiZ2VuZXJhdG9yU291cmNlc0ltcG9ydGVyIiwiZ2VuZXJhdG9yUHJvY2VzcyIsIm1heFJlcXVlc3ROdW1iZXIiLCJwcm9jZXNzU3VnYXJEZWZlcnJlZE1hcCIsIk1hcCIsIkdlbmVyYXRvclNvdXJjZXNJbXBvcnRlciIsImdldExvY2FsaXplZFN1Z2FyIiwic3VnYXJGaWxlcyIsInJlc291cmNlcyIsImxvY2FsaXphdGlvbkVudHJ5UG9pbnQiLCJpbXBvcnRMb2NhbGl6YXRpb24iLCJ1bmRlZmluZWQiLCJFcnJvciIsImdldERpY3Rpb25hcnkiLCJyZWFkU291cmNlcyIsImZvcm1Tb3VyY2VzUGF0aCIsImZhcm1EaXJlY3RvcnkiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwiaW1wb3J0UmVhZFNvdXJjZXMiLCJmb3JtU291cmNlIiwiZ2V0U3VnYXJUZXh0cyIsImltcG9ydEdldFN1Z2FyVGV4dHMiLCJyZXN1bHQiLCJnZXRBbGxEZXBlbmRlbmNpZXMiLCJpbXBvcnRHZXRBbGxEZXBlbmRlbmNpZXMiLCJzdXBwb3J0c0RlcGVuZGVuY2llc0V4dHJhY3Rpb24iLCJnZXRBbGxEZXBlbmRlbmNpZXNIYXNoIiwiaW1wb3J0R2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsInJlYWRTb3VyY2VzQW5kUHJvY2Vzc1N1Z2FyIiwiZ2VuZXJhdGlvbk9wdGlvbnMiLCJjdXJyZW50UmVxdWVzdE51bWJlciIsInByb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInNldCIsImZvcmtSZWFkU291cmNlc0FuZFByb2Nlc3NTdWdhcldvcmtlciIsImNvbnNvbGUiLCJsb2ciLCJraWxsIiwic2VuZCIsImRlbGV0ZSIsInByb2Nlc3NTdWdhciIsImZvcmtQcm9jZXNzU3VnYXJXb3JrZXIiLCJwcm9jZXNzU3VnYXJXb3JrZXIiLCJmb3JrIiwiY3dkIiwiX19kaXJuYW1lIiwib24iLCJyZXNwb25zZSIsImN1cnJlbnREZWZlcnJlZCIsImdldCIsInJlcXVlc3ROdW1iZXIiLCJ0eXBlIiwiZXJyb3JUZXh0IiwiZm9ybUNvbnRlbnQiLCJnZW5lcmF0ZWRGb3JtIiwia2V5IiwiZm9ybUNvbnRlbnRJdGVtIiwiaXRlcmF0ZUVudHJpZXMiLCJCdWZmZXIiLCJmcm9tIiwicGF5bG9hZCIsImVuY29kaW5nIiwiZXJyb3IiLCJnZW5lcmF0b3JzQ2FjaGUiLCJjcmVhdGVBc3luY0dlbmVyYXRvciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL0dlbmVyYXRvci9HZW5lcmF0b3JXb3JrZXIvQ3JlYXRlQXN5bmNHZW5lcmF0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgQ2hpbGRQcm9jZXNzLCBmb3JrIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcblxuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7XG4gICAgRm9ybUdlbmVyYXRvcixcbiAgICBHZW5lcmF0ZWRGb3JtLFxuICAgIEdlbmVyYXRpb25PcHRpb25zLFxuICAgIExvY2FsaXphdGlvbkRpY3Rpb25hcnlDb250ZW50LFxufSBmcm9tIFwiLi4vLi4vRm9ybS9HZW5lcmF0ZUZvcm1cIjtcbmltcG9ydCB7IEZvcm1SZXNvdXJjZXMsIEZvcm1Tb3VyY2UsIFN1Z2FyQ29udGVudCB9IGZyb20gXCIuLi8uLi9SZWFkRm9ybVNvdXJjZVwiO1xuaW1wb3J0IHsgaXRlcmF0ZUVudHJpZXMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0l0ZXJhYmxlVXRpbHNcIjtcbmltcG9ydCB7IEV4dHJhY3RvclJlc3VsdCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vVGV4dEV4dHJhY3Rvci9UZXh0RXh0cmFjdG9yVHlwZXNcIjtcblxuaW1wb3J0IHsgR2VuZXJhdG9yU291cmNlc0ltcG9ydGVyIH0gZnJvbSBcIi4vR2VuZXJhdG9yUmVxdWlyZVV0aWxzXCI7XG5pbXBvcnQgeyBDYWxsUmVzcG9uc2UgfSBmcm9tIFwiLi9Qcm9jZXNzU3VnYXJXb3JrZXJcIjtcblxuaW50ZXJmYWNlIFByb2Nlc3NTdWdhckRlZmVycmVkIHtcbiAgICByZXNvbHZlOiAocmVzdWx0OiBHZW5lcmF0ZWRGb3JtKSA9PiB2b2lkO1xuICAgIHJlamVjdDogKGVycm9yOiB1bmtub3duKSA9PiB2b2lkO1xufVxuXG5jbGFzcyBHZW5lcmF0b3JBc3luY1Byb3h5IGltcGxlbWVudHMgRm9ybUdlbmVyYXRvciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwYXRoVG9HZW5lcmF0b3JSb290RGlyOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBnZW5lcmF0b3JTb3VyY2VzSW1wb3J0ZXI6IEdlbmVyYXRvclNvdXJjZXNJbXBvcnRlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHB1cmdlQ2FjaGU6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VHZW5lcmF0b3JSZXN0YXJ0aW5nOiBib29sZWFuO1xuICAgIHByaXZhdGUgZ2VuZXJhdG9yUHJvY2Vzcz86IENoaWxkUHJvY2VzcztcbiAgICBwcml2YXRlIG1heFJlcXVlc3ROdW1iZXIgPSAwO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvY2Vzc1N1Z2FyRGVmZXJyZWRNYXA6IE1hcDxudW1iZXIsIFByb2Nlc3NTdWdhckRlZmVycmVkPiA9IG5ldyBNYXAoKTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcGF0aFRvR2VuZXJhdG9yUm9vdERpcjogc3RyaW5nLFxuICAgICAgICBwdXJnZUNhY2hlOiBib29sZWFuLFxuICAgICAgICB1c2VHZW5lcmF0b3JSZXN0YXJ0aW5nOiBib29sZWFuLFxuICAgICAgICBsb2dnZXI6IElMb2dnZXIgPSBnZXRMb2dnZXIoKVxuICAgICkge1xuICAgICAgICB0aGlzLnVzZUdlbmVyYXRvclJlc3RhcnRpbmcgPSB1c2VHZW5lcmF0b3JSZXN0YXJ0aW5nO1xuICAgICAgICB0aGlzLnBhdGhUb0dlbmVyYXRvclJvb3REaXIgPSBwYXRoVG9HZW5lcmF0b3JSb290RGlyO1xuICAgICAgICB0aGlzLnB1cmdlQ2FjaGUgPSBwdXJnZUNhY2hlO1xuICAgICAgICB0aGlzLmdlbmVyYXRvclNvdXJjZXNJbXBvcnRlciA9IG5ldyBHZW5lcmF0b3JTb3VyY2VzSW1wb3J0ZXIocHVyZ2VDYWNoZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldExvY2FsaXplZFN1Z2FyKHN1Z2FyRmlsZXM6IFN1Z2FyQ29udGVudCwgcmVzb3VyY2VzOiBGb3JtUmVzb3VyY2VzKTogUHJvbWlzZTxTdWdhckNvbnRlbnQ+IHtcbiAgICAgICAgY29uc3QgbG9jYWxpemF0aW9uRW50cnlQb2ludCA9IGF3YWl0IHRoaXMuZ2VuZXJhdG9yU291cmNlc0ltcG9ydGVyLmltcG9ydExvY2FsaXphdGlvbihcbiAgICAgICAgICAgIHRoaXMucGF0aFRvR2VuZXJhdG9yUm9vdERpclxuICAgICAgICApO1xuICAgICAgICBpZiAobG9jYWxpemF0aW9uRW50cnlQb2ludCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcItCU0LDQvdC90LDRjyDQstC10YDRgdC40Y8g0LPQtdC90LXRgNCw0YLQvtGA0LAg0L3QtSDQv9C+0LTQtNC10YDQttC40LLQsNC10YIg0LvQvtC60LDQu9C40LfQsNGG0LjRji5cIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvY2FsaXphdGlvbkVudHJ5UG9pbnQuZ2V0TG9jYWxpemVkU3VnYXIoc3VnYXJGaWxlcywgcmVzb3VyY2VzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RGljdGlvbmFyeShcbiAgICAgICAgc3VnYXJGaWxlczogU3VnYXJDb250ZW50LFxuICAgICAgICByZXNvdXJjZXM6IEZvcm1SZXNvdXJjZXNcbiAgICApOiBQcm9taXNlPExvY2FsaXphdGlvbkRpY3Rpb25hcnlDb250ZW50PiB7XG4gICAgICAgIGNvbnN0IGxvY2FsaXphdGlvbkVudHJ5UG9pbnQgPSBhd2FpdCB0aGlzLmdlbmVyYXRvclNvdXJjZXNJbXBvcnRlci5pbXBvcnRMb2NhbGl6YXRpb24oXG4gICAgICAgICAgICB0aGlzLnBhdGhUb0dlbmVyYXRvclJvb3REaXJcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGxvY2FsaXphdGlvbkVudHJ5UG9pbnQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCLQlNCw0L3QvdCw0Y8g0LLQtdGA0YHQuNGPINCz0LXQvdC10YDQsNGC0L7RgNCwINC90LUg0L/QvtC00LTQtdGA0LbQuNCy0LDQtdGCINC70L7QutCw0LvQuNC30LDRhtC40Y4uXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhbGl6YXRpb25FbnRyeVBvaW50LmdldERpY3Rpb25hcnkoc3VnYXJGaWxlcywgcmVzb3VyY2VzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVhZFNvdXJjZXMoXG4gICAgICAgIGZvcm1Tb3VyY2VzUGF0aDogc3RyaW5nLFxuICAgICAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZ1xuICAgICk6IFByb21pc2U8Rm9ybVNvdXJjZT4ge1xuICAgICAgICBjb25zdCByZWFkU291cmNlczogRm9ybUdlbmVyYXRvcltcInJlYWRTb3VyY2VzXCJdID0gYXdhaXQgdGhpcy5nZW5lcmF0b3JTb3VyY2VzSW1wb3J0ZXIuaW1wb3J0UmVhZFNvdXJjZXMoXG4gICAgICAgICAgICB0aGlzLnBhdGhUb0dlbmVyYXRvclJvb3REaXJcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZm9ybVNvdXJjZSA9IGF3YWl0IHJlYWRTb3VyY2VzKGZvcm1Tb3VyY2VzUGF0aCwgZmFybURpcmVjdG9yeSwgaGxGYXJtRGlyZWN0b3J5UGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcm1Tb3VyY2U7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFN1Z2FyVGV4dHMoXG4gICAgICAgIGZvcm1Tb3VyY2VzUGF0aDogc3RyaW5nLFxuICAgICAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZ1xuICAgICk6IFByb21pc2U8RXh0cmFjdG9yUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGdldFN1Z2FyVGV4dHM6IEZvcm1HZW5lcmF0b3JbXCJnZXRTdWdhclRleHRzXCJdID0gYXdhaXQgdGhpcy5nZW5lcmF0b3JTb3VyY2VzSW1wb3J0ZXIuaW1wb3J0R2V0U3VnYXJUZXh0cyhcbiAgICAgICAgICAgIHRoaXMucGF0aFRvR2VuZXJhdG9yUm9vdERpclxuICAgICAgICApO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRTdWdhclRleHRzKGZvcm1Tb3VyY2VzUGF0aCwgZmFybURpcmVjdG9yeSwgaGxGYXJtRGlyZWN0b3J5UGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsRGVwZW5kZW5jaWVzKFxuICAgICAgICBmb3JtU291cmNlc1BhdGg6IHN0cmluZyxcbiAgICAgICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IGdldEFsbERlcGVuZGVuY2llcyA9IGF3YWl0IHRoaXMuZ2VuZXJhdG9yU291cmNlc0ltcG9ydGVyLmltcG9ydEdldEFsbERlcGVuZGVuY2llcyhcbiAgICAgICAgICAgIHRoaXMucGF0aFRvR2VuZXJhdG9yUm9vdERpclxuICAgICAgICApO1xuICAgICAgICBpZiAoZ2V0QWxsRGVwZW5kZW5jaWVzID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyB2ZXJzaW9uIG9mIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0IGRlcGVuZGVuY2llcyBleHRyYWN0aW9uXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZvcm1Tb3VyY2UgPSBhd2FpdCBnZXRBbGxEZXBlbmRlbmNpZXMoZm9ybVNvdXJjZXNQYXRoLCBmYXJtRGlyZWN0b3J5LCBobEZhcm1EaXJlY3RvcnlQYXRoKTtcbiAgICAgICAgcmV0dXJuIGZvcm1Tb3VyY2U7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHN1cHBvcnRzRGVwZW5kZW5jaWVzRXh0cmFjdGlvbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCA9IGF3YWl0IHRoaXMuZ2VuZXJhdG9yU291cmNlc0ltcG9ydGVyLmltcG9ydEdldEFsbERlcGVuZGVuY2llc0hhc2goXG4gICAgICAgICAgICB0aGlzLnBhdGhUb0dlbmVyYXRvclJvb3REaXJcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGdldEFsbERlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxEZXBlbmRlbmNpZXNIYXNoKFxuICAgICAgICBmb3JtU291cmNlc1BhdGg6IHN0cmluZyxcbiAgICAgICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBnZXRBbGxEZXBlbmRlbmNpZXNIYXNoID0gYXdhaXQgdGhpcy5nZW5lcmF0b3JTb3VyY2VzSW1wb3J0ZXIuaW1wb3J0R2V0QWxsRGVwZW5kZW5jaWVzSGFzaChcbiAgICAgICAgICAgIHRoaXMucGF0aFRvR2VuZXJhdG9yUm9vdERpclxuICAgICAgICApO1xuICAgICAgICBpZiAoZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoaXMgdmVyc2lvbiBvZiBnZW5lcmF0b3IgZG9lcyBub3Qgc3VwcG9ydCBkZXBlbmRlbmNpZXMgZXh0cmFjdGlvblwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtU291cmNlID0gYXdhaXQgZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaChmb3JtU291cmNlc1BhdGgsIGZhcm1EaXJlY3RvcnksIGhsRmFybURpcmVjdG9yeVBhdGgpO1xuICAgICAgICByZXR1cm4gZm9ybVNvdXJjZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVhZFNvdXJjZXNBbmRQcm9jZXNzU3VnYXIoXG4gICAgICAgIGZvcm1Tb3VyY2VzUGF0aDogc3RyaW5nLFxuICAgICAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZyxcbiAgICAgICAgZ2VuZXJhdGlvbk9wdGlvbnM/OiBHZW5lcmF0aW9uT3B0aW9uc1xuICAgICk6IFByb21pc2U8R2VuZXJhdGVkRm9ybT4ge1xuICAgICAgICB0aGlzLm1heFJlcXVlc3ROdW1iZXIrKztcbiAgICAgICAgY29uc3QgY3VycmVudFJlcXVlc3ROdW1iZXIgPSB0aGlzLm1heFJlcXVlc3ROdW1iZXI7XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTxHZW5lcmF0ZWRGb3JtPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NTdWdhckRlZmVycmVkTWFwLnNldChjdXJyZW50UmVxdWVzdE51bWJlciwge1xuICAgICAgICAgICAgICAgIHJlc29sdmU6IHJlc29sdmUsXG4gICAgICAgICAgICAgICAgcmVqZWN0OiByZWplY3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmdlbmVyYXRvclByb2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdG9yUHJvY2VzcyA9IHRoaXMuZm9ya1JlYWRTb3VyY2VzQW5kUHJvY2Vzc1N1Z2FyV29ya2VyKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudXNlR2VuZXJhdG9yUmVzdGFydGluZykge1xuICAgICAgICAgICAgaWYgKHRoaXMubWF4UmVxdWVzdE51bWJlciAlIDEwID09PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJSZXN0YXJ0aW5nIGdlbmVyYXRvclwiKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRvclByb2Nlc3Mua2lsbCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdG9yUHJvY2VzcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRvclByb2Nlc3MgPSB0aGlzLmZvcmtSZWFkU291cmNlc0FuZFByb2Nlc3NTdWdhcldvcmtlcigpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUmVzdGFydGVkIGdlbmVyYXRvclwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZ2VuZXJhdG9yUHJvY2Vzcy5zZW5kKFtcbiAgICAgICAgICAgIHRoaXMucGF0aFRvR2VuZXJhdG9yUm9vdERpcixcbiAgICAgICAgICAgIGZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoLFxuICAgICAgICAgICAgZ2VuZXJhdGlvbk9wdGlvbnMsXG4gICAgICAgICAgICB0aGlzLnB1cmdlQ2FjaGUsXG4gICAgICAgICAgICBjdXJyZW50UmVxdWVzdE51bWJlcixcbiAgICAgICAgXSk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvbWlzZTtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3VnYXJEZWZlcnJlZE1hcC5kZWxldGUoY3VycmVudFJlcXVlc3ROdW1iZXIpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBwcm9jZXNzU3VnYXIoXG4gICAgICAgIHN1Z2FyRmlsZXM6IFN1Z2FyQ29udGVudCxcbiAgICAgICAgcmVzb3VyY2VzOiBGb3JtUmVzb3VyY2VzLFxuICAgICAgICBnZW5lcmF0aW9uT3B0aW9ucz86IEdlbmVyYXRpb25PcHRpb25zXG4gICAgKTogUHJvbWlzZTxHZW5lcmF0ZWRGb3JtPiB7XG4gICAgICAgIHRoaXMubWF4UmVxdWVzdE51bWJlcisrO1xuICAgICAgICBjb25zdCBjdXJyZW50UmVxdWVzdE51bWJlciA9IHRoaXMubWF4UmVxdWVzdE51bWJlcjtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlPEdlbmVyYXRlZEZvcm0+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc1N1Z2FyRGVmZXJyZWRNYXAuc2V0KGN1cnJlbnRSZXF1ZXN0TnVtYmVyLCB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZTogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICByZWplY3Q6IHJlamVjdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXRoaXMuZ2VuZXJhdG9yUHJvY2Vzcykge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0b3JQcm9jZXNzID0gdGhpcy5mb3JrUHJvY2Vzc1N1Z2FyV29ya2VyKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdlbmVyYXRvclByb2Nlc3Muc2VuZChbXG4gICAgICAgICAgICB0aGlzLnBhdGhUb0dlbmVyYXRvclJvb3REaXIsXG4gICAgICAgICAgICBzdWdhckZpbGVzLFxuICAgICAgICAgICAgcmVzb3VyY2VzLFxuICAgICAgICAgICAgZ2VuZXJhdGlvbk9wdGlvbnMsXG4gICAgICAgICAgICB0aGlzLnB1cmdlQ2FjaGUsXG4gICAgICAgICAgICBjdXJyZW50UmVxdWVzdE51bWJlcixcbiAgICAgICAgXSk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvbWlzZTtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3VnYXJEZWZlcnJlZE1hcC5kZWxldGUoY3VycmVudFJlcXVlc3ROdW1iZXIpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ya1Byb2Nlc3NTdWdhcldvcmtlcigpOiBDaGlsZFByb2Nlc3Mge1xuICAgICAgICBjb25zdCBwcm9jZXNzU3VnYXJXb3JrZXIgPSBmb3JrKFwiLi9Qcm9jZXNzU3VnYXJXb3JrZXJcIiwgW10sIHtcbiAgICAgICAgICAgIGN3ZDogX19kaXJuYW1lLFxuICAgICAgICB9KTtcblxuICAgICAgICBwcm9jZXNzU3VnYXJXb3JrZXIub24oXCJtZXNzYWdlXCIsIChyZXNwb25zZTogQ2FsbFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGVmZXJyZWQgPSB0aGlzLnByb2Nlc3NTdWdhckRlZmVycmVkTWFwLmdldChyZXNwb25zZS5yZXF1ZXN0TnVtYmVyKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50RGVmZXJyZWQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnR5cGUgPT09IFwiRXJyb3JcIikge1xuICAgICAgICAgICAgICAgIGN1cnJlbnREZWZlcnJlZC5yZWplY3QobmV3IEVycm9yKHJlc3BvbnNlLmVycm9yVGV4dCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtQ29udGVudCA9IHJlc3BvbnNlLmdlbmVyYXRlZEZvcm07XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBHZW5lcmF0ZWRGb3JtID0ge307XG5cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIGZvcm1Db250ZW50SXRlbV0gb2YgaXRlcmF0ZUVudHJpZXMoZm9ybUNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBmb3JtQ29udGVudEl0ZW0gPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGZvcm1Db250ZW50SXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogQnVmZmVyLmZyb20oZm9ybUNvbnRlbnRJdGVtLnBheWxvYWQsIGZvcm1Db250ZW50SXRlbS5lbmNvZGluZyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3VycmVudERlZmVycmVkLnJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcHJvY2Vzc1N1Z2FyV29ya2VyLm9uKFwiZXJyb3JcIiwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBwcm9jZXNzU3VnYXJXb3JrZXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JrUmVhZFNvdXJjZXNBbmRQcm9jZXNzU3VnYXJXb3JrZXIoKTogQ2hpbGRQcm9jZXNzIHtcbiAgICAgICAgY29uc3QgcHJvY2Vzc1N1Z2FyV29ya2VyID0gZm9yayhcIi4vUmVhZFNvdXJjZXNBbmRQcm9jZXNzU3VnYXJXb3JrZXJcIiwgW10sIHtcbiAgICAgICAgICAgIGN3ZDogX19kaXJuYW1lLFxuICAgICAgICB9KTtcblxuICAgICAgICBwcm9jZXNzU3VnYXJXb3JrZXIub24oXCJtZXNzYWdlXCIsIChyZXNwb25zZTogQ2FsbFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGVmZXJyZWQgPSB0aGlzLnByb2Nlc3NTdWdhckRlZmVycmVkTWFwLmdldChyZXNwb25zZS5yZXF1ZXN0TnVtYmVyKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50RGVmZXJyZWQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnR5cGUgPT09IFwiRXJyb3JcIikge1xuICAgICAgICAgICAgICAgIGN1cnJlbnREZWZlcnJlZC5yZWplY3QobmV3IEVycm9yKHJlc3BvbnNlLmVycm9yVGV4dCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtQ29udGVudCA9IHJlc3BvbnNlLmdlbmVyYXRlZEZvcm07XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBHZW5lcmF0ZWRGb3JtID0ge307XG5cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIGZvcm1Db250ZW50SXRlbV0gb2YgaXRlcmF0ZUVudHJpZXMoZm9ybUNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBmb3JtQ29udGVudEl0ZW0gPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGZvcm1Db250ZW50SXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogQnVmZmVyLmZyb20oZm9ybUNvbnRlbnRJdGVtLnBheWxvYWQsIGZvcm1Db250ZW50SXRlbS5lbmNvZGluZyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3VycmVudERlZmVycmVkLnJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcHJvY2Vzc1N1Z2FyV29ya2VyLm9uKFwiZXJyb3JcIiwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBwcm9jZXNzU3VnYXJXb3JrZXI7XG4gICAgfVxufVxuXG5jb25zdCBnZW5lcmF0b3JzQ2FjaGU6IE1hcDxzdHJpbmcsIEdlbmVyYXRvckFzeW5jUHJveHk+ID0gbmV3IE1hcCgpO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXN5bmNHZW5lcmF0b3IoXG4gICAgcGF0aFRvR2VuZXJhdG9yUm9vdERpcjogc3RyaW5nLFxuICAgIHB1cmdlQ2FjaGU6IGJvb2xlYW4sXG4gICAgdXNlR2VuZXJhdG9yUmVzdGFydGluZzogYm9vbGVhblxuKTogRm9ybUdlbmVyYXRvciB7XG4gICAgbGV0IHJlc3VsdCA9IGdlbmVyYXRvcnNDYWNoZS5nZXQocGF0aFRvR2VuZXJhdG9yUm9vdERpcik7XG4gICAgaWYgKHJlc3VsdCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVzdWx0ID0gbmV3IEdlbmVyYXRvckFzeW5jUHJveHkocGF0aFRvR2VuZXJhdG9yUm9vdERpciwgcHVyZ2VDYWNoZSwgdXNlR2VuZXJhdG9yUmVzdGFydGluZyk7XG4gICAgICAgIGdlbmVyYXRvcnNDYWNoZS5zZXQocGF0aFRvR2VuZXJhdG9yUm9vdERpciwgcmVzdWx0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsY0FBQSxHQUFBQyxPQUFBO0FBR0EsSUFBQUMsYUFBQSxHQUFBRCxPQUFBO0FBUUEsSUFBQUUsY0FBQSxHQUFBRixPQUFBO0FBR0EsSUFBQUcsc0JBQUEsR0FBQUgsT0FBQTtBQWZBOztBQXVCQSxNQUFNSSxtQkFBbUIsQ0FBMEI7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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreateAsyncGenerator.js","names":["_child_process","require","_StaticLogger","_IterableUtils","_GeneratorRequireUtils","GeneratorAsyncProxy","constructor","pathToGeneratorRootDir","purgeCache","useGeneratorRestarting","logger","getLogger","generatorSourcesImporter","generatorProcess","maxRequestNumber","processSugarDeferredMap","Map","GeneratorSourcesImporter","getLocalizedSugar","sugarFiles","resources","localizationEntryPoint","importLocalization","undefined","Error","getDictionary","readSources","formSourcesPath","farmDirectory","hlFarmDirectoryPath","importReadSources","formSource","getSugarTexts","importGetSugarTexts","result","getAllDependencies","importGetAllDependencies","supportsDependenciesExtraction","getAllDependenciesHash","importGetAllDependenciesHash","readSourcesAndProcessSugar","generationOptions","currentRequestNumber","promise","Promise","resolve","reject","set","forkReadSourcesAndProcessSugarWorker","console","log","kill","send","delete","processSugar","forkProcessSugarWorker","processSugarWorker","fork","cwd","__dirname","on","response","currentDeferred","get","requestNumber","type","errorText","formContent","generatedForm","key","formContentItem","iterateEntries","Buffer","from","payload","encoding","error","generatorsCache","createAsyncGenerator"],"sources":["../../../../../../src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport { ChildProcess, fork } from \"child_process\";\n\nimport { ILogger } from \"../../../Commons/Logging/ILogger\";\nimport { getLogger } from \"../../../Commons/Logging/StaticLogger\";\nimport {\n FormGenerator,\n GeneratedForm,\n GenerationOptions,\n LocalizationDictionaryContent,\n} from \"../../Form/GenerateForm\";\nimport { FormResources, FormSource, SugarContent } from \"../../ReadFormSource\";\nimport { iterateEntries } from \"../../../../../Common/IterableUtils\";\nimport { ExtractorResult } from \"../../../../../Common/TextExtractor/TextExtractorTypes\";\n\nimport { GeneratorSourcesImporter } from \"./GeneratorRequireUtils\";\nimport { CallResponse } from \"./ProcessSugarWorker\";\n\ninterface ProcessSugarDeferred {\n resolve: (result: GeneratedForm) => void;\n reject: (error: unknown) => void;\n}\n\nclass GeneratorAsyncProxy implements FormGenerator {\n private readonly pathToGeneratorRootDir: string;\n private readonly generatorSourcesImporter: GeneratorSourcesImporter;\n private readonly purgeCache: boolean;\n private readonly useGeneratorRestarting: boolean;\n private generatorProcess?: ChildProcess;\n private maxRequestNumber = 0;\n private readonly processSugarDeferredMap: Map<number, ProcessSugarDeferred> = new Map();\n\n public constructor(\n pathToGeneratorRootDir: string,\n purgeCache: boolean,\n useGeneratorRestarting: boolean,\n logger: ILogger = getLogger()\n ) {\n this.useGeneratorRestarting = useGeneratorRestarting;\n this.pathToGeneratorRootDir = pathToGeneratorRootDir;\n this.purgeCache = purgeCache;\n this.generatorSourcesImporter = new GeneratorSourcesImporter(purgeCache);\n }\n\n public async getLocalizedSugar(sugarFiles: SugarContent, resources: FormResources): Promise<SugarContent> {\n const localizationEntryPoint = await this.generatorSourcesImporter.importLocalization(\n this.pathToGeneratorRootDir\n );\n if (localizationEntryPoint == undefined) {\n throw new Error(\"Данная версия генератора не поддерживает локализацию.\");\n }\n return localizationEntryPoint.getLocalizedSugar(sugarFiles, resources);\n }\n\n public async getDictionary(\n sugarFiles: SugarContent,\n resources: FormResources\n ): Promise<LocalizationDictionaryContent> {\n const localizationEntryPoint = await this.generatorSourcesImporter.importLocalization(\n this.pathToGeneratorRootDir\n );\n if (localizationEntryPoint == undefined) {\n throw new Error(\"Данная версия генератора не поддерживает локализацию.\");\n }\n return localizationEntryPoint.getDictionary(sugarFiles, resources);\n }\n\n public async readSources(\n formSourcesPath: string,\n farmDirectory: string,\n hlFarmDirectoryPath: string\n ): Promise<FormSource> {\n const readSources: FormGenerator[\"readSources\"] = await this.generatorSourcesImporter.importReadSources(\n this.pathToGeneratorRootDir\n );\n const formSource = await readSources(formSourcesPath, farmDirectory, hlFarmDirectoryPath);\n\n return formSource;\n }\n\n public async getSugarTexts(\n formSourcesPath: string,\n farmDirectory: string,\n hlFarmDirectoryPath: string\n ): Promise<ExtractorResult> {\n const getSugarTexts: FormGenerator[\"getSugarTexts\"] = await this.generatorSourcesImporter.importGetSugarTexts(\n this.pathToGeneratorRootDir\n );\n const result = await getSugarTexts(formSourcesPath, farmDirectory, hlFarmDirectoryPath);\n\n return result;\n }\n\n public async getAllDependencies(\n formSourcesPath: string,\n farmDirectory: string,\n hlFarmDirectoryPath: string\n ): Promise<string[]> {\n const getAllDependencies = await this.generatorSourcesImporter.importGetAllDependencies(\n this.pathToGeneratorRootDir\n );\n if (getAllDependencies == undefined) {\n throw new Error(\"This version of generator does not support dependencies extraction\");\n }\n const formSource = await getAllDependencies(formSourcesPath, farmDirectory, hlFarmDirectoryPath);\n return formSource;\n }\n\n public async supportsDependenciesExtraction(): Promise<boolean> {\n const getAllDependenciesHash = await this.generatorSourcesImporter.importGetAllDependenciesHash(\n this.pathToGeneratorRootDir\n );\n return getAllDependenciesHash != undefined;\n }\n\n public async getAllDependenciesHash(\n formSourcesPath: string,\n farmDirectory: string,\n hlFarmDirectoryPath: string\n ): Promise<string> {\n const getAllDependenciesHash = await this.generatorSourcesImporter.importGetAllDependenciesHash(\n this.pathToGeneratorRootDir\n );\n if (getAllDependenciesHash == undefined) {\n throw new Error(\"This version of generator does not support dependencies extraction\");\n }\n const formSource = await getAllDependenciesHash(formSourcesPath, farmDirectory, hlFarmDirectoryPath);\n return formSource;\n }\n\n public async readSourcesAndProcessSugar(\n formSourcesPath: string,\n farmDirectory: string,\n hlFarmDirectoryPath: string,\n generationOptions?: GenerationOptions\n ): Promise<GeneratedForm> {\n this.maxRequestNumber++;\n const currentRequestNumber = this.maxRequestNumber;\n const promise = new Promise<GeneratedForm>((resolve, reject) => {\n this.processSugarDeferredMap.set(currentRequestNumber, {\n resolve: resolve,\n reject: reject,\n });\n });\n\n if (!this.generatorProcess) {\n this.generatorProcess = this.forkReadSourcesAndProcessSugarWorker();\n }\n if (this.useGeneratorRestarting) {\n if (this.maxRequestNumber % 10 === 0) {\n console.log(\"Restarting generator\");\n this.generatorProcess.kill();\n this.generatorProcess = undefined;\n this.generatorProcess = this.forkReadSourcesAndProcessSugarWorker();\n console.log(\"Restarted generator\");\n }\n }\n\n this.generatorProcess.send([\n this.pathToGeneratorRootDir,\n formSourcesPath,\n farmDirectory,\n hlFarmDirectoryPath,\n generationOptions,\n this.purgeCache,\n currentRequestNumber,\n ]);\n\n const result = await promise;\n this.processSugarDeferredMap.delete(currentRequestNumber);\n return result;\n }\n\n public async processSugar(\n sugarFiles: SugarContent,\n resources: FormResources,\n generationOptions?: GenerationOptions\n ): Promise<GeneratedForm> {\n this.maxRequestNumber++;\n const currentRequestNumber = this.maxRequestNumber;\n const promise = new Promise<GeneratedForm>((resolve, reject) => {\n this.processSugarDeferredMap.set(currentRequestNumber, {\n resolve: resolve,\n reject: reject,\n });\n });\n\n if (!this.generatorProcess) {\n this.generatorProcess = this.forkProcessSugarWorker();\n }\n\n this.generatorProcess.send([\n this.pathToGeneratorRootDir,\n sugarFiles,\n resources,\n generationOptions,\n this.purgeCache,\n currentRequestNumber,\n ]);\n\n const result = await promise;\n this.processSugarDeferredMap.delete(currentRequestNumber);\n return result;\n }\n\n private forkProcessSugarWorker(): ChildProcess {\n const processSugarWorker = fork(\"./ProcessSugarWorker\", [], {\n cwd: __dirname,\n });\n\n processSugarWorker.on(\"message\", (response: CallResponse) => {\n const currentDeferred = this.processSugarDeferredMap.get(response.requestNumber);\n if (currentDeferred == undefined) {\n return;\n }\n if (response.type === \"Error\") {\n currentDeferred.reject(new Error(response.errorText));\n } else {\n const formContent = response.generatedForm;\n const result: GeneratedForm = {};\n\n for (const [key, formContentItem] of iterateEntries(formContent)) {\n result[key] =\n typeof formContentItem === \"string\"\n ? formContentItem\n : Buffer.from(formContentItem.payload, formContentItem.encoding);\n }\n\n currentDeferred.resolve(result);\n }\n });\n\n processSugarWorker.on(\"error\", error => {\n throw error;\n });\n\n return processSugarWorker;\n }\n\n private forkReadSourcesAndProcessSugarWorker(): ChildProcess {\n const processSugarWorker = fork(\"./ReadSourcesAndProcessSugarWorker\", [], {\n cwd: __dirname,\n });\n\n processSugarWorker.on(\"message\", (response: CallResponse) => {\n const currentDeferred = this.processSugarDeferredMap.get(response.requestNumber);\n if (currentDeferred == undefined) {\n return;\n }\n if (response.type === \"Error\") {\n currentDeferred.reject(new Error(response.errorText));\n } else {\n const formContent = response.generatedForm;\n const result: GeneratedForm = {};\n\n for (const [key, formContentItem] of iterateEntries(formContent)) {\n result[key] =\n typeof formContentItem === \"string\"\n ? formContentItem\n : Buffer.from(formContentItem.payload, formContentItem.encoding);\n }\n\n currentDeferred.resolve(result);\n }\n });\n\n processSugarWorker.on(\"error\", error => {\n throw error;\n });\n\n return processSugarWorker;\n }\n}\n\nconst generatorsCache: Map<string, GeneratorAsyncProxy> = new Map();\n\nexport function createAsyncGenerator(\n pathToGeneratorRootDir: string,\n purgeCache: boolean,\n useGeneratorRestarting: boolean\n): FormGenerator {\n let result = generatorsCache.get(pathToGeneratorRootDir);\n if (result == undefined) {\n result = new GeneratorAsyncProxy(pathToGeneratorRootDir, purgeCache, useGeneratorRestarting);\n generatorsCache.set(pathToGeneratorRootDir, result);\n }\n return result;\n}\n"],"mappings":"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","ignoreList":[]}
|