@microsoft/windows-admin-center-sdk 4.87.0 → 4.167.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/actions/containers/action-bar/action-bar.component.mjs +2 -2
- 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/clock/clock-form-field.component.mjs +10 -7
- package/angular/esm2020/src/controls/form/form-field/form-field.component.mjs +1 -1
- package/angular/esm2020/src/controls/form/form-field/number/number-form-field.component.mjs +22 -4
- package/angular/esm2020/src/controls/form/form-field/radio-group/classic/radio-group-form-field.component.mjs +5 -5
- 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/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/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 +128 -73
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
- package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs +116 -71
- package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
- package/angular/package.json +1 -1
- package/angular/src/controls/common/spacer-base.component.d.ts +11 -2
- package/angular/src/controls/form/form-field/number/number-form-field.component.d.ts +8 -0
- 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/directives/svg/svg.directive.d.ts +1 -2
- package/angular/src/generated/strings.d.ts +12 -0
- package/core/assets/strings/cs-CZ/strings.json +1 -1
- package/core/assets/strings/es-ES/strings.json +1 -1
- package/core/assets/strings/fr-FR/strings.json +1 -1
- package/core/assets/strings/hu-HU/strings.json +1 -1
- package/core/assets/strings/id-ID/strings.json +1 -1
- package/core/assets/strings/it-IT/strings.json +1 -1
- package/core/assets/strings/ja-JP/strings.json +1 -1
- package/core/assets/strings/ko-KR/strings.json +1 -1
- package/core/assets/strings/pl-PL/strings.json +1 -1
- package/core/assets/strings/pt-BR/strings.json +1 -1
- package/core/assets/strings/pt-PT/strings.json +1 -1
- package/core/assets/strings/ru-RU/strings.json +1 -1
- package/core/assets/strings/sv-SE/strings.json +1 -1
- package/core/assets/strings/tr-TR/strings.json +1 -1
- package/core/assets/strings/zh-CN/strings.json +1 -1
- package/core/assets/strings/zh-TW/strings.json +1 -1
- package/core/azure/azure-constants.d.ts +3 -2
- package/core/azure/azure-constants.d.ts.map +1 -1
- package/core/azure/azure-constants.js +11 -3
- package/core/azure/azure-constants.js.map +1 -1
- package/core/base/utilities.d.ts +3 -3
- package/core/base/utilities.d.ts.map +1 -1
- package/core/base/utilities.js +2 -2
- package/core/base/utilities.js.map +1 -1
- package/core/data/active-directory/active-directory.d.ts.map +1 -1
- package/core/data/active-directory/active-directory.js +1 -1
- package/core/data/active-directory/active-directory.js.map +1 -1
- package/core/data/cookie.d.ts.map +1 -1
- package/core/data/cookie.js +7 -0
- package/core/data/cookie.js.map +1 -1
- 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 +21 -6
- package/core/data/gateway-url-translator.js.map +1 -1
- package/core/data/gateway-urls.d.ts +6 -0
- package/core/data/gateway-urls.d.ts.map +1 -1
- package/core/data/gateway-urls.js +8 -0
- package/core/data/gateway-urls.js.map +1 -1
- package/core/data/node-connection.d.ts.map +1 -1
- package/core/data/node-connection.js +0 -2
- package/core/data/node-connection.js.map +1 -1
- package/core/generated/powershell-scripts.d.ts.map +1 -1
- package/core/generated/powershell-scripts.js +1 -1
- package/core/generated/powershell-scripts.js.map +1 -1
- package/core/resources/scripts/public/inventory/Get-ServerInventory.ps1 +38 -16
- package/core/security/tool-condition-validator.d.ts.map +1 -1
- package/core/security/tool-condition-validator.js +5 -5
- package/core/security/tool-condition-validator.js.map +1 -1
- package/core/shared/server-inventory/server-inventory-cache.d.ts.map +1 -1
- package/core/shared/server-inventory/server-inventory-cache.js +1 -1
- package/core/shared/server-inventory/server-inventory-cache.js.map +1 -1
- package/core/shared/server-inventory/server-inventory.d.ts +4 -4
- package/core/shared/server-inventory/server-inventory.d.ts.map +1 -1
- package/core/shared/server-inventory/server-inventory.js +2 -2
- package/core/shared/server-inventory/server-inventory.js.map +1 -1
- package/microsoft-windows-admin-center-sdk-4.167.0.tgz +0 -0
- package/package.json +10 -8
- package/styles/css/main-v2.css +1 -1
- package/tools/code-formatter/.eslintrc.base.json +1 -0
- package/tools/code-formatter/lint.d.ts.map +1 -1
- package/tools/code-formatter/lint.js +7 -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 +79 -0
- package/tools/code-formatter/utilities.js.map +1 -0
- package/tools/gulp-update-notes-resource/index.d.ts.map +1 -1
- package/tools/gulp-update-notes-resource/index.js +4 -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/pipelines/ci-build.yml +2 -2
- package/tools/module-template/gulpfile.ts/common/utilities.ts +1 -0
- package/tools/wac-cli/src/angular15/configs/angular-json-config.d.ts +2 -7
- package/tools/wac-cli/src/angular15/configs/angular-json-config.d.ts.map +1 -1
- package/tools/wac-cli/src/angular15/configs/angular-json-config.js +8 -1
- package/tools/wac-cli/src/angular15/configs/angular-json-config.js.map +1 -1
- 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 +16 -0
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js.map +1 -0
- package/tools/wac-cli/src/angular15/configs/package-json-config.d.ts +4 -0
- package/tools/wac-cli/src/angular15/configs/package-json-config.d.ts.map +1 -1
- package/tools/wac-cli/src/angular15/configs/package-json-config.js +13 -9
- package/tools/wac-cli/src/angular15/configs/package-json-config.js.map +1 -1
- package/tools/wac-cli/src/angular15/main.d.ts +20 -4
- package/tools/wac-cli/src/angular15/main.d.ts.map +1 -1
- package/tools/wac-cli/src/angular15/main.js +44 -8
- package/tools/wac-cli/src/angular15/main.js.map +1 -1
- 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 +49 -0
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js.map +1 -0
- package/tools/wac-cli/templates/wac-template/package.json +3 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/tools/code-formatter/lint.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"sources":["../../../packages/tools/code-formatter/lint.ts"],"names":[],"mappings":";;AAKA,sBAAc,UAAU,CAAC;IACrB,SAAgB,OAAO,2BAUtB;IAED,SAAgB,oBAAoB,2BAOnC;IAED,SAAgB,2BAA2B,2BAK1C;IAGM,MAAM,IAAI,mCAA+C,CAAC;CACpE","file":"lint.d.ts","sourcesContent":["import { dest, series, src } from 'gulp';\r\nimport eslint from 'gulp-eslint-new';\r\nimport ts from 'gulp-typescript';\r\nimport { Utilities } from './utilities';\r\n\r\nexport module LintModule {\r\n export function lintApp() {\r\n const argv = Utilities.gulpArgv();\r\n return src(['src/**/*.ts', '!src/generated/**/*.*'])\r\n .pipe(eslint({\r\n overrideConfigFile: `./.eslintrc.json`,\r\n fix: argv['fix'] as boolean\r\n }))\r\n .pipe(eslint.format())\r\n .pipe(dest('src'))\r\n .pipe(eslint.failAfterError());\r\n }\r\n\r\n export function lintUiTestAutomation() {\r\n const tsProject = ts.createProject('uta/tsconfig.json');\r\n\r\n return tsProject.src()\r\n .pipe(eslint())\r\n .pipe(eslint.format())\r\n .pipe(eslint.failAfterError());\r\n }\r\n\r\n export function lintUiTestAutomation_legacy() {\r\n return src(['ui-test-automation/**/*.ts', '!ui-test-automation/node_modules/**/*.*'])\r\n .pipe(eslint())\r\n .pipe(eslint.format())\r\n .pipe(eslint.failAfterError());\r\n }\r\n\r\n // for the backward compatibility with repositories that have not been onboarded to the latest ui automation framework.\r\n export const lint = series(lintApp, lintUiTestAutomation_legacy);\r\n}\r\n"]}
|
|
@@ -5,12 +5,18 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const gulp_1 = require("gulp");
|
|
6
6
|
const gulp_eslint_new_1 = tslib_1.__importDefault(require("gulp-eslint-new"));
|
|
7
7
|
const gulp_typescript_1 = tslib_1.__importDefault(require("gulp-typescript"));
|
|
8
|
+
const utilities_1 = require("./utilities");
|
|
8
9
|
var LintModule;
|
|
9
10
|
(function (LintModule) {
|
|
10
11
|
function lintApp() {
|
|
12
|
+
const argv = utilities_1.Utilities.gulpArgv();
|
|
11
13
|
return (0, gulp_1.src)(['src/**/*.ts', '!src/generated/**/*.*'])
|
|
12
|
-
.pipe((0, gulp_eslint_new_1.default)(
|
|
14
|
+
.pipe((0, gulp_eslint_new_1.default)({
|
|
15
|
+
overrideConfigFile: `./.eslintrc.json`,
|
|
16
|
+
fix: argv['fix']
|
|
17
|
+
}))
|
|
13
18
|
.pipe(gulp_eslint_new_1.default.format())
|
|
19
|
+
.pipe((0, gulp_1.dest)('src'))
|
|
14
20
|
.pipe(gulp_eslint_new_1.default.failAfterError());
|
|
15
21
|
}
|
|
16
22
|
LintModule.lintApp = lintApp;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/tools/code-formatter/lint.ts"],"names":[],"mappings":";;;;AAAA,+
|
|
1
|
+
{"version":3,"sources":["../../../packages/tools/code-formatter/lint.ts"],"names":[],"mappings":";;;;AAAA,+BAAyC;AACzC,8EAAqC;AACrC,8EAAiC;AACjC,2CAAwC;AAExC,IAAc,UAAU,CA+BvB;AA/BD,WAAc,UAAU;IACpB,SAAgB,OAAO;QACnB,MAAM,IAAI,GAAG,qBAAS,CAAC,QAAQ,EAAE,CAAC;QAClC,OAAO,IAAA,UAAG,EAAC,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC;aAC/C,IAAI,CAAC,IAAA,yBAAM,EAAC;YACT,kBAAkB,EAAE,kBAAkB;YACtC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAY;SAC9B,CAAC,CAAC;aACF,IAAI,CAAC,yBAAM,CAAC,MAAM,EAAE,CAAC;aACrB,IAAI,CAAC,IAAA,WAAI,EAAC,KAAK,CAAC,CAAC;aACjB,IAAI,CAAC,yBAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IACvC,CAAC;IAVe,kBAAO,UAUtB,CAAA;IAED,SAAgB,oBAAoB;QAChC,MAAM,SAAS,GAAG,yBAAE,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAExD,OAAO,SAAS,CAAC,GAAG,EAAE;aACjB,IAAI,CAAC,IAAA,yBAAM,GAAE,CAAC;aACd,IAAI,CAAC,yBAAM,CAAC,MAAM,EAAE,CAAC;aACrB,IAAI,CAAC,yBAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IACvC,CAAC;IAPe,+BAAoB,uBAOnC,CAAA;IAED,SAAgB,2BAA2B;QACvC,OAAO,IAAA,UAAG,EAAC,CAAC,4BAA4B,EAAE,yCAAyC,CAAC,CAAC;aAChF,IAAI,CAAC,IAAA,yBAAM,GAAE,CAAC;aACd,IAAI,CAAC,yBAAM,CAAC,MAAM,EAAE,CAAC;aACrB,IAAI,CAAC,yBAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IACvC,CAAC;IALe,sCAA2B,8BAK1C,CAAA;IAED,uHAAuH;IAC1G,eAAI,GAAG,IAAA,aAAM,EAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;AACrE,CAAC,EA/Ba,UAAU,GAAV,kBAAU,KAAV,kBAAU,QA+BvB","file":"lint.js","sourcesContent":["import { dest, series, src } from 'gulp';\r\nimport eslint from 'gulp-eslint-new';\r\nimport ts from 'gulp-typescript';\r\nimport { Utilities } from './utilities';\r\n\r\nexport module LintModule {\r\n export function lintApp() {\r\n const argv = Utilities.gulpArgv();\r\n return src(['src/**/*.ts', '!src/generated/**/*.*'])\r\n .pipe(eslint({\r\n overrideConfigFile: `./.eslintrc.json`,\r\n fix: argv['fix'] as boolean\r\n }))\r\n .pipe(eslint.format())\r\n .pipe(dest('src'))\r\n .pipe(eslint.failAfterError());\r\n }\r\n\r\n export function lintUiTestAutomation() {\r\n const tsProject = ts.createProject('uta/tsconfig.json');\r\n\r\n return tsProject.src()\r\n .pipe(eslint())\r\n .pipe(eslint.format())\r\n .pipe(eslint.failAfterError());\r\n }\r\n\r\n export function lintUiTestAutomation_legacy() {\r\n return src(['ui-test-automation/**/*.ts', '!ui-test-automation/node_modules/**/*.*'])\r\n .pipe(eslint())\r\n .pipe(eslint.format())\r\n .pipe(eslint.failAfterError());\r\n }\r\n\r\n // for the backward compatibility with repositories that have not been onboarded to the latest ui automation framework.\r\n export const lint = series(lintApp, lintUiTestAutomation_legacy);\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../packages/tools/code-formatter/utilities.ts"],"names":[],"mappings":"AAIA,sBAAc,SAAS,CAAC;IAMpB,SAAgB,QAAQ,IAAI;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;KAAE,CAuBhE;IAED,SAAgB,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,GAAG,IAAI,CAMnE;IAED,SAAgB,EAAE,CAAC,EAAE,KAAA,EAAE,IAAI,KAAA,EAAE,OAAO,KAAK,EAAE,WAAW,MAAO,QA0B5D;CACJ","file":"utilities.d.ts","sourcesContent":["import childProcess from 'child_process';\r\nimport log from 'fancy-log';\r\nimport { argv as values } from 'yargs';\r\n\r\nexport module Utilities {\r\n\r\n function toBoolean(value: any, defaultValue: boolean = false) {\r\n return defaultValue ? value !== false : !!value;\r\n }\r\n\r\n export function gulpArgv(): { [index: string]: boolean | string } {\r\n return {\r\n prod: toBoolean(values['prod']),\r\n verbose: toBoolean(values['verbose']),\r\n junit: toBoolean(values['junit']),\r\n expandCss: toBoolean(values['expandcss']),\r\n target: values['target'] as string,\r\n debug: toBoolean(values['debug']),\r\n styles: toBoolean(values['styles']),\r\n resources: toBoolean(values['resources']),\r\n core: toBoolean(values['core']),\r\n angular: toBoolean(values['angular']),\r\n app: toBoolean(values['app']),\r\n devGuide: toBoolean(values['devguide']),\r\n fix: toBoolean(values['fix']),\r\n version: values['V'] as string,\r\n icon: values['icon'] as string,\r\n license: values['license'] as string,\r\n company: values['company'] as string,\r\n copyright: values['copyright'] as string,\r\n iconUrl: values['iconUrl'] as string,\r\n targetPath: values['targetPath'] as string\r\n };\r\n }\r\n\r\n export function exportFunctions(context: any, gulpModule: any): void {\r\n for (const func in gulpModule) {\r\n if (gulpModule.hasOwnProperty(func)) {\r\n context[func] = gulpModule[func];\r\n }\r\n }\r\n }\r\n\r\n export function ng(cb, args, options = {}, codeHandler = null) {\r\n log('ng', args.join(' '));\r\n const errors = [];\r\n const cmd = childProcess.spawn('ng.cmd', args, options);\r\n cmd.stdout.on('data', (data) => { log(data.toString().trim()); });\r\n cmd.stderr.on('data', (data) => {\r\n const message = data.toString().trim();\r\n if (message.toUpperCase().startsWith('ERROR')) {\r\n log.error(message);\r\n errors.push(message);\r\n } else {\r\n log(message);\r\n }\r\n });\r\n cmd.on('exit', (code) => {\r\n if (codeHandler) {\r\n const codeError = codeHandler(code);\r\n if (codeError) {\r\n errors.push(codeError);\r\n }\r\n }\r\n if (errors.length > 0) {\r\n cb(errors.join('\\n'));\r\n } else { cb(); }\r\n });\r\n\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Utilities = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const child_process_1 = tslib_1.__importDefault(require("child_process"));
|
|
6
|
+
const fancy_log_1 = tslib_1.__importDefault(require("fancy-log"));
|
|
7
|
+
const yargs_1 = require("yargs");
|
|
8
|
+
var Utilities;
|
|
9
|
+
(function (Utilities) {
|
|
10
|
+
function toBoolean(value, defaultValue = false) {
|
|
11
|
+
return defaultValue ? value !== false : !!value;
|
|
12
|
+
}
|
|
13
|
+
function gulpArgv() {
|
|
14
|
+
return {
|
|
15
|
+
prod: toBoolean(yargs_1.argv['prod']),
|
|
16
|
+
verbose: toBoolean(yargs_1.argv['verbose']),
|
|
17
|
+
junit: toBoolean(yargs_1.argv['junit']),
|
|
18
|
+
expandCss: toBoolean(yargs_1.argv['expandcss']),
|
|
19
|
+
target: yargs_1.argv['target'],
|
|
20
|
+
debug: toBoolean(yargs_1.argv['debug']),
|
|
21
|
+
styles: toBoolean(yargs_1.argv['styles']),
|
|
22
|
+
resources: toBoolean(yargs_1.argv['resources']),
|
|
23
|
+
core: toBoolean(yargs_1.argv['core']),
|
|
24
|
+
angular: toBoolean(yargs_1.argv['angular']),
|
|
25
|
+
app: toBoolean(yargs_1.argv['app']),
|
|
26
|
+
devGuide: toBoolean(yargs_1.argv['devguide']),
|
|
27
|
+
fix: toBoolean(yargs_1.argv['fix']),
|
|
28
|
+
version: yargs_1.argv['V'],
|
|
29
|
+
icon: yargs_1.argv['icon'],
|
|
30
|
+
license: yargs_1.argv['license'],
|
|
31
|
+
company: yargs_1.argv['company'],
|
|
32
|
+
copyright: yargs_1.argv['copyright'],
|
|
33
|
+
iconUrl: yargs_1.argv['iconUrl'],
|
|
34
|
+
targetPath: yargs_1.argv['targetPath']
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
Utilities.gulpArgv = gulpArgv;
|
|
38
|
+
function exportFunctions(context, gulpModule) {
|
|
39
|
+
for (const func in gulpModule) {
|
|
40
|
+
if (gulpModule.hasOwnProperty(func)) {
|
|
41
|
+
context[func] = gulpModule[func];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
Utilities.exportFunctions = exportFunctions;
|
|
46
|
+
function ng(cb, args, options = {}, codeHandler = null) {
|
|
47
|
+
(0, fancy_log_1.default)('ng', args.join(' '));
|
|
48
|
+
const errors = [];
|
|
49
|
+
const cmd = child_process_1.default.spawn('ng.cmd', args, options);
|
|
50
|
+
cmd.stdout.on('data', (data) => { (0, fancy_log_1.default)(data.toString().trim()); });
|
|
51
|
+
cmd.stderr.on('data', (data) => {
|
|
52
|
+
const message = data.toString().trim();
|
|
53
|
+
if (message.toUpperCase().startsWith('ERROR')) {
|
|
54
|
+
fancy_log_1.default.error(message);
|
|
55
|
+
errors.push(message);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
(0, fancy_log_1.default)(message);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
cmd.on('exit', (code) => {
|
|
62
|
+
if (codeHandler) {
|
|
63
|
+
const codeError = codeHandler(code);
|
|
64
|
+
if (codeError) {
|
|
65
|
+
errors.push(codeError);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (errors.length > 0) {
|
|
69
|
+
cb(errors.join('\n'));
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
cb();
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
Utilities.ng = ng;
|
|
77
|
+
})(Utilities = exports.Utilities || (exports.Utilities = {}));
|
|
78
|
+
|
|
79
|
+
//# sourceMappingURL=utilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../packages/tools/code-formatter/utilities.ts"],"names":[],"mappings":"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","file":"utilities.js","sourcesContent":["import childProcess from 'child_process';\r\nimport log from 'fancy-log';\r\nimport { argv as values } from 'yargs';\r\n\r\nexport module Utilities {\r\n\r\n function toBoolean(value: any, defaultValue: boolean = false) {\r\n return defaultValue ? value !== false : !!value;\r\n }\r\n\r\n export function gulpArgv(): { [index: string]: boolean | string } {\r\n return {\r\n prod: toBoolean(values['prod']),\r\n verbose: toBoolean(values['verbose']),\r\n junit: toBoolean(values['junit']),\r\n expandCss: toBoolean(values['expandcss']),\r\n target: values['target'] as string,\r\n debug: toBoolean(values['debug']),\r\n styles: toBoolean(values['styles']),\r\n resources: toBoolean(values['resources']),\r\n core: toBoolean(values['core']),\r\n angular: toBoolean(values['angular']),\r\n app: toBoolean(values['app']),\r\n devGuide: toBoolean(values['devguide']),\r\n fix: toBoolean(values['fix']),\r\n version: values['V'] as string,\r\n icon: values['icon'] as string,\r\n license: values['license'] as string,\r\n company: values['company'] as string,\r\n copyright: values['copyright'] as string,\r\n iconUrl: values['iconUrl'] as string,\r\n targetPath: values['targetPath'] as string\r\n };\r\n }\r\n\r\n export function exportFunctions(context: any, gulpModule: any): void {\r\n for (const func in gulpModule) {\r\n if (gulpModule.hasOwnProperty(func)) {\r\n context[func] = gulpModule[func];\r\n }\r\n }\r\n }\r\n\r\n export function ng(cb, args, options = {}, codeHandler = null) {\r\n log('ng', args.join(' '));\r\n const errors = [];\r\n const cmd = childProcess.spawn('ng.cmd', args, options);\r\n cmd.stdout.on('data', (data) => { log(data.toString().trim()); });\r\n cmd.stderr.on('data', (data) => {\r\n const message = data.toString().trim();\r\n if (message.toUpperCase().startsWith('ERROR')) {\r\n log.error(message);\r\n errors.push(message);\r\n } else {\r\n log(message);\r\n }\r\n });\r\n cmd.on('exit', (code) => {\r\n if (codeHandler) {\r\n const codeError = codeHandler(code);\r\n if (codeError) {\r\n errors.push(codeError);\r\n }\r\n }\r\n if (errors.length > 0) {\r\n cb(errors.join('\\n'));\r\n } else { cb(); }\r\n });\r\n\r\n }\r\n}\r\n"]}
|
|
@@ -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
|
}
|
|
@@ -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":"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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 (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"]}
|
|
@@ -83,7 +83,7 @@ jobs:
|
|
|
83
83
|
inputs:
|
|
84
84
|
filePath: build/update-powershell-code.ps1
|
|
85
85
|
failOnStderr: true
|
|
86
|
-
- task: EsrpCodeSigning@
|
|
86
|
+
- task: EsrpCodeSigning@2
|
|
87
87
|
displayName: ESRP CodeSigning for PowerShellModule
|
|
88
88
|
inputs:
|
|
89
89
|
ConnectedServiceName: 62bd045c-f530-473f-b137-6dca47b5ee68
|
|
@@ -152,7 +152,7 @@ jobs:
|
|
|
152
152
|
gulpFile: gulpfile.ts
|
|
153
153
|
targets: pack
|
|
154
154
|
arguments: --V $(packageVersion)
|
|
155
|
-
- task: EsrpCodeSigning@
|
|
155
|
+
- task: EsrpCodeSigning@2
|
|
156
156
|
displayName: ESRP CodeSigning for Nuget Package
|
|
157
157
|
inputs:
|
|
158
158
|
ConnectedServiceName: 62bd045c-f530-473f-b137-6dca47b5ee68
|
|
@@ -22,6 +22,7 @@ export module Utilities {
|
|
|
22
22
|
angular: toBoolean(values['angular']),
|
|
23
23
|
app: toBoolean(values['app']),
|
|
24
24
|
devGuide: toBoolean(values['devguide']),
|
|
25
|
+
fix: toBoolean(values['fix']),
|
|
25
26
|
version: values['V'] as string,
|
|
26
27
|
icon: values['icon'] as string,
|
|
27
28
|
license: values['license'] as string,
|
|
@@ -6,17 +6,12 @@ export declare const replaces: {
|
|
|
6
6
|
'"builder": "@angular-devkit/build-ng-packagr:build"': string;
|
|
7
7
|
'"defaultCollection": "@angular-eslint/schematics"': string;
|
|
8
8
|
};
|
|
9
|
-
export declare const adds:
|
|
10
|
-
toBeAdded: string;
|
|
11
|
-
toBeAddedAfter: string;
|
|
12
|
-
indent: number;
|
|
13
|
-
keyword?: undefined;
|
|
14
|
-
} | {
|
|
9
|
+
export declare const adds: {
|
|
15
10
|
toBeAdded: string;
|
|
16
11
|
toBeAddedAfter: string;
|
|
17
12
|
indent: number;
|
|
18
13
|
keyword: string;
|
|
19
|
-
}
|
|
14
|
+
}[];
|
|
20
15
|
export declare const removes: ({
|
|
21
16
|
key: string;
|
|
22
17
|
linesInTotalAfterKey: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/tools/wac-cli/src/angular15/configs/angular-json-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,QAAQ;;;;CAIpB,CAAC;AAEF,eAAO,MAAM,IAAI
|
|
1
|
+
{"version":3,"sources":["../../../packages/tools/wac-cli/src/angular15/configs/angular-json-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,QAAQ;;;;CAIpB,CAAC;AAEF,eAAO,MAAM,IAAI;;;;;GAmBhB,CAAC;AAEF,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;IAsBnB,CAAA","file":"angular-json-config.d.ts","sourcesContent":["/**\r\n * The configuration file for the angular.json file upgrading to Angular 15.\r\n */\r\n\r\nexport const replaces = {\r\n '\"maximumWarning\": \"2mb\"' : '\"maximumWarning\": \"4mb\"',\r\n '\"builder\": \"@angular-devkit/build-ng-packagr:build\"': '\"builder\": \"@angular-devkit/build-angular:ng-packagr\"',\r\n '\"defaultCollection\": \"@angular-eslint/schematics\"': '\"analytics\": false'\r\n};\r\n\r\nexport const adds = [\r\n {\r\n toBeAdded: '\"polyfills\": [\"zone.js\", \"zone.js/testing\", \"zone.js/dist/zone\", \"@msft-sme/core/polyfills\"]',\r\n toBeAddedAfter: '\"main\": \"src/test.ts\"',\r\n indent: 12,\r\n keyword: '\"polyfills\": [\"zone.js\"'\r\n },\r\n {\r\n toBeAdded: '\"polyfills\": [\"zone.js\", \"zone.js/testing\", \"zone.js/dist/zone\", \"@msft-sme/core/polyfills\"]',\r\n toBeAddedAfter: '\"codeCoverage\": true',\r\n indent: 12,\r\n keyword: '\"polyfills\": [\"zone.js\"'\r\n },\r\n {\r\n toBeAdded: '\"allowedCommonJsDependencies\": [\"chart.js\"]',\r\n toBeAddedAfter: '\"main\": \"src/main.ts\"',\r\n indent: 12,\r\n keyword: '\"allowedCommonJsDependencies\": [\"chart.js\"]',\r\n }\r\n];\r\n\r\nexport const removes = [\r\n {\r\n key: 'customWebpackConfig',\r\n linesInTotalAfterKey: 4,\r\n exactMatch: false\r\n },\r\n {\r\n key: '\"extractCss\": true,'\r\n },\r\n {\r\n key: '\"polyfills\": \"src/polyfills.ts\",',\r\n toBeRemovedAfter: '\"main\": \"src/test.ts\"'\r\n },\r\n {\r\n key: '\"main\": \"src/test.ts\",'\r\n },\r\n {\r\n key: '\"defaultProject\"',\r\n },\r\n {\r\n key: '\"analytics\": false\",'\r\n }\r\n]\r\n"]}
|
|
@@ -13,7 +13,14 @@ exports.adds = [
|
|
|
13
13
|
{
|
|
14
14
|
toBeAdded: '"polyfills": ["zone.js", "zone.js/testing", "zone.js/dist/zone", "@msft-sme/core/polyfills"]',
|
|
15
15
|
toBeAddedAfter: '"main": "src/test.ts"',
|
|
16
|
-
indent: 12
|
|
16
|
+
indent: 12,
|
|
17
|
+
keyword: '"polyfills": ["zone.js"'
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
toBeAdded: '"polyfills": ["zone.js", "zone.js/testing", "zone.js/dist/zone", "@msft-sme/core/polyfills"]',
|
|
21
|
+
toBeAddedAfter: '"codeCoverage": true',
|
|
22
|
+
indent: 12,
|
|
23
|
+
keyword: '"polyfills": ["zone.js"'
|
|
17
24
|
},
|
|
18
25
|
{
|
|
19
26
|
toBeAdded: '"allowedCommonJsDependencies": ["chart.js"]',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/tools/wac-cli/src/angular15/configs/angular-json-config.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEU,QAAA,QAAQ,GAAG;IACpB,yBAAyB,EAAG,yBAAyB;IACrD,qDAAqD,EAAE,uDAAuD;IAC9G,mDAAmD,EAAE,oBAAoB;CAC5E,CAAC;AAEW,QAAA,IAAI,GAAG;IAChB;QACI,SAAS,EAAE,8FAA8F;QACzG,cAAc,EAAE,uBAAuB;QACvC,MAAM,EAAE,EAAE;
|
|
1
|
+
{"version":3,"sources":["../../../packages/tools/wac-cli/src/angular15/configs/angular-json-config.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEU,QAAA,QAAQ,GAAG;IACpB,yBAAyB,EAAG,yBAAyB;IACrD,qDAAqD,EAAE,uDAAuD;IAC9G,mDAAmD,EAAE,oBAAoB;CAC5E,CAAC;AAEW,QAAA,IAAI,GAAG;IAChB;QACI,SAAS,EAAE,8FAA8F;QACzG,cAAc,EAAE,uBAAuB;QACvC,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,yBAAyB;KACrC;IACD;QACI,SAAS,EAAE,8FAA8F;QACzG,cAAc,EAAE,sBAAsB;QACtC,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,yBAAyB;KACrC;IACD;QACI,SAAS,EAAE,6CAA6C;QACxD,cAAc,EAAE,uBAAuB;QACvC,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,6CAA6C;KACzD;CACJ,CAAC;AAEW,QAAA,OAAO,GAAG;IACnB;QACI,GAAG,EAAE,qBAAqB;QAC1B,oBAAoB,EAAE,CAAC;QACvB,UAAU,EAAE,KAAK;KACpB;IACD;QACI,GAAG,EAAE,qBAAqB;KAC7B;IACD;QACI,GAAG,EAAE,kCAAkC;QACvC,gBAAgB,EAAE,uBAAuB;KAC5C;IACD;QACI,GAAG,EAAE,wBAAwB;KAChC;IACD;QACI,GAAG,EAAE,kBAAkB;KAC1B;IACD;QACI,GAAG,EAAE,sBAAsB;KAC9B;CACJ,CAAA","file":"angular-json-config.js","sourcesContent":["/**\r\n * The configuration file for the angular.json file upgrading to Angular 15.\r\n */\r\n\r\nexport const replaces = {\r\n '\"maximumWarning\": \"2mb\"' : '\"maximumWarning\": \"4mb\"',\r\n '\"builder\": \"@angular-devkit/build-ng-packagr:build\"': '\"builder\": \"@angular-devkit/build-angular:ng-packagr\"',\r\n '\"defaultCollection\": \"@angular-eslint/schematics\"': '\"analytics\": false'\r\n};\r\n\r\nexport const adds = [\r\n {\r\n toBeAdded: '\"polyfills\": [\"zone.js\", \"zone.js/testing\", \"zone.js/dist/zone\", \"@msft-sme/core/polyfills\"]',\r\n toBeAddedAfter: '\"main\": \"src/test.ts\"',\r\n indent: 12,\r\n keyword: '\"polyfills\": [\"zone.js\"'\r\n },\r\n {\r\n toBeAdded: '\"polyfills\": [\"zone.js\", \"zone.js/testing\", \"zone.js/dist/zone\", \"@msft-sme/core/polyfills\"]',\r\n toBeAddedAfter: '\"codeCoverage\": true',\r\n indent: 12,\r\n keyword: '\"polyfills\": [\"zone.js\"'\r\n },\r\n {\r\n toBeAdded: '\"allowedCommonJsDependencies\": [\"chart.js\"]',\r\n toBeAddedAfter: '\"main\": \"src/main.ts\"',\r\n indent: 12,\r\n keyword: '\"allowedCommonJsDependencies\": [\"chart.js\"]',\r\n }\r\n];\r\n\r\nexport const removes = [\r\n {\r\n key: 'customWebpackConfig',\r\n linesInTotalAfterKey: 4,\r\n exactMatch: false\r\n },\r\n {\r\n key: '\"extractCss\": true,'\r\n },\r\n {\r\n key: '\"polyfills\": \"src/polyfills.ts\",',\r\n toBeRemovedAfter: '\"main\": \"src/test.ts\"'\r\n },\r\n {\r\n key: '\"main\": \"src/test.ts\",'\r\n },\r\n {\r\n key: '\"defaultProject\"',\r\n },\r\n {\r\n key: '\"analytics\": false\",'\r\n }\r\n]\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../packages/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,IAAI;;;;;GAOhB,CAAC","file":"eslint-auto-fix-config.d.ts","sourcesContent":["/**\r\n * The configuration file for the eslintrc.json file to support lint --fix command.\r\n */\r\nexport const adds = [\r\n {\r\n toBeAdded: '\"ignorePatterns\": [\"!*.spec.ts\"]',\r\n toBeAddedAfter: '\"extends\": \"./node_modules/@microsoft/windows-admin-center-sdk/tools/code-formatter/.eslintrc.base.json\"',\r\n indent: 2,\r\n keyword: '\"ignorePatterns\": [\"!*.spec.ts\"]'\r\n }\r\n];\r\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.adds = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* The configuration file for the eslintrc.json file to support lint --fix command.
|
|
6
|
+
*/
|
|
7
|
+
exports.adds = [
|
|
8
|
+
{
|
|
9
|
+
toBeAdded: '"ignorePatterns": ["!*.spec.ts"]',
|
|
10
|
+
toBeAddedAfter: '"extends": "./node_modules/@microsoft/windows-admin-center-sdk/tools/code-formatter/.eslintrc.base.json"',
|
|
11
|
+
indent: 2,
|
|
12
|
+
keyword: '"ignorePatterns": ["!*.spec.ts"]'
|
|
13
|
+
}
|
|
14
|
+
];
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=eslint-auto-fix-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../packages/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,IAAI,GAAG;IAChB;QACI,SAAS,EAAE,kCAAkC;QAC7C,cAAc,EAAE,gFAAgF;QAChG,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,kCAAkC;KAC9C;CACJ,CAAC","file":"eslint-auto-fix-config.js","sourcesContent":["/**\r\n * The configuration file for the eslintrc.json file to support lint --fix command.\r\n */\r\nexport const adds = [\r\n {\r\n toBeAdded: '\"ignorePatterns\": [\"!*.spec.ts\"]',\r\n toBeAddedAfter: '\"extends\": \"./node_modules/@microsoft/windows-admin-center-sdk/tools/code-formatter/.eslintrc.base.json\"',\r\n indent: 2,\r\n keyword: '\"ignorePatterns\": [\"!*.spec.ts\"]'\r\n }\r\n];\r\n"]}
|
|
@@ -10,6 +10,9 @@ export declare const replaces: {
|
|
|
10
10
|
'"@msft-sme/remote-desktop": "2.35.0"': string;
|
|
11
11
|
'"@msft-sme/event-viewer": "2.88.0"': string;
|
|
12
12
|
'"@msft-sme/azure-center": "2.47.0"': string;
|
|
13
|
+
'"@msft-sme/storage": "2.44.0"': string;
|
|
14
|
+
'"@msft-sme/local-users-groups": "2.45.0"': string;
|
|
15
|
+
'"@msft-sme/powershell-console": "2.33.0"': string;
|
|
13
16
|
};
|
|
14
17
|
export declare const replacesPipeline: {
|
|
15
18
|
'"@angular/animations": "11.2.14"': string;
|
|
@@ -60,6 +63,7 @@ export declare const replacesPipeline: {
|
|
|
60
63
|
'"typescript": "4.1.5"': string;
|
|
61
64
|
'"gulp-eslint": "6.0.0"': string;
|
|
62
65
|
'"ajv": "6.12.6"': string;
|
|
66
|
+
'"@playwright/test": "1.20.1"': string;
|
|
63
67
|
};
|
|
64
68
|
export declare const removes: string[];
|
|
65
69
|
export declare const adds: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../packages/tools/wac-cli/src/angular15/configs/package-json-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"sources":["../../../packages/tools/wac-cli/src/angular15/configs/package-json-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;CAYpB,CAAA;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkD5B,CAAA;AAGD,eAAO,MAAM,OAAO,UAUnB,CAAA;AAED,eAAO,MAAM,IAAI;;;CAGhB,CAAA","file":"package-json-config.d.ts","sourcesContent":["/**\r\n * The configuration file for the package-json-config.ts file upgrading to Angular 15.\r\n */\r\nexport const replaces = {\r\n '\"@msft-sme/core\": \"2.633.0\"': '\"@msft-sme/core\": \"4.99.0\"',\r\n '\"@msft-sme/angular\": \"2.633.0\"': '\"@msft-sme/angular\": \"4.99.0\"',\r\n '\"@msft-sme/styles\": \"2.633.0\"': '\"@msft-sme/styles\": \"4.99.0\"',\r\n '\"@microsoft/windows-admin-center-sdk/tools\": \"2.633.0\"': '\"@microsoft/windows-admin-center-sdk/tools\": \"4.99.0\"',\r\n '\"@msft-sme/file-explorer\": \"2.174.0\"': '\"@msft-sme/file-explorer\": \"4.10.0\"',\r\n '\"@msft-sme/remote-desktop\": \"2.35.0\"': '\"@msft-sme/remote-desktop\": \"4.9.0\"',\r\n '\"@msft-sme/event-viewer\": \"2.88.0\"': '\"@msft-sme/event-viewer\": \"4.8.0\"',\r\n '\"@msft-sme/azure-center\": \"2.47.0\"': '\"@msft-sme/azure-center\": \"4.9.0\"',\r\n '\"@msft-sme/storage\": \"2.44.0\"': '\"@msft-sme/storage\": \"4.8.0\"',\r\n '\"@msft-sme/local-users-groups\": \"2.45.0\"': '\"@msft-sme/local-users-groups\": \"4.7.0\"',\r\n '\"@msft-sme/powershell-console\": \"2.33.0\"': '\"@msft-sme/powershell-console\": \"4.8.0\"'\r\n}\r\n\r\nexport const replacesPipeline = {\r\n '\"@angular/animations\": \"11.2.14\"': '\"@angular/animations\": \"15.2.9\"',\r\n '\"@angular/common\": \"11.2.14\"': '\"@angular/common\": \"15.2.9\"',\r\n '\"@angular/compiler\": \"11.2.14\"': '\"@angular/compiler\": \"15.2.9\"',\r\n '\"@angular/core\": \"11.2.14\"': '\"@angular/core\": \"15.2.9\"',\r\n '\"@angular/forms\": \"11.2.14\"': '\"@angular/forms\": \"15.2.9\"',\r\n '\"@angular/language-service\": \"11.2.14\"': '\"@angular/language-service\": \"15.2.9\"',\r\n '\"@angular/platform-browser\": \"11.2.14\"': '\"@angular/platform-browser\": \"15.2.9\"',\r\n '\"@angular/platform-browser-dynamic\": \"11.2.14\"': '\"@angular/platform-browser-dynamic\": \"15.2.9\"',\r\n '\"@angular/router\": \"11.2.14\"': '\"@angular/router\": \"15.2.9\"',\r\n '\"core-js\": \"2.6.2\"': '\"core-js\": \"3.30.1\"',\r\n '\"tslib\": \"^2.0.0\"': '\"tslib\": \"^2.3.0\"',\r\n '\"rxjs\": \"6.6.0\"': '\"rxjs\": \"~7.5.0\"',\r\n '\"zone.js\": \"0.11.3\"': '\"zone.js\": \"0.13.1\"',\r\n '\"@angular-builders/custom-webpack\": \"11.1.1\"': '\"@angular-builders/custom-webpack\": \"15.0.0\"',\r\n '\"@angular-devkit/build-angular\": \"0.1102.13\"': '\"@angular-devkit/build-angular\": \"15.2.9\"',\r\n '\"@angular-eslint/builder\": \"4.3.1\"': '\"@angular-eslint/builder\": \"15.2.1\"',\r\n '\"@angular-eslint/eslint-plugin\": \"4.3.1\"': '\"@angular-eslint/eslint-plugin\": \"15.2.1\"',\r\n '\"@angular-eslint/eslint-plugin-template\": \"4.3.1\"': '\"@angular-eslint/eslint-plugin-template\": \"15.2.1\"',\r\n '\"@angular-eslint/schematics\": \"4.3.1\"': '\"@angular-eslint/schematics\": \"15.2.1\"',\r\n '\"@angular-eslint/template-parser\": \"4.3.1\"': '\"@angular-eslint/template-parser\": \"15.2.1\"',\r\n '\"@angular/cli\": \"11.2.13\"': '\"@angular/cli\": \"15.2.9\"',\r\n '\"@angular/compiler-cli\": \"11.2.14\"': '\"@angular/compiler-cli\": \"15.2.9\"',\r\n '\"@types/jasmine\": \"3.6.0\"': '\"@types/jasmine\": \"~4.3.0\"',\r\n '\"@types/karma\": \"5.0.0\"': '\"@types/karma\": \"6.3.4\"',\r\n '\"@types/node\": \"12.11.1\"': '\"@types/node\": \"17.0.21\"',\r\n '\"@typescript-eslint/eslint-plugin\": \"4.16.1\"': '\"@typescript-eslint/eslint-plugin\": \"6.4.1\"',\r\n '\"@typescript-eslint/parser\": \"4.16.1\"': '\"@typescript-eslint/parser\": \"6.4.1\"',\r\n '\"eslint\": \"7.6.0\"': '\"eslint\": \"8.47.0\"',\r\n '\"eslint-plugin-import\": \"2.21.0\"': '\"eslint-plugin-import\": \"2.28.1\"',\r\n '\"eslint-plugin-jsdoc\": \"36.1.1\"': '\"eslint-plugin-jsdoc\": \"^46.5.0\"',\r\n '\"eslint-plugin-jsonc\": \"2.8.0\"': '\"eslint-plugin-jsonc\": \"^2.9.0\"',\r\n '\"gulp\": \"4.0.0\"': '\"gulp\": \"4.0.2\"',\r\n '\"jasmine-core\": \"3.6.0\"': '\"jasmine-core\": \"~4.5.0\"',\r\n '\"\"jasmine-reporters\": \"2.4.0\"': '\"jasmine-reporters\": \"~2.5.2\"',\r\n '\"karma\": \"6.1.0\"': '\"karma\": \"~6.4.0\"',\r\n '\"karma-coverage\": \"2.0.3\"': '\"karma-coverage\": \"~2.2.0\"',\r\n '\"karma-jasmine\": \"4.0.0\"': '\"karma-jasmine\": \"5.1.0\"',\r\n '\"karma-jasmine-html-reporter\": \"1.5.0\"': '\"karma-jasmine-html-reporter\": \"2.1.0\"',\r\n '\"karma-typescript\": \"5.5.1\"': '\"karma-typescript\": \"5.5.4\"',\r\n '\"ng-mocks\": \"11.10.1\"': '\"ng-mocks\": \"~14.11.0\"',\r\n '\"ng-packagr\": \"11.2.4\"': '\"ng-packagr\": \"~15.2.2\"',\r\n '\"puppeteer\": \"10.0.0\"': '\"puppeteer\": \"~21.0.1\"',\r\n '\"selenium-webdriver\": \"3.6.0\"': '\"selenium-webdriver\": \"4.11.1\"',\r\n '\"ts-helpers\": \"1.1.1\"': '\"ts-helpers\": \"1.1.2\"',\r\n '\"ts-node\": \"8.3.0\"': '\"ts-node\": \"~10.9.1\"',\r\n '\"typescript\": \"4.1.5\"': '\"typescript\": \"4.8.2\"',\r\n '\"gulp-eslint\": \"6.0.0\"': '\"gulp-eslint-new\": \"1.8.3\"',\r\n '\"ajv\": \"6.12.6\"': '\"ajv\": \"6.12.6\"',\r\n '\"@playwright/test\": \"1.20.1\"': '\"@playwright/test\": \"1.31.0\"'\r\n}\r\n\r\n// wac-uta will be brought back until we fix the dependency issue.\r\nexport const removes = [\r\n \"@angular-devkit/build-ng-packagr\",\r\n \"@angular-devkit/build-optimizer\",\r\n \"@wac-uta/shell\",\r\n \"@wac-uta/ui-test-automation\",\r\n \"@wac-uta/file-explorer\",\r\n \"@msft-sme/ui-test-automation\",\r\n \"jquery\",\r\n \"tsickle\",\r\n \"@msft-sme/e2e\"\r\n]\r\n\r\nexport const adds = {\r\n '\"eslint-plugin-angular\": \"^4.1.0\"': '\"eslint-plugin-deprecation\": \"1.5.0\"',\r\n '\"eslint-plugin-prefer-arrow\": \"^1.2.3\"': '\"eslint-plugin-unused-imports\": \"^3.0.0\"'\r\n}\r\n"]}
|
|
@@ -5,14 +5,17 @@ exports.adds = exports.removes = exports.replacesPipeline = exports.replaces = v
|
|
|
5
5
|
* The configuration file for the package-json-config.ts file upgrading to Angular 15.
|
|
6
6
|
*/
|
|
7
7
|
exports.replaces = {
|
|
8
|
-
'"@msft-sme/core": "2.633.0"': '"@msft-sme/core": "4.
|
|
9
|
-
'"@msft-sme/angular": "2.633.0"': '"@msft-sme/angular": "4.
|
|
10
|
-
'"@msft-sme/styles": "2.633.0"': '"@msft-sme/styles": "4.
|
|
11
|
-
'"@microsoft/windows-admin-center-sdk/tools": "2.633.0"': '"@microsoft/windows-admin-center-sdk/tools": "4.
|
|
12
|
-
'"@msft-sme/file-explorer": "2.174.0"': '"@msft-sme/file-explorer": "4.
|
|
13
|
-
'"@msft-sme/remote-desktop": "2.35.0"': '"@msft-sme/remote-desktop": "4.
|
|
14
|
-
'"@msft-sme/event-viewer": "2.88.0"': '"@msft-sme/event-viewer": "4.
|
|
15
|
-
'"@msft-sme/azure-center": "2.47.0"': '"@msft-sme/azure-center": "4.
|
|
8
|
+
'"@msft-sme/core": "2.633.0"': '"@msft-sme/core": "4.99.0"',
|
|
9
|
+
'"@msft-sme/angular": "2.633.0"': '"@msft-sme/angular": "4.99.0"',
|
|
10
|
+
'"@msft-sme/styles": "2.633.0"': '"@msft-sme/styles": "4.99.0"',
|
|
11
|
+
'"@microsoft/windows-admin-center-sdk/tools": "2.633.0"': '"@microsoft/windows-admin-center-sdk/tools": "4.99.0"',
|
|
12
|
+
'"@msft-sme/file-explorer": "2.174.0"': '"@msft-sme/file-explorer": "4.10.0"',
|
|
13
|
+
'"@msft-sme/remote-desktop": "2.35.0"': '"@msft-sme/remote-desktop": "4.9.0"',
|
|
14
|
+
'"@msft-sme/event-viewer": "2.88.0"': '"@msft-sme/event-viewer": "4.8.0"',
|
|
15
|
+
'"@msft-sme/azure-center": "2.47.0"': '"@msft-sme/azure-center": "4.9.0"',
|
|
16
|
+
'"@msft-sme/storage": "2.44.0"': '"@msft-sme/storage": "4.8.0"',
|
|
17
|
+
'"@msft-sme/local-users-groups": "2.45.0"': '"@msft-sme/local-users-groups": "4.7.0"',
|
|
18
|
+
'"@msft-sme/powershell-console": "2.33.0"': '"@msft-sme/powershell-console": "4.8.0"'
|
|
16
19
|
};
|
|
17
20
|
exports.replacesPipeline = {
|
|
18
21
|
'"@angular/animations": "11.2.14"': '"@angular/animations": "15.2.9"',
|
|
@@ -62,7 +65,8 @@ exports.replacesPipeline = {
|
|
|
62
65
|
'"ts-node": "8.3.0"': '"ts-node": "~10.9.1"',
|
|
63
66
|
'"typescript": "4.1.5"': '"typescript": "4.8.2"',
|
|
64
67
|
'"gulp-eslint": "6.0.0"': '"gulp-eslint-new": "1.8.3"',
|
|
65
|
-
'"ajv": "6.12.6"': '"ajv": "6.12.6"'
|
|
68
|
+
'"ajv": "6.12.6"': '"ajv": "6.12.6"',
|
|
69
|
+
'"@playwright/test": "1.20.1"': '"@playwright/test": "1.31.0"'
|
|
66
70
|
};
|
|
67
71
|
// wac-uta will be brought back until we fix the dependency issue.
|
|
68
72
|
exports.removes = [
|