@yamato-daiwa/automation 0.7.0-alpha.7 → 0.8.0-alpha.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 +456 -242
  2. package/package.json +17 -18
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.8.0-alpha.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.3","@typescript-eslint/eslint-plugin":"8.39.0","@typescript-eslint/parser":"8.39.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.9.0","autoprefixer":"10.4.21","browser-sync":"3.0.4","css-loader":"7.1.2","cssnano":"7.1.0","dotenv":"17.2.1","eslint":"9.33.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.9.2","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() {
@@ -6428,6 +6465,39 @@ class ECMA_ScriptLogicProcessingRawSettingsNormalizer extends SourceCodeProcessi
6428
6465
  type: SupportedECMA_ScriptRuntimesTypes.pug
6429
6466
  };
6430
6467
  }
6468
+ case SupportedECMA_ScriptRuntimesTypes.electronMainProcess: {
6469
+ return {
6470
+ type: SupportedECMA_ScriptRuntimesTypes.electronMainProcess,
6471
+ minimalVersion: {
6472
+ major: entryPointsGroupSettings__rawValid.targetRuntime.minimalVersion.major,
6473
+ ...(0, es_extensions_1.isNotUndefined)(entryPointsGroupSettings__rawValid.targetRuntime.minimalVersion.minor) ? {
6474
+ minor: entryPointsGroupSettings__rawValid.targetRuntime.minimalVersion.minor
6475
+ } : null
6476
+ }
6477
+ };
6478
+ }
6479
+ case SupportedECMA_ScriptRuntimesTypes.electronRendererProcess: {
6480
+ return {
6481
+ type: SupportedECMA_ScriptRuntimesTypes.electronRendererProcess,
6482
+ minimalVersion: {
6483
+ major: entryPointsGroupSettings__rawValid.targetRuntime.minimalVersion.major,
6484
+ ...(0, es_extensions_1.isNotUndefined)(entryPointsGroupSettings__rawValid.targetRuntime.minimalVersion.minor) ? {
6485
+ minor: entryPointsGroupSettings__rawValid.targetRuntime.minimalVersion.minor
6486
+ } : null
6487
+ }
6488
+ };
6489
+ }
6490
+ case SupportedECMA_ScriptRuntimesTypes.electronPreload: {
6491
+ return {
6492
+ type: SupportedECMA_ScriptRuntimesTypes.electronPreload,
6493
+ minimalVersion: {
6494
+ major: entryPointsGroupSettings__rawValid.targetRuntime.minimalVersion.major,
6495
+ ...(0, es_extensions_1.isNotUndefined)(entryPointsGroupSettings__rawValid.targetRuntime.minimalVersion.minor) ? {
6496
+ minor: entryPointsGroupSettings__rawValid.targetRuntime.minimalVersion.minor
6497
+ } : null
6498
+ }
6499
+ };
6500
+ }
6431
6501
  }
6432
6502
  })(),
6433
6503
  ...(0, es_extensions_1.isNotUndefined)(entryPointsGroupSettings__rawValid.
@@ -6550,6 +6620,9 @@ var ECMA_ScriptLogicProcessingRestrictions;
6550
6620
  SupportedECMA_ScriptRuntimesTypes["webWorker"] = "WEB_WORKER";
6551
6621
  SupportedECMA_ScriptRuntimesTypes["nodeJS"] = "NODEJS";
6552
6622
  SupportedECMA_ScriptRuntimesTypes["pug"] = "PUG";
6623
+ SupportedECMA_ScriptRuntimesTypes["electronMainProcess"] = "ELECTRON_MAIN_PROCESS";
6624
+ SupportedECMA_ScriptRuntimesTypes["electronRendererProcess"] = "ELECTRON_RENDERER_PROCESS";
6625
+ SupportedECMA_ScriptRuntimesTypes["electronPreload"] = "ELECTRON_PRELOAD";
6553
6626
  })(SupportedECMA_ScriptRuntimesTypes = ECMA_ScriptLogicProcessingRestrictions.SupportedECMA_ScriptRuntimesTypes || (ECMA_ScriptLogicProcessingRestrictions.SupportedECMA_ScriptRuntimesTypes = {}));
6554
6627
  })(ECMA_ScriptLogicProcessingRestrictions || (ECMA_ScriptLogicProcessingRestrictions = {}));
6555
6628
  exports["default"] = ECMA_ScriptLogicProcessingRestrictions;
@@ -6718,8 +6791,16 @@ var ECMA_ScriptLogicProcessingSettings__FromFile__RawValid;
6718
6791
  newName: "minimalVersion",
6719
6792
  type: Object,
6720
6793
  undefinedForbiddenIf: {
6721
- predicate: (runtimeConfig) => runtimeConfig.type === SupportedECMA_ScriptRuntimesTypes.nodeJS,
6722
- descriptionForLogging: "Target runtime is NodeJS"
6794
+ predicate: (runtimeConfig) => [
6795
+ SupportedECMA_ScriptRuntimesTypes.nodeJS,
6796
+ SupportedECMA_ScriptRuntimesTypes.electronMainProcess,
6797
+ SupportedECMA_ScriptRuntimesTypes.electronRendererProcess,
6798
+ SupportedECMA_ScriptRuntimesTypes.electronPreload
6799
+ /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions --
6800
+ * Even `runtimeConfig.type` is `undefined` or `null` it still can be safely compared with elements
6801
+ * of enumeration. */
6802
+ ].includes(runtimeConfig.type),
6803
+ descriptionForLogging: "Target runtime is NodeJS or Electron-like"
6723
6804
  },
6724
6805
  isNullForbidden: true,
