@yamato-daiwa/automation 0.7.0-alpha.7 → 0.7.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.
Files changed (2) hide show
  1. package/EntryPoint.js +370 -233
  2. package/package.json +15 -16
package/EntryPoint.js CHANGED
@@ -34,7 +34,7 @@ function revisionHash(data) {
34
34
  \***********************/
35
35
  /***/ ((module) => {
36
36
 
37
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@yamato-daiwa/automation","version":"0.7.0-alpha.7","description":"The project building tool with declarative YAML configuration specializing on Pug, Stylus and TypeScript as source code languages.","keywords":["build","pug","stylus","tool","typescript"],"engines":{"node":">=20.0.0"},"bin":{"yda":"Executable"},"files":["EntryPoint.js"],"dependencies":{"@eslint-community/eslint-plugin-eslint-comments":"4.5.0","@stylistic/eslint-plugin":"4.4.1","@typescript-eslint/eslint-plugin":"8.33.1","@typescript-eslint/parser":"8.33.1","@vue/compiler-sfc":"3.5.16","@webdiscus/pug-loader":"2.11.1","@yamato-daiwa/es-extensions":"1.8.0-alpha.16","@yamato-daiwa/es-extensions-nodejs":"1.8.0-alpha.16","@yamato-daiwa/style_guides":"0.7.0","autoprefixer":"10.4.21","browser-sync":"3.0.4","css-loader":"7.1.2","cssnano":"7.0.7","dotenv":"16.5.0","eslint":"9.28.0","eslint-plugin-import":"2.31.0","eslint-plugin-n":"17.19.0","eslint-plugin-react":"7.37.5","eslint-plugin-vue":"9.33.0","eslint-plugin-vue-pug":"0.6.2","fork-ts-checker-webpack-plugin":"7.3.0","gulp":"4.0.2","gulp-data":"1.3.1","gulp-if":"3.0.0","gulp-imagemin":"7.1.0","gulp-nodemon":"2.5.0","gulp-plumber":"1.2.1","gulp-postcss":"10.0.0","gulp-pug":"5.0.0","gulp-sourcemaps":"3.0.0","gulp-stylus":"3.0.1","htmlnano":"2.1.2","imagemin-pngquant":"9.0.2","js-beautify":"1.15.4","json5-loader":"4.0.1","nanoid":"5.1.5","node-html-parser":"7.0.1","node-notifier":"10.0.1","pa11y":"9.0.0","probe-image-size":"7.2.3","pug-lint":"2.7.0","pug3-ast-loader":"0.0.0","puppeteer":"24.10.0","require-from-string":"2.0.2","rev-hash":"4.1.0","stlint":"1.0.65","stream-combiner2":"1.1.1","style-loader":"4.0.0","stylus":"0.63.0","stylus-loader":"8.1.1","ts-loader":"9.5.2","vinyl":"2.2.1","vnu-jar":"24.10.17","vue-loader":"17.4.2","vue-style-loader":"4.1.3","vue-tsc":"2.2.10","webpack":"5.99.9","webpack-node-externals":"3.0.0","webpack-stream":"7.0.0","worker-loader":"3.0.8","yaml-loader":"0.8.1"},"devDependencies":{"@types/browser-sync":"2.29.0","@types/cssnano":"5.0.0","@types/gulp":"4.0.17","@types/gulp-if":"3.0.4","@types/gulp-imagemin":"7.0.3","@types/gulp-nodemon":"0.0.37","@types/gulp-plumber":"0.0.37","@types/gulp-postcss":"8.0.6","@types/gulp-sourcemaps":"0.0.38","@types/gulp-stylus":"2.7.8","@types/js-beautify":"1.14.3","@types/node":"22.15.30","@types/node-notifier":"8.0.5","@types/pa11y":"5.3.7","@types/probe-image-size":"7.2.5","@types/pug":"2.0.10","@types/require-from-string":"1.2.3","@types/vnu-jar":"17.11.2","@types/webpack-node-externals":"3.0.4","@types/webpack-stream":"3.2.15","eslint-webpack-plugin":"4.2.0","ts-node":"10.9.2","typescript":"5.8.3","webpack-cli":"6.0.1"},"scripts":{"Incremental Development Building":"webpack --mode development","Production Building":"webpack --mode production","Linting":"eslint Source"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/TokugawaTakeshi/Yamato-Daiwa-Automation.git"},"homepage":"https://automation.yamato-daiwa.com/","funding":"https://github.com/TokugawaTakeshi/Yamato-Daiwa-Automation?sponsor=1","bugs":{"url":"https://github.com/TokugawaTakeshi/Yamato-Daiwa-Automation/issues","email":"tokugawa.takesi@gmail.com"}}');
37
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@yamato-daiwa/automation","version":"0.7.0","description":"The project building tool with declarative YAML configuration specializing on Pug, Stylus and TypeScript as source code languages.","keywords":["build","pug","stylus","tool","typescript"],"engines":{"node":">=20.0.0"},"bin":{"yda":"Executable"},"files":["EntryPoint.js"],"dependencies":{"@eslint-community/eslint-plugin-eslint-comments":"4.5.0","@stylistic/eslint-plugin":"5.2.2","@typescript-eslint/eslint-plugin":"8.38.0","@typescript-eslint/parser":"8.38.0","@vue/compiler-sfc":"3.5.18","@webdiscus/pug-loader":"2.11.1","@yamato-daiwa/es-extensions":"1.8.0-rc.1","@yamato-daiwa/es-extensions-nodejs":"1.8.0-rc.1","@yamato-daiwa/style_guides":"0.8.1","autoprefixer":"10.4.21","browser-sync":"3.0.4","css-loader":"7.1.2","cssnano":"7.1.0","dotenv":"16.5.0","eslint":"9.32.0","eslint-plugin-import":"2.32.0","eslint-plugin-n":"17.21.3","eslint-plugin-react":"7.37.5","eslint-plugin-vue":"9.33.0","eslint-plugin-vue-pug":"0.6.2","gulp":"4.0.2","gulp-data":"1.3.1","gulp-if":"3.0.0","gulp-imagemin":"7.1.0","gulp-nodemon":"2.5.0","gulp-plumber":"1.2.1","gulp-postcss":"10.0.0","gulp-pug":"5.0.0","gulp-sourcemaps":"3.0.0","gulp-stylus":"3.0.1","htmlnano":"2.1.2","imagemin-pngquant":"9.0.2","js-beautify":"1.15.4","json5-loader":"4.0.1","nanoid":"5.1.5","node-html-parser":"7.0.1","node-notifier":"10.0.1","pa11y":"9.0.0","probe-image-size":"7.2.3","pug-lint":"2.7.0","pug3-ast-loader":"0.0.0","puppeteer":"24.10.0","require-from-string":"2.0.2","rev-hash":"4.1.0","stlint":"1.0.65","stream-combiner2":"1.1.1","style-loader":"4.0.0","stylus":"0.63.0","stylus-loader":"8.1.1","ts-loader":"9.5.2","vinyl":"2.2.1","vnu-jar":"24.10.17","vue-loader":"17.4.2","vue-style-loader":"4.1.3","vue-tsc":"3.0.5","webpack":"5.101.0","webpack-node-externals":"3.0.0","webpack-stream":"7.0.0","worker-loader":"3.0.8","yaml-loader":"0.8.1"},"devDependencies":{"@types/browser-sync":"2.29.0","@types/cssnano":"5.0.0","@types/gulp":"4.0.17","@types/gulp-if":"3.0.5","@types/gulp-imagemin":"7.0.3","@types/gulp-nodemon":"0.0.37","@types/gulp-plumber":"0.0.37","@types/gulp-postcss":"8.0.6","@types/gulp-sourcemaps":"0.0.38","@types/gulp-stylus":"2.7.8","@types/js-beautify":"1.14.3","@types/node":"22.15.30","@types/node-notifier":"8.0.5","@types/pa11y":"5.3.7","@types/probe-image-size":"7.2.5","@types/pug":"2.0.10","@types/require-from-string":"1.2.3","@types/vnu-jar":"17.11.2","@types/webpack-node-externals":"3.0.4","@types/webpack-stream":"3.2.15","eslint-webpack-plugin":"4.2.0","ts-node":"10.9.2","typescript":"5.8.3","webpack-cli":"6.0.1"},"scripts":{"Incremental Development Building":"webpack --mode development","Production Building":"webpack --mode production","Linting":"eslint Source"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/TokugawaTakeshi/Yamato-Daiwa-Automation.git"},"homepage":"https://automation.yamato-daiwa.com/","funding":"https://github.com/TokugawaTakeshi/Yamato-Daiwa-Automation?sponsor=1","bugs":{"url":"https://github.com/TokugawaTakeshi/Yamato-Daiwa-Automation/issues","email":"tokugawa.takesi@gmail.com"}}');
38
38
 
39
39
  /***/ }),
40
40
 
