@microsoft/windows-admin-center-sdk 4.123.0 → 4.232.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/angular/assets/strings/cs-CZ/strings.json +1 -1
- package/angular/assets/strings/de-DE/strings.json +1 -1
- package/angular/assets/strings/es-ES/strings.json +1 -1
- package/angular/assets/strings/fr-FR/strings.json +1 -1
- package/angular/assets/strings/hu-HU/strings.json +1 -1
- package/angular/assets/strings/id-ID/strings.json +1 -1
- package/angular/assets/strings/it-IT/strings.json +1 -1
- package/angular/assets/strings/ja-JP/strings.json +1 -1
- package/angular/assets/strings/ko-KR/strings.json +1 -1
- package/angular/assets/strings/nl-NL/strings.json +1 -1
- package/angular/assets/strings/pl-PL/strings.json +1 -1
- package/angular/assets/strings/pt-BR/strings.json +1 -1
- package/angular/assets/strings/pt-PT/strings.json +1 -1
- package/angular/assets/strings/ru-RU/strings.json +1 -1
- package/angular/assets/strings/strings.json +1 -1
- package/angular/assets/strings/sv-SE/strings.json +1 -1
- package/angular/assets/strings/tr-TR/strings.json +1 -1
- package/angular/assets/strings/zh-CN/strings.json +1 -1
- package/angular/assets/strings/zh-TW/strings.json +1 -1
- package/angular/esm2020/src/controls/accordion/accordion-panel/accordion-panel.component.mjs +36 -12
- package/angular/esm2020/src/controls/actions/containers/action-container.component.mjs +2 -3
- package/angular/esm2020/src/controls/alert-bar/alert-bar.component.mjs +2 -2
- package/angular/esm2020/src/controls/breadcrumb-header/breadcrumb-header.component.mjs +1 -1
- package/angular/esm2020/src/controls/common/base.component.mjs +1 -1
- package/angular/esm2020/src/controls/common/spacer-base.component.mjs +25 -1
- package/angular/esm2020/src/controls/context-menu/context-menu.component.mjs +2 -3
- package/angular/esm2020/src/controls/data-table/data-table.component.mjs +7 -7
- package/angular/esm2020/src/controls/dialog/base-dialog.component.mjs +2 -4
- package/angular/esm2020/src/controls/dialog/confirmation-list-dialog/confirmation-list-dialog.component.mjs +2 -2
- package/angular/esm2020/src/controls/dropdown/dropdown.component.mjs +1 -4
- package/angular/esm2020/src/controls/form/form-field/array/array-form-field-accessibility-manager.service.mjs +59 -0
- package/angular/esm2020/src/controls/form/form-field/array/array-form-field.component.mjs +24 -35
- package/angular/esm2020/src/controls/form/form-field/clock/clock-form-field.component.mjs +10 -7
- package/angular/esm2020/src/controls/form/form-field/form-field-accessibility-manager-base.service.mjs +105 -0
- package/angular/esm2020/src/controls/form/form-field/form-field.component.mjs +1 -1
- package/angular/esm2020/src/controls/form/form-field/list/list-form-field-accessibility-manager.service.mjs +38 -0
- package/angular/esm2020/src/controls/form/form-field/list/list-form-field.component.mjs +56 -38
- package/angular/esm2020/src/controls/form/form-field/number/number-form-field.component.mjs +22 -4
- package/angular/esm2020/src/controls/form/form-field/ordered-list/ordered-list-form-field-accessibility-manager.service.mjs +54 -0
- package/angular/esm2020/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.mjs +67 -67
- package/angular/esm2020/src/controls/form/form-field/radio-group/classic/radio-group-form-field.component.mjs +5 -5
- package/angular/esm2020/src/controls/form/forms.module.mjs +19 -2
- package/angular/esm2020/src/controls/icon/icon-text/icon-text.component.mjs +6 -6
- package/angular/esm2020/src/controls/icon/layered-icon/status/status-icon.component.mjs +1 -1
- package/angular/esm2020/src/controls/layout/editable-layout.component.mjs +2 -3
- package/angular/esm2020/src/controls/node-credentials-form/node-credentials-form.component.mjs +2 -2
- package/angular/esm2020/src/controls/page-alert-bar/page-alert-bar.component.mjs +4 -4
- package/angular/esm2020/src/controls/property-grid/property-grid.component.mjs +33 -13
- package/angular/esm2020/src/controls/schema/tabbed-form-loader.component.mjs +2 -2
- package/angular/esm2020/src/controls/settings/common-settings/common-settings.component.mjs +5 -5
- package/angular/esm2020/src/controls/settings/settings-form.directive.mjs +3 -7
- package/angular/esm2020/src/controls/settings/settings-form.service.mjs +2 -4
- package/angular/esm2020/src/controls/snap-in-extension/snap-in-extension.component.mjs +1 -1
- package/angular/esm2020/src/controls/split-view/split-view.component.mjs +2 -2
- package/angular/esm2020/src/controls/wizard/models/wizard-step-snap-in-output.mjs +1 -1
- package/angular/esm2020/src/controls/wizard-lite/wizard-navigation-button/wizard-navigation-button.component.mjs +3 -3
- package/angular/esm2020/src/data/extension-broker/snap-in-listener.mjs +80 -0
- package/angular/esm2020/src/data/index.mjs +2 -1
- package/angular/esm2020/src/directives/router/router-link.directive.mjs +2 -2
- package/angular/esm2020/src/directives/svg/svg.directive.mjs +2 -3
- package/angular/esm2020/src/generated/strings.mjs +1 -1
- package/angular/esm2020/src/service/navigation.service.mjs +3 -8
- package/angular/esm2020/src/service/user-alive.service.mjs +2 -4
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs +665 -239
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
- package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs +636 -237
- package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
- package/angular/package.json +1 -1
- package/angular/src/controls/accordion/accordion-panel/accordion-panel.component.d.ts +13 -4
- package/angular/src/controls/common/spacer-base.component.d.ts +11 -2
- package/angular/src/controls/form/form-field/array/array-form-field-accessibility-manager.service.d.ts +38 -0
- package/angular/src/controls/form/form-field/array/array-form-field.component.d.ts +3 -1
- package/angular/src/controls/form/form-field/form-field-accessibility-manager-base.service.d.ts +37 -0
- package/angular/src/controls/form/form-field/list/list-form-field-accessibility-manager.service.d.ts +25 -0
- package/angular/src/controls/form/form-field/list/list-form-field.component.d.ts +12 -2
- package/angular/src/controls/form/form-field/number/number-form-field.component.d.ts +8 -0
- package/angular/src/controls/form/form-field/ordered-list/ordered-list-form-field-accessibility-manager.service.d.ts +37 -0
- package/angular/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.d.ts +12 -8
- package/angular/src/controls/icon/icon-text/icon-text.component.d.ts +1 -1
- package/angular/src/controls/property-grid/property-grid.component.d.ts +2 -0
- package/angular/src/controls/wizard/models/wizard-step-snap-in-output.d.ts +1 -1
- package/{core → angular/src}/data/extension-broker/snap-in-listener.d.ts +49 -46
- package/angular/src/data/index.d.ts +1 -0
- package/angular/src/directives/svg/svg.directive.d.ts +1 -2
- package/angular/src/generated/strings.d.ts +12 -0
- package/core/async/cancellation.js +312 -0
- package/core/async/index.js +312 -0
- package/core/async/progress.js +312 -0
- package/core/azure/azure-constants.d.ts +2 -2
- package/core/azure/azure-constants.d.ts.map +1 -1
- package/core/azure/azure-constants.js +322 -3
- package/core/azure/azure-constants.js.map +1 -1
- package/core/azure/azure-logging.js +312 -0
- package/core/azure/azure-manager.js +312 -0
- package/core/azure/models/aadAppConfig-data.js +312 -0
- package/core/azure/models/azureArcStatusEnum.js +312 -0
- package/core/azure/models/azureTokenResult-data.js +312 -0
- package/core/azure/resources/deployment-operation-request-body.js +312 -0
- package/core/azure/resources/deployment-operation-response.js +312 -0
- package/core/azure/resources/location-data.js +315 -0
- package/core/azure/resources/resource-group-data.js +312 -0
- package/core/azure/resources/subscription-data.js +312 -0
- package/core/base/data-store/browser-storage-data-store.js +315 -0
- package/core/base/data-store/cached-data-store.js +312 -0
- package/core/base/data-store/data-store.js +312 -0
- package/core/base/data-store/local-data-store.js +312 -0
- package/core/base/data-store/memory-data-store.js +312 -0
- package/core/base/data-store/session-data-store.js +312 -0
- package/core/base/date/date-like.js +312 -0
- package/core/base/date/date-range.js +312 -0
- package/core/base/date/date-time.js +312 -0
- package/core/base/date/date-type.js +312 -0
- package/core/base/date/time-unit.js +312 -0
- package/core/base/decorators/base.js +312 -0
- package/core/base/decorators/debounce.decorators.js +312 -0
- package/core/base/decorators/delay.decorator.js +315 -0
- package/core/base/decorators/yield.decorator.js +312 -0
- package/core/base/environment.js +312 -0
- package/core/base/json.js +312 -0
- package/core/base/msft-sme.mock.js +316 -0
- package/core/base/polyfills/array.js +315 -0
- package/core/base/polyfills/string.js +312 -0
- package/core/base/rxjs-lifetime-manager.js +312 -0
- package/core/base/utilities.js +312 -0
- package/core/base/versioned-object.js +312 -0
- package/core/data/accessibility-manager.js +312 -0
- package/core/data/active-directory/active-directory.js +312 -0
- package/core/data/active-directory/models/account-info.js +312 -0
- package/core/data/active-directory/models/active-directory-search-options.js +312 -0
- package/core/data/active-directory/models/search-type.js +312 -0
- package/core/data/animation.js +312 -0
- package/core/data/app-context.js +312 -0
- package/core/data/asset-manager.js +315 -0
- package/core/data/base64-array-buffer.js +312 -0
- package/core/data/batch-connection.js +312 -0
- package/core/data/cim-connection.js +312 -0
- package/core/data/cim-stream.js +312 -0
- package/core/data/cim.js +312 -0
- package/core/data/column-picker.js +312 -0
- package/core/data/cookie.js +312 -0
- package/core/data/core-environment.js +315 -0
- package/core/data/crypto.js +312 -0
- package/core/data/deployment-share.js +312 -0
- package/core/data/disposable.js +312 -0
- package/core/data/electron.js +315 -0
- package/core/data/error-extended.js +312 -0
- package/core/data/extension-broker/dialog-listener.js +312 -0
- package/core/data/extension-broker/extension-broker.js +312 -0
- package/core/data/extension-broker/extension-listener.js +312 -0
- package/core/data/extension-broker/model/extension-broker-request-payload.js +312 -0
- package/core/data/extension-broker/model/extension-broker-response-error.js +312 -0
- package/core/data/extension-broker/model/extension-broker-response-payload.js +312 -0
- package/core/data/extension-broker/model/extension-entries.js +315 -0
- package/core/data/extension-broker/model/extension-instance.js +315 -0
- package/core/data/extension-broker/model/extension-rect.js +312 -0
- package/core/data/extension-broker/model/extension-search-options.js +312 -0
- package/core/data/extension-broker/service-listener.js +312 -0
- package/core/data/extension-broker/worker-listener.js +312 -0
- package/core/data/extension-broker/worker-set.js +312 -0
- package/core/data/file-transfer.js +312 -0
- package/core/data/gateway-connection.js +312 -0
- package/core/data/gateway-status.js +312 -0
- package/core/data/gateway-url-builder.js +312 -0
- package/core/data/gateway-url-translator.d.ts +1 -0
- package/core/data/gateway-url-translator.d.ts.map +1 -1
- package/core/data/gateway-url-translator.js +337 -6
- package/core/data/gateway-url-translator.js.map +1 -1
- package/core/data/gateway-urls.js +312 -0
- package/core/data/globalization.js +315 -0
- package/core/data/http-constants.js +315 -0
- package/core/data/http.js +312 -0
- package/core/data/jobs/jobs-manager.js +312 -0
- package/core/data/jobs/models/job-credentials.js +312 -0
- package/core/data/jobs/models/job-node.js +312 -0
- package/core/data/jobs/models/job-paginated-response.js +315 -0
- package/core/data/jobs/models/job-pagination-options.js +315 -0
- package/core/data/jobs/models/job.js +312 -0
- package/core/data/jobs/models/node-job.js +312 -0
- package/core/data/jobs/models/powershell-job.js +312 -0
- package/core/data/language.js +315 -0
- package/core/data/lifetime-data.js +312 -0
- package/core/data/localization-manager.js +312 -0
- package/core/data/native-q.js +312 -0
- package/core/data/net.d.ts.map +1 -1
- package/core/data/net.js +313 -1
- package/core/data/net.js.map +1 -1
- package/core/data/node-connection.d.ts.map +1 -1
- package/core/data/node-connection.js +312 -2
- package/core/data/node-connection.js.map +1 -1
- package/core/data/node-extension-install.js +312 -0
- package/core/data/powershell-alternate.js +312 -0
- package/core/data/powershell-batch.js +312 -0
- package/core/data/powershell-connection.js +312 -0
- package/core/data/powershell-crypto.js +312 -0
- package/core/data/powershell-stream.js +312 -0
- package/core/data/powershell.js +312 -0
- package/core/data/query-cache.js +312 -0
- package/core/data/resource-cache.js +312 -0
- package/core/data/schedule-reboot.js +312 -0
- package/core/data/settings-manager.js +312 -0
- package/core/data/settings-manger.mock.js +312 -0
- package/core/data/sme-extension.js +312 -0
- package/core/data/ssh-stream.js +312 -0
- package/core/data/units.js +312 -0
- package/core/data/uri-builder.js +315 -0
- package/core/data/wdac-operations.js +312 -0
- package/core/data/websocket-stream.js +312 -0
- package/core/diagnostics/error-monitor.js +312 -0
- package/core/diagnostics/log-level.js +312 -0
- package/core/diagnostics/log-record.js +312 -0
- package/core/diagnostics/logging-constants.js +312 -0
- package/core/diagnostics/logging.js +312 -0
- package/core/diagnostics/logging.mock.js +312 -0
- package/core/diagnostics/sme-web-telemetry-models.js +312 -0
- package/core/diagnostics/sme-web-telemetry.d.ts +1 -2
- package/core/diagnostics/sme-web-telemetry.d.ts.map +1 -1
- package/core/diagnostics/sme-web-telemetry.js +336 -15
- package/core/diagnostics/sme-web-telemetry.js.map +1 -1
- package/core/diagnostics/telemetry-control-type.js +312 -0
- package/core/diagnostics/telemetry-options.js +312 -0
- package/core/diagnostics/telemetry-record.js +312 -0
- package/core/dom/dom.js +312 -0
- package/core/frame/frame-connection.js +312 -0
- package/core/frame/frame-connection.mock.js +312 -0
- package/core/frame/shell-navigation-connection.js +312 -0
- package/core/generated/powershell-scripts.d.ts.map +1 -1
- package/core/generated/powershell-scripts.js +313 -1
- package/core/generated/powershell-scripts.js.map +1 -1
- package/core/generated/strings.js +312 -0
- package/core/host/host-core-manager.js +312 -0
- package/core/host/host-core-message-type.js +312 -0
- package/core/host/host-core-messages.js +312 -0
- package/core/index.d.ts +0 -1
- package/core/index.d.ts.map +1 -1
- package/core/index.js +312 -1
- package/core/index.js.map +1 -1
- package/core/manifest/environment-modules.js +312 -0
- package/core/manifest/manifest-loader.js +312 -0
- package/core/notification/client-notification-instance.js +312 -0
- package/core/notification/client-notification.js +312 -0
- package/core/notification/notification-connection.js +312 -0
- package/core/notification/notification-link-type.js +312 -0
- package/core/notification/notification-manager.js +312 -0
- package/core/notification/notification-message.js +312 -0
- package/core/notification/notification-state.js +312 -0
- package/core/notification/notification.js +312 -0
- package/core/notification/powershell-notification.js +312 -0
- package/core/notification/socket-signalr.js +312 -0
- package/core/notification/work-item-connection.js +312 -0
- package/core/notification/work-item-manager.js +312 -0
- package/core/notification/work-item-request.js +312 -0
- package/core/performance/performance-profile-data-type.js +312 -0
- package/core/performance/performance-profile-data.js +312 -0
- package/core/performance/performance-profile-database.js +312 -0
- package/core/performance/performance-profile-record.js +312 -0
- package/core/performance/performance-profile.d.ts.map +1 -1
- package/core/performance/performance-profile.js +321 -9
- package/core/performance/performance-profile.js.map +1 -1
- package/core/performance/performance-tracker.js +312 -0
- package/core/polyfills.js +312 -0
- package/core/resources/scripts/public/crypto/Get-DecryptedDataFromNode.ps1 +216 -0
- package/core/resources/scripts/public/crypto/Get-EncryptionJWKOnNode.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-CimWin32LogicalDisk.ps1 +218 -0
- package/core/resources/scripts/public/inventory/Get-CimWin32NetworkAdapter.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-CimWin32PhysicalMemory.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-CimWin32Processor.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-ClusterInventory.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-ClusterNodes.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-ServerInventory.ps1 +246 -8
- package/core/rpc/alive/rpc-alive-client.js +312 -0
- package/core/rpc/alive/rpc-alive-handler.js +312 -0
- package/core/rpc/alive/rpc-alive-model.js +315 -0
- package/core/rpc/alive/rpc-alive-subject-server.js +312 -0
- package/core/rpc/alive/rpc-observable-alive-client.js +312 -0
- package/core/rpc/alive/rpc-observable-alive-model.js +312 -0
- package/core/rpc/alive/rpc-observable-alive-server.js +312 -0
- package/core/rpc/azure/rpc-azure-model.js +312 -0
- package/core/rpc/azure/rpc-azure-request-client.js +312 -0
- package/core/rpc/azure/rpc-azure-request-handler.js +312 -0
- package/core/rpc/azure/rpc-azure-request-subject-server.js +312 -0
- package/core/rpc/azure/rpc-azure-response-client.js +312 -0
- package/core/rpc/azure/rpc-azure-response-handler.js +315 -0
- package/core/rpc/credssp/rpc-credssp-model.js +312 -0
- package/core/rpc/credssp/rpc-credssp-request-client.js +312 -0
- package/core/rpc/credssp/rpc-credssp-request-handler.js +315 -0
- package/core/rpc/credssp/rpc-credssp-request-subject-server.js +312 -0
- package/core/rpc/credssp/rpc-credssp-response-client.js +312 -0
- package/core/rpc/credssp/rpc-credssp-response-handler.js +315 -0
- package/core/rpc/dialog/rpc-dialog-client.js +312 -0
- package/core/rpc/dialog/rpc-dialog-handler.js +312 -0
- package/core/rpc/dialog/rpc-dialog-model.js +312 -0
- package/core/rpc/dialog/rpc-dialog-subject-server.js +315 -0
- package/core/rpc/electron/rpc-electron-model.js +312 -0
- package/core/rpc/electron/rpc-electron-request-client.js +312 -0
- package/core/rpc/electron/rpc-electron-request-handler.js +312 -0
- package/core/rpc/electron/rpc-electron-request-subject-server.js +312 -0
- package/core/rpc/electron/rpc-electron-response-client.js +312 -0
- package/core/rpc/electron/rpc-electron-response-handler.js +312 -0
- package/core/rpc/elevate/rpc-observable-elevate-client.js +312 -0
- package/core/rpc/elevate/rpc-observable-elevate-model.js +312 -0
- package/core/rpc/elevate/rpc-observable-elevate-server.js +312 -0
- package/core/rpc/error-monitor/rpc-observable-error-monitor-client.js +312 -0
- package/core/rpc/error-monitor/rpc-observable-error-monitor-model.js +315 -0
- package/core/rpc/error-monitor/rpc-observable-error-monitor-server.js +312 -0
- package/core/rpc/extension-broker/rpc-extension-broker-model.js +315 -0
- package/core/rpc/extension-broker/rpc-extension-broker-module-request-subject-server.js +315 -0
- package/core/rpc/extension-broker/rpc-extension-broker-request-client.js +312 -0
- package/core/rpc/extension-broker/rpc-extension-broker-request-handler.js +312 -0
- package/core/rpc/extension-broker/rpc-extension-broker-request-subject-server.js +312 -0
- package/core/rpc/extension-broker/rpc-extension-broker-response-client.js +312 -0
- package/core/rpc/extension-broker/rpc-extension-broker-response-handler.js +312 -0
- package/core/rpc/extension-data/rpc-observable-extension-data-client.js +312 -0
- package/core/rpc/extension-data/rpc-observable-extension-data-model.js +312 -0
- package/core/rpc/extension-data/rpc-observable-extension-data-server.js +312 -0
- package/core/rpc/forward/rpc-forward-auto-client.js +312 -0
- package/core/rpc/forward/rpc-forward-down-client.js +315 -0
- package/core/rpc/forward/rpc-forward-down-handler.js +312 -0
- package/core/rpc/forward/rpc-forward-model.js +312 -0
- package/core/rpc/forward/rpc-forward-up-client.js +312 -0
- package/core/rpc/forward/rpc-forward-up-handler.js +312 -0
- package/core/rpc/forward/rpc-forward-up-subject-server.js +312 -0
- package/core/rpc/log/rpc-log-client.js +312 -0
- package/core/rpc/log/rpc-log-handler.js +312 -0
- package/core/rpc/log/rpc-log-model.js +312 -0
- package/core/rpc/log/rpc-log-subject-server.js +312 -0
- package/core/rpc/notification/rpc-notification-client.js +312 -0
- package/core/rpc/notification/rpc-notification-handler.js +312 -0
- package/core/rpc/notification/rpc-notification-model.js +312 -0
- package/core/rpc/notification/rpc-notification-subject-server.js +312 -0
- package/core/rpc/overlay/rpc-overlay-close-client.js +312 -0
- package/core/rpc/overlay/rpc-overlay-close-handler.js +312 -0
- package/core/rpc/overlay/rpc-overlay-model.js +312 -0
- package/core/rpc/overlay/rpc-overlay-open-client.js +315 -0
- package/core/rpc/overlay/rpc-overlay-open-handler.js +312 -0
- package/core/rpc/overlay/rpc-overlay-open-subject-server.js +312 -0
- package/core/rpc/performance/rpc-observable-performance-client.js +312 -0
- package/core/rpc/performance/rpc-observable-performance-config-client.js +312 -0
- package/core/rpc/performance/rpc-observable-performance-config-server.js +312 -0
- package/core/rpc/performance/rpc-observable-performance-model.js +312 -0
- package/core/rpc/performance/rpc-observable-performance-server.js +312 -0
- package/core/rpc/report/rpc-report-client.js +312 -0
- package/core/rpc/report/rpc-report-handler.js +312 -0
- package/core/rpc/report/rpc-report-model.js +312 -0
- package/core/rpc/report/rpc-report-subject-server.js +315 -0
- package/core/rpc/rpc-base.js +312 -0
- package/core/rpc/rpc-channel.js +312 -0
- package/core/rpc/rpc-forwarder.js +312 -0
- package/core/rpc/rpc-inbound-client.js +312 -0
- package/core/rpc/rpc-inbound.js +312 -0
- package/core/rpc/rpc-manager.js +312 -0
- package/core/rpc/rpc-module-subject-server.js +315 -0
- package/core/rpc/rpc-observable-client.js +312 -0
- package/core/rpc/rpc-observable-request.js +312 -0
- package/core/rpc/rpc-observable-result.js +312 -0
- package/core/rpc/rpc-observable-server.js +312 -0
- package/core/rpc/rpc-outbound-client.js +312 -0
- package/core/rpc/rpc-outbound.js +312 -0
- package/core/rpc/rpc-subject-server.js +312 -0
- package/core/rpc/rpc.js +312 -0
- package/core/rpc/seek/rpc-seek-client.js +312 -0
- package/core/rpc/seek/rpc-seek-handler.js +315 -0
- package/core/rpc/seek/rpc-seek-model.js +312 -0
- package/core/rpc/settings/rpc-settings-client.js +315 -0
- package/core/rpc/settings/rpc-settings-handler.js +312 -0
- package/core/rpc/settings/rpc-settings-model.js +312 -0
- package/core/rpc/settings/rpc-settings-subject-server.js +312 -0
- package/core/rpc/shell-navigate/rpc-shell-navigate-client.js +312 -0
- package/core/rpc/shell-navigate/rpc-shell-navigate-handler.js +312 -0
- package/core/rpc/shell-navigate/rpc-shell-navigate-model.js +312 -0
- package/core/rpc/shell-navigate/rpc-shell-navigate-subject-server.js +312 -0
- package/core/rpc/sme-extension/rpc-sme-extension-model.js +315 -0
- package/core/rpc/sme-extension/rpc-sme-extension-request-client.js +312 -0
- package/core/rpc/sme-extension/rpc-sme-extension-request-handler.js +312 -0
- package/core/rpc/sme-extension/rpc-sme-extension-request-subject-server.js +312 -0
- package/core/rpc/sme-extension/rpc-sme-extension-response-client.js +312 -0
- package/core/rpc/sme-extension/rpc-sme-extension-response-handler.js +312 -0
- package/core/rpc/telemetry/rpc-telemetry-client.js +312 -0
- package/core/rpc/telemetry/rpc-telemetry-handler.js +315 -0
- package/core/rpc/telemetry/rpc-telemetry-model.js +312 -0
- package/core/rpc/telemetry/rpc-telemetry-subject-server.js +312 -0
- package/core/rpc/update-data/rpc-update-data-client.js +312 -0
- package/core/rpc/update-data/rpc-update-data-handler.js +312 -0
- package/core/rpc/update-data/rpc-update-data-model.js +312 -0
- package/core/rpc/update-data/rpc-update-data-subject-server.js +312 -0
- package/core/rpc/update-theme/rpc-observable-update-theme-client.js +312 -0
- package/core/rpc/update-theme/rpc-observable-update-theme-model.js +312 -0
- package/core/rpc/update-theme/rpc-observable-update-theme-server.js +312 -0
- package/core/rpc/work-item/rpc-work-item-client.js +312 -0
- package/core/rpc/work-item/rpc-work-item-handler.js +312 -0
- package/core/rpc/work-item/rpc-work-item-model.js +312 -0
- package/core/rpc/work-item/rpc-work-item-subject-server.js +312 -0
- package/core/rpc/work-item-find/rpc-work-item-find-client.js +312 -0
- package/core/rpc/work-item-find/rpc-work-item-find-handler.js +312 -0
- package/core/rpc/work-item-find/rpc-work-item-find-model.js +312 -0
- package/core/rpc/work-item-find/rpc-work-item-find-subject-server.js +312 -0
- package/core/security/active-connection.js +312 -0
- package/core/security/authorization-manager.js +312 -0
- package/core/security/connection-manager-settings/common-connection-settings.js +315 -0
- package/core/security/connection-manager-settings/connection-settings.js +312 -0
- package/core/security/connection-manager.js +312 -0
- package/core/security/connection-stream.js +312 -0
- package/core/security/connection.js +312 -0
- package/core/security/credssp-manager.js +312 -0
- package/core/security/sign-on-manager.js +312 -0
- package/core/security/tag-manager.js +312 -0
- package/core/security/tool-condition-validator.js +312 -0
- package/core/security/tool-connection-query.js +312 -0
- package/core/security/user-principal.js +312 -0
- package/core/shared/cluster-inventory/cluster-inventory-cache.js +312 -0
- package/core/shared/cluster-inventory/cluster-inventory.js +312 -0
- package/core/shared/cluster-inventory/cluster-node-inventory.js +312 -0
- package/core/shared/gateway-inventory/gateway-inventory-cache.js +312 -0
- package/core/shared/gateway-inventory/gateway-inventory-detail-cache.js +312 -0
- package/core/shared/gateway-inventory/gateway-inventory-detail.js +312 -0
- package/core/shared/gateway-inventory/gateway-inventory.js +312 -0
- package/core/shared/inventory-query-caches.js +312 -0
- package/core/shared/server-inventory/server-inventory-cache.js +312 -0
- package/core/shared/server-inventory/server-inventory-detail-cache.js +312 -0
- package/core/shared/server-inventory/server-inventory-detail.js +315 -0
- package/core/shared/server-inventory/server-inventory.js +312 -0
- package/core/shared/shared-cache.js +312 -0
- package/core/shared/tool-inventory/tool-inventory-cache.js +312 -0
- package/core/shared/tool-inventory/tool-inventory.js +312 -0
- package/core/special.js +315 -0
- package/core/test-utilities/accessibility-tester.js +312 -0
- package/core/test-utilities/console.mock.js +312 -0
- package/core/test-utilities/jasmine-axe-matcher.js +312 -0
- package/core/test-utilities/wait-async.js +312 -0
- package/core/test.js +312 -0
- package/core/testing.js +312 -0
- package/core/workflow/persistent-local-storage.js +312 -0
- package/core/workflow/persistent-work-item-apply-state.js +316 -0
- package/core/workflow/persistent-work-item-state.js +312 -0
- package/core/workflow/persistent-work-item.js +315 -0
- package/core/workflow/persistent-workflow-builder.js +312 -0
- package/core/workflow/persistent-workflow-context.js +312 -0
- package/core/workflow/persistent-workflow-runner.js +312 -0
- package/core/workflow/persistent-workflow-snapshot.js +312 -0
- package/core/workflow/persistent-workflow-store.js +312 -0
- package/core/workflow/persistent-workflow.js +312 -0
- package/package.json +11 -9
- package/styles/css/main-v2.css +1 -1
- package/styles/fonts/SegoeUI/Bold/SegoeUIBold-5.27.woff +0 -0
- package/styles/fonts/SegoeUI/Light/SegoeUILight-5.27.woff +0 -0
- package/styles/fonts/SegoeUI/Normal/SegoeUI-5.27.woff +0 -0
- package/styles/fonts/SegoeUI/SemiBold/SegoeUISemiBold-5.27.woff +0 -0
- package/styles/fonts/SegoeUI/SemiLight/SegoeUISemiLight-5.27.woff +0 -0
- package/styles/fonts/ServMDL2/ServMDL2-4.66.woff +0 -0
- package/tools/build/webpack/index-html.transform.js +312 -0
- package/tools/build/webpack/shell.index-html.transform.js +312 -0
- package/tools/build/webpack/shell.webpack.config.js +312 -0
- package/tools/build/webpack/webpack.config.js +312 -0
- package/tools/code-formatter/.eslintrc.base.json +3 -1
- package/tools/code-formatter/lint.d.ts.map +1 -1
- package/tools/code-formatter/lint.js +319 -1
- package/tools/code-formatter/lint.js.map +1 -1
- package/tools/code-formatter/utilities.d.ts +7 -0
- package/tools/code-formatter/utilities.d.ts.map +1 -0
- package/tools/code-formatter/utilities.js +395 -0
- package/tools/code-formatter/utilities.js.map +1 -0
- package/tools/gulp-doc-generator/index.js +312 -0
- package/tools/gulp-manifest-resource/index.js +312 -0
- package/tools/gulp-manifest-validator/index.js +312 -0
- package/tools/gulp-merge-json-in-folders/index.js +312 -0
- package/tools/gulp-merge-json-in-folders/json-merge.js +312 -0
- package/tools/gulp-ps-cim/index.js +315 -0
- package/tools/gulp-ps-code/index.d.ts.map +1 -1
- package/tools/gulp-ps-code/index.js +323 -2
- package/tools/gulp-ps-code/index.js.map +1 -1
- package/tools/gulp-ps-code/ps-code-convert.js +312 -0
- package/tools/gulp-ps-manifest/index.js +312 -0
- package/tools/gulp-ps-module/index.d.ts.map +1 -1
- package/tools/gulp-ps-module/index.js +327 -3
- package/tools/gulp-ps-module/index.js.map +1 -1
- package/tools/gulp-ps-resjson/index.js +315 -0
- package/tools/gulp-resjson/index.js +315 -0
- package/tools/gulp-resjson/resjson-convert.js +312 -0
- package/tools/gulp-schema-form/index.js +312 -0
- package/tools/gulp-svg-code/index.js +312 -0
- package/tools/gulp-svg-code/svg-code-convert.js +312 -0
- package/tools/gulp-update-notes-resource/index.d.ts.map +1 -1
- package/tools/gulp-update-notes-resource/index.js +316 -4
- package/tools/gulp-update-notes-resource/index.js.map +1 -1
- package/tools/module-template/.eslintrc.json +3 -0
- package/tools/module-template/build/increment-package-version.ps1 +216 -0
- package/tools/module-template/build/push-incremented-version.ps1 +216 -1
- package/tools/module-template/build/update-powershell-code.ps1 +216 -0
- package/tools/module-template/gulpfile.ts/common/clean.ts +2 -0
- package/tools/module-template/gulpfile.ts/common/pack.ts +17 -5
- package/tools/module-template/gulpfile.ts/common/powershell.ts +40 -2
- package/tools/module-template/gulpfile.ts/common/utilities.ts +1 -0
- package/tools/pack-nuget/index.d.ts.map +1 -1
- package/tools/pack-nuget/index.js +321 -3
- package/tools/pack-nuget/index.js.map +1 -1
- package/tools/scripts/Invoke-PesterTest.ps1 +216 -0
- package/tools/scripts/New-ExtensionPackage.ps1 +373 -6
- package/tools/scripts/Search-NonAsciiText.ps1 +216 -0
- package/tools/scripts/package-information/README.md +3 -0
- package/tools/scripts/package-information/ms-logo.png +0 -0
- package/tools/test-runner/index.js +312 -0
- package/tools/utilities/index.js +312 -0
- package/tools/wac-cli/src/angular15/configs/angular-json-config.js +312 -0
- package/tools/wac-cli/src/angular15/configs/ci-build-yml-config.js +315 -0
- package/tools/wac-cli/src/angular15/configs/config.js +312 -0
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts +9 -0
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts.map +1 -0
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js +328 -0
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js.map +1 -0
- package/tools/wac-cli/src/angular15/configs/git-ignore-config.js +312 -0
- package/tools/wac-cli/src/angular15/configs/jasmine-test-config.js +315 -0
- package/tools/wac-cli/src/angular15/configs/package-json-config.js +312 -0
- package/tools/wac-cli/src/angular15/configs/replace-config.js +315 -0
- package/tools/wac-cli/src/angular15/configs/tsconfig-config.js +312 -0
- package/tools/wac-cli/src/angular15/configs/ui-test-automation-lagacy-config.js +312 -0
- package/tools/wac-cli/src/angular15/main.d.ts +19 -3
- package/tools/wac-cli/src/angular15/main.d.ts.map +1 -1
- package/tools/wac-cli/src/angular15/main.js +353 -7
- package/tools/wac-cli/src/angular15/main.js.map +1 -1
- package/tools/wac-cli/src/angular15/upgrader/angular-json-upgrader.js +316 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/ajax-response-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/css-syntax-error-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/declare-override-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/error-updater-angular15.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/form-control-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/iif-updater-util.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/load-children-callback-updater.js +315 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/log-parser.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/observable-throw-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/parameter-count-violation-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/string-replace-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/subjuct-next-updater-util.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/ci-build-yml-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts +18 -0
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts.map +1 -0
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js +361 -0
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js.map +1 -0
- package/tools/wac-cli/src/angular15/upgrader/file-replacement-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/git-ignore-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/jasmine-test-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/package-json-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/remove-upgrader.js +315 -0
- package/tools/wac-cli/src/angular15/upgrader/replace-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/tsconfig-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/ui-test-automation-legacy-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/version-json-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/utils/add-item.js +312 -0
- package/tools/wac-cli/src/angular15/utils/command-runner.js +312 -0
- package/tools/wac-cli/src/angular15/utils/file-comparison.js +315 -0
- package/tools/wac-cli/src/angular15/utils/file-replacement.js +312 -0
- package/tools/wac-cli/src/angular15/utils/file-writer.js +312 -0
- package/tools/wac-cli/src/angular15/utils/logger.js +312 -0
- package/tools/wac-cli/src/angular15/utils/main-debugger.js +312 -0
- package/tools/wac-cli/src/angular15/utils/relative-path.js +312 -0
- package/tools/wac-cli/src/angular15/utils/remove-item.js +312 -0
- package/tools/wac-cli/src/angular15/utils/space-generator.js +312 -0
- package/tools/wac-cli/src/angular15/utils/update-shell-references.js +316 -0
- package/tools/wac-cli/src/common.js +312 -0
- package/tools/wac-cli/src/create/main.js +312 -0
- package/tools/wac-cli/src/eslint/main.js +312 -0
- package/tools/wac-cli/src/index.js +312 -0
- package/tools/wac-cli/src/upgrade/error-updater.js +312 -0
- package/tools/wac-cli/src/upgrade/error-updaters/component-selector-updater.js +315 -0
- package/tools/wac-cli/src/upgrade/error-updaters/only-arrow-functions-updater.js +315 -0
- package/tools/wac-cli/src/upgrade/error-updaters/updater-lookup.js +312 -0
- package/tools/wac-cli/src/upgrade/file-updater.js +312 -0
- package/tools/wac-cli/src/upgrade/get-files.js +312 -0
- package/tools/wac-cli/src/upgrade/main.js +312 -0
- package/tools/wac-cli/src/upgrade/models/error-result.js +312 -0
- package/tools/wac-cli/src/upgrade/models/updater-interface.js +312 -0
- package/tools/wac-cli/src/upgrade/package-updater.js +312 -0
- package/tools/wac-cli/templates/wac-template/src/favicon.ico +0 -0
- package/tools/wac-cli/templates/wac-template/src/karma.conf.js +312 -0
- package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Error.ps1 +216 -0
- package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Exception.ps1 +216 -0
- package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Process.ps1 +216 -1
- package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Service.ps1 +216 -1
- package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-WinRmState.ps1 +216 -1
- package/core/data/extension-broker/snap-in-listener.d.ts.map +0 -1
- package/core/data/extension-broker/snap-in-listener.js +0 -73
- package/core/data/extension-broker/snap-in-listener.js.map +0 -1
- package/microsoft-windows-admin-center-sdk-4.123.0.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/tools/gulp-update-notes-resource/index.ts"],"names":[],"mappings":"","file":"index.d.ts","sourcesContent":["'use strict';\r\n\r\nimport { Buffer } from 'buffer';\r\nimport fs from 'fs';\r\nimport log from 'fancy-log';\r\nimport pluginError from 'plugin-error';\r\nimport through2 from 'through2';\r\nimport Vinyl from 'vinyl';\r\nimport * as util from '../utilities';\r\n\r\nconst PLUGIN_NAME = 'gulp-update-notes-resource';\r\n\r\ninterface Options {\r\n /**\r\n * resource name.\r\n */\r\n resourceName: string;\r\n\r\n /**\r\n * path of update notes file.\r\n */\r\n updateNotes: string;\r\n\r\n /**\r\n * depth of folder structure from the locale folder. (default is 1)\r\n */\r\n localeOffset: number;\r\n}\r\n\r\nfunction gulpUpdateNotesResources(options: Options) {\r\n function findResourceKey(node: any, results: string[]): void {\r\n const match = 'resources:strings:';\r\n const keys = Object.keys(node);\r\n if (keys && keys.length > 0) {\r\n keys.forEach(key => {\r\n const target = node[key];\r\n if (target) {\r\n if (typeof target === 'string') {\r\n if (target.indexOf(match) === 0) {\r\n const value = target.substring(match.length);\r\n if (results.indexOf(value) < 0) {\r\n results.push(value);\r\n }\r\n }\r\n } else {\r\n findResourceKey(target, results);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n // override options settings if not specified.\r\n options = <Options>Object.assign(\r\n {\r\n updateNotes: 'packages/shell/src/assets/updates/update-notes.json',\r\n localeOffset: 1\r\n },\r\n options || {});\r\n\r\n const resources: any = {};\r\n const keyToResources: any = {};\r\n\r\n return through2.obj(\r\n /**\r\n * Transform\r\n */\r\n function (file, encoding, callback) {\r\n let locale = 'default';\r\n if (resources.default) {\r\n // if default is set already, find current locale from the file path.\r\n const pathSegments = file.history[0].split('\\\\');\r\n locale = pathSegments[pathSegments.length - (2 + options.localeOffset)];\r\n }\r\n\r\n resources[locale] = {};\r\n if (resources.default) {\r\n // if default is set already, pre-fill all resource items from default.\r\n for (const resourceId in resources.default) {\r\n if (resources.default.hasOwnProperty(resourceId)) {\r\n resources[locale][resourceId] = resources.default[resourceId];\r\n }\r\n }\r\n }\r\n\r\n // remove comments, /* multiline comment */ and // one line comment and \"//\": \"JSON element comment\"\r\n const content = file.contents.toString('utf8')\r\n .replace(/(\\/\\*([^*]|[\\n]|(\\*+([^*/]|[\\n])))*\\*\\/+)|( +\\/\\/.*)|( +\\\"\\/\\/\\\".*)/g, '');\r\n const object = JSON.parse(content);\r\n if (object[options.resourceName] && object[options.resourceName]['App']['UpdateNotes']) {\r\n // supports <ResourceName>.Manifest.<KeyName> format.\r\n const items = object[options.resourceName]['App']['UpdateNotes'];\r\n for (const key in items) {\r\n if (items.hasOwnProperty(key)) {\r\n // Each key will have two children, title and description\r\n // no need to separate in JSON form\r\n resources[locale][key] = items[key];\r\n\r\n // Used to keep an alternate mapping we use later\r\n if (!keyToResources.hasOwnProperty(key)) {\r\n keyToResources[key] = {};\r\n }\r\n\r\n if (keyToResources.hasOwnProperty(key) &&\r\n !keyToResources[key].hasOwnProperty(locale)) {\r\n keyToResources[key][locale] = {};\r\n }\r\n keyToResources[key][locale] = items[key];\r\n }\r\n }\r\n } else {\r\n // supports <ResourceName>_App_UpdateNotes format.\r\n const resourceUpdateNotes = options.resourceName + '_App_UpdateNotes_';\r\n for (const name in object) {\r\n if (object.hasOwnProperty(name)) {\r\n const index = name.indexOf(resourceUpdateNotes);\r\n if (index === 0) {\r\n // Check if this resource has the specific substring or not\r\n const value = object[name];\r\n\r\n // If it contains '_' we split it so we keep only the key\r\n const resourceId2 = name.substring(resourceUpdateNotes.length);\r\n\r\n // Split to separate <KeyValue>_<type>\r\n // Possible types are title or description\r\n const splitText = resourceId2.split('_');\r\n\r\n const key = splitText[0];\r\n const type = splitText[1];\r\n if (!resources[locale].hasOwnProperty(key)) {\r\n resources[locale][key] = {};\r\n }\r\n resources[locale][key][type] = value;\r\n\r\n // Used to keep a mapping of keys to resources for faster\r\n // processing later\r\n if (!keyToResources.hasOwnProperty(key)) {\r\n keyToResources[key] = {};\r\n }\r\n\r\n if (keyToResources.hasOwnProperty(key) &&\r\n !keyToResources[key].hasOwnProperty(locale)) {\r\n keyToResources[key][locale] = {};\r\n }\r\n keyToResources[key][locale][type] = value;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return callback();\r\n },\r\n\r\n /**\r\n * Flush\r\n */\r\n function (callback) {\r\n try {\r\n const updateNotesObject = JSON.parse(fs.readFileSync(options.updateNotes, 'utf8'));\r\n\r\n const keys: string[] = [];\r\n findResourceKey(updateNotesObject, keys);\r\n const missingType: string[] = [];\r\n const missing: string[] = [];\r\n const unused: string[] = Object.keys(resources.default);\r\n\r\n keys.forEach(function (key) {\r\n const index = unused.indexOf(key);\r\n if (index >= 0) {\r\n // If the item exists, remove it from the unused set\r\n unused.splice(index, 1);\r\n\r\n // We have to check each item has a title and description\r\n const typeKeys = Object.keys(keyToResources[key].default);\r\n const requiredTypesSet = new Set();\r\n requiredTypesSet.add('title');\r\n requiredTypesSet.add('description');\r\n typeKeys.forEach(item => {\r\n if (requiredTypesSet.has(item)) {\r\n requiredTypesSet.delete(item);\r\n }\r\n });\r\n\r\n // If it did not have we save it throw error later\r\n if (requiredTypesSet.size > 0) {\r\n missingType.push(key);\r\n }\r\n } else {\r\n missing.push(key);\r\n }\r\n });\r\n\r\n if (missing.length > 0) {\r\n missing.forEach(item => {\r\n log.error('Missing resource: ' + item);\r\n });\r\n throw new Error('Missing resource found in manifest.json!');\r\n }\r\n\r\n if (unused.length > 0) {\r\n unused.forEach(item => {\r\n log.error('Unused resource: ' + item);\r\n });\r\n throw new Error('Unused resource found in strings.resjson!');\r\n }\r\n\r\n if (missingType.length > 0) {\r\n missingType.forEach(item => {\r\n log.error('Missing title or description: ' + item);\r\n });\r\n throw new Error('Key without title or description found in strings.resjson!');\r\n }\r\n\r\n updateNotesObject.map((item, index) => {\r\n if (item.hasOwnProperty('stringJsonKey')) {\r\n const key = item.stringJsonKey.replace('resources:strings:', '');\r\n // Key to resource maps key -> all locales\r\n item.resources = keyToResources[key];\r\n }\r\n updateNotesObject[index] = item;\r\n });\r\n\r\n const updateNotesFile = new Vinyl({\r\n cwd: '.',\r\n base: '.',\r\n path: './update-notes.json',\r\n contents: Buffer.from(JSON.stringify(updateNotesObject, null, 2), 'utf8')\r\n });\r\n\r\n this.push(updateNotesFile);\r\n } catch (e) {\r\n const error = (!e.plugin || (e.plugin !== PLUGIN_NAME)) ?\r\n util.extendError(new pluginError({ plugin: PLUGIN_NAME, message: e.message }), e) : e;\r\n log.error(error);\r\n }\r\n\r\n callback();\r\n });\r\n}\r\n\r\nmodule.exports = gulpUpdateNotesResources;\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../packages/tools/gulp-update-notes-resource/index.ts"],"names":[],"mappings":"","file":"index.d.ts","sourcesContent":["'use strict';\r\n\r\nimport { Buffer } from 'buffer';\r\nimport fs from 'fs';\r\nimport log from 'fancy-log';\r\nimport pluginError from 'plugin-error';\r\nimport through2 from 'through2';\r\nimport Vinyl from 'vinyl';\r\nimport * as util from '../utilities';\r\n\r\nconst PLUGIN_NAME = 'gulp-update-notes-resource';\r\n\r\ninterface Options {\r\n /**\r\n * resource name.\r\n */\r\n resourceName: string;\r\n\r\n /**\r\n * path of update notes file.\r\n */\r\n updateNotes: string;\r\n\r\n /**\r\n * depth of folder structure from the locale folder. (default is 1)\r\n */\r\n localeOffset: number;\r\n}\r\n\r\nfunction gulpUpdateNotesResources(options: Options) {\r\n function findResourceKey(node: any, results: string[]): void {\r\n const match = 'resources:strings:';\r\n const keys = Object.keys(node);\r\n if (keys && keys.length > 0) {\r\n keys.forEach(key => {\r\n const target = node[key];\r\n if (target) {\r\n if (typeof target === 'string') {\r\n if (target.indexOf(match) === 0) {\r\n const value = target.substring(match.length);\r\n if (results.indexOf(value) < 0) {\r\n results.push(value);\r\n }\r\n }\r\n } else {\r\n findResourceKey(target, results);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n // override options settings if not specified.\r\n options = <Options>Object.assign(\r\n {\r\n updateNotes: 'packages/shell/src/assets/updates/update-notes.json',\r\n localeOffset: 1\r\n },\r\n options || {});\r\n\r\n const resources: any = {};\r\n const keyToResources: any = {};\r\n\r\n return through2.obj(\r\n /**\r\n * Transform\r\n */\r\n function (file, encoding, callback) {\r\n let locale = 'default';\r\n if (resources.default) {\r\n // if default is set already, find current locale from the file path.\r\n const pathSegments = file.history[0].split('\\\\');\r\n locale = pathSegments[pathSegments.length - (2 + options.localeOffset)];\r\n }\r\n\r\n resources[locale] = {};\r\n if (resources.default) {\r\n // if default is set already, pre-fill all resource items from default.\r\n for (const resourceId in resources.default) {\r\n if (resources.default.hasOwnProperty(resourceId)) {\r\n resources[locale][resourceId] = resources.default[resourceId];\r\n }\r\n }\r\n }\r\n\r\n // remove comments, /* multiline comment */ and // one line comment and \"//\": \"JSON element comment\"\r\n const content = file.contents.toString('utf8')\r\n .replace(/(\\/\\*([^*]|[\\n]|(\\*+([^*/]|[\\n])))*\\*\\/+)|( +\\/\\/.*)|( +\\\"\\/\\/\\\".*)/g, '');\r\n const object = JSON.parse(content);\r\n if (object[options.resourceName] && object[options.resourceName]['App']['UpdateNotes']) {\r\n // supports <ResourceName>.Manifest.<KeyName> format.\r\n const items = object[options.resourceName]['App']['UpdateNotes'];\r\n for (const key in items) {\r\n if (items.hasOwnProperty(key)) {\r\n // Each key will have two children, title and description\r\n // no need to separate in JSON form\r\n resources[locale][key] = items[key];\r\n\r\n // Used to keep an alternate mapping we use later\r\n if (!keyToResources.hasOwnProperty(key)) {\r\n keyToResources[key] = {};\r\n }\r\n\r\n if (keyToResources.hasOwnProperty(key) &&\r\n !keyToResources[key].hasOwnProperty(locale)) {\r\n keyToResources[key][locale] = {};\r\n }\r\n keyToResources[key][locale] = items[key];\r\n }\r\n }\r\n } else {\r\n // supports <ResourceName>_App_UpdateNotes format.\r\n const resourceUpdateNotes = options.resourceName + '_App_UpdateNotes_';\r\n for (const name in object) {\r\n if (object.hasOwnProperty(name)) {\r\n const index = name.indexOf(resourceUpdateNotes);\r\n if (index === 0) {\r\n // Check if this resource has the specific substring or not\r\n const value = object[name];\r\n\r\n // If it contains '_' we split it so we keep only the key\r\n const resourceId2 = name.substring(resourceUpdateNotes.length);\r\n\r\n // Split to separate <KeyValue>_<type>\r\n // Possible types are title or description\r\n const splitText = resourceId2.split('_');\r\n\r\n const key = splitText[0];\r\n const type = splitText[1];\r\n if (!resources[locale].hasOwnProperty(key)) {\r\n resources[locale][key] = {};\r\n }\r\n resources[locale][key][type] = value;\r\n\r\n // Used to keep a mapping of keys to resources for faster\r\n // processing later\r\n if (!keyToResources.hasOwnProperty(key)) {\r\n keyToResources[key] = {};\r\n }\r\n\r\n if (keyToResources.hasOwnProperty(key) &&\r\n !keyToResources[key].hasOwnProperty(locale)) {\r\n keyToResources[key][locale] = {};\r\n }\r\n keyToResources[key][locale][type] = value;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return callback();\r\n },\r\n\r\n /**\r\n * Flush\r\n */\r\n function (callback) {\r\n try {\r\n const updateNotesObject = JSON.parse(fs.readFileSync(options.updateNotes, 'utf8'));\r\n\r\n const keys: string[] = [];\r\n findResourceKey(updateNotesObject, keys);\r\n const missingType: string[] = [];\r\n const missing: string[] = [];\r\n const unused: string[] = Object.keys(resources.default);\r\n\r\n keys.forEach(function (key) {\r\n const index = unused.indexOf(key);\r\n if (index >= 0) {\r\n // If the item exists, remove it from the unused set\r\n unused.splice(index, 1);\r\n\r\n // We have to check each item has a title and description\r\n const typeKeys = Object.keys(keyToResources[key].default);\r\n const requiredTypesSet = new Set();\r\n requiredTypesSet.add('title');\r\n requiredTypesSet.add('description');\r\n typeKeys.forEach(item => {\r\n if (requiredTypesSet.has(item)) {\r\n requiredTypesSet.delete(item);\r\n }\r\n });\r\n\r\n // If it did not have we save it throw error later\r\n if (requiredTypesSet.size > 0) {\r\n missingType.push(key);\r\n }\r\n } else {\r\n missing.push(key);\r\n }\r\n });\r\n\r\n if (missing.length > 0) {\r\n missing.forEach(item => {\r\n log.error('Missing resource (update-notes.json): ' + item);\r\n });\r\n throw new Error('Missing resource found in manifest.json!');\r\n }\r\n\r\n if (unused.length > 0) {\r\n // allow to use unused resources to share the same strings.json between GWv1 and GWv2.\r\n unused.forEach(item => {\r\n log.warn('Unused resource (update-notes.json): ' + item);\r\n });\r\n }\r\n\r\n if (missingType.length > 0) {\r\n missingType.forEach(item => {\r\n log.error('Missing title or description (update-notes.json): ' + item);\r\n });\r\n throw new Error('Key without title or description found in strings.resjson!');\r\n }\r\n\r\n updateNotesObject.map((item, index) => {\r\n if (item.hasOwnProperty('stringJsonKey')) {\r\n const key = item.stringJsonKey.replace('resources:strings:', '');\r\n // Key to resource maps key -> all locales\r\n item.resources = keyToResources[key];\r\n }\r\n updateNotesObject[index] = item;\r\n });\r\n\r\n const updateNotesFile = new Vinyl({\r\n cwd: '.',\r\n base: '.',\r\n path: './update-notes.json',\r\n contents: Buffer.from(JSON.stringify(updateNotesObject, null, 2), 'utf8')\r\n });\r\n\r\n this.push(updateNotesFile);\r\n } catch (e) {\r\n const error = (!e.plugin || (e.plugin !== PLUGIN_NAME)) ?\r\n util.extendError(new pluginError({ plugin: PLUGIN_NAME, message: e.message }), e) : e;\r\n log.error(error);\r\n }\r\n\r\n callback();\r\n });\r\n}\r\n\r\nmodule.exports = gulpUpdateNotesResources;\r\n"]}
|
|
@@ -156,19 +156,19 @@ function gulpUpdateNotesResources(options) {
|
|
|
156
156
|
});
|
|
157
157
|
if (missing.length > 0) {
|
|
158
158
|
missing.forEach(item => {
|
|
159
|
-
fancy_log_1.default.error('Missing resource: ' + item);
|
|
159
|
+
fancy_log_1.default.error('Missing resource (update-notes.json): ' + item);
|
|
160
160
|
});
|
|
161
161
|
throw new Error('Missing resource found in manifest.json!');
|
|
162
162
|
}
|
|
163
163
|
if (unused.length > 0) {
|
|
164
|
+
// allow to use unused resources to share the same strings.json between GWv1 and GWv2.
|
|
164
165
|
unused.forEach(item => {
|
|
165
|
-
fancy_log_1.default.
|
|
166
|
+
fancy_log_1.default.warn('Unused resource (update-notes.json): ' + item);
|
|
166
167
|
});
|
|
167
|
-
throw new Error('Unused resource found in strings.resjson!');
|
|
168
168
|
}
|
|
169
169
|
if (missingType.length > 0) {
|
|
170
170
|
missingType.forEach(item => {
|
|
171
|
-
fancy_log_1.default.error('Missing title or description: ' + item);
|
|
171
|
+
fancy_log_1.default.error('Missing title or description (update-notes.json): ' + item);
|
|
172
172
|
});
|
|
173
173
|
throw new Error('Key without title or description found in strings.resjson!');
|
|
174
174
|
}
|
|
@@ -199,3 +199,315 @@ function gulpUpdateNotesResources(options) {
|
|
|
199
199
|
module.exports = gulpUpdateNotesResources;
|
|
200
200
|
|
|
201
201
|
//# sourceMappingURL=index.js.map
|
|
202
|
+
|
|
203
|
+
// SIG // Begin signature block
|
|
204
|
+
// SIG // MIInvQYJKoZIhvcNAQcCoIInrjCCJ6oCAQExDzANBglg
|
|
205
|
+
// SIG // hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
|
|
206
|
+
// SIG // BgEEAYI3AgEeMCQCAQEEEBDgyQbOONQRoqMAEEvTUJAC
|
|
207
|
+
// SIG // AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
|
|
208
|
+
// SIG // npDCg7aSlNIQswWdeeSbVrjJS42q6q0zFmbatxFXis6g
|
|
209
|
+
// SIG // gg12MIIF9DCCA9ygAwIBAgITMwAAA68wQA5Mo00FQQAA
|
|
210
|
+
// SIG // AAADrzANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJV
|
|
211
|
+
// SIG // UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
|
|
212
|
+
// SIG // UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
|
|
213
|
+
// SIG // cmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBT
|
|
214
|
+
// SIG // aWduaW5nIFBDQSAyMDExMB4XDTIzMTExNjE5MDkwMFoX
|
|
215
|
+
// SIG // DTI0MTExNDE5MDkwMFowdDELMAkGA1UEBhMCVVMxEzAR
|
|
216
|
+
// SIG // BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
|
|
217
|
+
// SIG // bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
|
|
218
|
+
// SIG // bjEeMBwGA1UEAxMVTWljcm9zb2Z0IENvcnBvcmF0aW9u
|
|
219
|
+
// SIG // MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
|
220
|
+
// SIG // zkvLNa2un9GBrYNDoRGkGv7d0PqtTBB4ViYakFbjuWpm
|
|
221
|
+
// SIG // F0KcvDAzzaCWJPhVgIXjz+S8cHEoHuWnp/n+UOljT3eh
|
|
222
|
+
// SIG // A8Rs6Lb1aTYub3tB/e0txewv2sQ3yscjYdtTBtFvEm9L
|
|
223
|
+
// SIG // 8Yv76K3Cxzi/Yvrdg+sr7w8y5RHn1Am0Ff8xggY1xpWC
|
|
224
|
+
// SIG // XFI+kQM18njQDcUqSlwBnexYfqHBhzz6YXA/S0EziYBu
|
|
225
|
+
// SIG // 2O2mM7R6gSyYkEOHgIGTVOGnOvvC5xBgC4KNcnQuQSRL
|
|
226
|
+
// SIG // iUI2CmzU8vefR6ykruyzt1rNMPI8OqWHQtSDKXU5JNqb
|
|
227
|
+
// SIG // k4GNjwzcwbSzOHrxuxWHq91l/vLdVDGDUwIDAQABo4IB
|
|
228
|
+
// SIG // czCCAW8wHwYDVR0lBBgwFgYKKwYBBAGCN0wIAQYIKwYB
|
|
229
|
+
// SIG // BQUHAwMwHQYDVR0OBBYEFEcccTTyBDxkjvJKs/m4AgEF
|
|
230
|
+
// SIG // hl7BMEUGA1UdEQQ+MDykOjA4MR4wHAYDVQQLExVNaWNy
|
|
231
|
+
// SIG // b3NvZnQgQ29ycG9yYXRpb24xFjAUBgNVBAUTDTIzMDAx
|
|
232
|
+
// SIG // Mis1MDE4MjYwHwYDVR0jBBgwFoAUSG5k5VAF04KqFzc3
|
|
233
|
+
// SIG // IrVtqMp1ApUwVAYDVR0fBE0wSzBJoEegRYZDaHR0cDov
|
|
234
|
+
// SIG // L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWlj
|
|
235
|
+
// SIG // Q29kU2lnUENBMjAxMV8yMDExLTA3LTA4LmNybDBhBggr
|
|
236
|
+
// SIG // BgEFBQcBAQRVMFMwUQYIKwYBBQUHMAKGRWh0dHA6Ly93
|
|
237
|
+
// SIG // d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWlj
|
|
238
|
+
// SIG // Q29kU2lnUENBMjAxMV8yMDExLTA3LTA4LmNydDAMBgNV
|
|
239
|
+
// SIG // HRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4ICAQCEsRbf
|
|
240
|
+
// SIG // 80dn60xTweOWHZoWaQdpzSaDqIvqpYHE5ZzuEMJWDdcP
|
|
241
|
+
// SIG // 72MGw8v6BSaJQ+a+hTCXdERnIBDPKvU4ENjgu4EBJocH
|
|
242
|
+
// SIG // lSe8riiZUAR+z+z4OUYqoFd3EqJyfjjOJBR2z94Dy4ss
|
|
243
|
+
// SIG // 7LEkHUbj2NZiFqBoPYu2OGQvEk+1oaUsnNKZ7Nl7FHtV
|
|
244
|
+
// SIG // 7CI2lHBru83e4IPe3glIi0XVZJT5qV6Gx/QhAFmpEVBj
|
|
245
|
+
// SIG // SAmDdgII4UUwuI9yiX6jJFNOEek6MoeP06LMJtbqA3Bq
|
|
246
|
+
// SIG // +ZWmJ033F97uVpyaiS4bj3vFI/ZBgDnMqNDtZjcA2vi4
|
|
247
|
+
// SIG // RRMweggd9vsHyTLpn6+nXoLy03vMeebq0C3k44pgUIEu
|
|
248
|
+
// SIG // PQUlJIRTe6IrN3GcjaZ6zHGuQGWgu6SyO9r7qkrEpS2p
|
|
249
|
+
// SIG // RjnGZjx2RmCamdAWnDdu+DmfNEPAddYjaJJ7PTnd+PGz
|
|
250
|
+
// SIG // G+WeH4ocWgVnm5fJFhItjj70CJjgHqt57e1FiQcyWCwB
|
|
251
|
+
// SIG // hKX2rGgN2UICHBF3Q/rsKOspjMw2OlGphTn2KmFl5J7c
|
|
252
|
+
// SIG // Qxru54A9roClLnHGCiSUYos/iwFHI/dAVXEh0S0KKfTf
|
|
253
|
+
// SIG // M6AC6/9bCbsD61QLcRzRIElvgCgaiMWFjOBL99pemoEl
|
|
254
|
+
// SIG // AHsyzG6uX93fMfas09N9YzA0/rFAKAsNDOcFbQlEHKiD
|
|
255
|
+
// SIG // T7mI20tVoCcmSIhJATCCB3owggVioAMCAQICCmEOkNIA
|
|
256
|
+
// SIG // AAAAAAMwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYT
|
|
257
|
+
// SIG // AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH
|
|
258
|
+
// SIG // EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
|
|
259
|
+
// SIG // cG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290
|
|
260
|
+
// SIG // IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDExMB4XDTEx
|
|
261
|
+
// SIG // MDcwODIwNTkwOVoXDTI2MDcwODIxMDkwOVowfjELMAkG
|
|
262
|
+
// SIG // A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO
|
|
263
|
+
// SIG // BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m
|
|
264
|
+
// SIG // dCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9zb2Z0
|
|
265
|
+
// SIG // IENvZGUgU2lnbmluZyBQQ0EgMjAxMTCCAiIwDQYJKoZI
|
|
266
|
+
// SIG // hvcNAQEBBQADggIPADCCAgoCggIBAKvw+nIQHC6t2G6q
|
|
267
|
+
// SIG // ghBNNLrytlghn0IbKmvpWlCquAY4GgRJun/DDB7dN2vG
|
|
268
|
+
// SIG // EtgL8DjCmQawyDnVARQxQtOJDXlkh36UYCRsr55JnOlo
|
|
269
|
+
// SIG // XtLfm1OyCizDr9mpK656Ca/XllnKYBoF6WZ26DJSJhIv
|
|
270
|
+
// SIG // 56sIUM+zRLdd2MQuA3WraPPLbfM6XKEW9Ea64DhkrG5k
|
|
271
|
+
// SIG // NXimoGMPLdNAk/jj3gcN1Vx5pUkp5w2+oBN3vpQ97/vj
|
|
272
|
+
// SIG // K1oQH01WKKJ6cuASOrdJXtjt7UORg9l7snuGG9k+sYxd
|
|
273
|
+
// SIG // 6IlPhBryoS9Z5JA7La4zWMW3Pv4y07MDPbGyr5I4ftKd
|
|
274
|
+
// SIG // gCz1TlaRITUlwzluZH9TupwPrRkjhMv0ugOGjfdf8NBS
|
|
275
|
+
// SIG // v4yUh7zAIXQlXxgotswnKDglmDlKNs98sZKuHCOnqWbs
|
|
276
|
+
// SIG // YR9q4ShJnV+I4iVd0yFLPlLEtVc/JAPw0XpbL9Uj43Bd
|
|
277
|
+
// SIG // D1FGd7P4AOG8rAKCX9vAFbO9G9RVS+c5oQ/pI0m8GLhE
|
|
278
|
+
// SIG // fEXkwcNyeuBy5yTfv0aZxe/CHFfbg43sTUkwp6uO3+xb
|
|
279
|
+
// SIG // n6/83bBm4sGXgXvt1u1L50kppxMopqd9Z4DmimJ4X7Iv
|
|
280
|
+
// SIG // hNdXnFy/dygo8e1twyiPLI9AN0/B4YVEicQJTMXUpUMv
|
|
281
|
+
// SIG // dJX3bvh4IFgsE11glZo+TzOE2rCIF96eTvSWsLxGoGyY
|
|
282
|
+
// SIG // 0uDWiIwLAgMBAAGjggHtMIIB6TAQBgkrBgEEAYI3FQEE
|
|
283
|
+
// SIG // AwIBADAdBgNVHQ4EFgQUSG5k5VAF04KqFzc3IrVtqMp1
|
|
284
|
+
// SIG // ApUwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYD
|
|
285
|
+
// SIG // VR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
|
|
286
|
+
// SIG // BBgwFoAUci06AjGQQ7kUBU7h6qfHMdEjiTQwWgYDVR0f
|
|
287
|
+
// SIG // BFMwUTBPoE2gS4ZJaHR0cDovL2NybC5taWNyb3NvZnQu
|
|
288
|
+
// SIG // Y29tL3BraS9jcmwvcHJvZHVjdHMvTWljUm9vQ2VyQXV0
|
|
289
|
+
// SIG // MjAxMV8yMDExXzAzXzIyLmNybDBeBggrBgEFBQcBAQRS
|
|
290
|
+
// SIG // MFAwTgYIKwYBBQUHMAKGQmh0dHA6Ly93d3cubWljcm9z
|
|
291
|
+
// SIG // b2Z0LmNvbS9wa2kvY2VydHMvTWljUm9vQ2VyQXV0MjAx
|
|
292
|
+
// SIG // MV8yMDExXzAzXzIyLmNydDCBnwYDVR0gBIGXMIGUMIGR
|
|
293
|
+
// SIG // BgkrBgEEAYI3LgMwgYMwPwYIKwYBBQUHAgEWM2h0dHA6
|
|
294
|
+
// SIG // Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvZG9jcy9w
|
|
295
|
+
// SIG // cmltYXJ5Y3BzLmh0bTBABggrBgEFBQcCAjA0HjIgHQBM
|
|
296
|
+
// SIG // AGUAZwBhAGwAXwBwAG8AbABpAGMAeQBfAHMAdABhAHQA
|
|
297
|
+
// SIG // ZQBtAGUAbgB0AC4gHTANBgkqhkiG9w0BAQsFAAOCAgEA
|
|
298
|
+
// SIG // Z/KGpZjgVHkaLtPYdGcimwuWEeFjkplCln3SeQyQwWVf
|
|
299
|
+
// SIG // Liw++MNy0W2D/r4/6ArKO79HqaPzadtjvyI1pZddZYSQ
|
|
300
|
+
// SIG // fYtGUFXYDJJ80hpLHPM8QotS0LD9a+M+By4pm+Y9G6XU
|
|
301
|
+
// SIG // tR13lDni6WTJRD14eiPzE32mkHSDjfTLJgJGKsKKELuk
|
|
302
|
+
// SIG // qQUMm+1o+mgulaAqPyprWEljHwlpblqYluSD9MCP80Yr
|
|
303
|
+
// SIG // 3vw70L01724lruWvJ+3Q3fMOr5kol5hNDj0L8giJ1h/D
|
|
304
|
+
// SIG // Mhji8MUtzluetEk5CsYKwsatruWy2dsViFFFWDgycSca
|
|
305
|
+
// SIG // f7H0J/jeLDogaZiyWYlobm+nt3TDQAUGpgEqKD6CPxNN
|
|
306
|
+
// SIG // ZgvAs0314Y9/HG8VfUWnduVAKmWjw11SYobDHWM2l4bf
|
|
307
|
+
// SIG // 2vP48hahmifhzaWX0O5dY0HjWwechz4GdwbRBrF1HxS+
|
|
308
|
+
// SIG // YWG18NzGGwS+30HHDiju3mUv7Jf2oVyW2ADWoUa9WfOX
|
|
309
|
+
// SIG // pQlLSBCZgB/QACnFsZulP0V3HjXG0qKin3p6IvpIlR+r
|
|
310
|
+
// SIG // +0cjgPWe+L9rt0uX4ut1eBrs6jeZeRhL/9azI2h15q/6
|
|
311
|
+
// SIG // /IvrC4DqaTuv/DDtBEyO3991bWORPdGdVk5Pv4BXIqF4
|
|
312
|
+
// SIG // ETIheu9BCrE/+6jMpF3BoYibV3FWTkhFwELJm3ZbCoBI
|
|
313
|
+
// SIG // a/15n8G9bW1qyVJzEw16UM0xghmfMIIZmwIBATCBlTB+
|
|
314
|
+
// SIG // MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv
|
|
315
|
+
// SIG // bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj
|
|
316
|
+
// SIG // cm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYDVQQDEx9NaWNy
|
|
317
|
+
// SIG // b3NvZnQgQ29kZSBTaWduaW5nIFBDQSAyMDExAhMzAAAD
|
|
318
|
+
// SIG // rzBADkyjTQVBAAAAAAOvMA0GCWCGSAFlAwQCAQUAoIGu
|
|
319
|
+
// SIG // MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisG
|
|
320
|
+
// SIG // AQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3
|
|
321
|
+
// SIG // DQEJBDEiBCCMCP2FmgEKJREsgBE+TZ+sOgId8o8fZV6D
|
|
322
|
+
// SIG // dCCfW2FDLTBCBgorBgEEAYI3AgEMMTQwMqAUgBIATQBp
|
|
323
|
+
// SIG // AGMAcgBvAHMAbwBmAHShGoAYaHR0cDovL3d3dy5taWNy
|
|
324
|
+
// SIG // b3NvZnQuY29tMA0GCSqGSIb3DQEBAQUABIIBALLhra/Q
|
|
325
|
+
// SIG // XBfDPeiEQUGOa+fURbUANR25YYEQOQBWHkT+JP4iMKc9
|
|
326
|
+
// SIG // PL2/MHL6wpaBqaMmC0bT3a9J4tRpFfbEHcJFl9rY4Xid
|
|
327
|
+
// SIG // F1nSLBxzXpmdcMTmIHd19BFtz7X7WUlzmGJ3BSIzdMFN
|
|
328
|
+
// SIG // KyRI/wUyqFlibJChWxh7wLvrxsTR8PqXmMeHdYc9kiE8
|
|
329
|
+
// SIG // tGkA/QJd4OyFEEvdJmFDiMeOmGHfCO9Lgw8p6TiMLXS+
|
|
330
|
+
// SIG // RKxg8F64k5r0UsnQh2XuGMl/u+TY315eI4y3DUkSDQBH
|
|
331
|
+
// SIG // EXcjkYw9zY6168EYZFcLYuzXZWX+JFqKM03Xcsxm1fQz
|
|
332
|
+
// SIG // TVYy4jGM5Zwkf3uF9+Q1SVYidnuhghcpMIIXJQYKKwYB
|
|
333
|
+
// SIG // BAGCNwMDATGCFxUwghcRBgkqhkiG9w0BBwKgghcCMIIW
|
|
334
|
+
// SIG // /gIBAzEPMA0GCWCGSAFlAwQCAQUAMIIBWQYLKoZIhvcN
|
|
335
|
+
// SIG // AQkQAQSgggFIBIIBRDCCAUACAQEGCisGAQQBhFkKAwEw
|
|
336
|
+
// SIG // MTANBglghkgBZQMEAgEFAAQgk0/E28WjFnfrpx3E+QHr
|
|
337
|
+
// SIG // fGhudiXIa+m1GCYVndcwIL4CBmZzEYRF9RgTMjAyNDA2
|
|
338
|
+
// SIG // MjcwNjI0NDIuMTUxWjAEgAIB9KCB2KSB1TCB0jELMAkG
|
|
339
|
+
// SIG // A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO
|
|
340
|
+
// SIG // BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m
|
|
341
|
+
// SIG // dCBDb3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0
|
|
342
|
+
// SIG // IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMSYwJAYD
|
|
343
|
+
// SIG // VQQLEx1UaGFsZXMgVFNTIEVTTjpEMDgyLTRCRkQtRUVC
|
|
344
|
+
// SIG // QTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAg
|
|
345
|
+
// SIG // U2VydmljZaCCEXgwggcnMIIFD6ADAgECAhMzAAAB3MHg
|
|
346
|
+
// SIG // jMJfWF6OAAEAAAHcMA0GCSqGSIb3DQEBCwUAMHwxCzAJ
|
|
347
|
+
// SIG // BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAw
|
|
348
|
+
// SIG // DgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3Nv
|
|
349
|
+
// SIG // ZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29m
|
|
350
|
+
// SIG // dCBUaW1lLVN0YW1wIFBDQSAyMDEwMB4XDTIzMTAxMjE5
|
|
351
|
+
// SIG // MDcwNloXDTI1MDExMDE5MDcwNlowgdIxCzAJBgNVBAYT
|
|
352
|
+
// SIG // AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH
|
|
353
|
+
// SIG // EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
|
|
354
|
+
// SIG // cG9yYXRpb24xLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVs
|
|
355
|
+
// SIG // YW5kIE9wZXJhdGlvbnMgTGltaXRlZDEmMCQGA1UECxMd
|
|
356
|
+
// SIG // VGhhbGVzIFRTUyBFU046RDA4Mi00QkZELUVFQkExJTAj
|
|
357
|
+
// SIG // BgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZp
|
|
358
|
+
// SIG // Y2UwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
|
|
359
|
+
// SIG // AQCLyLMgNbI4PZEiic3pa1FheUoamFi/N2pp90hOSciF
|
|
360
|
+
// SIG // T1Auxeqk3C6YYR2fYnX9tX9EWhq1PBB8nRfDcTzEdilT
|
|
361
|
+
// SIG // YgLQhjyWvJFdQhr5923hgdptpbZqiWpxu9ZgMsK5CgE2
|
|
362
|
+
// SIG // J4sCiz0CydNBJF8OU0sH5iV23YECxZR8nwOSoPqVLCV8
|
|
363
|
+
// SIG // 6rppCLxK9A1z76bQBqpHRSysKOAU5RIJ783k317pM1/L
|
|
364
|
+
// SIG // 0LUwC31Sbk1IEVO86D/0RVrd1moGoWelJaCNBQvF5QUA
|
|
365
|
+
// SIG // 1Q1+SXjBLMe44CQ3RJyuOGPIB7hFkQ6vkhvV6NBiDo4r
|
|
366
|
+
// SIG // k1g+br975RJiAMkf+60hb3C58AKjHanMv4qkDzJQznHd
|
|
367
|
+
// SIG // AG54j/ImtQUBFJ32U91Mcivaywf0kYij8hw5YPKFsF8o
|
|
368
|
+
// SIG // r9/mxgenZnTOtbq+p1LXw3+dZT3CoSuFaPN6ThNf54lp
|
|
369
|
+
// SIG // VZxB0FfTSefw21Eqltkak1Gtjtirr7MkRjBIIxiQNdv0
|
|
370
|
+
// SIG // qq0apbxNn4jeWZmVbakj1miGrMe2tBgfn3U8PoHkZ+jK
|
|
371
|
+
// SIG // Nkuvv22RMEv9CCeYHChopzW38kNca71lz7V8yjn45Ie+
|
|
372
|
+
// SIG // Ykbl6LqxlT0apJs+VGM/kecmzCVo/pn3Bqs9oV1fImZw
|
|
373
|
+
// SIG // mQwa652Yr5xKwjIeRZX4POPeqU9KYY1Ex9hgoRyLxOEg
|
|
374
|
+
// SIG // 0pNocFj/7hwfYBLPKf/T3v5rfQIDAQABo4IBSTCCAUUw
|
|
375
|
+
// SIG // HQYDVR0OBBYEFOhz0gXdDnxF97jVrHZEq2lBnt3bMB8G
|
|
376
|
+
// SIG // A1UdIwQYMBaAFJ+nFV0AXmJdg/Tl0mWnG1M1GelyMF8G
|
|
377
|
+
// SIG // A1UdHwRYMFYwVKBSoFCGTmh0dHA6Ly93d3cubWljcm9z
|
|
378
|
+
// SIG // b2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMFRp
|
|
379
|
+
// SIG // bWUtU3RhbXAlMjBQQ0ElMjAyMDEwKDEpLmNybDBsBggr
|
|
380
|
+
// SIG // BgEFBQcBAQRgMF4wXAYIKwYBBQUHMAKGUGh0dHA6Ly93
|
|
381
|
+
// SIG // d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWlj
|
|
382
|
+
// SIG // cm9zb2Z0JTIwVGltZS1TdGFtcCUyMFBDQSUyMDIwMTAo
|
|
383
|
+
// SIG // MSkuY3J0MAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAww
|
|
384
|
+
// SIG // CgYIKwYBBQUHAwgwDgYDVR0PAQH/BAQDAgeAMA0GCSqG
|
|
385
|
+
// SIG // SIb3DQEBCwUAA4ICAQDZ62/BMK/Hl/x9bCrd658Ew8eA
|
|
386
|
+
// SIG // KoB25DDUKPpFBsAiDV0t8tRlHHarCv0dYOk3+7TcdatD
|
|
387
|
+
// SIG // aSpNSU7qVCXx3RMSrZLoRwPvNpU+8iEqf2O+HaidN0Qk
|
|
388
|
+
// SIG // +EPvKKEF0zM8YnsHxK1S7fFnn3m53Ek9IusqSr/O6QmJ
|
|
389
|
+
// SIG // MTNuG26mzP1fjOVQaaQlLO0fnBE4s/8xANQG2S/74l7R
|
|
390
|
+
// SIG // 5q8gNAhnfj7fXPmnbGH5u6nuVDJ0tH/2CZhBDJBKhlws
|
|
391
|
+
// SIG // 8iyvnYflLBYtHeJZHXBPmauSTYyB3rF9cM7RlQLb19A2
|
|
392
|
+
// SIG // A2XTdlmdZJPoTjG5VFfy/J9WFs4T/+V0J2JdNwH1xK5/
|
|
393
|
+
// SIG // tRGrcpYn83dwoSdcbhhu+mG1oIkV5w7wosA6r1CXr1UW
|
|
394
|
+
// SIG // NasuMuL5VSmkobW3X4D8hnnif2HEgTjTnNAzU1m4zGy+
|
|
395
|
+
// SIG // dKniBAtJR0qS9q0WDVbt4bB8xvJ+buQkGoz8MfT86bGS
|
|
396
|
+
// SIG // HhUzR8lRepLoyOFaPTbzv8xfDreOCDI+DO1F/WWuEMBn
|
|
397
|
+
// SIG // +Qe9ceezo2l+d4MU+L86B7xAVxfagph0YFwS20aJiXw5
|
|
398
|
+
// SIG // +tGpc7+3aQlUCLkNOtp8iGSp7F8c7ihW9E411sOjhaRt
|
|
399
|
+
// SIG // W7I16TqOQzB5MrK4m8R6K+GM+XWY1chwDciqNG0qwJVX
|
|
400
|
+
// SIG // ooXGhuRe+EmU/BbchwFuiIC3OcP9w/kdaGw4SmdtVjCC
|
|
401
|
+
// SIG // B3EwggVZoAMCAQICEzMAAAAVxedrngKbSZkAAAAAABUw
|
|
402
|
+
// SIG // DQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAlVTMRMw
|
|
403
|
+
// SIG // EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt
|
|
404
|
+
// SIG // b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp
|
|
405
|
+
// SIG // b24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290IENlcnRp
|
|
406
|
+
// SIG // ZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTIxMDkzMDE4
|
|
407
|
+
// SIG // MjIyNVoXDTMwMDkzMDE4MzIyNVowfDELMAkGA1UEBhMC
|
|
408
|
+
// SIG // VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT
|
|
409
|
+
// SIG // B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
|
|
410
|
+
// SIG // b3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUt
|
|
411
|
+
// SIG // U3RhbXAgUENBIDIwMTAwggIiMA0GCSqGSIb3DQEBAQUA
|
|
412
|
+
// SIG // A4ICDwAwggIKAoICAQDk4aZM57RyIQt5osvXJHm9DtWC
|
|
413
|
+
// SIG // 0/3unAcH0qlsTnXIyjVX9gF/bErg4r25PhdgM/9cT8dm
|
|
414
|
+
// SIG // 95VTcVrifkpa/rg2Z4VGIwy1jRPPdzLAEBjoYH1qUoNE
|
|
415
|
+
// SIG // t6aORmsHFPPFdvWGUNzBRMhxXFExN6AKOG6N7dcP2CZT
|
|
416
|
+
// SIG // fDlhAnrEqv1yaa8dq6z2Nr41JmTamDu6GnszrYBbfowQ
|
|
417
|
+
// SIG // HJ1S/rboYiXcag/PXfT+jlPP1uyFVk3v3byNpOORj7I5
|
|
418
|
+
// SIG // LFGc6XBpDco2LXCOMcg1KL3jtIckw+DJj361VI/c+gVV
|
|
419
|
+
// SIG // mG1oO5pGve2krnopN6zL64NF50ZuyjLVwIYwXE8s4mKy
|
|
420
|
+
// SIG // zbnijYjklqwBSru+cakXW2dg3viSkR4dPf0gz3N9QZpG
|
|
421
|
+
// SIG // dc3EXzTdEonW/aUgfX782Z5F37ZyL9t9X4C626p+Nuw2
|
|
422
|
+
// SIG // TPYrbqgSUei/BQOj0XOmTTd0lBw0gg/wEPK3Rxjtp+iZ
|
|
423
|
+
// SIG // fD9M269ewvPV2HM9Q07BMzlMjgK8QmguEOqEUUbi0b1q
|
|
424
|
+
// SIG // GFphAXPKZ6Je1yh2AuIzGHLXpyDwwvoSCtdjbwzJNmSL
|
|
425
|
+
// SIG // W6CmgyFdXzB0kZSU2LlQ+QuJYfM2BjUYhEfb3BvR/bLU
|
|
426
|
+
// SIG // HMVr9lxSUV0S2yW6r1AFemzFER1y7435UsSFF5PAPBXb
|
|
427
|
+
// SIG // GjfHCBUYP3irRbb1Hode2o+eFnJpxq57t7c+auIurQID
|
|
428
|
+
// SIG // AQABo4IB3TCCAdkwEgYJKwYBBAGCNxUBBAUCAwEAATAj
|
|
429
|
+
// SIG // BgkrBgEEAYI3FQIEFgQUKqdS/mTEmr6CkTxGNSnPEP8v
|
|
430
|
+
// SIG // BO4wHQYDVR0OBBYEFJ+nFV0AXmJdg/Tl0mWnG1M1Gely
|
|
431
|
+
// SIG // MFwGA1UdIARVMFMwUQYMKwYBBAGCN0yDfQEBMEEwPwYI
|
|
432
|
+
// SIG // KwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNv
|
|
433
|
+
// SIG // bS9wa2lvcHMvRG9jcy9SZXBvc2l0b3J5Lmh0bTATBgNV
|
|
434
|
+
// SIG // HSUEDDAKBggrBgEFBQcDCDAZBgkrBgEEAYI3FAIEDB4K
|
|
435
|
+
// SIG // AFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
|
|
436
|
+
// SIG // BAUwAwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2U
|
|
437
|
+
// SIG // kFvXzpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8v
|
|
438
|
+
// SIG // Y3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0
|
|
439
|
+
// SIG // cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYI
|
|
440
|
+
// SIG // KwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8v
|
|
441
|
+
// SIG // d3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jv
|
|
442
|
+
// SIG // b0NlckF1dF8yMDEwLTA2LTIzLmNydDANBgkqhkiG9w0B
|
|
443
|
+
// SIG // AQsFAAOCAgEAnVV9/Cqt4SwfZwExJFvhnnJL/Klv6lwU
|
|
444
|
+
// SIG // tj5OR2R4sQaTlz0xM7U518JxNj/aZGx80HU5bbsPMeTC
|
|
445
|
+
// SIG // j/ts0aGUGCLu6WZnOlNN3Zi6th542DYunKmCVgADsAW+
|
|
446
|
+
// SIG // iehp4LoJ7nvfam++Kctu2D9IdQHZGN5tggz1bSNU5HhT
|
|
447
|
+
// SIG // dSRXud2f8449xvNo32X2pFaq95W2KFUn0CS9QKC/GbYS
|
|
448
|
+
// SIG // EhFdPSfgQJY4rPf5KYnDvBewVIVCs/wMnosZiefwC2qB
|
|
449
|
+
// SIG // woEZQhlSdYo2wh3DYXMuLGt7bj8sCXgU6ZGyqVvfSaN0
|
|
450
|
+
// SIG // DLzskYDSPeZKPmY7T7uG+jIa2Zb0j/aRAfbOxnT99kxy
|
|
451
|
+
// SIG // bxCrdTDFNLB62FD+CljdQDzHVG2dY3RILLFORy3BFARx
|
|
452
|
+
// SIG // v2T5JL5zbcqOCb2zAVdJVGTZc9d/HltEAY5aGZFrDZ+k
|
|
453
|
+
// SIG // KNxnGSgkujhLmm77IVRrakURR6nxt67I6IleT53S0Ex2
|
|
454
|
+
// SIG // tVdUCbFpAUR+fKFhbHP+CrvsQWY9af3LwUFJfn6Tvsv4
|
|
455
|
+
// SIG // O+S3Fb+0zj6lMVGEvL8CwYKiexcdFYmNcP7ntdAoGokL
|
|
456
|
+
// SIG // jzbaukz5m/8K6TT4JDVnK+ANuOaMmdbhIurwJ0I9JZTm
|
|
457
|
+
// SIG // dHRbatGePu1+oDEzfbzL6Xu/OHBE0ZDxyKs6ijoIYn/Z
|
|
458
|
+
// SIG // cGNTTY3ugm2lBRDBcQZqELQdVTNYs6FwZvKhggLUMIIC
|
|
459
|
+
// SIG // PQIBATCCAQChgdikgdUwgdIxCzAJBgNVBAYTAlVTMRMw
|
|
460
|
+
// SIG // EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt
|
|
461
|
+
// SIG // b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp
|
|
462
|
+
// SIG // b24xLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9w
|
|
463
|
+
// SIG // ZXJhdGlvbnMgTGltaXRlZDEmMCQGA1UECxMdVGhhbGVz
|
|
464
|
+
// SIG // IFRTUyBFU046RDA4Mi00QkZELUVFQkExJTAjBgNVBAMT
|
|
465
|
+
// SIG // HE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2WiIwoB
|
|
466
|
+
// SIG // ATAHBgUrDgMCGgMVABw5/3M/t8kZCFAiX0my93Y50BKm
|
|
467
|
+
// SIG // oIGDMIGApH4wfDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
|
|
468
|
+
// SIG // Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc
|
|
469
|
+
// SIG // BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQG
|
|
470
|
+
// SIG // A1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIw
|
|
471
|
+
// SIG // MTAwDQYJKoZIhvcNAQEFBQACBQDqJ3KFMCIYDzIwMjQw
|
|
472
|
+
// SIG // NjI3MTMwOTI1WhgPMjAyNDA2MjgxMzA5MjVaMHQwOgYK
|
|
473
|
+
// SIG // KwYBBAGEWQoEATEsMCowCgIFAOoncoUCAQAwBwIBAAIC
|
|
474
|
+
// SIG // BY4wBwIBAAICErAwCgIFAOooxAUCAQAwNgYKKwYBBAGE
|
|
475
|
+
// SIG // WQoEAjEoMCYwDAYKKwYBBAGEWQoDAqAKMAgCAQACAweh
|
|
476
|
+
// SIG // IKEKMAgCAQACAwGGoDANBgkqhkiG9w0BAQUFAAOBgQAo
|
|
477
|
+
// SIG // BMOzwcOrRYp6ZGXgIZLQUtxg8deMupSH/D728t1XS2Q1
|
|
478
|
+
// SIG // 4Z3Tjs6knpFQXSBfr9UW8FWKe8h2rc26UsDp6kJ1C4+w
|
|
479
|
+
// SIG // brtKmjLq7aXuZtdHpGShf5LF6n2j1xaZV8hPIaeqTieu
|
|
480
|
+
// SIG // 8iAH4UoCnFvbVtkaWLFLCOlddydXRTQxsfIkSzGCBA0w
|
|
481
|
+
// SIG // ggQJAgEBMIGTMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
|
|
482
|
+
// SIG // EwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4w
|
|
483
|
+
// SIG // HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAk
|
|
484
|
+
// SIG // BgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAy
|
|
485
|
+
// SIG // MDEwAhMzAAAB3MHgjMJfWF6OAAEAAAHcMA0GCWCGSAFl
|
|
486
|
+
// SIG // AwQCAQUAoIIBSjAaBgkqhkiG9w0BCQMxDQYLKoZIhvcN
|
|
487
|
+
// SIG // AQkQAQQwLwYJKoZIhvcNAQkEMSIEIA/iFEgybfnsL4Vt
|
|
488
|
+
// SIG // xIlhpdMiI4og+0inXLx3j9Vb1KF4MIH6BgsqhkiG9w0B
|
|
489
|
+
// SIG // CRACLzGB6jCB5zCB5DCBvQQgU6cXimrZRD+MvKmc47li
|
|
490
|
+
// SIG // 9DrtCKsRCw4V9ky8pcSCDTcwgZgwgYCkfjB8MQswCQYD
|
|
491
|
+
// SIG // VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G
|
|
492
|
+
// SIG // A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
|
|
493
|
+
// SIG // IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQg
|
|
494
|
+
// SIG // VGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAdzB4IzCX1he
|
|
495
|
+
// SIG // jgABAAAB3DAiBCB78//sVVmuyOquZ8b6YPr96aC+b6b2
|
|
496
|
+
// SIG // jI6HRoH+35mGHDANBgkqhkiG9w0BAQsFAASCAgA9TTUn
|
|
497
|
+
// SIG // 1dJ593OfJw0sCk3veyMbOtfP7yLWozqdU1ZpY/QnLxkY
|
|
498
|
+
// SIG // ETcD4k+GPP29fwt4ZMHbKQazc9pW50nG1BpLKyL/3u0Z
|
|
499
|
+
// SIG // bWFec1MN/u8WSb7ds94pgB0wqaOsFAMr1ptBpYaXjvut
|
|
500
|
+
// SIG // p5pVHoHUDWvjTd62oHDYxzT14Qxx30D+PHpk6yCrGC7+
|
|
501
|
+
// SIG // zVrXh5+qdx2DaHQDOhqEQJye7VCYpdeu2w4/BVuPvZe2
|
|
502
|
+
// SIG // K2U+cnLcpg64GRbhvVTL0c4ls7LpsWpx3XRDm+y9dwyc
|
|
503
|
+
// SIG // hQ5PRSnGFPmC27g5RdoX0v9nqfND66/VYm9unLnClMWv
|
|
504
|
+
// SIG // BwMVKajRCWCPes+9VP/MPi2NUdbs6S4KrumIN3TfYdyo
|
|
505
|
+
// SIG // PQog94veIcnqD5CYzRM0YzlnnLkfS2Ibvfj941Iug+X7
|
|
506
|
+
// SIG // qzEmQEtpy+6DS1rWVtAebMyZcPGrVcoUzHzPZ686zDai
|
|
507
|
+
// SIG // 6PIj39Chv/tFIJS4armZorl7lWqxHw2MPthxilzUX55S
|
|
508
|
+
// SIG // VluB/keSKs1zbJpAh4JFvZPa7BJ/JghhEFyz0js2LuT8
|
|
509
|
+
// SIG // UE7HASBP5T8iD5p2c5YcwWivp/yxnXS1XT+Sp6Rdo09+
|
|
510
|
+
// SIG // lDyT0r12LKxhcnKSTATpFWkoi8PhA0MqdI1Kp2xw/5g4
|
|
511
|
+
// SIG // NPMDlW52Dcxc5wXAEasX7pRTS7JoKJmkNRi2O/J9JyZQ
|
|
512
|
+
// SIG // PyWy2/TcAAzt34Kwnw==
|
|
513
|
+
// SIG // End signature block
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/tools/gulp-update-notes-resource/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["'use strict';\r\n\r\nimport { Buffer } from 'buffer';\r\nimport fs from 'fs';\r\nimport log from 'fancy-log';\r\nimport pluginError from 'plugin-error';\r\nimport through2 from 'through2';\r\nimport Vinyl from 'vinyl';\r\nimport * as util from '../utilities';\r\n\r\nconst PLUGIN_NAME = 'gulp-update-notes-resource';\r\n\r\ninterface Options {\r\n /**\r\n * resource name.\r\n */\r\n resourceName: string;\r\n\r\n /**\r\n * path of update notes file.\r\n */\r\n updateNotes: string;\r\n\r\n /**\r\n * depth of folder structure from the locale folder. (default is 1)\r\n */\r\n localeOffset: number;\r\n}\r\n\r\nfunction gulpUpdateNotesResources(options: Options) {\r\n function findResourceKey(node: any, results: string[]): void {\r\n const match = 'resources:strings:';\r\n const keys = Object.keys(node);\r\n if (keys && keys.length > 0) {\r\n keys.forEach(key => {\r\n const target = node[key];\r\n if (target) {\r\n if (typeof target === 'string') {\r\n if (target.indexOf(match) === 0) {\r\n const value = target.substring(match.length);\r\n if (results.indexOf(value) < 0) {\r\n results.push(value);\r\n }\r\n }\r\n } else {\r\n findResourceKey(target, results);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n // override options settings if not specified.\r\n options = <Options>Object.assign(\r\n {\r\n updateNotes: 'packages/shell/src/assets/updates/update-notes.json',\r\n localeOffset: 1\r\n },\r\n options || {});\r\n\r\n const resources: any = {};\r\n const keyToResources: any = {};\r\n\r\n return through2.obj(\r\n /**\r\n * Transform\r\n */\r\n function (file, encoding, callback) {\r\n let locale = 'default';\r\n if (resources.default) {\r\n // if default is set already, find current locale from the file path.\r\n const pathSegments = file.history[0].split('\\\\');\r\n locale = pathSegments[pathSegments.length - (2 + options.localeOffset)];\r\n }\r\n\r\n resources[locale] = {};\r\n if (resources.default) {\r\n // if default is set already, pre-fill all resource items from default.\r\n for (const resourceId in resources.default) {\r\n if (resources.default.hasOwnProperty(resourceId)) {\r\n resources[locale][resourceId] = resources.default[resourceId];\r\n }\r\n }\r\n }\r\n\r\n // remove comments, /* multiline comment */ and // one line comment and \"//\": \"JSON element comment\"\r\n const content = file.contents.toString('utf8')\r\n .replace(/(\\/\\*([^*]|[\\n]|(\\*+([^*/]|[\\n])))*\\*\\/+)|( +\\/\\/.*)|( +\\\"\\/\\/\\\".*)/g, '');\r\n const object = JSON.parse(content);\r\n if (object[options.resourceName] && object[options.resourceName]['App']['UpdateNotes']) {\r\n // supports <ResourceName>.Manifest.<KeyName> format.\r\n const items = object[options.resourceName]['App']['UpdateNotes'];\r\n for (const key in items) {\r\n if (items.hasOwnProperty(key)) {\r\n // Each key will have two children, title and description\r\n // no need to separate in JSON form\r\n resources[locale][key] = items[key];\r\n\r\n // Used to keep an alternate mapping we use later\r\n if (!keyToResources.hasOwnProperty(key)) {\r\n keyToResources[key] = {};\r\n }\r\n\r\n if (keyToResources.hasOwnProperty(key) &&\r\n !keyToResources[key].hasOwnProperty(locale)) {\r\n keyToResources[key][locale] = {};\r\n }\r\n keyToResources[key][locale] = items[key];\r\n }\r\n }\r\n } else {\r\n // supports <ResourceName>_App_UpdateNotes format.\r\n const resourceUpdateNotes = options.resourceName + '_App_UpdateNotes_';\r\n for (const name in object) {\r\n if (object.hasOwnProperty(name)) {\r\n const index = name.indexOf(resourceUpdateNotes);\r\n if (index === 0) {\r\n // Check if this resource has the specific substring or not\r\n const value = object[name];\r\n\r\n // If it contains '_' we split it so we keep only the key\r\n const resourceId2 = name.substring(resourceUpdateNotes.length);\r\n\r\n // Split to separate <KeyValue>_<type>\r\n // Possible types are title or description\r\n const splitText = resourceId2.split('_');\r\n\r\n const key = splitText[0];\r\n const type = splitText[1];\r\n if (!resources[locale].hasOwnProperty(key)) {\r\n resources[locale][key] = {};\r\n }\r\n resources[locale][key][type] = value;\r\n\r\n // Used to keep a mapping of keys to resources for faster\r\n // processing later\r\n if (!keyToResources.hasOwnProperty(key)) {\r\n keyToResources[key] = {};\r\n }\r\n\r\n if (keyToResources.hasOwnProperty(key) &&\r\n !keyToResources[key].hasOwnProperty(locale)) {\r\n keyToResources[key][locale] = {};\r\n }\r\n keyToResources[key][locale][type] = value;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return callback();\r\n },\r\n\r\n /**\r\n * Flush\r\n */\r\n function (callback) {\r\n try {\r\n const updateNotesObject = JSON.parse(fs.readFileSync(options.updateNotes, 'utf8'));\r\n\r\n const keys: string[] = [];\r\n findResourceKey(updateNotesObject, keys);\r\n const missingType: string[] = [];\r\n const missing: string[] = [];\r\n const unused: string[] = Object.keys(resources.default);\r\n\r\n keys.forEach(function (key) {\r\n const index = unused.indexOf(key);\r\n if (index >= 0) {\r\n // If the item exists, remove it from the unused set\r\n unused.splice(index, 1);\r\n\r\n // We have to check each item has a title and description\r\n const typeKeys = Object.keys(keyToResources[key].default);\r\n const requiredTypesSet = new Set();\r\n requiredTypesSet.add('title');\r\n requiredTypesSet.add('description');\r\n typeKeys.forEach(item => {\r\n if (requiredTypesSet.has(item)) {\r\n requiredTypesSet.delete(item);\r\n }\r\n });\r\n\r\n // If it did not have we save it throw error later\r\n if (requiredTypesSet.size > 0) {\r\n missingType.push(key);\r\n }\r\n } else {\r\n missing.push(key);\r\n }\r\n });\r\n\r\n if (missing.length > 0) {\r\n missing.forEach(item => {\r\n log.error('Missing resource: ' + item);\r\n });\r\n throw new Error('Missing resource found in manifest.json!');\r\n }\r\n\r\n if (unused.length > 0) {\r\n unused.forEach(item => {\r\n log.error('Unused resource: ' + item);\r\n });\r\n throw new Error('Unused resource found in strings.resjson!');\r\n }\r\n\r\n if (missingType.length > 0) {\r\n missingType.forEach(item => {\r\n log.error('Missing title or description: ' + item);\r\n });\r\n throw new Error('Key without title or description found in strings.resjson!');\r\n }\r\n\r\n updateNotesObject.map((item, index) => {\r\n if (item.hasOwnProperty('stringJsonKey')) {\r\n const key = item.stringJsonKey.replace('resources:strings:', '');\r\n // Key to resource maps key -> all locales\r\n item.resources = keyToResources[key];\r\n }\r\n updateNotesObject[index] = item;\r\n });\r\n\r\n const updateNotesFile = new Vinyl({\r\n cwd: '.',\r\n base: '.',\r\n path: './update-notes.json',\r\n contents: Buffer.from(JSON.stringify(updateNotesObject, null, 2), 'utf8')\r\n });\r\n\r\n this.push(updateNotesFile);\r\n } catch (e) {\r\n const error = (!e.plugin || (e.plugin !== PLUGIN_NAME)) ?\r\n util.extendError(new pluginError({ plugin: PLUGIN_NAME, message: e.message }), e) : e;\r\n log.error(error);\r\n }\r\n\r\n callback();\r\n });\r\n}\r\n\r\nmodule.exports = gulpUpdateNotesResources;\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../packages/tools/gulp-update-notes-resource/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAEb,mCAAgC;AAChC,oDAAoB;AACpB,kEAA4B;AAC5B,wEAAuC;AACvC,gEAAgC;AAChC,0DAA0B;AAC1B,2DAAqC;AAErC,MAAM,WAAW,GAAG,4BAA4B,CAAC;AAmBjD,SAAS,wBAAwB,CAAC,OAAgB;IAC9C,SAAS,eAAe,CAAC,IAAS,EAAE,OAAiB;QACjD,MAAM,KAAK,GAAG,oBAAoB,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACf,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACzB,IAAI,MAAM,EAAE;oBACR,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;wBAC5B,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;4BAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;4BAC7C,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gCAC5B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;6BACvB;yBACJ;qBACJ;yBAAM;wBACH,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;qBACpC;iBACJ;YACL,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAED,8CAA8C;IAC9C,OAAO,GAAY,MAAM,CAAC,MAAM,CAC5B;QACI,WAAW,EAAE,qDAAqD;QAClE,YAAY,EAAE,CAAC;KAClB,EACD,OAAO,IAAI,EAAE,CAAC,CAAC;IAEnB,MAAM,SAAS,GAAQ,EAAE,CAAC;IAC1B,MAAM,cAAc,GAAQ,EAAE,CAAC;IAE/B,OAAO,kBAAQ,CAAC,GAAG;IACf;;OAEG;IACH,UAAU,IAAI,EAAE,QAAQ,EAAE,QAAQ;QAC9B,IAAI,MAAM,GAAG,SAAS,CAAC;QACvB,IAAI,SAAS,CAAC,OAAO,EAAE;YACnB,qEAAqE;YACrE,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;SAC3E;QAED,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,SAAS,CAAC,OAAO,EAAE;YACnB,uEAAuE;YACvE,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,OAAO,EAAE;gBACxC,IAAI,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;oBAC9C,SAAS,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;iBACjE;aACJ;SACJ;QAED,oGAAoG;QACpG,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;aACzB,OAAO,CAAC,uEAAuE,EAAE,EAAE,CAAC,CAAC;QAC1G,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,EAAE;YACpF,qDAAqD;YACrD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC;YACjE,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;gBACrB,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBAC3B,yDAAyD;oBACzD,mCAAmC;oBACnC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;oBAEpC,iDAAiD;oBACjD,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;wBACrC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;qBAC5B;oBAED,IAAI,cAAc,CAAC,cAAc,CAAC,GAAG,CAAC;wBAClC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;wBAC7C,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;qBACpC;oBACD,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;iBAC5C;aACJ;SACJ;aAAM;YACH,kDAAkD;YAClD,MAAM,mBAAmB,GAAG,OAAO,CAAC,YAAY,GAAG,mBAAmB,CAAC;YACvE,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;gBACvB,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;oBAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;oBAChD,IAAI,KAAK,KAAK,CAAC,EAAE;wBACb,2DAA2D;wBAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;wBAE3B,yDAAyD;wBACzD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;wBAE/D,sCAAsC;wBACtC,0CAA0C;wBAC1C,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAEzC,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;wBACzB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;wBAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;4BACxC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;yBAC/B;wBACD,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;wBAErC,yDAAyD;wBACzD,mBAAmB;wBACnB,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;4BACrC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;yBAC5B;wBAED,IAAI,cAAc,CAAC,cAAc,CAAC,GAAG,CAAC;4BAClC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;4BAC7C,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;yBACpC;wBACD,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;qBAC7C;iBACJ;aACJ;SACJ;QAED,OAAO,QAAQ,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,UAAU,QAAQ;QACd,IAAI;YACA,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;YAEnF,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,eAAe,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,WAAW,GAAa,EAAE,CAAC;YACjC,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAa,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAExD,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG;gBACtB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClC,IAAI,KAAK,IAAI,CAAC,EAAE;oBACZ,oDAAoD;oBACpD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBAExB,yDAAyD;oBACzD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;oBAC1D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;oBACnC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC9B,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBACpC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;wBACpB,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;4BAC5B,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;yBACjC;oBACL,CAAC,CAAC,CAAC;oBAEH,kDAAkD;oBAClD,IAAI,gBAAgB,CAAC,IAAI,GAAG,CAAC,EAAE;wBAC3B,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;qBACzB;iBACJ;qBAAM;oBACH,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACrB;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACnB,mBAAG,CAAC,KAAK,CAAC,wCAAwC,GAAG,IAAI,CAAC,CAAC;gBAC/D,CAAC,CAAC,CAAC;gBACH,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;aAC/D;YAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnB,sFAAsF;gBACtF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBAClB,mBAAG,CAAC,IAAI,CAAC,uCAAuC,GAAG,IAAI,CAAC,CAAC;gBAC7D,CAAC,CAAC,CAAC;aACN;YAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxB,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACvB,mBAAG,CAAC,KAAK,CAAC,oDAAoD,GAAG,IAAI,CAAC,CAAC;gBAC3E,CAAC,CAAC,CAAC;gBACH,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;aACjF;YAED,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAClC,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE;oBACtC,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;oBACjE,0CAA0C;oBAC1C,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;iBACxC;gBACD,iBAAiB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YACpC,CAAC,CAAC,CAAC;YAEH,MAAM,eAAe,GAAG,IAAI,eAAK,CAAC;gBAC9B,GAAG,EAAE,GAAG;gBACR,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,qBAAqB;gBAC3B,QAAQ,EAAE,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC;aAC5E,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAC9B;QAAC,OAAO,CAAC,EAAE;YACR,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,CAAC,WAAW,CAAC,IAAI,sBAAW,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1F,mBAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACpB;QAED,QAAQ,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;AACX,CAAC;AAED,MAAM,CAAC,OAAO,GAAG,wBAAwB,CAAC","file":"index.js","sourcesContent":["'use strict';\r\n\r\nimport { Buffer } from 'buffer';\r\nimport fs from 'fs';\r\nimport log from 'fancy-log';\r\nimport pluginError from 'plugin-error';\r\nimport through2 from 'through2';\r\nimport Vinyl from 'vinyl';\r\nimport * as util from '../utilities';\r\n\r\nconst PLUGIN_NAME = 'gulp-update-notes-resource';\r\n\r\ninterface Options {\r\n /**\r\n * resource name.\r\n */\r\n resourceName: string;\r\n\r\n /**\r\n * path of update notes file.\r\n */\r\n updateNotes: string;\r\n\r\n /**\r\n * depth of folder structure from the locale folder. (default is 1)\r\n */\r\n localeOffset: number;\r\n}\r\n\r\nfunction gulpUpdateNotesResources(options: Options) {\r\n function findResourceKey(node: any, results: string[]): void {\r\n const match = 'resources:strings:';\r\n const keys = Object.keys(node);\r\n if (keys && keys.length > 0) {\r\n keys.forEach(key => {\r\n const target = node[key];\r\n if (target) {\r\n if (typeof target === 'string') {\r\n if (target.indexOf(match) === 0) {\r\n const value = target.substring(match.length);\r\n if (results.indexOf(value) < 0) {\r\n results.push(value);\r\n }\r\n }\r\n } else {\r\n findResourceKey(target, results);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n // override options settings if not specified.\r\n options = <Options>Object.assign(\r\n {\r\n updateNotes: 'packages/shell/src/assets/updates/update-notes.json',\r\n localeOffset: 1\r\n },\r\n options || {});\r\n\r\n const resources: any = {};\r\n const keyToResources: any = {};\r\n\r\n return through2.obj(\r\n /**\r\n * Transform\r\n */\r\n function (file, encoding, callback) {\r\n let locale = 'default';\r\n if (resources.default) {\r\n // if default is set already, find current locale from the file path.\r\n const pathSegments = file.history[0].split('\\\\');\r\n locale = pathSegments[pathSegments.length - (2 + options.localeOffset)];\r\n }\r\n\r\n resources[locale] = {};\r\n if (resources.default) {\r\n // if default is set already, pre-fill all resource items from default.\r\n for (const resourceId in resources.default) {\r\n if (resources.default.hasOwnProperty(resourceId)) {\r\n resources[locale][resourceId] = resources.default[resourceId];\r\n }\r\n }\r\n }\r\n\r\n // remove comments, /* multiline comment */ and // one line comment and \"//\": \"JSON element comment\"\r\n const content = file.contents.toString('utf8')\r\n .replace(/(\\/\\*([^*]|[\\n]|(\\*+([^*/]|[\\n])))*\\*\\/+)|( +\\/\\/.*)|( +\\\"\\/\\/\\\".*)/g, '');\r\n const object = JSON.parse(content);\r\n if (object[options.resourceName] && object[options.resourceName]['App']['UpdateNotes']) {\r\n // supports <ResourceName>.Manifest.<KeyName> format.\r\n const items = object[options.resourceName]['App']['UpdateNotes'];\r\n for (const key in items) {\r\n if (items.hasOwnProperty(key)) {\r\n // Each key will have two children, title and description\r\n // no need to separate in JSON form\r\n resources[locale][key] = items[key];\r\n\r\n // Used to keep an alternate mapping we use later\r\n if (!keyToResources.hasOwnProperty(key)) {\r\n keyToResources[key] = {};\r\n }\r\n\r\n if (keyToResources.hasOwnProperty(key) &&\r\n !keyToResources[key].hasOwnProperty(locale)) {\r\n keyToResources[key][locale] = {};\r\n }\r\n keyToResources[key][locale] = items[key];\r\n }\r\n }\r\n } else {\r\n // supports <ResourceName>_App_UpdateNotes format.\r\n const resourceUpdateNotes = options.resourceName + '_App_UpdateNotes_';\r\n for (const name in object) {\r\n if (object.hasOwnProperty(name)) {\r\n const index = name.indexOf(resourceUpdateNotes);\r\n if (index === 0) {\r\n // Check if this resource has the specific substring or not\r\n const value = object[name];\r\n\r\n // If it contains '_' we split it so we keep only the key\r\n const resourceId2 = name.substring(resourceUpdateNotes.length);\r\n\r\n // Split to separate <KeyValue>_<type>\r\n // Possible types are title or description\r\n const splitText = resourceId2.split('_');\r\n\r\n const key = splitText[0];\r\n const type = splitText[1];\r\n if (!resources[locale].hasOwnProperty(key)) {\r\n resources[locale][key] = {};\r\n }\r\n resources[locale][key][type] = value;\r\n\r\n // Used to keep a mapping of keys to resources for faster\r\n // processing later\r\n if (!keyToResources.hasOwnProperty(key)) {\r\n keyToResources[key] = {};\r\n }\r\n\r\n if (keyToResources.hasOwnProperty(key) &&\r\n !keyToResources[key].hasOwnProperty(locale)) {\r\n keyToResources[key][locale] = {};\r\n }\r\n keyToResources[key][locale][type] = value;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return callback();\r\n },\r\n\r\n /**\r\n * Flush\r\n */\r\n function (callback) {\r\n try {\r\n const updateNotesObject = JSON.parse(fs.readFileSync(options.updateNotes, 'utf8'));\r\n\r\n const keys: string[] = [];\r\n findResourceKey(updateNotesObject, keys);\r\n const missingType: string[] = [];\r\n const missing: string[] = [];\r\n const unused: string[] = Object.keys(resources.default);\r\n\r\n keys.forEach(function (key) {\r\n const index = unused.indexOf(key);\r\n if (index >= 0) {\r\n // If the item exists, remove it from the unused set\r\n unused.splice(index, 1);\r\n\r\n // We have to check each item has a title and description\r\n const typeKeys = Object.keys(keyToResources[key].default);\r\n const requiredTypesSet = new Set();\r\n requiredTypesSet.add('title');\r\n requiredTypesSet.add('description');\r\n typeKeys.forEach(item => {\r\n if (requiredTypesSet.has(item)) {\r\n requiredTypesSet.delete(item);\r\n }\r\n });\r\n\r\n // If it did not have we save it throw error later\r\n if (requiredTypesSet.size > 0) {\r\n missingType.push(key);\r\n }\r\n } else {\r\n missing.push(key);\r\n }\r\n });\r\n\r\n if (missing.length > 0) {\r\n missing.forEach(item => {\r\n log.error('Missing resource (update-notes.json): ' + item);\r\n });\r\n throw new Error('Missing resource found in manifest.json!');\r\n }\r\n\r\n if (unused.length > 0) {\r\n // allow to use unused resources to share the same strings.json between GWv1 and GWv2.\r\n unused.forEach(item => {\r\n log.warn('Unused resource (update-notes.json): ' + item);\r\n });\r\n }\r\n\r\n if (missingType.length > 0) {\r\n missingType.forEach(item => {\r\n log.error('Missing title or description (update-notes.json): ' + item);\r\n });\r\n throw new Error('Key without title or description found in strings.resjson!');\r\n }\r\n\r\n updateNotesObject.map((item, index) => {\r\n if (item.hasOwnProperty('stringJsonKey')) {\r\n const key = item.stringJsonKey.replace('resources:strings:', '');\r\n // Key to resource maps key -> all locales\r\n item.resources = keyToResources[key];\r\n }\r\n updateNotesObject[index] = item;\r\n });\r\n\r\n const updateNotesFile = new Vinyl({\r\n cwd: '.',\r\n base: '.',\r\n path: './update-notes.json',\r\n contents: Buffer.from(JSON.stringify(updateNotesObject, null, 2), 'utf8')\r\n });\r\n\r\n this.push(updateNotesFile);\r\n } catch (e) {\r\n const error = (!e.plugin || (e.plugin !== PLUGIN_NAME)) ?\r\n util.extendError(new pluginError({ plugin: PLUGIN_NAME, message: e.message }), e) : e;\r\n log.error(error);\r\n }\r\n\r\n callback();\r\n });\r\n}\r\n\r\nmodule.exports = gulpUpdateNotesResources;\r\n"]}
|