6725
6806
  properties: {
@@ -7033,7 +7114,7 @@ class ECMA_ScriptLogicProcessor {
7033
7114
  this.projectBuildingMasterConfigRepresentative = masterConfigRepresentative;
7034
7115
  const webpackConfigurationsForExistingEntryPoints = [];
7035
7116
  const entryPointsSourceFilesAbsolutePathsAndWebpackConfigurationNamesMap = new Map();
7036
- for (const [index, ECMA_ScriptLogicEntryPointsGroupSettings] of Array.from(this.ECMA_ScriptLogicProcessingConfigRepresentative.relevantEntryPointsGroupsSettings.values()).entries()) {
7117
+ for (const ECMA_ScriptLogicEntryPointsGroupSettings of this.ECMA_ScriptLogicProcessingConfigRepresentative.relevantEntryPointsGroupsSettings.values()) {
7037
7118
  const entryPointsSourceFilesAbsolutePaths = es_extensions_nodejs_1.ImprovedGlob.getFilesAbsolutePathsSynchronously(ECMA_ScriptLogicEntryPointsGroupSettings.sourceFilesGlobSelectors, { alwaysForwardSlashSeparators: true });
7038
7119
  if (entryPointsSourceFilesAbsolutePaths.length === 0) {
7039
7120
  es_extensions_1.Logger.logWarning({
@@ -7047,8 +7128,7 @@ class ECMA_ScriptLogicProcessor {
7047
7128
  entryPointsSourceFilesAbsolutePaths,
7048
7129
  ECMA_ScriptLogicEntryPointsGroupSettings,
7049
7130
  ECMA_ScriptLogicProcessingConfigRepresentative: this.ECMA_ScriptLogicProcessingConfigRepresentative,
7050
- masterConfigRepresentative: this.projectBuildingMasterConfigRepresentative,
7051
- mustProvideTypeScriptTypeChecking: index === 0
7131
+ masterConfigRepresentative: this.projectBuildingMasterConfigRepresentative
7052
7132
  }));
7053
7133
  (0, es_extensions_1.addEntriesToMap)({
7054
7134
  targetMap: entryPointsSourceFilesAbsolutePathsAndWebpackConfigurationNamesMap,
@@ -7688,6 +7768,138 @@ class LocalDevelopmentServerOrchestrator {
7688
7768
  exports["default"] = LocalDevelopmentServerOrchestrator;
7689
7769
 
7690
7770
 
7771
+ /***/ }),
7772
+
7773
+ /***/ "./ProjectBuilding/SourceCodeProcessing/ECMA_Script/Subtasks/TypeScriptTypesChecker.ts":
7774
+ /*!*********************************************************************************************!*\
7775
+ !*** ./ProjectBuilding/SourceCodeProcessing/ECMA_Script/Subtasks/TypeScriptTypesChecker.ts ***!
7776
+ \*********************************************************************************************/
7777
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
7778
+
7779
+
7780
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7781
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7782
+ };
7783
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
7784
+ /* ─── Source Files Watcher ───────────────────────────────────────────────────────────────────────────────────────── */
7785
+ const ECMA_ScriptSourceFilesWatcher_1 = __importDefault(__webpack_require__(/*! @ECMA_ScriptProcessing/ECMA_ScriptSourceFilesWatcher */ "./ProjectBuilding/SourceCodeProcessing/ECMA_Script/ECMA_ScriptSourceFilesWatcher.ts"));
7786
+ /* ─── Applied Utils ─────────────────────────────────────────────────────────────────────────────────────────────── */
7787
+ const VoidPromiseReturningFunction_1 = __webpack_require__(/*! @Utils/VoidPromiseReturningFunction */ "./Utils/VoidPromiseReturningFunction.ts");
7788
+ /* ─── Generals Utils ─────────────────────────────────────────────────────────────────────────────────────────────── */
7789
+ const child_process_1 = __importDefault(__webpack_require__(/*! child_process */ "child_process"));
7790
+ const fs_1 = __importDefault(__webpack_require__(/*! fs */ "fs"));
7791
+ const es_extensions_nodejs_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions-nodejs */ "@yamato-daiwa/es-extensions-nodejs");
7792
+ const es_extensions_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions */ "@yamato-daiwa/es-extensions");
7793
+ const node_notifier_1 = __importDefault(__webpack_require__(/*! node-notifier */ "node-notifier"));
7794
+ class TypeScriptTypesChecker {
7795
+ static WAITING_FOR_NEXT_EVENT_WITH_RELATED_FILES__SECONDS = 1;
7796
+ /* [ Theory ] 120 columns is about the half of the 1920x1080 screen. */
7797
+ static DISPLAYING_MAXIMAL_COLUMNS_COUNT_IN_LOG = 120;
7798
+ vueTSC_ExecutableFileAbsolutePath;
7799
+ projectBuildingMasterConfigRepresentative;
7800
+ ecmaScriptLogicProcessingSettingsRepresentative;
7801
+ waitingForNextWithRelatedFiles = null;
7802
+ static provideCheckingIfMust(projectBuildingMasterConfigRepresentative) {
7803
+ const ecmaScriptLogicProcessingSettingsRepresentative = projectBuildingMasterConfigRepresentative.ECMA_ScriptLogicProcessingSettingsRepresentative;
7804
+ if ((0, es_extensions_1.isUndefined)(ecmaScriptLogicProcessingSettingsRepresentative)) {
7805
+ return VoidPromiseReturningFunction_1.voidPromiseReturningFunction;
7806
+ }
7807
+ const selfInstance = new TypeScriptTypesChecker({
7808
+ projectBuildingMasterConfigRepresentative,
7809
+ ecmaScriptLogicProcessingSettingsRepresentative
7810
+ });
7811
+ return selfInstance.checkTypes.bind(selfInstance);
7812
+ }
7813
+ constructor({ projectBuildingMasterConfigRepresentative, ecmaScriptLogicProcessingSettingsRepresentative }) {
7814
+ this.projectBuildingMasterConfigRepresentative = projectBuildingMasterConfigRepresentative;
7815
+ this.ecmaScriptLogicProcessingSettingsRepresentative = ecmaScriptLogicProcessingSettingsRepresentative;
7816
+ if (this.projectBuildingMasterConfigRepresentative.mustProvideIncrementalBuilding) {
7817
+ ECMA_ScriptSourceFilesWatcher_1.default.initializeIfRequiredAndGetInstance({
7818
+ projectBuildingMasterConfigRepresentative: this.projectBuildingMasterConfigRepresentative,
7819
+ ecmaScriptLogicProcessingSettingsRepresentative: this.ecmaScriptLogicProcessingSettingsRepresentative
7820
+ }).
7821
+ addOnAnyEventRelatedWithActualFilesHandler({
7822
+ handlerID: "ON_ANY_EVENT_RELATED_WITH_ACTUAL_FILES_HANDLER--BY_TYPE_SCRIPT_TYPES_CHECKER",
7823
+ handler: this.onAnyEventRelatedWithActualFiles.bind(this)
7824
+ });
7825
+ }
7826
+ const vueTSC_ExecutableFileAbsolutePath = TypeScriptTypesChecker.
7827
+ getAbsolutePathOfExistingVueTSC_ExecutableFile__alwaysForwardSlashesPathSeparators(projectBuildingMasterConfigRepresentative.consumingProjectRootDirectoryAbsolutePath);
7828
+ if ((0, es_extensions_1.isNull)(vueTSC_ExecutableFileAbsolutePath)) {
7829
+ es_extensions_1.Logger.throwErrorAndLog({
7830
+ errorInstance: new es_extensions_1.UnexpectedEventError("File to \"vue-tsc\" executable not found"),
7831
+ title: es_extensions_1.UnexpectedEventError.localization.defaultTitle,
7832
+ occurrenceLocation: "TypeScriptTypesChecker.constructor(compoundParameter)"
7833
+ });
7834
+ }
7835
+ this.vueTSC_ExecutableFileAbsolutePath = vueTSC_ExecutableFileAbsolutePath;
7836
+ }
7837
+ onAnyEventRelatedWithActualFiles() {
7838
+ clearTimeout((0, es_extensions_1.nullToUndefined)(this.waitingForNextWithRelatedFiles));
7839
+ this.waitingForNextWithRelatedFiles = setTimeout(() => {
7840
+ this.checkTypes().catch(es_extensions_1.Logger.logPromiseError);
7841
+ }, (0, es_extensions_1.secondsToMilliseconds)(TypeScriptTypesChecker.WAITING_FOR_NEXT_EVENT_WITH_RELATED_FILES__SECONDS));
7842
+ }
7843
+ async checkTypes() {
7844
+ return new Promise((resolve, reject) => {
7845
+ child_process_1.default.exec(`node ${this.vueTSC_ExecutableFileAbsolutePath} --noEmit`, { encoding: "utf-8" }, (error, stdout) => {
7846
+ if ((0, es_extensions_1.isNotNull)(error)) {
7847
+ es_extensions_1.Logger.logErrorLikeMessage({
7848
+ title: "TypeScript Type Checking, Error(s) Detected",
7849
+ description: "The source code is including the TypeScript error(s).\n" +
7850
+ (this.projectBuildingMasterConfigRepresentative.isProductionLikeBuildingMode ?
7851
+ "Is is unacceptable for production-like modes thus the project building will be terminated." : "") +
7852
+ `${"-".repeat(TypeScriptTypesChecker.DISPLAYING_MAXIMAL_COLUMNS_COUNT_IN_LOG)}\n` +
7853
+ stdout
7854
+ });
7855
+ node_notifier_1.default.notify({
7856
+ title: "TypeScript Types Checking, Errors Detected",
7857
+ message: "Please check your terminal for the details."
7858
+ });
7859
+ if (this.projectBuildingMasterConfigRepresentative.isProductionLikeBuildingMode) {
7860
+ reject(error);
7861
+ return;
7862
+ }
7863
+ resolve();
7864
+ return;
7865
+ }
7866
+ es_extensions_1.Logger.logSuccess({
7867
+ title: "TypeScript Type Checking, No Errors Found",
7868
+ description: "The source TypeScript is valid. Keep it up!"
7869
+ });
7870
+ resolve();
7871
+ });
7872
+ });
7873
+ }
7874
+ static getAbsolutePathOfExistingVueTSC_ExecutableFile__alwaysForwardSlashesPathSeparators(consumingProjectRootDirectoryAbsolutePath) {
7875
+ for (const vueTSC_ExecutableFileAbsolutePath__alwaysForwardSlashesPathSeparators of [
7876
+ es_extensions_nodejs_1.ImprovedPath.joinPathSegments([
7877
+ consumingProjectRootDirectoryAbsolutePath,
7878
+ "node_modules",
7879
+ ".bin",
7880
+ "vue-tsc.js"
7881
+ ], { alwaysForwardSlashSeparators: true }),
7882
+ es_extensions_nodejs_1.ImprovedPath.joinPathSegments([
7883
+ consumingProjectRootDirectoryAbsolutePath,
7884
+ "node_modules",
7885
+ "@yamato-daiwa",
7886
+ "automation",
7887
+ "node_modules",
7888
+ "vue-tsc",
7889
+ "bin",
7890
+ "vue-tsc.js"
7891
+ ], { alwaysForwardSlashSeparators: true })
7892
+ ]) {
7893
+ if (fs_1.default.existsSync(vueTSC_ExecutableFileAbsolutePath__alwaysForwardSlashesPathSeparators)) {
7894
+ return vueTSC_ExecutableFileAbsolutePath__alwaysForwardSlashesPathSeparators;
7895
+ }
7896
+ }
7897
+ return null;
7898
+ }
7899
+ }
7900
+ exports["default"] = TypeScriptTypesChecker;
7901
+
7902
+
7691
7903
  /***/ }),
7692
7904
 
7693
7905
  /***/ "./ProjectBuilding/SourceCodeProcessing/ECMA_Script/Utils/ECMA_ScriptLogicEntryPointsSourceFilesAbsolutePathsAndOutputFilesActualPathsMapGenerator.ts":
@@ -7805,18 +8017,17 @@ const TypeScriptSpecialist_1 = __importDefault(__webpack_require__(/*! @ThirdPar
7805
8017
  /* ─── Applied Utils ──────────────────────────────────────────────────────────────────────────────────────────────── */
7806
8018
  const webpack_1 = __importDefault(__webpack_require__(/*! webpack */ "webpack"));
7807
8019
  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
8020
  const webpack_node_externals_1 = __importDefault(__webpack_require__(/*! webpack-node-externals */ "webpack-node-externals"));
7810
8021
  /* ─── General Utils ──────────────────────────────────────────────────────────────────────────────────────────────── */
7811
8022
  const path_1 = __importDefault(__webpack_require__(/*! path */ "path"));
7812
8023
  const es_extensions_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions */ "@yamato-daiwa/es-extensions");
7813
8024
  const es_extensions_nodejs_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions-nodejs */ "@yamato-daiwa/es-extensions-nodejs");
7814
- /* [ Approach ] Because of serious performance impact, the file watching has been delegated to external watcher. */
8025
+ /* [ Approach ] Because of the serious performance impact, the file watching has been delegated to an external watcher. */
7815
8026
  class WebpackConfigGenerator {
7816
8027
  static cachedTypeScriptConfigurations = {};
7817
8028
  /* [ Approach ] Although the parameter is excessive, its properties are been pre-computed externally for other needs,
7818
8029
  * so no need to compute them again. */
7819
- static generateWebpackConfigurationForEntryPointsGroupWithExistingFiles({ entryPointsSourceFilesAbsolutePaths, ECMA_ScriptLogicEntryPointsGroupSettings: entryPointsGroupSettings, ECMA_ScriptLogicProcessingConfigRepresentative, masterConfigRepresentative, mustProvideTypeScriptTypeChecking }) {
8030
+ static generateWebpackConfigurationForEntryPointsGroupWithExistingFiles({ entryPointsSourceFilesAbsolutePaths, ECMA_ScriptLogicEntryPointsGroupSettings: entryPointsGroupSettings, ECMA_ScriptLogicProcessingConfigRepresentative, masterConfigRepresentative }) {
7820
8031
  /* [ Reference ] https://webpack.js.org/configuration/entry-context/#context */
7821
8032
  const sourceFilesTopDirectoryAbsolutePath = entryPointsGroupSettings.sourceFilesTopDirectoryAbsolutePath;
7822
8033
  /** @see https://webpack.js.org/configuration/entry-context/#entry */
@@ -7840,11 +8051,11 @@ class WebpackConfigGenerator {
7840
8051
  const willPugLibraryBeBuilt = entryPointsGroupSettings.distributing?.exposingOfExportsFromEntryPoints.mustExpose === true &&
7841
8052
  entryPointsGroupSettings.targetRuntime.type === SupportedECMA_ScriptRuntimesTypes.pug;
7842
8053
  const distributingSettings = entryPointsGroupSettings.distributing;
7843
- // TODO Is entryPointsGroupSettings.directoriesAliasesAndCorrespondingAbsolutePathsMap related
7844
8054
  return {
7845
8055
  name: entryPointsGroupSettings.ID,
7846
- /* [ Webpack theory ] In this case, path separators must be operating system dependent, otherwise following error
7847
- * will be thrown: `configuration[0].context: The provided value "D:/OSPanel/../01_Open" is not an absolute path!` */
8056
+ /* [ Webpack theory ] In this case, path separators must be operating-system-dependent; otherwise the following
8057
+ * error will be thrown: `configuration[0].context: The provided value "D:/OSPanel/../01_Open" is not an
8058
+ * absolute path!` */
7848
8059
  context: path_1.default.normalize(sourceFilesTopDirectoryAbsolutePath),
7849
8060
  /* [ Reference ] https://webpack.js.org/configuration/target/ */
7850
8061
  target: (() => {
@@ -7857,8 +8068,35 @@ class WebpackConfigGenerator {
7857
8068
  return "webworker";
7858
8069
  }
7859
8070
  case SupportedECMA_ScriptRuntimesTypes.nodeJS: {
7860
- return `node${entryPointsGroupSettings.targetRuntime.minimalVersion.major}` +
7861
- (0, es_extensions_1.insertSubstringIf)(`.${entryPointsGroupSettings.targetRuntime.minimalVersion.minor}`, (0, es_extensions_1.isNotUndefined)(entryPointsGroupSettings.targetRuntime.minimalVersion.minor));
8071
+ return [
8072
+ `node${entryPointsGroupSettings.targetRuntime.minimalVersion.major}`,
8073
+ ...(0, es_extensions_1.isNotUndefined)(entryPointsGroupSettings.targetRuntime.minimalVersion.minor) ?
8074
+ [`.${entryPointsGroupSettings.targetRuntime.minimalVersion.minor}`] : []
8075
+ ];
8076
+ }
8077
+ case SupportedECMA_ScriptRuntimesTypes.electronMainProcess: {
8078
+ return [
8079
+ `electron${entryPointsGroupSettings.targetRuntime.minimalVersion.major}`,
8080
+ ...(0, es_extensions_1.isNotUndefined)(entryPointsGroupSettings.targetRuntime.minimalVersion.minor) ?
8081
+ [`.${entryPointsGroupSettings.targetRuntime.minimalVersion.minor}`] : [],
8082
+ "-main"
8083
+ ].join("");
8084
+ }
8085
+ case SupportedECMA_ScriptRuntimesTypes.electronRendererProcess: {
8086
+ return [
8087
+ `electron${entryPointsGroupSettings.targetRuntime.minimalVersion.major}`,
8088
+ ...(0, es_extensions_1.isNotUndefined)(entryPointsGroupSettings.targetRuntime.minimalVersion.minor) ?
8089
+ [`.${entryPointsGroupSettings.targetRuntime.minimalVersion.minor}`] : [],
8090
+ "-renderer"
8091
+ ].join("");
8092
+ }
8093
+ case SupportedECMA_ScriptRuntimesTypes.electronPreload: {
8094
+ return [
8095
+ `electron${entryPointsGroupSettings.targetRuntime.minimalVersion.major}`,
8096
+ ...(0, es_extensions_1.isNotUndefined)(entryPointsGroupSettings.targetRuntime.minimalVersion.minor) ?
8097
+ [`.${entryPointsGroupSettings.targetRuntime.minimalVersion.minor}`] : [],
8098
+ "-preload"
8099
+ ].join("");
7862
8100
  }
7863
8101
  }
7864
8102
  })(),
@@ -7879,11 +8117,16 @@ class WebpackConfigGenerator {
7879
8117
  type: (() => {
7880
8118
  switch (entryPointsGroupSettings.targetRuntime.type) {
7881
8119
  case SupportedECMA_ScriptRuntimesTypes.browser:
8120
+ case SupportedECMA_ScriptRuntimesTypes.electronRendererProcess:
8121
+ case SupportedECMA_ScriptRuntimesTypes.electronPreload:
7882
8122
  return entryPointsGroupSettings.distributing.exposingOfExportsFromEntryPoints.mustAssignToWindowObject ?
7883
8123
  "window" : "module";
7884
- case SupportedECMA_ScriptRuntimesTypes.nodeJS: return "commonjs";
7885
- case SupportedECMA_ScriptRuntimesTypes.pug: return "umd";
7886
- default: {
8124
+ case SupportedECMA_ScriptRuntimesTypes.nodeJS:
8125
+ case SupportedECMA_ScriptRuntimesTypes.electronMainProcess:
8126
+ return "commonjs";
8127
+ case SupportedECMA_ScriptRuntimesTypes.pug:
8128
+ return "umd";
8129
+ case SupportedECMA_ScriptRuntimesTypes.webWorker: {
7887
8130
  es_extensions_1.Logger.throwErrorAndLog({
7888
8131
  errorInstance: new es_extensions_1.UnexpectedEventError("The web worker could not be the library, while the computing of 'output.library.type' has been " +
7889
8132
  "requested"),
@@ -7929,6 +8172,8 @@ class WebpackConfigGenerator {
7929
8172
  loader: "ts-loader",
7930
8173
  options: {
7931
8174
  configFile: entryPointsGroupSettings.typeScriptConfigurationFileAbsolutePath,
8175
+ /* [ Performance Optimization ] Type checking is been executed externally and once for all files. */
8176
+ transpileOnly: false,
7932
8177
  /* [ Theory ] This option allows TypeScript to process the code extracted from a single file component.
7933
8178
  * [ Reference ] https://github.com/Microsoft/TypeScript-Vue-Starter#single-file-components */
7934
8179
  appendTsSuffixTo: [/\.vue$/u]
@@ -8058,24 +8303,6 @@ class WebpackConfigGenerator {
8058
8303
  __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: false
8059
8304
  } : null
8060
8305
  }),
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
8306
  new vue_loader_1.VueLoaderPlugin()
8080
8307
  ],
8081
8308
  optimization: {
@@ -8626,7 +8853,7 @@ const es_extensions_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions */ "
8626
8853
  var MarkupProcessingSettings__FromFile__RawValid;
8627
8854
  (function (MarkupProcessingSettings__FromFile__RawValid) {
8628
8855
  /* ━━━ Properties Specification ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
8629
- function generateLocalizationPropertiesSpecification(additionalPropertiesSpecification = {}) {
8856
+ function generateLocalizationPropertiesSpecification({ forEntryPointsGroups }) {
8630
8857
  return {
8631
8858
  newName: "localization",
8632
8859
  type: Object,
@@ -8682,28 +8909,92 @@ var MarkupProcessingSettings__FromFile__RawValid;
8682
8909
  $localeConstantValue: {
8683
8910
  newName: "localeConstantValue",
8684
8911
  type: String,
8685
- isUndefinedForbidden: false,
8912
+ undefinedForbiddenIf: {
8913
+ predicate: ({ targetPropertyDotSeparatedPath, rawData__full }) => (0, es_extensions_1.isNotUndefined)((0, es_extensions_1.getObjectPropertySafely)(rawData__full, [
8914
+ /* eslint-disable-next-line @typescript-eslint/no-magic-numbers --
8915
+ * 3 referees to last three elements in paths like
8916
+ * $projectBuilding.$markupProcessing.$entryPointsGroups.Pages.$localization.
8917
+ * $locales.english.$localeConstantValue */
8918
+ ...(0, es_extensions_1.splitString)(targetPropertyDotSeparatedPath, ".").slice(0, -3),
8919
+ "$localeConstantName"
8920
+ ])),
8921
+ descriptionForLogging: "`$projectBuilding.$markupProcessing." +
8922
+ (forEntryPointsGroups ? "$entryPointsGroups.NNN" : "$common") +
8923
+ ".$localization.$localeConstantName` is defined"
8924
+ },
8686
8925
  isNullForbidden: true,
8687
8926
  minimalCharactersCount: 1
8688
8927
  },
8689
8928
  $keyInLocalizedStringResourcesObject: {
8690
8929
  newName: "keyInLocalizedStringResourcesObject",
8691
8930
  type: String,
8692
- isUndefinedForbidden: false,
8931
+ undefinedForbiddenIf: {
8932
+ predicate: ({ targetPropertyDotSeparatedPath, rawData__full }) => (0, es_extensions_1.isNotUndefined)((0, es_extensions_1.getObjectPropertySafely)(rawData__full, [
8933
+ /* eslint-disable-next-line @typescript-eslint/no-magic-numbers --
8934
+ * 3 referees to last three elements in paths like
8935
+ * $projectBuilding.$markupProcessing.$entryPointsGroups.Pages.$localization.$locales.
8936
+ * english.$localeConstantValue */
8937
+ ...(0, es_extensions_1.splitString)(targetPropertyDotSeparatedPath, ".").slice(0, -3),
8938
+ "$stringResourcesFileRelativePath"
8939
+ ])),
8940
+ descriptionForLogging: "`$projectBuilding.$markupProcessing." +
8941
+ (forEntryPointsGroups ? "$entryPointsGroups.NNN" : "$common") +
8942
+ ".$localization.$stringResourcesFileRelativePath` is defined"
8943
+ },
8693
8944
  isNullForbidden: true,
8694
8945
  minimalCharactersCount: 1
8695
8946
  },
8696
8947
  $valueOfConstantForInterpolationToLangHTML_Attribute: {
8697
8948
  newName: "valueOfConstantForInterpolationToLangHTML_Attribute",
8698
8949
  type: String,
8699
- isUndefinedForbidden: false,
8950
+ undefinedForbiddenIf: {
8951
+ predicate: ({ targetPropertyDotSeparatedPath, rawData__full }) => (0, es_extensions_1.isNotUndefined)((0, es_extensions_1.getObjectPropertySafely)(rawData__full, [
8952
+ /* eslint-disable-next-line @typescript-eslint/no-magic-numbers --
8953
+ * 3 referees to last three elements in paths like
8954
+ * $projectBuilding.$markupProcessing.$entryPointsGroups.Pages.$localization.$locales.
8955
+ * english.$localeConstantValue */
8956
+ ...(0, es_extensions_1.splitString)(targetPropertyDotSeparatedPath, ".").slice(0, -3),
8957
+ "$nameOfConstantForInterpolationToLangHTML_Attribute"
8958
+ ])),
8959
+ descriptionForLogging: "`$projectBuilding.$markupProcessing." +
8960
+ (forEntryPointsGroups ? "$entryPointsGroups.NNN" : "$common") +
8961
+ ".$localization.$nameOfConstantForInterpolationToLangHTML_Attribute` is defined"
8962
+ },
8700
8963
  isNullForbidden: true,
8701
8964
  minimalCharactersCount: 1
8702
8965
  }
8703
8966
  }
8704
8967
  }
8705
8968
  },
8706
- ...additionalPropertiesSpecification
8969
+ ...forEntryPointsGroups ?
8970
+ {
8971
+ $excludedFilesPathsRelativeToSourcesFilesTopDirectory: {
8972
+ newName: "excludedFilesPathsRelativeToSourcesFilesTopDirectory",
8973
+ type: Array,
8974
+ isUndefinedForbidden: false,
8975
+ isNullForbidden: true,
8976
+ areUndefinedElementsForbidden: true,
8977
+ areNullElementsForbidden: true,
8978
+ element: {
8979
+ type: String,
8980
+ minimalCharactersCount: 1
8981
+ }
8982
+ }
8983
+ } :
8984
+ {
8985
+ $excludedFilesPathsRelativeRelativeToProjectRootDirectory: {
8986
+ newName: "excludedFilesPathsRelativeRelativeToProjectRootDirectory",
8987
+ type: Array,
8988
+ isUndefinedForbidden: false,
8989
+ isNullForbidden: true,
8990
+ areUndefinedElementsForbidden: true,
8991
+ areNullElementsForbidden: true,
8992
+ element: {
8993
+ type: String,
8994
+ minimalCharactersCount: 1
8995
+ }
8996
+ }
8997
+ }
8707
8998
  }
8708
8999
  };
8709
9000
  }
@@ -8716,20 +9007,7 @@ var MarkupProcessingSettings__FromFile__RawValid;
8716
9007
  isUndefinedForbidden: false,
8717
9008
  mustTransformNullToUndefined: true,
8718
9009
  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
- }),
9010
+ $localization: generateLocalizationPropertiesSpecification({ forEntryPointsGroups: false }),
8733
9011
  $buildingModeDependent: {
8734
9012
  newName: "buildingModeDependent",
8735
9013
  type: es_extensions_1.RawObjectDataProcessor.ValuesTypesIDs.associativeArray,
@@ -8927,20 +9205,7 @@ var MarkupProcessingSettings__FromFile__RawValid;
8927
9205
  isUndefinedForbidden: false,
8928
9206
  isNullForbidden: true
8929
9207
  },
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
- }),
9208
+ $localization: generateLocalizationPropertiesSpecification({ forEntryPointsGroups: true }),
8944
9209
  $HTML_Validation: {
8945
9210
  newName: "HTML_Validation",
8946
9211
  type: Object,
@@ -10446,20 +10711,18 @@ const HTML_ValidatorLocalization_english_1 = __importDefault(__webpack_require__
10446
10711
  const vnu_jar_1 = __importDefault(__webpack_require__(/*! vnu-jar */ "vnu-jar"));
10447
10712
  const DotYDA_DirectoryManager_1 = __importDefault(__webpack_require__(/*! @Utils/DotYDA_DirectoryManager */ "./Utils/DotYDA_DirectoryManager.ts"));
10448
10713
  /* ─── Generals Utils ─────────────────────────────────────────────────────────────────────────────────────────────── */
10449
- const fs_1 = __importDefault(__webpack_require__(/*! fs */ "fs"));
10450
10714
  const node_child_process_1 = __importDefault(__webpack_require__(/*! node:child_process */ "node:child_process"));
10451
10715
  const node_notifier_1 = __importDefault(__webpack_require__(/*! node-notifier */ "node-notifier"));
10452
10716
  const es_extensions_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions */ "@yamato-daiwa/es-extensions");
10453
10717
  const es_extensions_nodejs_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions-nodejs */ "@yamato-daiwa/es-extensions-nodejs");