@@ -227,6 +227,7 @@ const ProjectBuildingMasterConfigRepresentative_1 = __importDefault(__webpack_re
227
227
  /* ─── Tasks Runners ──────────────────────────────────────────────────────────────────────────────────────────────── */
228
228
  const MarkupProcessor_1 = __importDefault(__webpack_require__(/*! @MarkupProcessing/MarkupProcessor */ "./ProjectBuilding/SourceCodeProcessing/Markup/MarkupProcessor.ts"));
229
229
  const MarkupSourceCodeLinter_1 = __importDefault(__webpack_require__(/*! @MarkupProcessing/Subtasks/Linting/MarkupSourceCodeLinter */ "./ProjectBuilding/SourceCodeProcessing/Markup/Subtasks/Linting/MarkupSourceCodeLinter.ts"));
230
+ const TypeScriptTypesChecker_1 = __importDefault(__webpack_require__(/*! @ECMA_ScriptProcessing/Subtasks/TypeScriptTypesChecker */ "./ProjectBuilding/SourceCodeProcessing/ECMA_Script/Subtasks/TypeScriptTypesChecker.ts"));
230
231
  const CompiledTypeScriptImporterForPug_1 = __importDefault(__webpack_require__(/*! @MarkupProcessing/Subtasks/CompiledTypeScriptImporterForPug */ "./ProjectBuilding/SourceCodeProcessing/Markup/Subtasks/CompiledTypeScriptImporterForPug.ts"));
231
232
  const JavaScriptImporterForPug_1 = __importDefault(__webpack_require__(/*! @MarkupProcessing/Subtasks/JavaScriptImporterForPug */ "./ProjectBuilding/SourceCodeProcessing/Markup/Subtasks/JavaScriptImporterForPug.ts"));
232
233
  const StylesProcessor_1 = __importDefault(__webpack_require__(/*! @StylesProcessing/StylesProcessor */ "./ProjectBuilding/SourceCodeProcessing/Styles/StylesProcessor.ts"));
@@ -247,7 +248,7 @@ const FilesMasterWatcher_1 = __importDefault(__webpack_require__(/*! @ProjectBui
247
248
  const es_extensions_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions */ "@yamato-daiwa/es-extensions");
248
249
  class ProjectBuilder {
249
250
  static buildProject({ consumingProjectRootDirectoryAbsolutePath, projectBuildingConfig__fromConsole, rawConfigFromFile }) {
250
- const rawDataProcessingResult = es_extensions_1.RawObjectDataProcessor.process(rawConfigFromFile, ProjectBuildingConfig__FromFile__RawValid_1.default.propertiesSpecification);
251
+ const rawDataProcessingResult = es_extensions_1.RawObjectDataProcessor.process(rawConfigFromFile, ProjectBuildingConfig__FromFile__RawValid_1.default.propertiesSpecification, { processingApproach: es_extensions_1.RawObjectDataProcessor.ProcessingApproaches.assemblingOfNewObject });
251
252
  if (rawDataProcessingResult.isRawDataInvalid) {
252
253
  es_extensions_1.Logger.throwErrorAndLog({
253
254
  errorInstance: new es_extensions_1.InvalidConfigError({
@@ -269,6 +270,7 @@ class ProjectBuilder {
269
270
  const GULP_TASK_NAME = "BUILD_PROJECT";
270
271
  gulp_1.default.task(GULP_TASK_NAME, gulp_1.default.parallel([
271
272
  MarkupSourceCodeLinter_1.default.provideLintingIfMust(masterConfigRepresentative),
273
+ TypeScriptTypesChecker_1.default.provideCheckingIfMust(masterConfigRepresentative),
272
274
  ECMA_ScriptSourceCodeLinter_1.default.provideLintingIfMust(masterConfigRepresentative),
273
275
  gulp_1.default.series([
274
276
  gulp_1.default.parallel([
@@ -5312,8 +5314,8 @@ const fs_1 = __importDefault(__webpack_require__(/*! fs */ "fs"));
5312
5314
  const es_extensions_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions */ "@yamato-daiwa/es-extensions");
5313
5315
  const es_extensions_nodejs_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions-nodejs */ "@yamato-daiwa/es-extensions-nodejs");
5314
5316
  class PlainCopyingRawSettingsNormalizer {
5315
- static normalize({ plainCopyingSettings__fromFile__rawValid, commonSettings__normalized }) {
5316
- const explicitlySpecifiedActualFilesGroupsIDs = commonSettings__normalized.tasksAndSourceFilesSelection?.plainCopying ?? [];
5317
+ static normalize({ plainCopyingSettings__fromFile__rawValid, commonSettings__normalized: { tasksAndSourceFilesSelection, projectRootDirectoryAbsolutePath, projectBuildingMode } }) {
5318
+ const explicitlySpecifiedActualFilesGroupsIDs = tasksAndSourceFilesSelection?.plainCopying ?? [];
5317
5319
  const filesGroups = {};
5318
5320
  for (const [filesGroupID, filesGroup__rawValid__fromFile] of Object.entries(plainCopyingSettings__fromFile__rawValid.filesGroups)) {
5319
5321
  if (explicitlySpecifiedActualFilesGroupsIDs.length > 0 &&
@@ -5322,27 +5324,29 @@ class PlainCopyingRawSettingsNormalizer {
5322
5324
  }
5323
5325
  const aliasName = filesGroup__rawValid__fromFile.aliasName ?? filesGroupID;
5324
5326
  if ("sourceFileRelativePath" in filesGroup__rawValid__fromFile) {
5325
- const filesSingularGroupSettingsActualForCurrentProjectBuildingMode__rawValid__fromFile = filesGroup__rawValid__fromFile.buildingModeDependent[commonSettings__normalized.projectBuildingMode];
5327
+ const filesSingularGroupSettingsActualForCurrentProjectBuildingMode__rawValid__fromFile = filesGroup__rawValid__fromFile.buildingModeDependent[projectBuildingMode];
5326
5328
  if ((0, es_extensions_1.isUndefined)(filesSingularGroupSettingsActualForCurrentProjectBuildingMode__rawValid__fromFile)) {
5327
5329
  continue;
5328
5330
  }
5329
5331
  filesGroups[filesGroupID] = PlainCopyingRawSettingsNormalizer.normalizeFilesSingularGroupSettings({
5330
- projectRootDirectoryAbsolutePath: commonSettings__normalized.projectRootDirectoryAbsolutePath,
5332
+ projectRootDirectoryAbsolutePath,
5331
5333
  sourceFileRelativePath: filesGroup__rawValid__fromFile.sourceFileRelativePath,
5332
5334
  aliasName,
5333
5335
  filesSingularGroupSettingsActualForCurrentProjectBuildingMode__rawValid__fromFile
5334
5336
  });
5335
5337
  }
5336
5338
  else {
5337
- const filesPluralGroupSettingsActualForCurrentProjectBuildingMode__rawValid__fromFile = filesGroup__rawValid__fromFile.buildingModeDependent[commonSettings__normalized.projectBuildingMode];
5339
+ const filesPluralGroupSettingsActualForCurrentProjectBuildingMode__rawValid__fromFile = filesGroup__rawValid__fromFile.buildingModeDependent[projectBuildingMode];
5338
5340
  if ((0, es_extensions_1.isUndefined)(filesPluralGroupSettingsActualForCurrentProjectBuildingMode__rawValid__fromFile)) {
5339
5341
  continue;
5340
5342
  }
5341
5343
  filesGroups[filesGroupID] = PlainCopyingRawSettingsNormalizer.normalizeFilesPluralGroupSettings({
5342
- projectRootDirectoryAbsolutePath: commonSettings__normalized.projectRootDirectoryAbsolutePath,
5344
+ projectRootDirectoryAbsolutePath,
5343
5345
  sourceTopDirectoryRelativePath: filesGroup__rawValid__fromFile.sourceTopDirectoryRelativePath,
5344
5346
  fileNameLastExtensions: filesGroup__rawValid__fromFile.fileNameLastExtensions,
5345
5347
  aliasName,
5348
+ excludedSubdirectoriesPathsRelativeToAssetsGroupSourceTopDirectory: filesGroup__rawValid__fromFile.excludeSubdirectoriesRelativePaths,
5349
+ excludedFilesPathsRelativeToAssetsGroupSourceTopDirectory: filesGroup__rawValid__fromFile.excludeFilesRelativePaths,
5346
5350
  filesPluralGroupSettingsActualForCurrentProjectBuildingMode__rawValid__fromFile
5347
5351
  });
5348
5352
  }
@@ -5384,7 +5388,7 @@ class PlainCopyingRawSettingsNormalizer {
5384
5388
  outputFileAbsolutePath
5385
5389
  };
5386
5390
  }
5387
- static normalizeFilesPluralGroupSettings({ projectRootDirectoryAbsolutePath, sourceTopDirectoryRelativePath, fileNameLastExtensions, aliasName, filesPluralGroupSettingsActualForCurrentProjectBuildingMode__rawValid__fromFile }) {
5391
+ static normalizeFilesPluralGroupSettings({ projectRootDirectoryAbsolutePath, sourceTopDirectoryRelativePath, fileNameLastExtensions, excludedSubdirectoriesPathsRelativeToAssetsGroupSourceTopDirectory = [], excludedFilesPathsRelativeToAssetsGroupSourceTopDirectory = [], aliasName, filesPluralGroupSettingsActualForCurrentProjectBuildingMode__rawValid__fromFile }) {
5388
5392
  const sourceTopDirectoryAbsolutePath = es_extensions_nodejs_1.ImprovedPath.joinPathSegments([projectRootDirectoryAbsolutePath, sourceTopDirectoryRelativePath], { alwaysForwardSlashSeparators: true });
5389
5393
  const outputTopDirectoryAbsolutePath = es_extensions_nodejs_1.ImprovedPath.joinPathSegments([
5390
5394
  projectRootDirectoryAbsolutePath,
@@ -5395,7 +5399,9 @@ class PlainCopyingRawSettingsNormalizer {
5395
5399
  es_extensions_nodejs_1.ImprovedGlob.buildAllFilesInCurrentDirectoryAndBelowGlobSelector({
5396
5400
  basicDirectoryPath: sourceTopDirectoryAbsolutePath,
5397
5401
  fileNamesExtensions: fileNameLastExtensions
5398
- })
5402
+ }),
5403
+ ...excludedSubdirectoriesPathsRelativeToAssetsGroupSourceTopDirectory.map((excludedSubdirectoryPathRelativeToAssetsGroupSourceTopDirectory) => es_extensions_nodejs_1.ImprovedGlob.buildExcludingOfDirectoryWithSubdirectoriesGlobSelector(es_extensions_nodejs_1.ImprovedPath.joinPathSegments([sourceTopDirectoryAbsolutePath, excludedSubdirectoryPathRelativeToAssetsGroupSourceTopDirectory], { alwaysForwardSlashSeparators: true }))),
5404
+ ...excludedFilesPathsRelativeToAssetsGroupSourceTopDirectory.map((excludedFilePathRelativeToAssetsGroupSourceTopDirectory) => es_extensions_nodejs_1.ImprovedGlob.includingGlobSelectorToExcludingOne(es_extensions_nodejs_1.ImprovedPath.joinPathSegments([sourceTopDirectoryAbsolutePath, excludedFilePathRelativeToAssetsGroupSourceTopDirectory], { alwaysForwardSlashSeparators: true })))
5399
5405
  ], { alwaysForwardSlashSeparators: true })) {
5400
5406
  const outputDirectoryAbsolutePath = OutputDirectoryPathTransformationsSettingsRepresentative_1.default.transform(es_extensions_nodejs_1.ImprovedPath.joinPathSegments([
5401
5407
  outputTopDirectoryAbsolutePath,
@@ -5414,7 +5420,7 @@ class PlainCopyingRawSettingsNormalizer {
5414
5420
  const outputFileNameWithExtensions = PlainCopyingRawSettingsNormalizer.computeOutputFileNameWithExtensions({
5415
5421
  initialFileNameWithExtensions: (0, es_extensions_1.extractFileNameWithAllExtensionsFromPath)({
5416
5422
  targetPath: sourceFileAbsolutePath,
5417
- mustThrowErrorIfLastPathSegmentHasNoDots: true
5423
+ mustThrowErrorIfLastPathSegmentHasNoDots: false
5418
5424
  }),
5419
5425
  sourceTopDirectoryAbsolutePath,
5420
5426
  sourceFileAbsolutePath,
@@ -5623,6 +5629,30 @@ var PlainCopyingSettings__FromFile__RawValid;
5623
5629
  minimalCharactersCount: 1
5624
5630
  }
5625
5631
  },
5632
+ $excludeSubdirectoriesRelativePaths: {
5633
+ newName: "excludeSubdirectoriesRelativePaths",
5634
+ type: Array,
5635
+ isUndefinedForbidden: false,
5636
+ isNullForbidden: true,
5637
+ areUndefinedElementsForbidden: true,
5638
+ areNullElementsForbidden: true,
5639
+ element: {
5640
+ type: String,
5641
+ minimalCharactersCount: 1
5642
+ }
5643
+ },
5644
+ $excludeFilesRelativePaths: {
5645
+ newName: "excludeFilesRelativePaths",
5646
+ type: Array,
5647
+ isUndefinedForbidden: false,
5648
+ isNullForbidden: true,
5649
+ areUndefinedElementsForbidden: true,
5650
+ areNullElementsForbidden: true,
5651
+ element: {
5652
+ type: String,
5653
+ minimalCharactersCount: 1
5654
+ }
5655
+ },
5626
5656
  $buildingModeDependent: {
5627
5657
  newName: "buildingModeDependent",
5628
5658
  type: es_extensions_1.RawObjectDataProcessor.ValuesTypesIDs.associativeArray,
@@ -6262,6 +6292,13 @@ class ProjectBuildingMasterConfigRepresentative {
6262
6292
  get isProductionBuildingMode() {
6263
6293
  return this.commonSettings.projectBuildingMode === ConsumingProjectBuildingModes_1.default.production;
6264
6294
  }
6295
+ get isProductionLikeBuildingMode() {
6296
+ return [
6297
+ ConsumingProjectBuildingModes_1.default.testing,
6298
+ ConsumingProjectBuildingModes_1.default.staging,
6299
+ ConsumingProjectBuildingModes_1.default.production
6300
+ ].includes(this.commonSettings.projectBuildingMode);
6301
+ }
6265
6302
  /* --- Tasks execution requirement -------------------------------------------------------------------------------- */
6266
6303
  /* eslint-disable @stylistic/brace-style -- In this case the Allman style provides symmetry. */
6267
6304
  get mustProcessMarkup() {
@@ -7033,7 +7070,7 @@ class ECMA_ScriptLogicProcessor {
7033
7070
  this.projectBuildingMasterConfigRepresentative = masterConfigRepresentative;
7034
7071
  const webpackConfigurationsForExistingEntryPoints = [];
7035
7072
  const entryPointsSourceFilesAbsolutePathsAndWebpackConfigurationNamesMap = new Map();
7036
- for (const [index, ECMA_ScriptLogicEntryPointsGroupSettings] of Array.from(this.ECMA_ScriptLogicProcessingConfigRepresentative.relevantEntryPointsGroupsSettings.values()).entries()) {
7073
+ for (const ECMA_ScriptLogicEntryPointsGroupSettings of this.ECMA_ScriptLogicProcessingConfigRepresentative.relevantEntryPointsGroupsSettings.values()) {
7037
7074
  const entryPointsSourceFilesAbsolutePaths = es_extensions_nodejs_1.ImprovedGlob.getFilesAbsolutePathsSynchronously(ECMA_ScriptLogicEntryPointsGroupSettings.sourceFilesGlobSelectors, { alwaysForwardSlashSeparators: true });
7038
7075
  if (entryPointsSourceFilesAbsolutePaths.length === 0) {
7039
7076
  es_extensions_1.Logger.logWarning({
@@ -7047,8 +7084,7 @@ class ECMA_ScriptLogicProcessor {
7047
7084
  entryPointsSourceFilesAbsolutePaths,
7048
7085
  ECMA_ScriptLogicEntryPointsGroupSettings,
7049
7086
  ECMA_ScriptLogicProcessingConfigRepresentative: this.ECMA_ScriptLogicProcessingConfigRepresentative,
7050
- masterConfigRepresentative: this.projectBuildingMasterConfigRepresentative,
7051
- mustProvideTypeScriptTypeChecking: index === 0
7087
+ masterConfigRepresentative: this.projectBuildingMasterConfigRepresentative
7052
7088
  }));
7053
7089
  (0, es_extensions_1.addEntriesToMap)({
7054
7090
  targetMap: entryPointsSourceFilesAbsolutePathsAndWebpackConfigurationNamesMap,
@@ -7688,6 +7724,138 @@ class LocalDevelopmentServerOrchestrator {
7688
7724
  exports["default"] = LocalDevelopmentServerOrchestrator;
7689
7725
 
7690
7726
 
7727
+ /***/ }),
7728
+
7729
+ /***/ "./ProjectBuilding/SourceCodeProcessing/ECMA_Script/Subtasks/TypeScriptTypesChecker.ts":
7730
+ /*!*********************************************************************************************!*\
7731
+ !*** ./ProjectBuilding/SourceCodeProcessing/ECMA_Script/Subtasks/TypeScriptTypesChecker.ts ***!
7732
+ \*********************************************************************************************/
7733
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
7734
+
7735
+
7736
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7737
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7738
+ };
7739
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
7740
+ /* ─── Source Files Watcher ───────────────────────────────────────────────────────────────────────────────────────── */
7741
+ const ECMA_ScriptSourceFilesWatcher_1 = __importDefault(__webpack_require__(/*! @ECMA_ScriptProcessing/ECMA_ScriptSourceFilesWatcher */ "./ProjectBuilding/SourceCodeProcessing/ECMA_Script/ECMA_ScriptSourceFilesWatcher.ts"));
7742
+ /* ─── Applied Utils ─────────────────────────────────────────────────────────────────────────────────────────────── */
7743
+ const VoidPromiseReturningFunction_1 = __webpack_require__(/*! @Utils/VoidPromiseReturningFunction */ "./Utils/VoidPromiseReturningFunction.ts");
7744
+ /* ─── Generals Utils ─────────────────────────────────────────────────────────────────────────────────────────────── */
7745
+ const child_process_1 = __importDefault(__webpack_require__(/*! child_process */ "child_process"));
7746
+ const fs_1 = __importDefault(__webpack_require__(/*! fs */ "fs"));
7747
+ const es_extensions_nodejs_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions-nodejs */ "@yamato-daiwa/es-extensions-nodejs");
7748
+ const es_extensions_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions */ "@yamato-daiwa/es-extensions");
7749
+ const node_notifier_1 = __importDefault(__webpack_require__(/*! node-notifier */ "node-notifier"));
7750
+ class TypeScriptTypesChecker {
7751
+ static WAITING_FOR_NEXT_EVENT_WITH_RELATED_FILES__SECONDS = 1;
7752
+ /* [ Theory ] 120 columns is about the half of the 1920x1080 screen. */
7753
+ static DISPLAYING_MAXIMAL_COLUMNS_COUNT_IN_LOG = 120;
7754
+ vueTSC_ExecutableFileAbsolutePath;
7755
+ projectBuildingMasterConfigRepresentative;
7756
+ ecmaScriptLogicProcessingSettingsRepresentative;
7757
+ waitingForNextWithRelatedFiles = null;
7758
+ static provideCheckingIfMust(projectBuildingMasterConfigRepresentative) {
7759
+ const ecmaScriptLogicProcessingSettingsRepresentative = projectBuildingMasterConfigRepresentative.ECMA_ScriptLogicProcessingSettingsRepresentative;
7760
+ if ((0, es_extensions_1.isUndefined)(ecmaScriptLogicProcessingSettingsRepresentative)) {
7761
+ return VoidPromiseReturningFunction_1.voidPromiseReturningFunction;
7762
+ }
7763
+ const selfInstance = new TypeScriptTypesChecker({
7764
+ projectBuildingMasterConfigRepresentative,
7765
+ ecmaScriptLogicProcessingSettingsRepresentative
7766
+ });
7767
+ return selfInstance.checkTypes.bind(selfInstance);
7768
+ }
7769
+ constructor({ projectBuildingMasterConfigRepresentative, ecmaScriptLogicProcessingSettingsRepresentative }) {
7770
+ this.projectBuildingMasterConfigRepresentative = projectBuildingMasterConfigRepresentative;
7771
+ this.ecmaScriptLogicProcessingSettingsRepresentative = ecmaScriptLogicProcessingSettingsRepresentative;
7772
+ if (this.projectBuildingMasterConfigRepresentative.mustProvideIncrementalBuilding) {
7773
+ ECMA_ScriptSourceFilesWatcher_1.default.initializeIfRequiredAndGetInstance({
7774
+ projectBuildingMasterConfigRepresentative: this.projectBuildingMasterConfigRepresentative,
7775
+ ecmaScriptLogicProcessingSettingsRepresentative: this.ecmaScriptLogicProcessingSettingsRepresentative
7776
+ }).
7777
+ addOnAnyEventRelatedWithActualFilesHandler({
7778
+ handlerID: "ON_ANY_EVENT_RELATED_WITH_ACTUAL_FILES_HANDLER--BY_TYPE_SCRIPT_TYPES_CHECKER",
7779
+ handler: this.onAnyEventRelatedWithActualFiles.bind(this)
7780
+ });
7781
+ }
7782
+ const vueTSC_ExecutableFileAbsolutePath = TypeScriptTypesChecker.
7783
+ getAbsolutePathOfExistingVueTSC_ExecutableFile__alwaysForwardSlashesPathSeparators(projectBuildingMasterConfigRepresentative.consumingProjectRootDirectoryAbsolutePath);
7784
+ if ((0, es_extensions_1.isNull)(vueTSC_ExecutableFileAbsolutePath)) {
7785
+ es_extensions_1.Logger.throwErrorAndLog({
7786
+ errorInstance: new es_extensions_1.UnexpectedEventError("File to \"vue-tsc\" executable not found"),
7787
+ title: es_extensions_1.UnexpectedEventError.localization.defaultTitle,
7788
+ occurrenceLocation: "TypeScriptTypesChecker.constructor(compoundParameter)"
7789
+ });
7790
+ }
7791
+ this.vueTSC_ExecutableFileAbsolutePath = vueTSC_ExecutableFileAbsolutePath;
7792
+ }
7793
+ onAnyEventRelatedWithActualFiles() {
7794
+ clearTimeout((0, es_extensions_1.nullToUndefined)(this.waitingForNextWithRelatedFiles));
7795
+ this.waitingForNextWithRelatedFiles = setTimeout(() => {
7796
+ this.checkTypes().catch(es_extensions_1.Logger.logPromiseError);
7797
+ }, (0, es_extensions_1.secondsToMilliseconds)(TypeScriptTypesChecker.WAITING_FOR_NEXT_EVENT_WITH_RELATED_FILES__SECONDS));
7798
+ }
7799
+ async checkTypes() {
7800
+ return new Promise((resolve, reject) => {
7801
+ child_process_1.default.exec(`node ${this.vueTSC_ExecutableFileAbsolutePath} --noEmit`, { encoding: "utf-8" }, (error, stdout) => {
7802
+ if ((0, es_extensions_1.isNotNull)(error)) {
7803
+ es_extensions_1.Logger.logErrorLikeMessage({
7804
+ title: "TypeScript Type Checking, Error(s) Detected",
7805
+ description: "The source code is including the TypeScript error(s).\n" +
7806
+ (this.projectBuildingMasterConfigRepresentative.isProductionLikeBuildingMode ?
7807
+ "Is is unacceptable for production-like modes thus the project building will be terminated." : "") +
7808
+ `${"-".repeat(TypeScriptTypesChecker.DISPLAYING_MAXIMAL_COLUMNS_COUNT_IN_LOG)}\n` +
7809
+ stdout
7810
+ });
7811
+ node_notifier_1.default.notify({
7812
+ title: "TypeScript Types Checking, Errors Detected",
7813
+ message: "Please check your terminal for the details."
7814
+ });
7815
+ if (this.projectBuildingMasterConfigRepresentative.isProductionLikeBuildingMode) {
7816
+ reject(error);
7817
+ return;
7818
+ }
7819
+ resolve();
7820
+ return;
7821
+ }
7822
+ es_extensions_1.Logger.logSuccess({
7823
+ title: "TypeScript Type Checking, No Errors Found",
7824
+ description: "The source TypeScript is valid. Keep it up!"
7825
+ });
7826
+ resolve();
7827
+ });
7828
+ });
7829
+ }
7830
+ static getAbsolutePathOfExistingVueTSC_ExecutableFile__alwaysForwardSlashesPathSeparators(consumingProjectRootDirectoryAbsolutePath) {
7831
+ for (const vueTSC_ExecutableFileAbsolutePath__alwaysForwardSlashesPathSeparators of [
7832
+ es_extensions_nodejs_1.ImprovedPath.joinPathSegments([
7833
+ consumingProjectRootDirectoryAbsolutePath,
7834
+ "node_modules",
7835
+ ".bin",
7836
+ "vue-tsc.js"
7837
+ ], { alwaysForwardSlashSeparators: true }),
7838
+ es_extensions_nodejs_1.ImprovedPath.joinPathSegments([
7839
+ consumingProjectRootDirectoryAbsolutePath,
7840
+ "node_modules",
7841
+ "@yamato-daiwa",
7842
+ "automation",
7843
+ "node_modules",
7844
+ "vue-tsc",
7845
+ "bin",
7846
+ "vue-tsc.js"
7847
+ ], { alwaysForwardSlashSeparators: true })
7848
+ ]) {
7849
+ if (fs_1.default.existsSync(vueTSC_ExecutableFileAbsolutePath__alwaysForwardSlashesPathSeparators)) {
7850
+ return vueTSC_ExecutableFileAbsolutePath__alwaysForwardSlashesPathSeparators;
7851
+ }
7852
+ }
7853
+ return null;
7854
+ }
7855
+ }
7856
+ exports["default"] = TypeScriptTypesChecker;
7857
+
7858
+
7691
7859
  /***/ }),
7692
7860
 
7693
7861
  /***/ "./ProjectBuilding/SourceCodeProcessing/ECMA_Script/Utils/ECMA_ScriptLogicEntryPointsSourceFilesAbsolutePathsAndOutputFilesActualPathsMapGenerator.ts":
@@ -7805,7 +7973,6 @@ const TypeScriptSpecialist_1 = __importDefault(__webpack_require__(/*! @ThirdPar
7805
7973
  /* ─── Applied Utils ──────────────────────────────────────────────────────────────────────────────────────────────── */
7806
7974
  const webpack_1 = __importDefault(__webpack_require__(/*! webpack */ "webpack"));
7807
7975
  const vue_loader_1 = __webpack_require__(/*! vue-loader */ "vue-loader");
7808
- const fork_ts_checker_webpack_plugin_1 = __importDefault(__webpack_require__(/*! fork-ts-checker-webpack-plugin */ "fork-ts-checker-webpack-plugin"));
7809
7976
  const webpack_node_externals_1 = __importDefault(__webpack_require__(/*! webpack-node-externals */ "webpack-node-externals"));
7810
7977
  /* ─── General Utils ──────────────────────────────────────────────────────────────────────────────────────────────── */
7811
7978
  const path_1 = __importDefault(__webpack_require__(/*! path */ "path"));
@@ -7816,7 +7983,7 @@ class WebpackConfigGenerator {
7816
7983
  static cachedTypeScriptConfigurations = {};
7817
7984
  /* [ Approach ] Although the parameter is excessive, its properties are been pre-computed externally for other needs,
7818
7985
  * so no need to compute them again. */
7819
- static generateWebpackConfigurationForEntryPointsGroupWithExistingFiles({ entryPointsSourceFilesAbsolutePaths, ECMA_ScriptLogicEntryPointsGroupSettings: entryPointsGroupSettings, ECMA_ScriptLogicProcessingConfigRepresentative, masterConfigRepresentative, mustProvideTypeScriptTypeChecking }) {
7986
+ static generateWebpackConfigurationForEntryPointsGroupWithExistingFiles({ entryPointsSourceFilesAbsolutePaths, ECMA_ScriptLogicEntryPointsGroupSettings: entryPointsGroupSettings, ECMA_ScriptLogicProcessingConfigRepresentative, masterConfigRepresentative }) {
7820
7987
  /* [ Reference ] https://webpack.js.org/configuration/entry-context/#context */
7821
7988
  const sourceFilesTopDirectoryAbsolutePath = entryPointsGroupSettings.sourceFilesTopDirectoryAbsolutePath;
7822
7989
  /** @see https://webpack.js.org/configuration/entry-context/#entry */
@@ -7840,7 +8007,6 @@ class WebpackConfigGenerator {
7840
8007
  const willPugLibraryBeBuilt = entryPointsGroupSettings.distributing?.exposingOfExportsFromEntryPoints.mustExpose === true &&
7841
8008
  entryPointsGroupSettings.targetRuntime.type === SupportedECMA_ScriptRuntimesTypes.pug;
7842
8009
  const distributingSettings = entryPointsGroupSettings.distributing;
7843
- // TODO Is entryPointsGroupSettings.directoriesAliasesAndCorrespondingAbsolutePathsMap related
7844
8010
  return {
7845
8011
  name: entryPointsGroupSettings.ID,
7846
8012
  /* [ Webpack theory ] In this case, path separators must be operating system dependent, otherwise following error
@@ -7883,7 +8049,7 @@ class WebpackConfigGenerator {
7883
8049
  "window" : "module";
7884
8050
  case SupportedECMA_ScriptRuntimesTypes.nodeJS: return "commonjs";
7885
8051
  case SupportedECMA_ScriptRuntimesTypes.pug: return "umd";
7886
- default: {
8052
+ case SupportedECMA_ScriptRuntimesTypes.webWorker: {
7887
8053
  es_extensions_1.Logger.throwErrorAndLog({
7888
8054
  errorInstance: new es_extensions_1.UnexpectedEventError("The web worker could not be the library, while the computing of 'output.library.type' has been " +
7889
8055
  "requested"),
@@ -7929,6 +8095,8 @@ class WebpackConfigGenerator {
7929
8095
  loader: "ts-loader",
7930
8096
  options: {
7931
8097
  configFile: entryPointsGroupSettings.typeScriptConfigurationFileAbsolutePath,
8098
+ /* [ Performance Optimization ] Type checking is been executed externally and once for all files. */
8099
+ transpileOnly: false,
7932
8100
  /* [ Theory ] This option allows TypeScript to process the code extracted from a single file component.
7933
8101
  * [ Reference ] https://github.com/Microsoft/TypeScript-Vue-Starter#single-file-components */
7934
8102
  appendTsSuffixTo: [/\.vue$/u]
@@ -8058,24 +8226,6 @@ class WebpackConfigGenerator {
8058
8226
  __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: false
8059
8227
  } : null
8060
8228
  }),
8061
- /* < === Temporary ========================================================================================== */
8062
- ...mustProvideTypeScriptTypeChecking ?
8063
- [
8064
- new fork_ts_checker_webpack_plugin_1.default({
8065
- typescript: {
8066
- /* [ Theory ] Webpack's "context" is default, but generally "tsconfig.json" could be not in same directory */
8067
- configFile: entryPointsGroupSettings.typeScriptConfigurationFileAbsolutePath,
8068
- extensions: {
8069
- vue: {
8070
- enabled: true,
8071
- compiler: "@vue/compiler-sfc"
8072
- }
8073
- }
8074
- }
8075
- })
8076
- ] :
8077
- [],
8078
- /* === Temporary > ========================================================================================== */
8079
8229
  new vue_loader_1.VueLoaderPlugin()
8080
8230
  ],
8081
8231
  optimization: {
@@ -8626,7 +8776,7 @@ const es_extensions_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions */ "
8626
8776
  var MarkupProcessingSettings__FromFile__RawValid;
8627
8777
  (function (MarkupProcessingSettings__FromFile__RawValid) {
8628
8778
  /* ━━━ Properties Specification ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
8629
- function generateLocalizationPropertiesSpecification(additionalPropertiesSpecification = {}) {
8779
+ function generateLocalizationPropertiesSpecification({ forEntryPointsGroups }) {
8630
8780
  return {
8631
8781
  newName: "localization",
8632
8782
  type: Object,
@@ -8682,28 +8832,92 @@ var MarkupProcessingSettings__FromFile__RawValid;
8682
8832
  $localeConstantValue: {
8683
8833
  newName: "localeConstantValue",
8684
8834
  type: String,
8685
- isUndefinedForbidden: false,
8835
+ undefinedForbiddenIf: {
8836
+ predicate: ({ targetPropertyDotSeparatedPath, rawData__full }) => (0, es_extensions_1.isNotUndefined)((0, es_extensions_1.getObjectPropertySafely)(rawData__full, [
8837
+ /* eslint-disable-next-line @typescript-eslint/no-magic-numbers --
8838
+ * 3 referees to last three elements in paths like
8839
+ * $projectBuilding.$markupProcessing.$entryPointsGroups.Pages.$localization.
8840
+ * $locales.english.$localeConstantValue */
8841
+ ...(0, es_extensions_1.splitString)(targetPropertyDotSeparatedPath, ".").slice(0, -3),
8842
+ "$localeConstantName"
8843
+ ])),
8844
+ descriptionForLogging: "`$projectBuilding.$markupProcessing." +
8845
+ (forEntryPointsGroups ? "$entryPointsGroups.NNN" : "$common") +
8846
+ ".$localization.$localeConstantName` is defined"
8847
+ },
8686
8848
  isNullForbidden: true,
8687
8849
  minimalCharactersCount: 1
8688
8850
  },
8689
8851
  $keyInLocalizedStringResourcesObject: {
8690
8852
  newName: "keyInLocalizedStringResourcesObject",
8691
8853
  type: String,
8692
- isUndefinedForbidden: false,
8854
+ undefinedForbiddenIf: {
8855
+ predicate: ({ targetPropertyDotSeparatedPath, rawData__full }) => (0, es_extensions_1.isNotUndefined)((0, es_extensions_1.getObjectPropertySafely)(rawData__full, [
8856
+ /* eslint-disable-next-line @typescript-eslint/no-magic-numbers --
8857
+ * 3 referees to last three elements in paths like
8858
+ * $projectBuilding.$markupProcessing.$entryPointsGroups.Pages.$localization.$locales.
8859
+ * english.$localeConstantValue */
8860
+ ...(0, es_extensions_1.splitString)(targetPropertyDotSeparatedPath, ".").slice(0, -3),
8861
+ "$stringResourcesFileRelativePath"
8862
+ ])),
8863
+ descriptionForLogging: "`$projectBuilding.$markupProcessing." +
8864
+ (forEntryPointsGroups ? "$entryPointsGroups.NNN" : "$common") +
8865
+ ".$localization.$stringResourcesFileRelativePath` is defined"
8866
+ },
8693
8867
  isNullForbidden: true,
8694
8868
  minimalCharactersCount: 1
8695
8869
  },
8696
8870
  $valueOfConstantForInterpolationToLangHTML_Attribute: {
8697
8871
  newName: "valueOfConstantForInterpolationToLangHTML_Attribute",
8698
8872
  type: String,
8699
- isUndefinedForbidden: false,
8873
+ undefinedForbiddenIf: {
8874
+ predicate: ({ targetPropertyDotSeparatedPath, rawData__full }) => (0, es_extensions_1.isNotUndefined)((0, es_extensions_1.getObjectPropertySafely)(rawData__full, [
8875
+ /* eslint-disable-next-line @typescript-eslint/no-magic-numbers --
8876
+ * 3 referees to last three elements in paths like
8877
+ * $projectBuilding.$markupProcessing.$entryPointsGroups.Pages.$localization.$locales.
8878
+ * english.$localeConstantValue */
8879
+ ...(0, es_extensions_1.splitString)(targetPropertyDotSeparatedPath, ".").slice(0, -3),
8880
+ "$nameOfConstantForInterpolationToLangHTML_Attribute"
8881
+ ])),
8882
+ descriptionForLogging: "`$projectBuilding.$markupProcessing." +
8883
+ (forEntryPointsGroups ? "$entryPointsGroups.NNN" : "$common") +
8884
+ ".$localization.$nameOfConstantForInterpolationToLangHTML_Attribute` is defined"
8885
+ },
8700
8886
  isNullForbidden: true,
8701
8887
  minimalCharactersCount: 1
8702
8888
  }
8703
8889
  }
8704
8890
  }
8705
8891
  },
8706
- ...additionalPropertiesSpecification
8892
+ ...forEntryPointsGroups ?
8893
+ {
8894
+ $excludedFilesPathsRelativeToSourcesFilesTopDirectory: {
8895
+ newName: "excludedFilesPathsRelativeToSourcesFilesTopDirectory",
8896
+ type: Array,
8897
+ isUndefinedForbidden: false,
8898
+ isNullForbidden: true,
8899
+ areUndefinedElementsForbidden: true,
8900
+ areNullElementsForbidden: true,
8901
+ element: {
8902
+ type: String,
8903
+ minimalCharactersCount: 1
8904
+ }
8905
+ }
8906
+ } :
8907
+ {
8908
+ $excludedFilesPathsRelativeRelativeToProjectRootDirectory: {
8909
+ newName: "excludedFilesPathsRelativeRelativeToProjectRootDirectory",
8910
+ type: Array,
8911
+ isUndefinedForbidden: false,
8912
+ isNullForbidden: true,
8913
+ areUndefinedElementsForbidden: true,
8914
+ areNullElementsForbidden: true,
8915
+ element: {
8916
+ type: String,
8917
+ minimalCharactersCount: 1
8918
+ }
8919
+ }
8920
+ }
8707
8921
  }
8708
8922
  };
8709
8923
  }
@@ -8716,20 +8930,7 @@ var MarkupProcessingSettings__FromFile__RawValid;
8716
8930
  isUndefinedForbidden: false,
8717
8931
  mustTransformNullToUndefined: true,
8718
8932
  properties: {
8719
- $localization: generateLocalizationPropertiesSpecification({
8720
- $excludedFilesPathsRelativeRelativeToProjectRootDirectory: {
8721
- newName: "excludedFilesPathsRelativeRelativeToProjectRootDirectory",
8722
- type: Array,
8723
- isUndefinedForbidden: false,
8724
- isNullForbidden: true,
8725
- areUndefinedElementsForbidden: true,
8726
- areNullElementsForbidden: true,
8727
- element: {
8728
- type: String,
8729
- minimalCharactersCount: 1
8730
- }
8731
- }
8732
- }),
8933
+ $localization: generateLocalizationPropertiesSpecification({ forEntryPointsGroups: false }),
8733
8934
  $buildingModeDependent: {
8734
8935
  newName: "buildingModeDependent",
8735
8936
  type: es_extensions_1.RawObjectDataProcessor.ValuesTypesIDs.associativeArray,
@@ -8927,20 +9128,7 @@ var MarkupProcessingSettings__FromFile__RawValid;
8927
9128
  isUndefinedForbidden: false,
8928
9129
  isNullForbidden: true
8929
9130
  },
8930
- $localization: generateLocalizationPropertiesSpecification({
8931
- $excludedFilesPathsRelativeToSourcesFilesTopDirectory: {
8932
- newName: "excludedFilesPathsRelativeToSourcesFilesTopDirectory",
8933
- type: Array,
8934
- isUndefinedForbidden: false,
8935
- isNullForbidden: true,
8936
- areUndefinedElementsForbidden: true,
8937
- areNullElementsForbidden: true,
8938
- element: {
8939
- type: String,
8940
- minimalCharactersCount: 1
8941
- }
8942
- }
8943
- }),
9131
+ $localization: generateLocalizationPropertiesSpecification({ forEntryPointsGroups: true }),
8944
9132
  $HTML_Validation: {
8945
9133
  newName: "HTML_Validation",
8946
9134
  type: Object,
@@ -10446,20 +10634,18 @@ const HTML_ValidatorLocalization_english_1 = __importDefault(__webpack_require__
10446
10634
  const vnu_jar_1 = __importDefault(__webpack_require__(/*! vnu-jar */ "vnu-jar"));
10447
10635
  const DotYDA_DirectoryManager_1 = __importDefault(__webpack_require__(/*! @Utils/DotYDA_DirectoryManager */ "./Utils/DotYDA_DirectoryManager.ts"));
10448
10636
  /* ─── Generals Utils ─────────────────────────────────────────────────────────────────────────────────────────────── */
10449
- const fs_1 = __importDefault(__webpack_require__(/*! fs */ "fs"));
10450
10637
  const node_child_process_1 = __importDefault(__webpack_require__(/*! node:child_process */ "node:child_process"));
10451
10638
  const node_notifier_1 = __importDefault(__webpack_require__(/*! node-notifier */ "node-notifier"));
10452
10639
  const es_extensions_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions */ "@yamato-daiwa/es-extensions");
10453
10640
  const es_extensions_nodejs_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions-nodejs */ "@yamato-daiwa/es-extensions-nodejs");
10454
10641
  const nanoid_1 = __webpack_require__(/*! nanoid */ "nanoid");
10455
10642
  const Stopwatch_1 = __importDefault(__webpack_require__(/*! @UtilsIncubator/Stopwatch */ "./UtilsIncubator/Stopwatch.ts"));
10456
- const deleteFilesFromDirectory_1 = __importDefault(__webpack_require__(/*! @UtilsIncubator/@yamato-daiwa/es-extensions-nodejs/ImprovedFileSystem/deleteFilesFromDirectory */ "./UtilsIncubator/@yamato-daiwa/es-extensions-nodejs/ImprovedFileSystem/deleteFilesFromDirectory.ts"));
10457
10643
  class HTML_Validator {
10458
10644
  /* ━━━ Fields ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
10459
10645
  static selfSingleInstance = null;
10460
10646
  /* ─── Work Variables ───────────────────────────────────────────────────────────────────────────────────────────── */
10461
10647
  /* [ Approach ]
10462
- * Although "queue" usually means the order, here is order does not matter unlike the files' uniqueness theat is why
10648
+ * Although "queue" usually means the order, here is order does not matter unlike the files' uniqueness that is why
10463
10649
  * set instead of simple Array used. */
10464
10650
  queuedFilesMetadata = new Set();
10465
10651
  consumingProjectRootDirectoryAbsolutePath;
@@ -10713,7 +10899,7 @@ class HTML_Validator {
10713
10899
  if (!(error instanceof es_extensions_nodejs_1.FileNotFoundError)) {
10714
10900
  es_extensions_1.Logger.logError({
10715
10901
  errorType: "CachedDataRetrievingFailure",
10716
- ...HTML_Validator.localization.cachedPreviousValidationsResultsDataRetrievingFailure({
10902
+ ...HTML_Validator.localization.cachedPreviousValidationsResultsDataRetrievingErrorLog({
10717
10903
  cachedValidationsResultsFileAbsolutePath: this.absolutePathOfCachedValidationsResultsFile
10718
10904
  }),
10719
10905
  occurrenceLocation: "HTML_Validator.retrieveCachedPastValidationsResultsFromFileIfItExists" +
@@ -10790,17 +10976,19 @@ class HTML_Validator {
10790
10976
  if (this.logging.validationStart) {
10791
10977
  es_extensions_1.Logger.logInfo(HTML_Validator.localization.validationStartedInfoLog);
10792
10978
  }
10793
- const validationTimeMeasuringStopwatch = new Stopwatch_1.default().startOrRestart();
10794
10979
  /* [ Theory ] If pass no files to Nu HTML Checker, it will fail with the error. */
10795
10980
  if (formattedTemporaryHTML_FilesPathsRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly.length === 0) {
10796
- HTML_Validator.reportValidationsResults(this.cachedValidationsResults);
10981
+ HTML_Validator.reportValidationsResults({
10982
+ validationsResults: this.cachedValidationsResults,
10983
+ validationPeriod__seconds: 0
10984
+ });
10797
10985
  return;
10798
10986
  }
10987
+ const validationTimeMeasuringStopwatch = new Stopwatch_1.default().startOrRestart();
10799
10988
  const rawValidationsResults = await HTML_Validator.getRawValidationsResultsFromNuHTML_Checker(formattedTemporaryHTML_FilesPathsRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly);
10800
- (0, deleteFilesFromDirectory_1.default)({
10989
+ es_extensions_nodejs_1.ImprovedFileSystem.removeFilesFromDirectory({
10801
10990
  directoryPath__absoluteOrRelative: this.absolutePathOfParentDirectoryOfTemporaryFormattedHTML_Files,
10802
- synchronously: true,
10803
- mustThrowErrorIfSomeFileCanNotBeDeleted: false
10991
+ synchronously: true
10804
10992
  });
10805
10993
  const rawValidationsResultsInspectionOutput = es_extensions_1.RawObjectDataProcessor.process(rawValidationsResults, HTML_Validator.validationsResultsSpecification);
10806
10994
  if (rawValidationsResultsInspectionOutput.isRawDataInvalid) {
@@ -10843,12 +11031,11 @@ class HTML_Validator {
10843
11031
  contentMD5Checksum: (0, es_extensions_1.getExpectedToBeNonUndefinedMapValue)(MD5_HashesOfHTML_ContentByRelativePathsOfOriginalHTML_Files, relativeToConsumingProjectRootPathOfOriginalValidHTML_Files__forwardSlashesSeparatorsOnly)
10844
11032
  });
10845
11033
  }
10846
- validationTimeMeasuringStopwatch.stop();
10847
- HTML_Validator.reportValidationsResults(this.cachedValidationsResults);
11034
+ const { seconds: validationPeriod__seconds } = validationTimeMeasuringStopwatch.stop();
11035
+ HTML_Validator.reportValidationsResults({ validationsResults: this.cachedValidationsResults, validationPeriod__seconds });
10848
11036
  this.writeCacheToFile();
10849
11037
  this.queuedFilesMetadata.clear();
10850
11038
  }
10851
- // ━━━ TODO ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
10852
11039
  static async getRawValidationsResultsFromNuHTML_Checker(targetFilesPathRelativeToConsumingProjectRoot__forwardSlashesPathSeparators) {
10853
11040
  return new Promise((resolve, reject) => {
10854
11041
  /* [ Theory ] "vnu-jar" works only with relative paths. Absolute paths will not work with any path separators. */
@@ -10949,64 +11136,74 @@ class HTML_Validator {
10949
11136
  };
10950
11137
  }
10951
11138
  /* ─── Reporting ────────────────────────────────────────────────────────────────────────────────────────────────── */
10952
- static reportValidationsResults(validationsResults) {
10953
- // TODO Alphabet order
11139
+ static reportValidationsResults({ validationsResults, validationPeriod__seconds }) {
11140
+ const filesPathsRelativeToConsumingProjectRootSortedByAlphabet__forwardPathSeparatorsOnly = Array.from(validationsResults.keys()).sort();
10954
11141
  let hasAtLeastOneFileWithInvalidHTML = false;
10955
11142
  const hasEachFileIssues = new Map();
10956
11143
  const formattedIssuesForEachFile = new Map();
10957
- for (const [fileRelativePath__forwardPathSeparatorsOnly, { issues }] of validationsResults.entries()) {
10958
- hasEachFileIssues.set(fileRelativePath__forwardPathSeparatorsOnly, issues.length > 0);
10959
- if (issues.length > 0) {
11144
+ for (const [filePathRelativeToConsumingProjectRoot__forwardPathSeparatorsOnly, { issues }] of validationsResults.entries()) {
11145
+ const hasCurrentFileHTML_ValidityIssues = issues.length > 0;
11146
+ hasEachFileIssues.set(filePathRelativeToConsumingProjectRoot__forwardPathSeparatorsOnly, hasCurrentFileHTML_ValidityIssues);
11147
+ if (hasCurrentFileHTML_ValidityIssues) {
10960
11148
  hasAtLeastOneFileWithInvalidHTML = true;
10961
- formattedIssuesForEachFile.set(fileRelativePath__forwardPathSeparatorsOnly, HTML_Validator.formatValidationResultForSingleFile(issues));
11149
+ formattedIssuesForEachFile.set(filePathRelativeToConsumingProjectRoot__forwardPathSeparatorsOnly, HTML_Validator.formatValidationResultForSingleFile(issues));
10962
11150
  }
10963
11151
  }
10964
11152
  const summary = `${(0, es_extensions_1.surroundLabelByOrnament)({
10965
- label: " Summary ",
11153
+ label: HTML_Validator.localization.validityIssuesDetectedErrorLog.headings.summary,
10966
11154
  ornamentPatten: "━",
11155
+ characterForIndentationAroundLabel: " ",
10967
11156
  prependedPartCharactersCount: 3,
10968
11157
  totalCharactersCount: HTML_Validator.DISPLAYING_MAXIMAL_COLUMNS_COUNT_IN_LOG
10969
11158
  })}\n` +
10970
- Array.from(hasEachFileIssues.entries()).
10971
- map(([fileRelativePath__forwardPathSeparatorsOnly, hasAtLeastOneIssue]) => `${hasAtLeastOneIssue ? "❌" : "✅"} ${fileRelativePath__forwardPathSeparatorsOnly}`).
11159
+ filesPathsRelativeToConsumingProjectRootSortedByAlphabet__forwardPathSeparatorsOnly.
11160
+ map((fileRelativePath__forwardPathSeparatorsOnly) => `${(0, es_extensions_1.getExpectedToBeNonUndefinedMapValue)(hasEachFileIssues, fileRelativePath__forwardPathSeparatorsOnly) ?
11161
+ "❌" : "✅"} ` +
11162
+ fileRelativePath__forwardPathSeparatorsOnly).
10972
11163
  join("\n");
10973
11164
  const detailedReport = `${(0, es_extensions_1.surroundLabelByOrnament)({
10974
- label: " Details ",
11165
+ label: HTML_Validator.localization.validityIssuesDetectedErrorLog.headings.details,
10975
11166
  ornamentPatten: "━",
11167
+ characterForIndentationAroundLabel: " ",
10976
11168
  prependedPartCharactersCount: 3,
10977
11169
  totalCharactersCount: HTML_Validator.DISPLAYING_MAXIMAL_COLUMNS_COUNT_IN_LOG
10978
11170
  })}\n` +
10979
- Array.from(formattedIssuesForEachFile.entries()).
10980
- map(([fileRelativePath__forwardPathSeparatorsOnly, formattedIssues]) => `${(0, es_extensions_1.surroundLabelByOrnament)({
10981
- label: ` ${fileRelativePath__forwardPathSeparatorsOnly} `,
11171
+ filesPathsRelativeToConsumingProjectRootSortedByAlphabet__forwardPathSeparatorsOnly.
11172
+ filter((fileRelativePath__forwardPathSeparatorsOnly) => formattedIssuesForEachFile.has(fileRelativePath__forwardPathSeparatorsOnly)).
11173
+ map((fileRelativePath__forwardPathSeparatorsOnly) => `${(0, es_extensions_1.surroundLabelByOrnament)({
11174
+ label: fileRelativePath__forwardPathSeparatorsOnly,
11175
+ characterForIndentationAroundLabel: "",
10982
11176
  ornamentPatten: "─",
10983
11177
  prependedPartCharactersCount: 3,
10984
11178
  totalCharactersCount: HTML_Validator.DISPLAYING_MAXIMAL_COLUMNS_COUNT_IN_LOG
10985
11179
  })}\n` +
10986
- formattedIssues).
11180
+ (0, es_extensions_1.getExpectedToBeNonUndefinedMapValue)(formattedIssuesForEachFile, fileRelativePath__forwardPathSeparatorsOnly)).
10987
11181
  join("\n");
10988
11182
  if (hasAtLeastOneFileWithInvalidHTML) {
10989
11183
  es_extensions_1.Logger.logErrorLikeMessage({
10990
- title: "HTML Validation, Issue(s) Detected",
10991
- description: `${summary}\n\n${detailedReport}`
11184
+ title: HTML_Validator.localization.validityIssuesDetectedErrorLog.title,
11185
+ description: `${summary}\n\n` +
11186
+ `${detailedReport}\n` +
11187
+ HTML_Validator.localization.validityIssuesDetectedErrorLog.generateSecondsElapsedSentence({ validationPeriod__seconds })
10992
11188
  });
10993
- node_notifier_1.default.notify(HTML_Validator.localization.issuesFoundToastNotification);
11189
+ node_notifier_1.default.notify(HTML_Validator.localization.validityIssuesDetectedToastNotification);
10994
11190
  return;
10995
11191
  }
10996
11192
  es_extensions_1.Logger.logSuccess({
10997
- title: "HTML Validation, All Valid",
10998
- description: "All HTML files (except excluded ones if any) contains valid HTML. " +
10999
- "The following files has been checked.\n" +
11000
- Array.from(validationsResults.keys()).
11193
+ title: HTML_Validator.localization.validationFinishedWithoutIssuesSuccessLog.title,
11194
+ description: HTML_Validator.localization.validationFinishedWithoutIssuesSuccessLog.generateDescription({
11195
+ validationPeriod__seconds,
11196
+ preFormattedErrorsMessages: Array.from(validationsResults.keys()).
11001
11197
  map((fileRelativePath__forwardPathSeparatorsOnly) => `● ${fileRelativePath__forwardPathSeparatorsOnly}`).
11002
11198
  join("\n")
11199
+ })
11003
11200
  });
11004
11201
  }
11005
11202
  /* ─── Formatting ───────────────────────────────────────────────────────────────────────────────────────────────── */
11006
11203
  static formatValidationResultForSingleFile(issues) {
11007
11204
  const formattedIssues = [];
11008
11205
  for (const [index, issue] of issues.entries()) {
11009
- /* [ Desired output example ]
11206
+ /* [ Desired Output Example ]
11010
11207
 
11011
11208
  === Issue No. 5 =================================================================================================
11012
11209
  <div class="NewsFeed"></div><a><span></span><a>Foo<div></div><a>bar</a></a>
@@ -11022,6 +11219,7 @@ class HTML_Validator {
11022
11219
  `${(0, es_extensions_1.surroundLabelByOrnament)({
11023
11220
  label: HTML_Validator.localization.generateIssueNumberLabel({ issueNumber: index + 1 }),
11024
11221
  ornamentPatten: "┄",
11222
+ characterForIndentationAroundLabel: " ",
11025
11223
  prependedPartCharactersCount: 3,
11026
11224
  totalCharactersCount: HTML_Validator.DISPLAYING_MAXIMAL_COLUMNS_COUNT_IN_LOG
11027
11225
  })}\n`,
@@ -11040,13 +11238,11 @@ class HTML_Validator {
11040
11238
  return HTML_Validator.localization.issuesTypesTitles.grossViolation;
11041
11239
  case HTML_Validator.NormalizedValidationsResults.Issue.Types.info:
11042
11240
  return HTML_Validator.localization.issuesTypesTitles.recommendationDisregard;
11043
- default:
11044
- return HTML_Validator.localization.issuesTypesTitles.other;
11045
11241
  }
11046
11242
  })()})\n`,
11047
- ...((0, es_extensions_1.isNotUndefined)(issue.lineNumber__numerationFrom1) &&
11243
+ ...(0, es_extensions_1.isNotUndefined)(issue.lineNumber__numerationFrom1) &&
11048
11244
  (0, es_extensions_1.isNotUndefined)(issue.startingColumnNumber__numerationFrom1) &&
11049
- (0, es_extensions_1.isNotUndefined)(issue.endingColumnNumber__numerationFrom1)) ?
11245
+ (0, es_extensions_1.isNotUndefined)(issue.endingColumnNumber__numerationFrom1) ?
11050
11246
  [
11051
11247
  HTML_Validator.localization.generateIssueOccurrenceLocationIndication({
11052
11248
  lineNumber: issue.lineNumber__numerationFrom1,
@@ -11063,21 +11259,25 @@ class HTML_Validator {
11063
11259
  static computeAbsolutePathOfCachedValidationsResultsFileActualForCurrentProjectBuildingMode({ parentDirectoryAbsolutePath, projectBuildingSelectiveExecutionID, consumingProjectBuildingMode }) {
11064
11260
  return es_extensions_nodejs_1.ImprovedPath.joinPathSegments([
11065
11261
  parentDirectoryAbsolutePath,
11066
- `${HTML_Validator.CACHED_VALIDATIONS_RESULTS_FILE_CONSTANT_NAME_PART}.${(0, es_extensions_1.insertSubstring)(projectBuildingSelectiveExecutionID, { modifier: (specifiedProjectBuildingSelectiveExecutionID) => `${specifiedProjectBuildingSelectiveExecutionID}.` })}${(0, es_extensions_1.toLowerCamelCase)(consumingProjectBuildingMode)}.json`
11262
+ [
11263
+ `${HTML_Validator.CACHED_VALIDATIONS_RESULTS_FILE_CONSTANT_NAME_PART}.`,
11264
+ ...(0, es_extensions_1.isUndefined)(projectBuildingSelectiveExecutionID) ? [] : [`${projectBuildingSelectiveExecutionID}.`],
11265
+ `${(0, es_extensions_1.toLowerCamelCase)(consumingProjectBuildingMode)}.json`
11266
+ ].join(".")
11067
11267
  ]);
11068
11268
  }
11069
11269
  writeCacheToFile() {
11070
- es_extensions_nodejs_1.ImprovedFileSystem.createDirectory({
11071
- targetPath: this.absolutePathOfParentDirectoryOfCachedValidationsResultsFile,
11072
- mustThrowErrorIfTargetDirectoryExists: false,
11073
- synchronously: true
11074
- });
11270
+ /* [ Maintainability ] Keep this variable for easier debugging. */
11075
11271
  const cachedValidationsResultsFileContent = Array.from(this.cachedValidationsResults.entries()).
11076
11272
  reduce((accumulatingValue, [filePathRelativeToConsumingProjectRootDirectory, cachedValidationRawResultsForSpecificFile]) => {
11077
11273
  accumulatingValue[filePathRelativeToConsumingProjectRootDirectory] = cachedValidationRawResultsForSpecificFile;
11078
11274
  return accumulatingValue;
11079
11275
  }, {});
11080
- fs_1.default.writeFileSync(this.absolutePathOfCachedValidationsResultsFile, JSON.stringify(cachedValidationsResultsFileContent, null, 2));
11276
+ es_extensions_nodejs_1.ImprovedFileSystem.writeFileToPossiblyNotExistingDirectory({
11277
+ filePath: this.absolutePathOfParentDirectoryOfCachedValidationsResultsFile,
11278
+ content: JSON.stringify(cachedValidationsResultsFileContent, null, 2),
11279
+ synchronously: true
11280
+ });
11081
11281
  }
11082
11282
  /* ━━━ Routines ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
11083
11283
  static getExpectedToBeInitializedSelfSingleInstance() {
@@ -11101,17 +11301,15 @@ class HTML_Validator {
11101
11301
  (function (Types) {
11102
11302
  Types["info"] = "info";
11103
11303
  Types["error"] = "error";
11104
- Types["nonDocumentError"] = "non-document-error";
11105
- Types["networkError"] = "network-error";
11106
11304
  })(Types = Issue.Types || (Issue.Types = {}));
11107
- let Subtypes;
11108
- (function (Subtypes) {
11109
- Subtypes["warning"] = "warning";
11110
- Subtypes["fatal"] = "fatal";
11111
- Subtypes["io"] = "io";
11112
- Subtypes["schema"] = "schema";
11113
- Subtypes["internal"] = "internal";
11114
- })(Subtypes = Issue.Subtypes || (Issue.Subtypes = {}));
11305
+ let SubTypes;
11306
+ (function (SubTypes) {
11307
+ SubTypes["warning"] = "warning";
11308
+ SubTypes["fatal"] = "fatal";
11309
+ SubTypes["io"] = "io";
11310
+ SubTypes["schema"] = "schema";
11311
+ SubTypes["internal"] = "internal";
11312
+ })(SubTypes = Issue.SubTypes || (Issue.SubTypes = {}));
11115
11313
  })(Issue = NormalizedValidationsResults.Issue || (NormalizedValidationsResults.Issue = {}));
11116
11314
  })(NormalizedValidationsResults = HTML_Validator.NormalizedValidationsResults || (HTML_Validator.NormalizedValidationsResults = {}));
11117
11315
  })(HTML_Validator || (HTML_Validator = {}));
@@ -11129,7 +11327,7 @@ exports["default"] = HTML_Validator;
11129
11327
 
11130
11328
  Object.defineProperty(exports, "__esModule", ({ value: true }));
11131
11329
  const HTML_ValidatorLocalization__english = {
11132
- cachedPreviousValidationsResultsDataRetrievingFailure: ({ cachedValidationsResultsFileAbsolutePath }) => ({
11330
+ cachedPreviousValidationsResultsDataRetrievingErrorLog: ({ cachedValidationsResultsFileAbsolutePath }) => ({
11133
11331
  title: "Cached Previous Validations Data Retrieving Failure",
11134
11332
  description: "Unable to read and/or parse the existing HTML validation cache file " +
11135
11333
  `"${cachedValidationsResultsFileAbsolutePath}".`
@@ -11138,12 +11336,27 @@ const HTML_ValidatorLocalization__english = {
11138
11336
  title: "HTML Code Validation Started",
11139
11337
  description: "Validating the output HTML files..."
11140
11338
  },
11141
- // ━━━ TODO ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
11142
- issuesFoundToastNotification: {
11143
- title: "HTML validation, issue(s) found",
11144
- message: "W3C rules violations and / or recommendations neglect detected. Check the console for the details."
11339
+ validityIssuesDetectedErrorLog: {
11340
+ title: "HTML Validation, Issue(s) Detected",
11341
+ headings: {
11342
+ summary: "Summary",
11343
+ details: "Details"
11344
+ },
11345
+ generateSecondsElapsedSentence: ({ validationPeriod__seconds }) => `Seconds elapsed: ${validationPeriod__seconds}`
11145
11346
  },
11146
- generateIssueNumberLabel: ({ issueNumber }) => ` Issue No. ${issueNumber} `,
11347
+ validityIssuesDetectedToastNotification: {
11348
+ title: "HTML Validation, Issue(s) Detected",
11349
+ message: "W3C rules violations and / or recommendations neglect detected. " +
11350
+ "Check the console for the details."
11351
+ },
11352
+ validationFinishedWithoutIssuesSuccessLog: {
11353
+ title: "HTML Validation, All Valid",
11354
+ generateDescription: ({ validationPeriod__seconds, preFormattedErrorsMessages }) => "All HTML files (except excluded ones if any) contains valid HTML. " +
11355
+ "The following files has been checked:\n" +
11356
+ `${preFormattedErrorsMessages}\n` +
11357
+ `Seconds elapsed: ${validationPeriod__seconds}`
11358
+ },
11359
+ generateIssueNumberLabel: ({ issueNumber }) => `Issue No. ${issueNumber}`,
11147
11360
  generateIssueOccurrenceLocationIndication: ({ lineNumber, startingColumnNumber, lastColumnNumber }) => `At line ${lineNumber}, columns ${startingColumnNumber}-${lastColumnNumber}`,
11148
11361
  issuesTypesTitles: {
11149
11362
  grossViolation: "Gross violation",
@@ -12102,7 +12315,6 @@ const SourceCodeProcessingRawSettingsNormalizer_1 = __importDefault(__webpack_re
12102
12315
  const RoutingSettingsNormalizer_1 = __importDefault(__webpack_require__(/*! @MarkupProcessing/RawSettingsNormalizer/RoutingSettingsNormalizer */ "./ProjectBuilding/SourceCodeProcessing/Markup/RawSettingsNormalizer/RoutingSettingsNormalizer.ts"));
12103
12316
  /* ─── Utils ──────────────────────────────────────────────────────────────────────────────────────────────────────── */
12104
12317
  const es_extensions_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions */ "@yamato-daiwa/es-extensions");
12105
- const removeMultipleElementsFromSetByPredicate_1 = __importDefault(__webpack_require__(/*! @UtilsIncubator/Set/removeMultipleElementsFromSetByPredicate */ "./UtilsIncubator/Set/removeMultipleElementsFromSetByPredicate.ts"));
12106
12318
  const isSubdirectory_1 = __importDefault(__webpack_require__(/*! @UtilsIncubator/NodeJS/isSubdirectory */ "./UtilsIncubator/NodeJS/isSubdirectory.ts"));
12107
12319
  const es_extensions_nodejs_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions-nodejs */ "@yamato-daiwa/es-extensions-nodejs");
12108
12320
  /* ─── Localization ───────────────────────────────────────────────────────────────────────────────────────────────── */
@@ -12148,7 +12360,6 @@ class MarkupProcessingRawSettingsNormalizer extends SourceCodeProcessingRawSetti
12148
12360
  pagesVariations: dataHoldingSelfInstance.normalizeStaticPreviewPagesVariationsSettings(),
12149
12361
  importsFromStaticDataFiles: dataHoldingSelfInstance.normalizeImportsFromStaticDataFiles()
12150
12362
  },
12151
- /* TODO Replace value of `absolutePathsOfSectioningToCache`. https://trello.com/c/RJfFF7oh */
12152
12363
  ...(0, es_extensions_1.isNotUndefined)(markupProcessingSettings__fromFile__rawValid.routing) ? {
12153
12364
  routing: {
12154
12365
  variable: markupProcessingSettings__fromFile__rawValid.routing.variable,
@@ -12525,7 +12736,7 @@ class MarkupProcessingRawSettingsNormalizer extends SourceCodeProcessingRawSetti
12525
12736
  excludedFilesPathsRelativeToSourcesFilesTopDirectory?.
12526
12737
  map((excludedFilePathRelativeRelativeToSourcesFileTopDirectory) => es_extensions_nodejs_1.ImprovedPath.joinPathSegments([sourceFilesTopDirectoryAbsolutePath, excludedFilePathRelativeRelativeToSourcesFileTopDirectory], { alwaysForwardSlashSeparators: true })) ??
12527
12738
  []).
12528
- concat(Array.from((0, removeMultipleElementsFromSetByPredicate_1.default)({
12739
+ concat(Array.from((0, es_extensions_1.removeMultipleElementsFromSetByPredicate)({
12529
12740
  targetSet: this.unusedCommonlyExcludedFromLocalizationEntryPointsSourceFilesAbsolutePaths,
12530
12741
  predicate: (commonlyExcludedFromLocalizationEntryPointsSourceFileAbsolutePath) => (0, isSubdirectory_1.default)({
12531
12742
  whichPath: commonlyExcludedFromLocalizationEntryPointsSourceFileAbsolutePath,
@@ -12624,7 +12835,7 @@ const markupProcessingRawSettingsNormalizerLocalization__english = {
12624
12835
  `paths has not been specified for the "${consumingProjectBuildingMode}" building mode. ` +
12625
12836
  "The resources references will be resolved to relative paths instead. " +
12626
12837
  "If you wish these references be resolved to relative path, set \"$projectBuilding.$markupProcessing.$common." +
12627
- "$buildingModeDependent.[PROJECT_BUILDING_MODE].$mustResolveResourceReferencesToRelativePaths\" " +
12838
+ "$buildingModeDependent.[PROJECT_BUILDING_MODE].$mustResolveResourcesPointersToRelativePaths\" " +
12628
12839
  `to true for the "${consumingProjectBuildingMode}" building mode.`
12629
12840
  }),
12630
12841
  generateStaticPreviewStateDependentPagesVariationsSpecificationFileReadingFailedMessage: (templateVariables) => "Failed to read the static preview state dependent pages variations specification file at " +
@@ -15843,6 +16054,21 @@ class VinylFileClass extends vinyl_1.default {
15843
16054
  exports["default"] = VinylFileClass;
15844
16055
 
15845
16056
 
16057
+ /***/ }),
16058
+
16059
+ /***/ "./Utils/VoidPromiseReturningFunction.ts":
16060
+ /*!***********************************************!*\
16061
+ !*** ./Utils/VoidPromiseReturningFunction.ts ***!
16062
+ \***********************************************/
16063
+ /***/ ((__unused_webpack_module, exports) => {
16064
+
16065
+
16066
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
16067
+ exports.voidPromiseReturningFunction = void 0;
16068
+ const voidPromiseReturningFunction = async () => Promise.resolve();
16069
+ exports.voidPromiseReturningFunction = voidPromiseReturningFunction;
16070
+
16071
+
15846
16072
  /***/ }),
15847
16073
 
15848
16074
  /***/ "./Utils/createImmediatelyEndingEmptyStream.ts":
@@ -15882,59 +16108,6 @@ function extractStringifiedContentFromVinylFile(targetFile) {
15882
16108
  }
15883
16109
 
15884
16110
 
15885
- /***/ }),
15886
-
15887
- /***/ "./UtilsIncubator/@yamato-daiwa/es-extensions-nodejs/ImprovedFileSystem/deleteFilesFromDirectory.ts":
15888
- /*!**********************************************************************************************************!*\
15889
- !*** ./UtilsIncubator/@yamato-daiwa/es-extensions-nodejs/ImprovedFileSystem/deleteFilesFromDirectory.ts ***!
15890
- \**********************************************************************************************************/
15891
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
15892
-
15893
-
15894
- var __importDefault = (this && this.__importDefault) || function (mod) {
15895
- return (mod && mod.__esModule) ? mod : { "default": mod };
15896
- };
15897
- Object.defineProperty(exports, "__esModule", ({ value: true }));
15898
- exports["default"] = deleteFilesFromDirectory;
15899
- const fs_1 = __importDefault(__webpack_require__(/*! fs */ "fs"));
15900
- const promises_1 = __importDefault(__webpack_require__(/*! fs/promises */ "fs/promises"));
15901
- const es_extensions_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions */ "@yamato-daiwa/es-extensions");
15902
- const es_extensions_nodejs_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions-nodejs */ "@yamato-daiwa/es-extensions-nodejs");
15903
- function deleteFilesFromDirectory({ directoryPath__absoluteOrRelative, targetFileNamesExtensions, mustThrowErrorIfSomeFileCanNotBeDeleted, synchronously }) {
15904
- const targetFilesAbsolutePaths = es_extensions_nodejs_1.ImprovedGlob.getFilesAbsolutePathsSynchronously([
15905
- es_extensions_nodejs_1.ImprovedGlob.buildAllFilesInCurrentDirectoryAndBelowGlobSelector({
15906
- basicDirectoryPath: directoryPath__absoluteOrRelative,
15907
- fileNamesExtensions: targetFileNamesExtensions
15908
- })
15909
- ]);
15910
- if (synchronously) {
15911
- for (const targetFilesAbsolutePath of targetFilesAbsolutePaths) {
15912
- try {
15913
- fs_1.default.unlinkSync(targetFilesAbsolutePath);
15914
- }
15915
- catch (error) {
15916
- if (mustThrowErrorIfSomeFileCanNotBeDeleted) {
15917
- es_extensions_1.Logger.throwErrorAndLog({
15918
- errorType: "FileDeletingFailure",
15919
- title: "File Deleting Failed",
15920
- description: `The error has occurred during deleting of the file with path "${targetFilesAbsolutePath}".`,
15921
- occurrenceLocation: "deleteFilesFromDirectory(compoundParameter)",
15922
- innerError: error
15923
- });
15924
- }
15925
- }
15926
- }
15927
- return;
15928
- }
15929
- return new Promise((resolve, reject) => {
15930
- Promise.
15931
- all(targetFilesAbsolutePaths.map(async (targetFilesAbsolutePath) => promises_1.default.unlink(targetFilesAbsolutePath))).
15932
- then(resolve).
15933
- catch(reject);
15934
- });
15935
- }
15936
-
15937
-
15938
16111
  /***/ }),
15939
16112
 
15940
16113
  /***/ "./UtilsIncubator/NodeJS/isSubdirectory.ts":
@@ -15956,32 +16129,6 @@ function isSubdirectory({ whichPath, ofWhichPath }) {
15956
16129
  }
15957
16130
 
15958
16131
 
15959
- /***/ }),
15960
-
15961
- /***/ "./UtilsIncubator/Set/removeMultipleElementsFromSetByPredicate.ts":
15962
- /*!************************************************************************!*\
15963
- !*** ./UtilsIncubator/Set/removeMultipleElementsFromSetByPredicate.ts ***!
15964
- \************************************************************************/
15965
- /***/ ((__unused_webpack_module, exports) => {
15966
-
15967
-
15968
- Object.defineProperty(exports, "__esModule", ({ value: true }));
15969
- exports["default"] = removeMultipleElementsFromSetByPredicate;
15970
- function removeMultipleElementsFromSetByPredicate({ targetSet, predicate }) {
15971
- const removedElements = [];
15972
- for (const element of targetSet) {
15973
- if (predicate(element)) {
15974
- targetSet.delete(element);
15975
- removedElements.push(element);
15976
- }
15977
- }
15978
- return {
15979
- updatedSet: targetSet,
15980
- removedElements
15981
- };
15982
- }
15983
-
15984
-
15985
16132
  /***/ }),
15986
16133
 
15987
16134
  /***/ "./UtilsIncubator/Stopwatch.ts":
@@ -16112,6 +16259,16 @@ module.exports = require("browser-sync");
16112
16259
 
16113
16260
  /***/ }),
16114
16261
 
16262
+ /***/ "child_process":
16263
+ /*!********************************!*\
16264
+ !*** external "child_process" ***!
16265
+ \********************************/
16266
+ /***/ ((module) => {
16267
+
16268
+ module.exports = require("child_process");
16269
+
16270
+ /***/ }),
16271
+
16115
16272
  /***/ "cssnano":
16116
16273
  /*!**************************!*\
16117
16274
  !*** external "cssnano" ***!
@@ -16142,16 +16299,6 @@ module.exports = require("eslint");
16142
16299
 
16143
16300
  /***/ }),
16144
16301
 
16145
- /***/ "fork-ts-checker-webpack-plugin":
16146
- /*!*************************************************!*\
16147
- !*** external "fork-ts-checker-webpack-plugin" ***!
16148
- \*************************************************/
16149
- /***/ ((module) => {
16150
-
16151
- module.exports = require("fork-ts-checker-webpack-plugin");
16152
-
16153
- /***/ }),
16154
-
16155
16302
  /***/ "fs":
16156
16303
  /*!*********************!*\
16157
16304
  !*** external "fs" ***!
@@ -16162,16 +16309,6 @@ module.exports = require("fs");
16162
16309
 
16163
16310
  /***/ }),
16164
16311
 
16165
- /***/ "fs/promises":
16166
- /*!******************************!*\
16167
- !*** external "fs/promises" ***!
16168
- \******************************/
16169
- /***/ ((module) => {
16170
-
16171
- module.exports = require("fs/promises");
16172
-
16173
- /***/ }),
16174
-
16175
16312
  /***/ "gulp":
16176
16313
  /*!***********************!*\
16177
16314
  !*** external "gulp" ***!
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yamato-daiwa/automation",
3
- "version": "0.7.0-alpha.7",
3
+ "version": "0.7.0",
4
4
  "description": "The project building tool with declarative YAML configuration specializing on Pug, Stylus and TypeScript as source code languages.",
5
5
  "keywords": [
6
6
  "build",
@@ -20,26 +20,25 @@
20
20
  ],
21
21
  "dependencies": {
22
22
  "@eslint-community/eslint-plugin-eslint-comments": "4.5.0",
23
- "@stylistic/eslint-plugin": "4.4.1",
24
- "@typescript-eslint/eslint-plugin": "8.33.1",
25
- "@typescript-eslint/parser": "8.33.1",
26
- "@vue/compiler-sfc": "3.5.16",
23
+ "@stylistic/eslint-plugin": "5.2.2",
24
+ "@typescript-eslint/eslint-plugin": "8.38.0",
25
+ "@typescript-eslint/parser": "8.38.0",
26
+ "@vue/compiler-sfc": "3.5.18",
27
27
  "@webdiscus/pug-loader": "2.11.1",
28
- "@yamato-daiwa/es-extensions": "1.8.0-alpha.16",
29
- "@yamato-daiwa/es-extensions-nodejs": "1.8.0-alpha.16",
30
- "@yamato-daiwa/style_guides": "0.7.0",
28
+ "@yamato-daiwa/es-extensions": "1.8.0-rc.1",
29
+ "@yamato-daiwa/es-extensions-nodejs": "1.8.0-rc.1",
30
+ "@yamato-daiwa/style_guides": "0.8.1",
31
31
  "autoprefixer": "10.4.21",
32
32
  "browser-sync": "3.0.4",
33
33
  "css-loader": "7.1.2",
34
- "cssnano": "7.0.7",
34
+ "cssnano": "7.1.0",
35
35
  "dotenv": "16.5.0",
36
- "eslint": "9.28.0",
37
- "eslint-plugin-import": "2.31.0",
38
- "eslint-plugin-n": "17.19.0",
36
+ "eslint": "9.32.0",
37
+ "eslint-plugin-import": "2.32.0",
38
+ "eslint-plugin-n": "17.21.3",
39
39
  "eslint-plugin-react": "7.37.5",
40
40
  "eslint-plugin-vue": "9.33.0",
41
41
  "eslint-plugin-vue-pug": "0.6.2",
42
- "fork-ts-checker-webpack-plugin": "7.3.0",
43
42
  "gulp": "4.0.2",
44
43
  "gulp-data": "1.3.1",
45
44
  "gulp-if": "3.0.0",
@@ -74,8 +73,8 @@
74
73
  "vnu-jar": "24.10.17",
75
74
  "vue-loader": "17.4.2",
76
75
  "vue-style-loader": "4.1.3",
77
- "vue-tsc": "2.2.10",
78
- "webpack": "5.99.9",
76
+ "vue-tsc": "3.0.5",
77
+ "webpack": "5.101.0",
79
78
  "webpack-node-externals": "3.0.0",
80
79
  "webpack-stream": "7.0.0",
81
80
  "worker-loader": "3.0.8",
@@ -85,7 +84,7 @@
85
84
  "@types/browser-sync": "2.29.0",
86
85
  "@types/cssnano": "5.0.0",
87
86
  "@types/gulp": "4.0.17",
88
- "@types/gulp-if": "3.0.4",
87
+ "@types/gulp-if": "3.0.5",
89
88
  "@types/gulp-imagemin": "7.0.3",
90
89
  "@types/gulp-nodemon": "0.0.37",
91
90
  "@types/gulp-plumber": "0.0.37",