10454
10718
  const nanoid_1 = __webpack_require__(/*! nanoid */ "nanoid");
10455
10719
  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
10720
  class HTML_Validator {
10458
10721
  /* ━━━ Fields ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
10459
10722
  static selfSingleInstance = null;
10460
10723
  /* ─── Work Variables ───────────────────────────────────────────────────────────────────────────────────────────── */
10461
10724
  /* [ Approach ]
10462
- * Although "queue" usually means the order, here is order does not matter unlike the files' uniqueness theat is why
10725
+ * Although "queue" usually means the order, here is order does not matter unlike the files' uniqueness that is why
10463
10726
  * set instead of simple Array used. */
10464
10727
  queuedFilesMetadata = new Set();
10465
10728
  consumingProjectRootDirectoryAbsolutePath;
@@ -10713,7 +10976,7 @@ class HTML_Validator {
10713
10976
  if (!(error instanceof es_extensions_nodejs_1.FileNotFoundError)) {
10714
10977
  es_extensions_1.Logger.logError({
10715
10978
  errorType: "CachedDataRetrievingFailure",
10716
- ...HTML_Validator.localization.cachedPreviousValidationsResultsDataRetrievingFailure({
10979
+ ...HTML_Validator.localization.cachedPreviousValidationsResultsDataRetrievingErrorLog({
10717
10980
  cachedValidationsResultsFileAbsolutePath: this.absolutePathOfCachedValidationsResultsFile
10718
10981
  }),
10719
10982
  occurrenceLocation: "HTML_Validator.retrieveCachedPastValidationsResultsFromFileIfItExists" +
@@ -10790,17 +11053,19 @@ class HTML_Validator {
10790
11053
  if (this.logging.validationStart) {
10791
11054
  es_extensions_1.Logger.logInfo(HTML_Validator.localization.validationStartedInfoLog);
10792
11055
  }
10793
- const validationTimeMeasuringStopwatch = new Stopwatch_1.default().startOrRestart();
10794
11056
  /* [ Theory ] If pass no files to Nu HTML Checker, it will fail with the error. */
10795
11057
  if (formattedTemporaryHTML_FilesPathsRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly.length === 0) {
10796
- HTML_Validator.reportValidationsResults(this.cachedValidationsResults);
11058
+ HTML_Validator.reportValidationsResults({
11059
+ validationsResults: this.cachedValidationsResults,
11060
+ validationPeriod__seconds: 0
11061
+ });
10797
11062
  return;
10798
11063
  }
11064
+ const validationTimeMeasuringStopwatch = new Stopwatch_1.default().startOrRestart();
10799
11065
  const rawValidationsResults = await HTML_Validator.getRawValidationsResultsFromNuHTML_Checker(formattedTemporaryHTML_FilesPathsRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly);
10800
- (0, deleteFilesFromDirectory_1.default)({
11066
+ es_extensions_nodejs_1.ImprovedFileSystem.removeFilesFromDirectory({
10801
11067
  directoryPath__absoluteOrRelative: this.absolutePathOfParentDirectoryOfTemporaryFormattedHTML_Files,
10802
- synchronously: true,
10803
- mustThrowErrorIfSomeFileCanNotBeDeleted: false
11068
+ synchronously: true
10804
11069
  });
10805
11070
  const rawValidationsResultsInspectionOutput = es_extensions_1.RawObjectDataProcessor.process(rawValidationsResults, HTML_Validator.validationsResultsSpecification);
10806
11071
  if (rawValidationsResultsInspectionOutput.isRawDataInvalid) {
@@ -10843,12 +11108,11 @@ class HTML_Validator {
10843
11108
  contentMD5Checksum: (0, es_extensions_1.getExpectedToBeNonUndefinedMapValue)(MD5_HashesOfHTML_ContentByRelativePathsOfOriginalHTML_Files, relativeToConsumingProjectRootPathOfOriginalValidHTML_Files__forwardSlashesSeparatorsOnly)
10844
11109
  });
10845
11110
  }
10846
- validationTimeMeasuringStopwatch.stop();
10847
- HTML_Validator.reportValidationsResults(this.cachedValidationsResults);
11111
+ const { seconds: validationPeriod__seconds } = validationTimeMeasuringStopwatch.stop();
11112
+ HTML_Validator.reportValidationsResults({ validationsResults: this.cachedValidationsResults, validationPeriod__seconds });
10848
11113
  this.writeCacheToFile();
10849
11114
  this.queuedFilesMetadata.clear();
10850
11115
  }
10851
- // ━━━ TODO ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
10852
11116
  static async getRawValidationsResultsFromNuHTML_Checker(targetFilesPathRelativeToConsumingProjectRoot__forwardSlashesPathSeparators) {
10853
11117
  return new Promise((resolve, reject) => {
10854
11118
  /* [ Theory ] "vnu-jar" works only with relative paths. Absolute paths will not work with any path separators. */
@@ -10949,64 +11213,74 @@ class HTML_Validator {
10949
11213
  };
10950
11214
  }
10951
11215
  /* ─── Reporting ────────────────────────────────────────────────────────────────────────────────────────────────── */
10952
- static reportValidationsResults(validationsResults) {
10953
- // TODO Alphabet order
11216
+ static reportValidationsResults({ validationsResults, validationPeriod__seconds }) {
11217
+ const filesPathsRelativeToConsumingProjectRootSortedByAlphabet__forwardPathSeparatorsOnly = Array.from(validationsResults.keys()).sort();
10954
11218
  let hasAtLeastOneFileWithInvalidHTML = false;
10955
11219
  const hasEachFileIssues = new Map();
10956
11220
  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) {
11221
+ for (const [filePathRelativeToConsumingProjectRoot__forwardPathSeparatorsOnly, { issues }] of validationsResults.entries()) {
11222
+ const hasCurrentFileHTML_ValidityIssues = issues.length > 0;
11223
+ hasEachFileIssues.set(filePathRelativeToConsumingProjectRoot__forwardPathSeparatorsOnly, hasCurrentFileHTML_ValidityIssues);
11224
+ if (hasCurrentFileHTML_ValidityIssues) {
10960
11225
  hasAtLeastOneFileWithInvalidHTML = true;
10961
- formattedIssuesForEachFile.set(fileRelativePath__forwardPathSeparatorsOnly, HTML_Validator.formatValidationResultForSingleFile(issues));
11226
+ formattedIssuesForEachFile.set(filePathRelativeToConsumingProjectRoot__forwardPathSeparatorsOnly, HTML_Validator.formatValidationResultForSingleFile(issues));
10962
11227
  }
10963
11228
  }
10964
11229
  const summary = `${(0, es_extensions_1.surroundLabelByOrnament)({
10965
- label: " Summary ",
11230
+ label: HTML_Validator.localization.validityIssuesDetectedErrorLog.headings.summary,
10966
11231
  ornamentPatten: "━",
11232
+ characterForIndentationAroundLabel: " ",
10967
11233
  prependedPartCharactersCount: 3,
10968
11234
  totalCharactersCount: HTML_Validator.DISPLAYING_MAXIMAL_COLUMNS_COUNT_IN_LOG
10969
11235
  })}\n` +
10970
- Array.from(hasEachFileIssues.entries()).
10971
- map(([fileRelativePath__forwardPathSeparatorsOnly, hasAtLeastOneIssue]) => `${hasAtLeastOneIssue ? "❌" : "✅"} ${fileRelativePath__forwardPathSeparatorsOnly}`).
11236
+ filesPathsRelativeToConsumingProjectRootSortedByAlphabet__forwardPathSeparatorsOnly.
11237
+ map((fileRelativePath__forwardPathSeparatorsOnly) => `${(0, es_extensions_1.getExpectedToBeNonUndefinedMapValue)(hasEachFileIssues, fileRelativePath__forwardPathSeparatorsOnly) ?
11238
+ "❌" : "✅"} ` +
11239
+ fileRelativePath__forwardPathSeparatorsOnly).
10972
11240
  join("\n");
10973
11241
  const detailedReport = `${(0, es_extensions_1.surroundLabelByOrnament)({
10974
- label: " Details ",
11242
+ label: HTML_Validator.localization.validityIssuesDetectedErrorLog.headings.details,
10975
11243
  ornamentPatten: "━",
11244
+ characterForIndentationAroundLabel: " ",
10976
11245
  prependedPartCharactersCount: 3,
10977
11246
  totalCharactersCount: HTML_Validator.DISPLAYING_MAXIMAL_COLUMNS_COUNT_IN_LOG
10978
11247
  })}\n` +
10979
- Array.from(formattedIssuesForEachFile.entries()).
10980
- map(([fileRelativePath__forwardPathSeparatorsOnly, formattedIssues]) => `${(0, es_extensions_1.surroundLabelByOrnament)({
10981
- label: ` ${fileRelativePath__forwardPathSeparatorsOnly} `,
11248
+ filesPathsRelativeToConsumingProjectRootSortedByAlphabet__forwardPathSeparatorsOnly.
11249
+ filter((fileRelativePath__forwardPathSeparatorsOnly) => formattedIssuesForEachFile.has(fileRelativePath__forwardPathSeparatorsOnly)).
11250
+ map((fileRelativePath__forwardPathSeparatorsOnly) => `${(0, es_extensions_1.surroundLabelByOrnament)({
11251
+ label: fileRelativePath__forwardPathSeparatorsOnly,
11252
+ characterForIndentationAroundLabel: "",
10982
11253
  ornamentPatten: "─",
10983
11254
  prependedPartCharactersCount: 3,
10984
11255
  totalCharactersCount: HTML_Validator.DISPLAYING_MAXIMAL_COLUMNS_COUNT_IN_LOG
10985
11256
  })}\n` +
10986
- formattedIssues).
11257
+ (0, es_extensions_1.getExpectedToBeNonUndefinedMapValue)(formattedIssuesForEachFile, fileRelativePath__forwardPathSeparatorsOnly)).
10987
11258
  join("\n");
10988
11259
  if (hasAtLeastOneFileWithInvalidHTML) {
10989
11260
  es_extensions_1.Logger.logErrorLikeMessage({
10990
- title: "HTML Validation, Issue(s) Detected",
10991
- description: `${summary}\n\n${detailedReport}`
11261
+ title: HTML_Validator.localization.validityIssuesDetectedErrorLog.title,
11262
+ description: `${summary}\n\n` +
11263
+ `${detailedReport}\n` +
11264
+ HTML_Validator.localization.validityIssuesDetectedErrorLog.generateSecondsElapsedSentence({ validationPeriod__seconds })
10992
11265
  });
10993
- node_notifier_1.default.notify(HTML_Validator.localization.issuesFoundToastNotification);
11266
+ node_notifier_1.default.notify(HTML_Validator.localization.validityIssuesDetectedToastNotification);
10994
11267
  return;
10995
11268
  }
10996
11269
  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()).
11270
+ title: HTML_Validator.localization.validationFinishedWithoutIssuesSuccessLog.title,
11271
+ description: HTML_Validator.localization.validationFinishedWithoutIssuesSuccessLog.generateDescription({
11272
+ validationPeriod__seconds,
11273
+ preFormattedErrorsMessages: Array.from(validationsResults.keys()).
11001
11274
  map((fileRelativePath__forwardPathSeparatorsOnly) => `● ${fileRelativePath__forwardPathSeparatorsOnly}`).
11002
11275
  join("\n")
11276
+ })
11003
11277
  });
11004
11278
  }
11005
11279
  /* ─── Formatting ───────────────────────────────────────────────────────────────────────────────────────────────── */
11006
11280
  static formatValidationResultForSingleFile(issues) {
11007
11281
  const formattedIssues = [];
11008
11282
  for (const [index, issue] of issues.entries()) {
11009
- /* [ Desired output example ]
11283
+ /* [ Desired Output Example ]
11010
11284
 
11011
11285
  === Issue No. 5 =================================================================================================
11012
11286
  <div class="NewsFeed"></div><a><span></span><a>Foo<div></div><a>bar</a></a>
@@ -11022,6 +11296,7 @@ class HTML_Validator {
11022
11296
  `${(0, es_extensions_1.surroundLabelByOrnament)({
11023
11297
  label: HTML_Validator.localization.generateIssueNumberLabel({ issueNumber: index + 1 }),
11024
11298
  ornamentPatten: "┄",
11299
+ characterForIndentationAroundLabel: " ",
11025
11300
  prependedPartCharactersCount: 3,
11026
11301
  totalCharactersCount: HTML_Validator.DISPLAYING_MAXIMAL_COLUMNS_COUNT_IN_LOG
11027
11302
  })}\n`,
@@ -11040,13 +11315,11 @@ class HTML_Validator {
11040
11315
  return HTML_Validator.localization.issuesTypesTitles.grossViolation;
11041
11316
  case HTML_Validator.NormalizedValidationsResults.Issue.Types.info:
11042
11317
  return HTML_Validator.localization.issuesTypesTitles.recommendationDisregard;
11043
- default:
11044
- return HTML_Validator.localization.issuesTypesTitles.other;
11045
11318
  }
11046
11319
  })()})\n`,
11047
- ...((0, es_extensions_1.isNotUndefined)(issue.lineNumber__numerationFrom1) &&
11320
+ ...(0, es_extensions_1.isNotUndefined)(issue.lineNumber__numerationFrom1) &&
11048
11321
  (0, es_extensions_1.isNotUndefined)(issue.startingColumnNumber__numerationFrom1) &&
11049
- (0, es_extensions_1.isNotUndefined)(issue.endingColumnNumber__numerationFrom1)) ?
11322
+ (0, es_extensions_1.isNotUndefined)(issue.endingColumnNumber__numerationFrom1) ?
11050
11323
  [
11051
11324
  HTML_Validator.localization.generateIssueOccurrenceLocationIndication({
11052
11325
  lineNumber: issue.lineNumber__numerationFrom1,
@@ -11063,21 +11336,25 @@ class HTML_Validator {
11063
11336
  static computeAbsolutePathOfCachedValidationsResultsFileActualForCurrentProjectBuildingMode({ parentDirectoryAbsolutePath, projectBuildingSelectiveExecutionID, consumingProjectBuildingMode }) {
11064
11337
  return es_extensions_nodejs_1.ImprovedPath.joinPathSegments([
11065
11338
  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`
11339
+ [
11340
+ `${HTML_Validator.CACHED_VALIDATIONS_RESULTS_FILE_CONSTANT_NAME_PART}.`,
11341
+ ...(0, es_extensions_1.isUndefined)(projectBuildingSelectiveExecutionID) ? [] : [`${projectBuildingSelectiveExecutionID}.`],
11342
+ `${(0, es_extensions_1.toLowerCamelCase)(consumingProjectBuildingMode)}.json`
11343
+ ].join(".")
11067
11344
  ]);
11068
11345
  }
11069
11346
  writeCacheToFile() {
11070
- es_extensions_nodejs_1.ImprovedFileSystem.createDirectory({
11071
- targetPath: this.absolutePathOfParentDirectoryOfCachedValidationsResultsFile,
11072
- mustThrowErrorIfTargetDirectoryExists: false,
11073
- synchronously: true
11074
- });
11347
+ /* [ Maintainability ] Keep this variable for easier debugging. */
11075
11348
  const cachedValidationsResultsFileContent = Array.from(this.cachedValidationsResults.entries()).
11076
11349
  reduce((accumulatingValue, [filePathRelativeToConsumingProjectRootDirectory, cachedValidationRawResultsForSpecificFile]) => {
11077
11350
  accumulatingValue[filePathRelativeToConsumingProjectRootDirectory] = cachedValidationRawResultsForSpecificFile;
11078
11351
  return accumulatingValue;
11079
11352
  }, {});
11080
- fs_1.default.writeFileSync(this.absolutePathOfCachedValidationsResultsFile, JSON.stringify(cachedValidationsResultsFileContent, null, 2));
11353
+ es_extensions_nodejs_1.ImprovedFileSystem.writeFileToPossiblyNotExistingDirectory({
11354
+ filePath: this.absolutePathOfParentDirectoryOfCachedValidationsResultsFile,
11355
+ content: JSON.stringify(cachedValidationsResultsFileContent, null, 2),
11356
+ synchronously: true
11357
+ });
11081
11358
  }
11082
11359
  /* ━━━ Routines ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
11083
11360
  static getExpectedToBeInitializedSelfSingleInstance() {
@@ -11101,17 +11378,15 @@ class HTML_Validator {
11101
11378
  (function (Types) {
11102
11379
  Types["info"] = "info";
11103
11380
  Types["error"] = "error";
11104
- Types["nonDocumentError"] = "non-document-error";
11105
- Types["networkError"] = "network-error";
11106
11381
  })(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 = {}));
11382
+ let SubTypes;
11383
+ (function (SubTypes) {
11384
+ SubTypes["warning"] = "warning";
11385
+ SubTypes["fatal"] = "fatal";
11386
+ SubTypes["io"] = "io";
11387
+ SubTypes["schema"] = "schema";
11388
+ SubTypes["internal"] = "internal";
11389
+ })(SubTypes = Issue.SubTypes || (Issue.SubTypes = {}));
11115
11390
  })(Issue = NormalizedValidationsResults.Issue || (NormalizedValidationsResults.Issue = {}));
11116
11391
  })(NormalizedValidationsResults = HTML_Validator.NormalizedValidationsResults || (HTML_Validator.NormalizedValidationsResults = {}));
11117
11392
  })(HTML_Validator || (HTML_Validator = {}));
@@ -11129,7 +11404,7 @@ exports["default"] = HTML_Validator;
11129
11404
 
11130
11405
  Object.defineProperty(exports, "__esModule", ({ value: true }));
11131
11406
  const HTML_ValidatorLocalization__english = {
11132
- cachedPreviousValidationsResultsDataRetrievingFailure: ({ cachedValidationsResultsFileAbsolutePath }) => ({
11407
+ cachedPreviousValidationsResultsDataRetrievingErrorLog: ({ cachedValidationsResultsFileAbsolutePath }) => ({
11133
11408
  title: "Cached Previous Validations Data Retrieving Failure",
11134
11409
  description: "Unable to read and/or parse the existing HTML validation cache file " +
11135
11410
  `"${cachedValidationsResultsFileAbsolutePath}".`
@@ -11138,12 +11413,27 @@ const HTML_ValidatorLocalization__english = {
11138
11413
  title: "HTML Code Validation Started",
11139
11414
  description: "Validating the output HTML files..."
11140
11415
  },
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."
11416
+ validityIssuesDetectedErrorLog: {
11417
+ title: "HTML Validation, Issue(s) Detected",
11418
+ headings: {
11419
+ summary: "Summary",
11420
+ details: "Details"
11421
+ },
11422
+ generateSecondsElapsedSentence: ({ validationPeriod__seconds }) => `Seconds elapsed: ${validationPeriod__seconds}`
11145
11423
  },
11146
- generateIssueNumberLabel: ({ issueNumber }) => ` Issue No. ${issueNumber} `,
11424
+ validityIssuesDetectedToastNotification: {
11425
+ title: "HTML Validation, Issue(s) Detected",
11426
+ message: "W3C rules violations and / or recommendations neglect detected. " +
11427
+ "Check the console for the details."
11428
+ },
11429
+ validationFinishedWithoutIssuesSuccessLog: {
11430
+ title: "HTML Validation, All Valid",
11431
+ generateDescription: ({ validationPeriod__seconds, preFormattedErrorsMessages }) => "All HTML files (except excluded ones if any) contains valid HTML. " +
11432
+ "The following files has been checked:\n" +
11433
+ `${preFormattedErrorsMessages}\n` +
11434
+ `Seconds elapsed: ${validationPeriod__seconds}`
11435
+ },
11436
+ generateIssueNumberLabel: ({ issueNumber }) => `Issue No. ${issueNumber}`,
11147
11437
  generateIssueOccurrenceLocationIndication: ({ lineNumber, startingColumnNumber, lastColumnNumber }) => `At line ${lineNumber}, columns ${startingColumnNumber}-${lastColumnNumber}`,
11148
11438
  issuesTypesTitles: {
11149
11439
  grossViolation: "Gross violation",
@@ -12102,7 +12392,6 @@ const SourceCodeProcessingRawSettingsNormalizer_1 = __importDefault(__webpack_re
12102
12392
  const RoutingSettingsNormalizer_1 = __importDefault(__webpack_require__(/*! @MarkupProcessing/RawSettingsNormalizer/RoutingSettingsNormalizer */ "./ProjectBuilding/SourceCodeProcessing/Markup/RawSettingsNormalizer/RoutingSettingsNormalizer.ts"));
12103
12393
  /* ─── Utils ──────────────────────────────────────────────────────────────────────────────────────────────────────── */
12104
12394
  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
12395
  const isSubdirectory_1 = __importDefault(__webpack_require__(/*! @UtilsIncubator/NodeJS/isSubdirectory */ "./UtilsIncubator/NodeJS/isSubdirectory.ts"));
12107
12396
  const es_extensions_nodejs_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions-nodejs */ "@yamato-daiwa/es-extensions-nodejs");
12108
12397
  /* ─── Localization ───────────────────────────────────────────────────────────────────────────────────────────────── */
@@ -12148,7 +12437,6 @@ class MarkupProcessingRawSettingsNormalizer extends SourceCodeProcessingRawSetti
12148
12437
  pagesVariations: dataHoldingSelfInstance.normalizeStaticPreviewPagesVariationsSettings(),
12149
12438
  importsFromStaticDataFiles: dataHoldingSelfInstance.normalizeImportsFromStaticDataFiles()
12150
12439
  },
12151
- /* TODO Replace value of `absolutePathsOfSectioningToCache`. https://trello.com/c/RJfFF7oh */
12152
12440
  ...(0, es_extensions_1.isNotUndefined)(markupProcessingSettings__fromFile__rawValid.routing) ? {
12153
12441
  routing: {
12154
12442
  variable: markupProcessingSettings__fromFile__rawValid.routing.variable,
@@ -12525,7 +12813,7 @@ class MarkupProcessingRawSettingsNormalizer extends SourceCodeProcessingRawSetti
12525
12813
  excludedFilesPathsRelativeToSourcesFilesTopDirectory?.
12526
12814
  map((excludedFilePathRelativeRelativeToSourcesFileTopDirectory) => es_extensions_nodejs_1.ImprovedPath.joinPathSegments([sourceFilesTopDirectoryAbsolutePath, excludedFilePathRelativeRelativeToSourcesFileTopDirectory], { alwaysForwardSlashSeparators: true })) ??
12527
12815
  []).
12528
- concat(Array.from((0, removeMultipleElementsFromSetByPredicate_1.default)({
12816
+ concat(Array.from((0, es_extensions_1.removeMultipleElementsFromSetByPredicate)({
12529
12817
  targetSet: this.unusedCommonlyExcludedFromLocalizationEntryPointsSourceFilesAbsolutePaths,
12530
12818
  predicate: (commonlyExcludedFromLocalizationEntryPointsSourceFileAbsolutePath) => (0, isSubdirectory_1.default)({
12531
12819
  whichPath: commonlyExcludedFromLocalizationEntryPointsSourceFileAbsolutePath,
@@ -12624,7 +12912,7 @@ const markupProcessingRawSettingsNormalizerLocalization__english = {
12624
12912
  `paths has not been specified for the "${consumingProjectBuildingMode}" building mode. ` +
12625
12913
  "The resources references will be resolved to relative paths instead. " +
12626
12914
  "If you wish these references be resolved to relative path, set \"$projectBuilding.$markupProcessing.$common." +
12627
- "$buildingModeDependent.[PROJECT_BUILDING_MODE].$mustResolveResourceReferencesToRelativePaths\" " +
12915
+ "$buildingModeDependent.[PROJECT_BUILDING_MODE].$mustResolveResourcesPointersToRelativePaths\" " +
12628
12916
  `to true for the "${consumingProjectBuildingMode}" building mode.`
12629
12917
  }),
12630
12918
  generateStaticPreviewStateDependentPagesVariationsSpecificationFileReadingFailedMessage: (templateVariables) => "Failed to read the static preview state dependent pages variations specification file at " +
@@ -15843,6 +16131,21 @@ class VinylFileClass extends vinyl_1.default {
15843
16131
  exports["default"] = VinylFileClass;
15844
16132
 
15845
16133
 
16134
+ /***/ }),
16135
+
16136
+ /***/ "./Utils/VoidPromiseReturningFunction.ts":
16137
+ /*!***********************************************!*\
16138
+ !*** ./Utils/VoidPromiseReturningFunction.ts ***!
16139
+ \***********************************************/
16140
+ /***/ ((__unused_webpack_module, exports) => {
16141
+
16142
+
16143
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
16144
+ exports.voidPromiseReturningFunction = void 0;
16145
+ const voidPromiseReturningFunction = async () => Promise.resolve();
16146
+ exports.voidPromiseReturningFunction = voidPromiseReturningFunction;
16147
+
16148
+
15846
16149
  /***/ }),
15847
16150
 
15848
16151
  /***/ "./Utils/createImmediatelyEndingEmptyStream.ts":
@@ -15882,59 +16185,6 @@ function extractStringifiedContentFromVinylFile(targetFile) {
15882
16185
  }
15883
16186
 
15884
16187
 
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
16188
  /***/ }),
15939
16189
 
15940
16190
  /***/ "./UtilsIncubator/NodeJS/isSubdirectory.ts":
@@ -15956,32 +16206,6 @@ function isSubdirectory({ whichPath, ofWhichPath }) {
15956
16206
  }
15957
16207
 
15958
16208
 
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
16209
  /***/ }),
15986
16210
 
15987
16211
  /***/ "./UtilsIncubator/Stopwatch.ts":
@@ -16112,6 +16336,16 @@ module.exports = require("browser-sync");
16112
16336
 
16113
16337
  /***/ }),
16114
16338
 
16339
+ /***/ "child_process":
16340
+ /*!********************************!*\
16341
+ !*** external "child_process" ***!
16342
+ \********************************/
16343
+ /***/ ((module) => {
16344
+
16345
+ module.exports = require("child_process");
16346
+
16347
+ /***/ }),
16348
+
16115
16349
  /***/ "cssnano":
16116
16350
  /*!**************************!*\
16117
16351
  !*** external "cssnano" ***!
@@ -16142,16 +16376,6 @@ module.exports = require("eslint");
16142
16376
 
16143
16377
  /***/ }),
16144
16378
 
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
16379
  /***/ "fs":
16156
16380
  /*!*********************!*\
16157
16381
  !*** external "fs" ***!
@@ -16162,16 +16386,6 @@ module.exports = require("fs");
16162
16386
 
16163
16387
  /***/ }),
16164
16388
 
16165
- /***/ "fs/promises":
16166
- /*!******************************!*\
16167
- !*** external "fs/promises" ***!
16168
- \******************************/
16169
- /***/ ((module) => {
16170
-
16171
- module.exports = require("fs/promises");
16172
-
16173
- /***/ }),
16174
-
16175
16389
  /***/ "gulp":
16176
16390
  /*!***********************!*\
16177
16391
  !*** 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.8.0-alpha.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.3",
24
+ "@typescript-eslint/eslint-plugin": "8.39.0",
25
+ "@typescript-eslint/parser": "8.39.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.9.0",
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",
35
- "dotenv": "16.5.0",
36
- "eslint": "9.28.0",
37
- "eslint-plugin-import": "2.31.0",
38
- "eslint-plugin-n": "17.19.0",
34
+ "cssnano": "7.1.0",
35
+ "dotenv": "17.2.1",
36
+ "eslint": "9.33.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",
@@ -104,7 +103,7 @@
104
103
  "@types/webpack-stream": "3.2.15",
105
104
  "eslint-webpack-plugin": "4.2.0",
106
105
  "ts-node": "10.9.2",
107
- "typescript": "5.8.3",
106
+ "typescript": "5.9.2",
108
107
  "webpack-cli": "6.0.1"
109
108
  },
110
109
  "scripts": {