@yamato-daiwa/automation 0.7.0-alpha.1 → 0.7.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/EntryPoint.js +319 -185
- package/package.json +7 -4
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.
|
|
37
|
+
module.exports = /*#__PURE__*/JSON.parse('{"name":"@yamato-daiwa/automation","version":"0.7.0-alpha.3","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":"3.1.0","@typescript-eslint/eslint-plugin":"8.32.0","@typescript-eslint/parser":"8.32.0","@vue/compiler-sfc":"3.5.13","@webdiscus/pug-loader":"2.11.1","@yamato-daiwa/es-extensions":"1.8.0-alpha.9","@yamato-daiwa/es-extensions-nodejs":"1.8.0-alpha.9","@yamato-daiwa/style_guides":"0.6.8","autoprefixer":"10.4.21","browser-sync":"3.0.4","css-loader":"7.1.2","cssnano":"7.0.7","dotenv":"16.5.0","eslint":"9.26.0","eslint-plugin-import":"2.31.0","eslint-plugin-n":"17.17.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":"8.0.0","probe-image-size":"7.2.3","pug-lint":"2.7.0","pug3-ast-loader":"0.0.0","puppeteer":"24.8.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.8","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.17","@types/node-notifier":"8.0.5","@types/pa11y":"5.3.7","@types/probe-image-size":"7.2.5","@types/pug":"2.0.10","@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
|
|
|
@@ -73,26 +73,28 @@ var ApplicationConsoleLineInterface;
|
|
|
73
73
|
options: {
|
|
74
74
|
mode: {
|
|
75
75
|
newName: "projectBuildingMode",
|
|
76
|
-
description: "The project building mode; affects to presence or absence of incremental building, " +
|
|
77
|
-
"browser live reloading, code minification etc.",
|
|
78
|
-
type: es_extensions_nodejs_1.ConsoleCommandsParser.ParametersTypes.string,
|
|
79
|
-
required: true,
|
|
80
76
|
shortcut: "m",
|
|
81
|
-
|
|
82
|
-
},
|
|
83
|
-
configurationFile: {
|
|
84
|
-
description: "Custom name of the configuration file (the default one is " +
|
|
85
|
-
`"${CONFIGURATION_FILE_DEFAULT_NAME_WITH_EXTENSION_1.default}")`,
|
|
86
|
-
newName: "customConfigurationFileName__possiblyWithoutExtension",
|
|
77
|
+
required: true,
|
|
87
78
|
type: es_extensions_nodejs_1.ConsoleCommandsParser.ParametersTypes.string,
|
|
88
|
-
|
|
79
|
+
allowedAlternatives: Object.values(ConsumingProjectBuildingModes_1.default),
|
|
80
|
+
description: "The project building mode; affects to presence or absence of incremental building, " +
|
|
81
|
+
"browser live reloading, code minification etc."
|
|
89
82
|
},
|
|
90
83
|
selectiveExecution: {
|
|
91
84
|
newName: "selectiveExecutionID",
|
|
85
|
+
shortcut: "s",
|
|
86
|
+
required: false,
|
|
87
|
+
type: es_extensions_nodejs_1.ConsoleCommandsParser.ParametersTypes.string,
|
|
92
88
|
description: "Allows to specify the selection of tasks, entry points groups, etc. by selective execution ID, " +
|
|
93
89
|
"herewith the desired selective execution must be preliminarily defined in the configuration file.",
|
|
90
|
+
},
|
|
91
|
+
configurationFile: {
|
|
92
|
+
newName: "customConfigurationFileName__possiblyWithoutExtension",
|
|
93
|
+
shortcut: "c",
|
|
94
|
+
required: false,
|
|
94
95
|
type: es_extensions_nodejs_1.ConsoleCommandsParser.ParametersTypes.string,
|
|
95
|
-
|
|
96
|
+
description: "Custom name of the configuration file (the default one is " +
|
|
97
|
+
`"${CONFIGURATION_FILE_DEFAULT_NAME_WITH_EXTENSION_1.default}")`
|
|
96
98
|
}
|
|
97
99
|
}
|
|
98
100
|
},
|
|
@@ -4786,8 +4788,10 @@ class FilesMasterWatcher {
|
|
|
4786
4788
|
FilesMasterWatcher.passiveWatchers.add(passiveWatcher);
|
|
4787
4789
|
}
|
|
4788
4790
|
/* [ Chokidar theory ] While the globs are absolute path based, the second parameter will be the absolute path too. */
|
|
4789
|
-
static onAnyChokidarEvent(chokidarEventName,
|
|
4791
|
+
static onAnyChokidarEvent(chokidarEventName, targetFileOrDirectoryAbsolutePath__operatingSystemDependentPathSeparators) {
|
|
4790
4792
|
let eventName;
|
|
4793
|
+
/* eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check --
|
|
4794
|
+
* Only operations with files are actual in this case. */
|
|
4791
4795
|
switch (chokidarEventName) {
|
|
4792
4796
|
case ChokidarSpecialist_1.default.EventsNames.fileAdded: {
|
|
4793
4797
|
eventName = FilesMasterWatcher.EventsNames.fileAdded;
|
|
@@ -4806,7 +4810,7 @@ class FilesMasterWatcher {
|
|
|
4806
4810
|
}
|
|
4807
4811
|
}
|
|
4808
4812
|
const targetFileAbsolutePath__forwardSlashesPathSeparators = es_extensions_nodejs_1.ImprovedPath.
|
|
4809
|
-
replacePathSeparatorsToForwardSlashes(
|
|
4813
|
+
replacePathSeparatorsToForwardSlashes(targetFileOrDirectoryAbsolutePath__operatingSystemDependentPathSeparators);
|
|
4810
4814
|
for (const passiveWatcher of FilesMasterWatcher.passiveWatchers) {
|
|
4811
4815
|
if (passiveWatcher.isRelatedFileAbsolutePath(targetFileAbsolutePath__forwardSlashesPathSeparators)) {
|
|
4812
4816
|
passiveWatcher.notifyAboutRelatedFileStateChange(targetFileAbsolutePath__forwardSlashesPathSeparators, eventName);
|
|
@@ -9141,7 +9145,7 @@ var MarkupProcessingSettings__FromFile__RawValid;
|
|
|
9141
9145
|
}
|
|
9142
9146
|
}
|
|
9143
9147
|
},
|
|
9144
|
-
|
|
9148
|
+
$importsFromStaticDataFiles: {
|
|
9145
9149
|
newName: "importsFromStaticDataFiles",
|
|
9146
9150
|
preValidationModifications: es_extensions_1.nullToUndefined,
|
|
9147
9151
|
type: Array,
|
|
@@ -9149,13 +9153,13 @@ var MarkupProcessingSettings__FromFile__RawValid;
|
|
|
9149
9153
|
element: {
|
|
9150
9154
|
type: Object,
|
|
9151
9155
|
properties: {
|
|
9152
|
-
|
|
9156
|
+
$importedVariableName: {
|
|
9153
9157
|
newName: "importedVariableName",
|
|
9154
9158
|
type: String,
|
|
9155
9159
|
required: true,
|
|
9156
9160
|
minimalCharactersCount: 1
|
|
9157
9161
|
},
|
|
9158
|
-
|
|
9162
|
+
$fileRelativePath: {
|
|
9159
9163
|
newName: "fileRelativePath",
|
|
9160
9164
|
type: String,
|
|
9161
9165
|
required: true,
|
|
@@ -9166,6 +9170,7 @@ var MarkupProcessingSettings__FromFile__RawValid;
|
|
|
9166
9170
|
}
|
|
9167
9171
|
}
|
|
9168
9172
|
},
|
|
9173
|
+
/* ━━━ Linting ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
|
|
9169
9174
|
$linting: {
|
|
9170
9175
|
newName: "linting",
|
|
9171
9176
|
preValidationModifications: es_extensions_1.nullToUndefined,
|
|
@@ -9173,6 +9178,7 @@ var MarkupProcessingSettings__FromFile__RawValid;
|
|
|
9173
9178
|
required: false,
|
|
9174
9179
|
properties: lintingSettingsLocalizedPropertiesSpecification
|
|
9175
9180
|
},
|
|
9181
|
+
/* ━━━ Importing From TypeScript ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
|
|
9176
9182
|
$importingFromTypeScript: {
|
|
9177
9183
|
newName: "importingFromTypeScript",
|
|
9178
9184
|
preValidationModifications: es_extensions_1.nullToUndefined,
|
|
@@ -9205,8 +9211,8 @@ var MarkupProcessingSettings__FromFile__RawValid;
|
|
|
9205
9211
|
}
|
|
9206
9212
|
}
|
|
9207
9213
|
},
|
|
9208
|
-
|
|
9209
|
-
|
|
9214
|
+
$routing: {
|
|
9215
|
+
newName: "routing",
|
|
9210
9216
|
type: Object,
|
|
9211
9217
|
required: false,
|
|
9212
9218
|
preValidationModifications: es_extensions_1.nullToUndefined,
|
|
@@ -9239,6 +9245,7 @@ var MarkupProcessingSettings__FromFile__RawValid;
|
|
|
9239
9245
|
sourceCodeProcessingSettingsGenericPropertiesLocalization,
|
|
9240
9246
|
localizedConsumingProjectLocalizedPreDefinedBuildingModes,
|
|
9241
9247
|
entryPointsGroupBuildingModeIndependentSpecificSettingsLocalizedPropertiesSpecification: {
|
|
9248
|
+
// ━━━ TODO ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
9242
9249
|
[markupProcessingPropertiesLocalization.entryPointsGroups.outputFormat.KEY]: {
|
|
9243
9250
|
newName: "outputFormat",
|
|
9244
9251
|
type: String,
|
|
@@ -9549,7 +9556,6 @@ const MarkupProcessingSharedState_1 = __importDefault(__webpack_require__(/*! @M
|
|
|
9549
9556
|
const gulp_1 = __importDefault(__webpack_require__(/*! gulp */ "gulp"));
|
|
9550
9557
|
const gulp_data_1 = __importDefault(__webpack_require__(/*! gulp-data */ "gulp-data"));
|
|
9551
9558
|
const gulp_pug_1 = __importDefault(__webpack_require__(/*! gulp-pug */ "gulp-pug"));
|
|
9552
|
-
const js_beautify_1 = __importDefault(__webpack_require__(/*! js-beautify */ "js-beautify"));
|
|
9553
9559
|
/* ─── Third-party Solutions Specialists ──────────────────────────────────────────────────────────────────────────── */
|
|
9554
9560
|
const PugPreProcessorSpecialist_1 = __importDefault(__webpack_require__(/*! @ThirdPartySolutionsSpecialists/PugPreProcessorSpecialist */ "./ThirdPartySolutionsSpecialists/PugPreProcessorSpecialist.ts"));
|
|
9555
9561
|
/* ─── Applied Utils ──────────────────────────────────────────────────────────────────────────────────────────────── */
|
|
@@ -9565,6 +9571,8 @@ const AccessibilityInspector_1 = __importDefault(__webpack_require__(/*! @Markup
|
|
|
9565
9571
|
const ImagesAspectRatioAffixer_1 = __importDefault(__webpack_require__(/*! @MarkupProcessing/Plugins/ImagesAspectRatioAffixer */ "./ProjectBuilding/SourceCodeProcessing/Markup/Plugins/ImagesAspectRatioAffixer.ts"));
|
|
9566
9572
|
const SpacesNormalizerForCJK_Text_1 = __importDefault(__webpack_require__(/*! @MarkupProcessing/Plugins/SpacesNormalizerForCJK_Text */ "./ProjectBuilding/SourceCodeProcessing/Markup/Plugins/SpacesNormalizerForCJK_Text.ts"));
|
|
9567
9573
|
const CodeListingPugFilter_1 = __importDefault(__webpack_require__(/*! @MarkupProcessing/PugFilters/CodeListingPugFilter */ "./ProjectBuilding/SourceCodeProcessing/Markup/PugFilters/CodeListingPugFilter.ts"));
|
|
9574
|
+
const js_beautify_1 = __importDefault(__webpack_require__(/*! js-beautify */ "js-beautify"));
|
|
9575
|
+
const htmlnano_1 = __importDefault(__webpack_require__(/*! htmlnano */ "htmlnano"));
|
|
9568
9576
|
/* ─── General Utils ──────────────────────────────────────────────────────────────────────────────────────────────── */
|
|
9569
9577
|
const es_extensions_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions */ "@yamato-daiwa/es-extensions");
|
|
9570
9578
|
const es_extensions_nodejs_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions-nodejs */ "@yamato-daiwa/es-extensions-nodejs");
|
|
@@ -9674,18 +9682,14 @@ class MarkupProcessor extends GulpStreamsBasedTaskExecutor_1.default {
|
|
|
9674
9682
|
return () => gulp_1.default.
|
|
9675
9683
|
src(entryPointsSourceFilesAbsolutePaths).
|
|
9676
9684
|
pipe(this.handleErrorIfItWillOccur()).
|
|
9677
|
-
pipe(GulpStreamModifier_1.default.
|
|
9678
|
-
|
|
9685
|
+
pipe(GulpStreamModifier_1.default.modifyForSingleVinylFileSubtype({
|
|
9686
|
+
onStreamStartedEventHandler: this.replacePlainVinylFileWithMarkupEntryPointVinylFile.bind(this)
|
|
9679
9687
|
})).
|
|
9680
|
-
pipe(GulpStreamModifier_1.default.
|
|
9681
|
-
|
|
9682
|
-
[MarkupEntryPointVinylFile_1.default, this.injectImportsFromTypeScriptIfAnyToMarkupFile.bind(this)]
|
|
9683
|
-
])
|
|
9688
|
+
pipe(GulpStreamModifier_1.default.modifyForSingleVinylFileSubtype({
|
|
9689
|
+
onStreamStartedEventHandler: this.injectImportsFromTypeScriptIfAnyToMarkupFile.bind(this)
|
|
9684
9690
|
})).
|
|
9685
|
-
pipe(GulpStreamModifier_1.default.
|
|
9686
|
-
|
|
9687
|
-
[MarkupEntryPointVinylFile_1.default, MarkupProcessor.managePageVariations]
|
|
9688
|
-
])
|
|
9691
|
+
pipe(GulpStreamModifier_1.default.modifyForSingleVinylFileSubtype({
|
|
9692
|
+
onStreamStartedEventHandler: MarkupProcessor.managePageVariations
|
|
9689
9693
|
})).
|
|
9690
9694
|
pipe(this.logProcessedFilesIfMust()).
|
|
9691
9695
|
pipe((0, gulp_data_1.default)((vinylFile) => ({
|
|
@@ -9710,15 +9714,11 @@ class MarkupProcessor extends GulpStreamsBasedTaskExecutor_1.default {
|
|
|
9710
9714
|
"code_listing--yda": CodeListingPugFilter_1.default.apply
|
|
9711
9715
|
}
|
|
9712
9716
|
})).
|
|
9713
|
-
pipe(GulpStreamModifier_1.default.
|
|
9714
|
-
|
|
9715
|
-
[MarkupEntryPointVinylFile_1.default, MarkupProcessor.formatOrMinifyContentIfMust]
|
|
9716
|
-
])
|
|
9717
|
+
pipe(GulpStreamModifier_1.default.modifyForSingleVinylFileSubtype({
|
|
9718
|
+
onStreamStartedEventHandler: MarkupProcessor.formatOrMinifyContentIfMust
|
|
9717
9719
|
})).
|
|
9718
|
-
pipe(GulpStreamModifier_1.default.
|
|
9719
|
-
|
|
9720
|
-
[MarkupEntryPointVinylFile_1.default, this.onOutputHTML_FileReady.bind(this)]
|
|
9721
|
-
])
|
|
9720
|
+
pipe(GulpStreamModifier_1.default.modifyForSingleVinylFileSubtype({
|
|
9721
|
+
onStreamStartedEventHandler: this.onOutputHTML_FileReady.bind(this)
|
|
9722
9722
|
})).
|
|
9723
9723
|
pipe(gulp_1.default.dest((targetFile) => MarkupEntryPointVinylFile_1.default.getOutputDirectoryAbsolutePathOfExpectedToBeSelfInstance(targetFile))).
|
|
9724
9724
|
on("end", this.onStreamEnded.bind(this));
|
|
@@ -9819,12 +9819,13 @@ class MarkupProcessor extends GulpStreamsBasedTaskExecutor_1.default {
|
|
|
9819
9819
|
}
|
|
9820
9820
|
static async formatOrMinifyContentIfMust(markupVinylFile) {
|
|
9821
9821
|
if (markupVinylFile.actualEntryPointsGroupSettings.outputCodeFormatting.mustExecute) {
|
|
9822
|
-
/* [ Theory ]
|
|
9823
|
-
* + `indent_with_tabs` overrides `indent_size` and `indent_char` so not required.
|
|
9824
|
-
* */
|
|
9825
9822
|
markupVinylFile.setContents(MarkupProcessor.formatHTML_Code(markupVinylFile));
|
|
9826
9823
|
return Promise.resolve(GulpStreamModifier_1.default.CompletionSignals.PASSING_ON);
|
|
9827
9824
|
}
|
|
9825
|
+
if (markupVinylFile.actualEntryPointsGroupSettings.outputCodeMinifying.mustExecute) {
|
|
9826
|
+
markupVinylFile.setContents(await MarkupProcessor.minifyHTML_Code(markupVinylFile));
|
|
9827
|
+
return Promise.resolve(GulpStreamModifier_1.default.CompletionSignals.PASSING_ON);
|
|
9828
|
+
}
|
|
9828
9829
|
return Promise.resolve(GulpStreamModifier_1.default.CompletionSignals.PASSING_ON);
|
|
9829
9830
|
}
|
|
9830
9831
|
/* eslint-disable @typescript-eslint/member-ordering --
|
|
@@ -9935,6 +9936,9 @@ class MarkupProcessor extends GulpStreamsBasedTaskExecutor_1.default {
|
|
|
9935
9936
|
/* ━━━ Helpers ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
|
|
9936
9937
|
static formatHTML_Code(markupVinylFile) {
|
|
9937
9938
|
const { outputCodeFormatting: outputCodeFormattingSettings } = markupVinylFile.actualEntryPointsGroupSettings;
|
|
9939
|
+
/* [ Theory ]
|
|
9940
|
+
* + `indent_with_tabs` overrides `indent_size` and `indent_char` so not required.
|
|
9941
|
+
* */
|
|
9938
9942
|
return js_beautify_1.default.html(markupVinylFile.stringifiedContents, {
|
|
9939
9943
|
...outputCodeFormattingSettings.indentationString.includes(es_extensions_1.SpaceCharacters.regularSpace) ?
|
|
9940
9944
|
{ indent_size: (0, es_extensions_1.splitString)(outputCodeFormattingSettings.indentationString, "").length } : null,
|
|
@@ -9944,6 +9948,19 @@ class MarkupProcessor extends GulpStreamsBasedTaskExecutor_1.default {
|
|
|
9944
9948
|
indent_body_inner_html: outputCodeFormattingSettings.mustIndentHeadAndBodyTags
|
|
9945
9949
|
});
|
|
9946
9950
|
}
|
|
9951
|
+
static async minifyHTML_Code(markupVinylFile) {
|
|
9952
|
+
const { outputCodeMinifying: outputCodeFormattingSettings } = markupVinylFile.actualEntryPointsGroupSettings;
|
|
9953
|
+
return (await htmlnano_1.default.process(markupVinylFile.stringifiedContents, {
|
|
9954
|
+
collapseAttributeWhitespace: outputCodeFormattingSettings.attributesExtraWhitespacesCollapsing,
|
|
9955
|
+
deduplicateAttributeValues: outputCodeFormattingSettings.attributesValuesDeduplication,
|
|
9956
|
+
collapseWhitespace: "aggressive",
|
|
9957
|
+
minifyCss: true,
|
|
9958
|
+
minifyJs: true,
|
|
9959
|
+
/* [ Theory ] Could cause the errors like #htmlnano fails to minify the svg:Error: Config should be an object#
|
|
9960
|
+
* on which user can not affect */
|
|
9961
|
+
minifySvg: false
|
|
9962
|
+
})).html;
|
|
9963
|
+
}
|
|
9947
9964
|
}
|
|
9948
9965
|
exports["default"] = MarkupProcessor;
|
|
9949
9966
|
|
|
@@ -10783,11 +10800,85 @@ const node_notifier_1 = __importDefault(__webpack_require__(/*! node-notifier */
|
|
|
10783
10800
|
const es_extensions_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions */ "@yamato-daiwa/es-extensions");
|
|
10784
10801
|
const es_extensions_nodejs_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions-nodejs */ "@yamato-daiwa/es-extensions-nodejs");
|
|
10785
10802
|
const nanoid_1 = __webpack_require__(/*! nanoid */ "nanoid");
|
|
10803
|
+
const Stopwatch_1 = __importDefault(__webpack_require__(/*! @UtilsIncubator/Stopwatch */ "./UtilsIncubator/Stopwatch.ts"));
|
|
10786
10804
|
class HTML_Validator {
|
|
10787
10805
|
/* ━━━ Fields ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
|
|
10788
10806
|
static selfSingleInstance = null;
|
|
10789
10807
|
/* ─── Work Variables ───────────────────────────────────────────────────────────────────────────────────────────── */
|
|
10790
10808
|
queuedFilesMetadata = [];
|
|
10809
|
+
consumingProjectRootDirectoryAbsolutePath;
|
|
10810
|
+
/* ─── Raw Validations Results Specification (Third-party Library Dependent) ────────────────────────────────────── */
|
|
10811
|
+
/** @description
|
|
10812
|
+
* + The NuChecker output could change with new versions. The validation of output objects allows to be notified about
|
|
10813
|
+
* them soon.
|
|
10814
|
+
* + Being defined in the third-parry solution, the following properties could not be renamed to more clear ones during
|
|
10815
|
+
* data reading & parsing.
|
|
10816
|
+
* + The order of properties has been matched with the output of parsed JSON to console. */
|
|
10817
|
+
static validationsResultsSpecification = {
|
|
10818
|
+
nameForLogging: "Nu HTML Checker (v.Nu) Output",
|
|
10819
|
+
subtype: es_extensions_1.RawObjectDataProcessor.ObjectSubtypes.fixedKeyAndValuePairsObject,
|
|
10820
|
+
properties: {
|
|
10821
|
+
messages: {
|
|
10822
|
+
type: Array,
|
|
10823
|
+
required: true,
|
|
10824
|
+
element: {
|
|
10825
|
+
type: Object,
|
|
10826
|
+
properties: {
|
|
10827
|
+
type: {
|
|
10828
|
+
type: String,
|
|
10829
|
+
required: true,
|
|
10830
|
+
allowedAlternatives: ["info", "error", "non-document-error", "network-error"]
|
|
10831
|
+
},
|
|
10832
|
+
url: {
|
|
10833
|
+
type: String,
|
|
10834
|
+
required: true,
|
|
10835
|
+
minimalCharactersCount: 7
|
|
10836
|
+
},
|
|
10837
|
+
lastLine: {
|
|
10838
|
+
type: Number,
|
|
10839
|
+
required: false,
|
|
10840
|
+
numbersSet: es_extensions_1.RawObjectDataProcessor.NumbersSets.naturalNumber
|
|
10841
|
+
},
|
|
10842
|
+
lastColumn: {
|
|
10843
|
+
type: Number,
|
|
10844
|
+
required: false,
|
|
10845
|
+
numbersSet: es_extensions_1.RawObjectDataProcessor.NumbersSets.naturalNumber
|
|
10846
|
+
},
|
|
10847
|
+
firstColumn: {
|
|
10848
|
+
type: Number,
|
|
10849
|
+
required: false,
|
|
10850
|
+
numbersSet: es_extensions_1.RawObjectDataProcessor.NumbersSets.naturalNumber
|
|
10851
|
+
},
|
|
10852
|
+
subType: {
|
|
10853
|
+
type: String,
|
|
10854
|
+
required: false,
|
|
10855
|
+
allowedAlternatives: ["warning", "fatal", "io", "schema", "internal"]
|
|
10856
|
+
},
|
|
10857
|
+
message: {
|
|
10858
|
+
type: String,
|
|
10859
|
+
required: true,
|
|
10860
|
+
minimalCharactersCount: 1
|
|
10861
|
+
},
|
|
10862
|
+
extract: {
|
|
10863
|
+
type: String,
|
|
10864
|
+
required: false
|
|
10865
|
+
},
|
|
10866
|
+
hiliteStart: {
|
|
10867
|
+
type: Number,
|
|
10868
|
+
required: false,
|
|
10869
|
+
/* [ Theory ] The 0 is rare but possible (at least was possible for May 2025). */
|
|
10870
|
+
numbersSet: es_extensions_1.RawObjectDataProcessor.NumbersSets.nonNegativeInteger
|
|
10871
|
+
},
|
|
10872
|
+
hiliteLength: {
|
|
10873
|
+
type: Number,
|
|
10874
|
+
required: false,
|
|
10875
|
+
numbersSet: es_extensions_1.RawObjectDataProcessor.NumbersSets.naturalNumber
|
|
10876
|
+
}
|
|
10877
|
+
}
|
|
10878
|
+
}
|
|
10879
|
+
}
|
|
10880
|
+
}
|
|
10881
|
+
};
|
|
10791
10882
|
/* ─── Logging ──────────────────────────────────────────────────────────────────────────────────────────────────── */
|
|
10792
10883
|
logging;
|
|
10793
10884
|
static DISPLAYING_LINES_COUNT_BEFORE_ISSUE_IN_CODE_LISTING = 2;
|
|
@@ -10797,10 +10888,11 @@ class HTML_Validator {
|
|
|
10797
10888
|
/* ─── Caching ──────────────────────────────────────────────────────────────────────────────────────────────────── */
|
|
10798
10889
|
/* [ Theory ]
|
|
10799
10890
|
* Between 2 project buildings, the content of most HTML files could not change (especially since the project has
|
|
10800
|
-
* become mature). */
|
|
10801
|
-
static
|
|
10802
|
-
|
|
10803
|
-
|
|
10891
|
+
* become mature). Thanks to checksums, it is possible to detect has page content changed quickly. */
|
|
10892
|
+
static CACHED_VALIDATIONS_RESULTS_FOLDER_NAME = "HTML_Validation";
|
|
10893
|
+
static CACHED_VALIDATIONS_RESULTS_FILE_CONSTANT_NAME_PART = "HTML_Validation";
|
|
10894
|
+
absolutePathOfParentDirectoryOfCachedValidationsResultsFile;
|
|
10895
|
+
absolutePathOfCachedValidationsResultsFile;
|
|
10804
10896
|
cachedValidationsResults;
|
|
10805
10897
|
static cachedValidationsResultsFileContentSpecification = {
|
|
10806
10898
|
nameForLogging: "HTML_Validator.CachedValidationResultsFileContentSpecification",
|
|
@@ -10871,81 +10963,10 @@ class HTML_Validator {
|
|
|
10871
10963
|
}
|
|
10872
10964
|
}
|
|
10873
10965
|
};
|
|
10874
|
-
/* ─── Raw Validations Results Specification (Third-party Library Dependent) ────────────────────────────────────── */
|
|
10875
|
-
/** @description
|
|
10876
|
-
* ● The NuChecker output could change with new versions. The validation allows to be notified about them soon.
|
|
10877
|
-
* ● Being defined in third-parry solution, the following properties could not be renamed to more clear ones during
|
|
10878
|
-
* data reading.
|
|
10879
|
-
* ● The order of properties has been matched with output of parsed JSON to console. */
|
|
10880
|
-
static validationsResultsSpecification = {
|
|
10881
|
-
nameForLogging: "Nu HTML Checker (v.Nu) Output",
|
|
10882
|
-
subtype: es_extensions_1.RawObjectDataProcessor.ObjectSubtypes.fixedKeyAndValuePairsObject,
|
|
10883
|
-
properties: {
|
|
10884
|
-
messages: {
|
|
10885
|
-
type: Array,
|
|
10886
|
-
required: true,
|
|
10887
|
-
element: {
|
|
10888
|
-
type: Object,
|
|
10889
|
-
properties: {
|
|
10890
|
-
type: {
|
|
10891
|
-
type: String,
|
|
10892
|
-
required: true,
|
|
10893
|
-
allowedAlternatives: ["info", "error", "non-document-error", "network-error"]
|
|
10894
|
-
},
|
|
10895
|
-
url: {
|
|
10896
|
-
type: String,
|
|
10897
|
-
required: true,
|
|
10898
|
-
minimalCharactersCount: 7
|
|
10899
|
-
},
|
|
10900
|
-
lastLine: {
|
|
10901
|
-
type: Number,
|
|
10902
|
-
required: false,
|
|
10903
|
-
numbersSet: es_extensions_1.RawObjectDataProcessor.NumbersSets.naturalNumber
|
|
10904
|
-
},
|
|
10905
|
-
lastColumn: {
|
|
10906
|
-
type: Number,
|
|
10907
|
-
required: false,
|
|
10908
|
-
numbersSet: es_extensions_1.RawObjectDataProcessor.NumbersSets.naturalNumber
|
|
10909
|
-
},
|
|
10910
|
-
firstColumn: {
|
|
10911
|
-
type: Number,
|
|
10912
|
-
required: false,
|
|
10913
|
-
numbersSet: es_extensions_1.RawObjectDataProcessor.NumbersSets.naturalNumber
|
|
10914
|
-
},
|
|
10915
|
-
subType: {
|
|
10916
|
-
type: String,
|
|
10917
|
-
required: false,
|
|
10918
|
-
allowedAlternatives: ["warning", "fatal", "io", "schema", "internal"]
|
|
10919
|
-
},
|
|
10920
|
-
message: {
|
|
10921
|
-
type: String,
|
|
10922
|
-
required: true,
|
|
10923
|
-
minimalCharactersCount: 1
|
|
10924
|
-
},
|
|
10925
|
-
extract: {
|
|
10926
|
-
type: String,
|
|
10927
|
-
required: false
|
|
10928
|
-
},
|
|
10929
|
-
hiliteStart: {
|
|
10930
|
-
type: Number,
|
|
10931
|
-
required: false,
|
|
10932
|
-
numbersSet: es_extensions_1.RawObjectDataProcessor.NumbersSets.naturalNumber
|
|
10933
|
-
},
|
|
10934
|
-
hiliteLength: {
|
|
10935
|
-
type: Number,
|
|
10936
|
-
required: false,
|
|
10937
|
-
numbersSet: es_extensions_1.RawObjectDataProcessor.NumbersSets.naturalNumber
|
|
10938
|
-
}
|
|
10939
|
-
}
|
|
10940
|
-
}
|
|
10941
|
-
}
|
|
10942
|
-
}
|
|
10943
|
-
};
|
|
10944
10966
|
/* ─── Temporary Files ──────────────────────────────────────────────────────────────────────────────────────────── */
|
|
10945
10967
|
static TEMPORARY_FORMATTED_HTML_FILES_FOLDER_NAME = "HTML_Validation";
|
|
10946
|
-
|
|
10947
|
-
|
|
10948
|
-
CONSUMING_PROJECT_ROOT_DIRECTORY_ABSOLUTE_PATH;
|
|
10968
|
+
absolutePathOfParentDirectoryOfTemporaryFormattedHTML_Files;
|
|
10969
|
+
parenRelativeToConsumingProjectRootOfParentDirectoryOfTemporaryFormattedHTML_Files;
|
|
10949
10970
|
/* ─── Localization ─────────────────────────────────────────────────────────────────────────────────────────────── */
|
|
10950
10971
|
static localization = HTML_ValidatorLocalization_english_1.default;
|
|
10951
10972
|
/* ━━━ Public Static Methods (Facade) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
|
|
@@ -10964,6 +10985,9 @@ class HTML_Validator {
|
|
|
10964
10985
|
}
|
|
10965
10986
|
HTML_Validator.selfSingleInstance = new HTML_Validator(requirements);
|
|
10966
10987
|
}
|
|
10988
|
+
/** @description
|
|
10989
|
+
* Separate launching of `vnu-jar` per each file may cause the performance impact thus more efficient is to accumulate
|
|
10990
|
+
* the files and validate them at once. */
|
|
10967
10991
|
static enqueueFileForValidation(targetFileMetadata) {
|
|
10968
10992
|
const selfSingleInstance = HTML_Validator.
|
|
10969
10993
|
getExpectedToBeInitializedSelfSingleInstance();
|
|
@@ -10977,13 +11001,16 @@ class HTML_Validator {
|
|
|
10977
11001
|
}
|
|
10978
11002
|
/* ━━━ Constructor ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
|
|
10979
11003
|
constructor({ temporaryFileDirectoryAbsolutePath, projectBuildingMasterConfigRepresentative, logging }) {
|
|
10980
|
-
this.
|
|
11004
|
+
this.consumingProjectRootDirectoryAbsolutePath = projectBuildingMasterConfigRepresentative.
|
|
11005
|
+
consumingProjectRootDirectoryAbsolutePath;
|
|
11006
|
+
/* ─── Caching ────────────────────────────────────────────────────────────────────────────────────────────────── */
|
|
11007
|
+
this.absolutePathOfParentDirectoryOfCachedValidationsResultsFile = es_extensions_nodejs_1.ImprovedPath.joinPathSegments([
|
|
10981
11008
|
DotYDA_DirectoryManager_1.default.OPTIMIZATION_FILES_DIRECTORY_ABSOLUTE_PATH,
|
|
10982
|
-
HTML_Validator.
|
|
11009
|
+
HTML_Validator.CACHED_VALIDATIONS_RESULTS_FOLDER_NAME
|
|
10983
11010
|
], { alwaysForwardSlashSeparators: true });
|
|
10984
|
-
this.
|
|
10985
|
-
|
|
10986
|
-
parentDirectoryAbsolutePath: this.
|
|
11011
|
+
this.absolutePathOfCachedValidationsResultsFile = HTML_Validator.
|
|
11012
|
+
computeAbsolutePathOfCachedValidationsResultsFileActualForCurrentProjectBuildingMode({
|
|
11013
|
+
parentDirectoryAbsolutePath: this.absolutePathOfParentDirectoryOfCachedValidationsResultsFile,
|
|
10987
11014
|
projectBuildingSelectiveExecutionID: projectBuildingMasterConfigRepresentative.selectiveExecutionID,
|
|
10988
11015
|
consumingProjectBuildingMode: projectBuildingMasterConfigRepresentative.consumingProjectBuildingMode
|
|
10989
11016
|
});
|
|
@@ -10991,18 +11018,18 @@ class HTML_Validator {
|
|
|
10991
11018
|
try {
|
|
10992
11019
|
cachedValidationsResults = es_extensions_nodejs_1.ObjectDataFilesProcessor.
|
|
10993
11020
|
processFile({
|
|
10994
|
-
filePath: this.
|
|
11021
|
+
filePath: this.absolutePathOfCachedValidationsResultsFile,
|
|
10995
11022
|
validDataSpecification: HTML_Validator.cachedValidationsResultsFileContentSpecification,
|
|
10996
11023
|
synchronously: true
|
|
10997
11024
|
});
|
|
10998
11025
|
}
|
|
10999
11026
|
catch (error) {
|
|
11000
11027
|
if (!(error instanceof es_extensions_nodejs_1.FileNotFoundError)) {
|
|
11001
|
-
// TODO ① Extract textings
|
|
11002
11028
|
es_extensions_1.Logger.logError({
|
|
11003
11029
|
errorType: "CachedDataRetrievingFailure",
|
|
11004
|
-
|
|
11005
|
-
|
|
11030
|
+
...HTML_Validator.localization.cachedPreviousValidationsResultsDataRetrievingFailure({
|
|
11031
|
+
cachedValidationsResultsFileAbsolutePath: this.absolutePathOfCachedValidationsResultsFile
|
|
11032
|
+
}),
|
|
11006
11033
|
occurrenceLocation: "HTML_Validator.retrieveCachedPastValidationsResultsFromFileIfItExists" +
|
|
11007
11034
|
"(cachedValidationsResultsFileAbsolutePath)",
|
|
11008
11035
|
caughtError: error,
|
|
@@ -11011,79 +11038,85 @@ class HTML_Validator {
|
|
|
11011
11038
|
}
|
|
11012
11039
|
}
|
|
11013
11040
|
this.cachedValidationsResults = new Map(Object.entries(cachedValidationsResults ?? {}));
|
|
11014
|
-
|
|
11041
|
+
/* ─── Logging ──────────────────────────────────────────────────────────────────────────────────────────────────── */
|
|
11042
|
+
this.logging = logging;
|
|
11043
|
+
/* ─── Temporary Files ────────────────────────────────────────────────────────────────────────────────────────── */
|
|
11044
|
+
this.absolutePathOfParentDirectoryOfTemporaryFormattedHTML_Files = es_extensions_nodejs_1.ImprovedPath.joinPathSegments([
|
|
11015
11045
|
temporaryFileDirectoryAbsolutePath,
|
|
11016
11046
|
HTML_Validator.TEMPORARY_FORMATTED_HTML_FILES_FOLDER_NAME
|
|
11017
11047
|
]);
|
|
11018
|
-
this.
|
|
11048
|
+
this.parenRelativeToConsumingProjectRootOfParentDirectoryOfTemporaryFormattedHTML_Files = es_extensions_nodejs_1.ImprovedPath.
|
|
11019
11049
|
computeRelativePath({
|
|
11020
11050
|
basePath: projectBuildingMasterConfigRepresentative.consumingProjectRootDirectoryAbsolutePath,
|
|
11021
|
-
comparedPath: this.
|
|
11051
|
+
comparedPath: this.absolutePathOfParentDirectoryOfTemporaryFormattedHTML_Files,
|
|
11022
11052
|
alwaysForwardSlashSeparators: true
|
|
11023
11053
|
});
|
|
11024
|
-
this.CONSUMING_PROJECT_ROOT_DIRECTORY_ABSOLUTE_PATH =
|
|
11025
|
-
projectBuildingMasterConfigRepresentative.consumingProjectRootDirectoryAbsolutePath;
|
|
11026
|
-
this.logging = logging;
|
|
11027
11054
|
}
|
|
11028
11055
|
/* ━━━ Private Methods ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
|
|
11029
11056
|
/* ─── Validation ───────────────────────────────────────────────────────────────────────────────────────────────── */
|
|
11030
11057
|
async validateQueuedFilesButReportAll() {
|
|
11058
|
+
// ━━━ TODO Есть вопросы ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
11059
|
+
// TODO Почему это не соответствует типу NormalizedValidationsResults? И почему семантически не понятен ключ карты?
|
|
11031
11060
|
const validationsResults = (0, es_extensions_1.createMapBasedOnOtherMap)(this.cachedValidationsResults, (filePathRelativeToConsumingProjectRootDirectory__forwardSlashesSeparatorsOnly, { issues }) => [filePathRelativeToConsumingProjectRootDirectory__forwardSlashesSeparatorsOnly, issues]);
|
|
11032
11061
|
/* [ Approach ]
|
|
11033
|
-
* To get readable logs with code fragment, the original output HTML files could not be used because they
|
|
11034
|
-
*
|
|
11062
|
+
* To get readable logs with code fragment, the original output HTML files could not be used because they possibly
|
|
11063
|
+
* contains the minified HTML code.
|
|
11035
11064
|
* The saving of temporary HTML files with formatted HTML code could be the solution.
|
|
11036
11065
|
* Anyway the Nu HTML Checker does not work with HTML strings — it accepts only relative paths of file saved to drive. */
|
|
11037
11066
|
const formattedTemporaryHTML_FilesPathsRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly = [];
|
|
11038
|
-
/* [ Theory ]
|
|
11039
|
-
*
|
|
11067
|
+
/* [ Theory ]
|
|
11068
|
+
* Nu HTML Checker can inspect the multiple files at once while returns the single array with issues data for all files.
|
|
11069
|
+
* How to understand for which file Nu HTML Checker emitted the specific issue?
|
|
11070
|
+
* The data of each issue will include the URI like
|
|
11040
11071
|
* "file:/D:/IntelliJ%20IDEA/SampleProject/.yda/Temporary/HTML_Validation/4834cf5c-253f-4147-b00c-b8ca53922315.html"
|
|
11041
11072
|
* It is the encoded (`encodeURI()` for ECMAScript) absolute path of temporary formatted HTML file with "file:/" prefix. */
|
|
11042
11073
|
const temporaryFormattedHTML_FilesEncodedURIsAndOriginalHTML_FilesRelativePathsCorrespondence = new Map();
|
|
11043
11074
|
/* [ Theory ]
|
|
11044
11075
|
* Nu HTML Checker will not output the data for valid files while their paths is still required for summary. */
|
|
11045
11076
|
const relativeToConsumingProjectRootPathsOfOriginalHTML_FilesWillBeValidated__forwardSlashesSeparatorsOnly = new Set();
|
|
11046
|
-
const
|
|
11047
|
-
const
|
|
11077
|
+
const cachedHTML_CodeSplitToLinesByFilesRelativePathsOfOriginalHTML_Files = new Map();
|
|
11078
|
+
const MD5_HashesOfHTML_ContentBySourceFilesRelativePathsOfOriginalHTML_Files = new Map();
|
|
11048
11079
|
for (const { pathRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly: originalHTML_FilePathRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly, formattedHTML_Content, HTML_ContentMD5_Hash } of this.queuedFilesMetadata) {
|
|
11080
|
+
// TODO Почему это надо сделать даже если файл валидирован не будет?
|
|
11049
11081
|
relativeToConsumingProjectRootPathsOfOriginalHTML_FilesWillBeValidated__forwardSlashesSeparatorsOnly.add(originalHTML_FilePathRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly);
|
|
11082
|
+
// TODO Почему это надо сделать даже если файл валидирован не будет?
|
|
11083
|
+
MD5_HashesOfHTML_ContentBySourceFilesRelativePathsOfOriginalHTML_Files.set(originalHTML_FilePathRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly, HTML_ContentMD5_Hash);
|
|
11050
11084
|
const cachedValidationsResultsForCurrentFile = this.cachedValidationsResults.get(originalHTML_FilePathRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly);
|
|
11051
|
-
MD5_HashesOfHTML_ContentBySourceFilesRelativePaths.set(originalHTML_FilePathRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly, HTML_ContentMD5_Hash);
|
|
11052
11085
|
if (cachedValidationsResultsForCurrentFile?.contentMD5Checksum === HTML_ContentMD5_Hash) {
|
|
11053
11086
|
continue;
|
|
11054
11087
|
}
|
|
11055
11088
|
validationsResults.delete(originalHTML_FilePathRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly);
|
|
11056
|
-
|
|
11057
|
-
const
|
|
11058
|
-
this.
|
|
11089
|
+
cachedHTML_CodeSplitToLinesByFilesRelativePathsOfOriginalHTML_Files.set(originalHTML_FilePathRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly, (0, es_extensions_1.splitString)(formattedHTML_Content, "\n"));
|
|
11090
|
+
const formattedTemporaryHTML_FilePathRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly = es_extensions_nodejs_1.ImprovedPath.joinPathSegments([
|
|
11091
|
+
this.parenRelativeToConsumingProjectRootOfParentDirectoryOfTemporaryFormattedHTML_Files,
|
|
11059
11092
|
`${(0, nanoid_1.nanoid)()}.html`
|
|
11060
11093
|
], { alwaysForwardSlashSeparators: true });
|
|
11061
|
-
formattedTemporaryHTML_FilesPathsRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly.push(
|
|
11062
|
-
const
|
|
11063
|
-
this.
|
|
11064
|
-
|
|
11094
|
+
formattedTemporaryHTML_FilesPathsRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly.push(formattedTemporaryHTML_FilePathRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly);
|
|
11095
|
+
const formattedTemporaryHTML_FileAbsolutePath__forwardSlashesSeparatorsOnly = es_extensions_nodejs_1.ImprovedPath.joinPathSegments([
|
|
11096
|
+
this.consumingProjectRootDirectoryAbsolutePath,
|
|
11097
|
+
formattedTemporaryHTML_FilePathRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly
|
|
11065
11098
|
], { alwaysForwardSlashSeparators: true });
|
|
11066
|
-
temporaryFormattedHTML_FilesEncodedURIsAndOriginalHTML_FilesRelativePathsCorrespondence.set(`file:/${encodeURI(
|
|
11099
|
+
temporaryFormattedHTML_FilesEncodedURIsAndOriginalHTML_FilesRelativePathsCorrespondence.set(`file:/${encodeURI(formattedTemporaryHTML_FileAbsolutePath__forwardSlashesSeparatorsOnly)}`, originalHTML_FilePathRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly);
|
|
11067
11100
|
es_extensions_nodejs_1.ImprovedFileSystem.writeFileToPossiblyNotExistingDirectory({
|
|
11068
|
-
filePath:
|
|
11101
|
+
filePath: formattedTemporaryHTML_FileAbsolutePath__forwardSlashesSeparatorsOnly,
|
|
11069
11102
|
content: formattedHTML_Content,
|
|
11070
11103
|
synchronously: true
|
|
11071
11104
|
});
|
|
11072
11105
|
}
|
|
11073
11106
|
if (this.logging.validationStart) {
|
|
11074
|
-
es_extensions_1.Logger.logInfo(HTML_Validator.localization.
|
|
11075
|
-
targetFileRelativePaths: this.queuedFilesMetadata.map((metadataOfQueuedFile) => metadataOfQueuedFile.pathRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly)
|
|
11076
|
-
}));
|
|
11107
|
+
es_extensions_1.Logger.logInfo(HTML_Validator.localization.validationStartedInfoLog);
|
|
11077
11108
|
}
|
|
11078
|
-
|
|
11109
|
+
const validationTimeMeasuringStopwatch = new Stopwatch_1.default().startOrRestart();
|
|
11110
|
+
/* [ Theory ] If pass no files to Nu HTML Checker, it will fail with the error. */
|
|
11079
11111
|
if (formattedTemporaryHTML_FilesPathsRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly.length === 0) {
|
|
11080
11112
|
HTML_Validator.reportValidationsResults(validationsResults);
|
|
11081
11113
|
return;
|
|
11082
11114
|
}
|
|
11083
11115
|
const rawValidationsResults = await HTML_Validator.getRawValidationsResultsFromNuHTML_Checker(formattedTemporaryHTML_FilesPathsRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly);
|
|
11116
|
+
// ━━━ TODO ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
11084
11117
|
// TODO ④ Improve Method
|
|
11085
11118
|
es_extensions_nodejs_1.ImprovedFileSystem.removeDirectoryWithFiles({
|
|
11086
|
-
targetPath: this.
|
|
11119
|
+
targetPath: this.absolutePathOfParentDirectoryOfTemporaryFormattedHTML_Files,
|
|
11087
11120
|
mustThrowErrorIfOneOrMoreFilesCouldNotBeDeleted: false
|
|
11088
11121
|
});
|
|
11089
11122
|
const rawValidationsResultsInspectionOutput = es_extensions_1.RawObjectDataProcessor.process(rawValidationsResults, HTML_Validator.validationsResultsSpecification);
|
|
@@ -11108,21 +11141,22 @@ class HTML_Validator {
|
|
|
11108
11141
|
const issuesOfCurrentFile = validationsResults.get(filePathRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly);
|
|
11109
11142
|
if ((0, es_extensions_1.isUndefined)(issuesOfCurrentFile)) {
|
|
11110
11143
|
validationsResults.set(filePathRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly, [
|
|
11111
|
-
HTML_Validator.normalizeRawValidationIssue(rawValidationIssue, (0, es_extensions_1.getExpectedToBeNonUndefinedMapValue)(
|
|
11144
|
+
HTML_Validator.normalizeRawValidationIssue(rawValidationIssue, (0, es_extensions_1.getExpectedToBeNonUndefinedMapValue)(cachedHTML_CodeSplitToLinesByFilesRelativePathsOfOriginalHTML_Files, filePathRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly))
|
|
11112
11145
|
]);
|
|
11113
11146
|
continue;
|
|
11114
11147
|
}
|
|
11115
|
-
issuesOfCurrentFile.push(HTML_Validator.normalizeRawValidationIssue(rawValidationIssue, (0, es_extensions_1.getExpectedToBeNonUndefinedMapValue)(
|
|
11148
|
+
issuesOfCurrentFile.push(HTML_Validator.normalizeRawValidationIssue(rawValidationIssue, (0, es_extensions_1.getExpectedToBeNonUndefinedMapValue)(cachedHTML_CodeSplitToLinesByFilesRelativePathsOfOriginalHTML_Files, filePathRelativeToConsumingProjectRoot__forwardSlashesSeparatorsOnly)));
|
|
11116
11149
|
}
|
|
11117
11150
|
for (const relativeToConsumingProjectRootPathOfOriginalValidHTML_Files__forwardSlashesSeparatorsOnly of relativeToConsumingProjectRootPathsOfOriginalHTML_FilesWillBeValidated__forwardSlashesSeparatorsOnly) {
|
|
11118
11151
|
validationsResults.set(relativeToConsumingProjectRootPathOfOriginalValidHTML_Files__forwardSlashesSeparatorsOnly, []);
|
|
11119
11152
|
}
|
|
11153
|
+
validationTimeMeasuringStopwatch.stop();
|
|
11120
11154
|
HTML_Validator.reportValidationsResults(validationsResults);
|
|
11121
11155
|
this.cachedValidationsResults = (0, es_extensions_1.createMapBasedOnOtherMap)(validationsResults, (filePathRelativeToConsumingProjectRootDirectory__forwardSlashesSeparatorsOnly, issues) => [
|
|
11122
11156
|
filePathRelativeToConsumingProjectRootDirectory__forwardSlashesSeparatorsOnly,
|
|
11123
11157
|
{
|
|
11124
11158
|
issues,
|
|
11125
|
-
contentMD5Checksum: (0, es_extensions_1.getExpectedToBeNonUndefinedMapValue)(
|
|
11159
|
+
contentMD5Checksum: (0, es_extensions_1.getExpectedToBeNonUndefinedMapValue)(MD5_HashesOfHTML_ContentBySourceFilesRelativePathsOfOriginalHTML_Files, filePathRelativeToConsumingProjectRootDirectory__forwardSlashesSeparatorsOnly)
|
|
11126
11160
|
}
|
|
11127
11161
|
]);
|
|
11128
11162
|
this.writeCacheToFile();
|
|
@@ -11142,7 +11176,7 @@ class HTML_Validator {
|
|
|
11142
11176
|
* + It is possible to output the validation error to `stdout` instead if to specify the respective option,
|
|
11143
11177
|
* but the first parameter will be non-null anyway.
|
|
11144
11178
|
* + The reaction to non-existing file is completely same as to valid file: the stringified object
|
|
11145
|
-
*
|
|
11179
|
+
* `{"messages":[]}` will be returned. */
|
|
11146
11180
|
const stringifiedOutput = Buffer.isBuffer(stderr) ? stderr.toString("utf8") : stderr;
|
|
11147
11181
|
try {
|
|
11148
11182
|
resolve(JSON.parse(stringifiedOutput));
|
|
@@ -11193,7 +11227,6 @@ class HTML_Validator {
|
|
|
11193
11227
|
mustThrowErrorIfSpecifiedCharactersNumbersIsOutOfRange: false
|
|
11194
11228
|
}) :
|
|
11195
11229
|
"");
|
|
11196
|
-
// ━━━ TODO ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
11197
11230
|
const highlightedCodeFragment = (0, es_extensions_1.cropString)({
|
|
11198
11231
|
targetString: actualLineOfCode,
|
|
11199
11232
|
startingCharacterNumber__numerationFrom1: numberOfStartingColumnOfHighlightedCodeFragment__numerationFrom1,
|
|
@@ -11338,18 +11371,16 @@ class HTML_Validator {
|
|
|
11338
11371
|
}
|
|
11339
11372
|
return formattedIssues.join("\n\n");
|
|
11340
11373
|
}
|
|
11341
|
-
/* ───
|
|
11342
|
-
static
|
|
11374
|
+
/* ─── Cached Validations Results File ──────────────────────────────────────────────────────────────────────────── */
|
|
11375
|
+
static computeAbsolutePathOfCachedValidationsResultsFileActualForCurrentProjectBuildingMode({ parentDirectoryAbsolutePath, projectBuildingSelectiveExecutionID, consumingProjectBuildingMode }) {
|
|
11343
11376
|
return es_extensions_nodejs_1.ImprovedPath.joinPathSegments([
|
|
11344
11377
|
parentDirectoryAbsolutePath,
|
|
11345
|
-
|
|
11346
|
-
(0, es_extensions_1.insertSubstring)(projectBuildingSelectiveExecutionID, { modifier: (specifiedProjectBuildingSelectiveExecutionID) => `${specifiedProjectBuildingSelectiveExecutionID}.` }) +
|
|
11347
|
-
`${(0, es_extensions_1.toLowerCamelCase)(consumingProjectBuildingMode)}.json`
|
|
11378
|
+
`${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`
|
|
11348
11379
|
]);
|
|
11349
11380
|
}
|
|
11350
11381
|
writeCacheToFile() {
|
|
11351
11382
|
es_extensions_nodejs_1.ImprovedFileSystem.createDirectory({
|
|
11352
|
-
targetPath: this.
|
|
11383
|
+
targetPath: this.absolutePathOfParentDirectoryOfCachedValidationsResultsFile,
|
|
11353
11384
|
mustThrowErrorIfTargetDirectoryExists: false,
|
|
11354
11385
|
synchronously: true
|
|
11355
11386
|
});
|
|
@@ -11358,7 +11389,7 @@ class HTML_Validator {
|
|
|
11358
11389
|
accumulatingValue[filePathRelativeToConsumingProjectRootDirectory] = cachedValidationRawResultsForSpecificFile;
|
|
11359
11390
|
return accumulatingValue;
|
|
11360
11391
|
}, {});
|
|
11361
|
-
fs_1.default.writeFileSync(this.
|
|
11392
|
+
fs_1.default.writeFileSync(this.absolutePathOfCachedValidationsResultsFile, JSON.stringify(cachedValidationsResultsFileContent, null, 2));
|
|
11362
11393
|
}
|
|
11363
11394
|
/* ━━━ Routines ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
|
|
11364
11395
|
static getExpectedToBeInitializedSelfSingleInstance() {
|
|
@@ -11410,13 +11441,16 @@ exports["default"] = HTML_Validator;
|
|
|
11410
11441
|
|
|
11411
11442
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
11412
11443
|
const HTML_ValidatorLocalization__english = {
|
|
11413
|
-
|
|
11414
|
-
title: "
|
|
11415
|
-
description: "
|
|
11416
|
-
|
|
11417
|
-
map((targetFileRelativePath) => `● ${targetFileRelativePath}`).
|
|
11418
|
-
join("\n")
|
|
11444
|
+
cachedPreviousValidationsResultsDataRetrievingFailure: ({ cachedValidationsResultsFileAbsolutePath }) => ({
|
|
11445
|
+
title: "Cached Previous Validations Data Retrieving Failure",
|
|
11446
|
+
description: "Unable to read and/or parse the existing HTML validation cache file " +
|
|
11447
|
+
`"${cachedValidationsResultsFileAbsolutePath}".`
|
|
11419
11448
|
}),
|
|
11449
|
+
validationStartedInfoLog: {
|
|
11450
|
+
title: "HTML Code Validation Started",
|
|
11451
|
+
description: "Validating the output HTML files..."
|
|
11452
|
+
},
|
|
11453
|
+
// ━━━ TODO ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
11420
11454
|
issuesFoundToastNotification: {
|
|
11421
11455
|
title: "HTML validation, issue(s) found",
|
|
11422
11456
|
message: "W3C rules violations and / or recommendations neglect detected. Check the console for the details."
|
|
@@ -15199,6 +15233,66 @@ const vinyl_1 = __importDefault(__webpack_require__(/*! vinyl */ "vinyl"));
|
|
|
15199
15233
|
/* --- General utils ------------------------------------------------------------------------------------------------ */
|
|
15200
15234
|
const es_extensions_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions */ "@yamato-daiwa/es-extensions");
|
|
15201
15235
|
class GulpStreamModifier {
|
|
15236
|
+
static modifyForSingleVinylFileSubtype({ onStreamStartedEventHandler, onStreamEndedEventHandler }) {
|
|
15237
|
+
return new stream_1.default.Transform({
|
|
15238
|
+
objectMode: true,
|
|
15239
|
+
/* eslint-disable-next-line max-params -- The limitation of "Stream" native library */
|
|
15240
|
+
transform(chunk, _encoding, callback) {
|
|
15241
|
+
if (!vinyl_1.default.isVinyl(chunk)) {
|
|
15242
|
+
es_extensions_1.Logger.throwErrorAndLog({
|
|
15243
|
+
errorInstance: new es_extensions_1.UnexpectedEventError(es_extensions_1.PoliteErrorsMessagesBuilder.buildMessage({
|
|
15244
|
+
technicalDetails: "The \"chunk\" parameter is not an instance of Vinyl file",
|
|
15245
|
+
politeExplanation: "According official TypeScript types definitions, the second parameter of native " +
|
|
15246
|
+
"\"stream.TransformOptions.transform\" method has \"any\" type. Using it with Gulp, we are expected " +
|
|
15247
|
+
"that \"chunk\" could be only Vinyl file instances and during tests is was such as. However, this " +
|
|
15248
|
+
"time, it is not the instance of Vinyl file. We need to investigate it and decide what to do with it."
|
|
15249
|
+
})),
|
|
15250
|
+
title: es_extensions_1.UnexpectedEventError.localization.defaultTitle,
|
|
15251
|
+
occurrenceLocation: "GulpStreamModifier.modifyForSingleVinylFileSubtype(compoundParameter)",
|
|
15252
|
+
additionalData: { chunk }
|
|
15253
|
+
});
|
|
15254
|
+
}
|
|
15255
|
+
const addNewFilesToStream = (newFiles) => {
|
|
15256
|
+
for (const newFile of Array.isArray(newFiles) ? newFiles : [newFiles]) {
|
|
15257
|
+
this.push(newFile);
|
|
15258
|
+
}
|
|
15259
|
+
};
|
|
15260
|
+
const targetFile = chunk;
|
|
15261
|
+
onStreamStartedEventHandler(targetFile, addNewFilesToStream).
|
|
15262
|
+
then((completionSignal) => {
|
|
15263
|
+
switch (completionSignal) {
|
|
15264
|
+
case GulpStreamModifier.CompletionSignals.PASSING_ON: {
|
|
15265
|
+
callback(null, targetFile);
|
|
15266
|
+
break;
|
|
15267
|
+
}
|
|
15268
|
+
case GulpStreamModifier.CompletionSignals.REMOVING_FILE_FROM_STREAM: {
|
|
15269
|
+
callback();
|
|
15270
|
+
break;
|
|
15271
|
+
}
|
|
15272
|
+
}
|
|
15273
|
+
}).
|
|
15274
|
+
/* eslint-disable-next-line @typescript-eslint/use-unknown-in-catch-callback-variable --
|
|
15275
|
+
* `TransformCallback` does not accept the error of `unknown` type. */
|
|
15276
|
+
catch((error) => { callback(error); });
|
|
15277
|
+
},
|
|
15278
|
+
flush(callback) {
|
|
15279
|
+
if ((0, es_extensions_1.isUndefined)(onStreamEndedEventHandler)) {
|
|
15280
|
+
callback();
|
|
15281
|
+
return;
|
|
15282
|
+
}
|
|
15283
|
+
const addNewFilesToStream = (newFiles) => {
|
|
15284
|
+
for (const newFile of Array.isArray(newFiles) ? newFiles : [newFiles]) {
|
|
15285
|
+
this.push(newFile);
|
|
15286
|
+
}
|
|
15287
|
+
};
|
|
15288
|
+
onStreamEndedEventHandler(addNewFilesToStream).
|
|
15289
|
+
then(() => { callback(); }).
|
|
15290
|
+
/* eslint-disable-next-line @typescript-eslint/use-unknown-in-catch-callback-variable --
|
|
15291
|
+
* `TransformCallback` does not accept the error of `unknown` type. */
|
|
15292
|
+
catch((error) => { callback(error); });
|
|
15293
|
+
}
|
|
15294
|
+
});
|
|
15295
|
+
}
|
|
15202
15296
|
static modify(compoundParameter) {
|
|
15203
15297
|
return new stream_1.default.Transform({
|
|
15204
15298
|
objectMode: true,
|
|
@@ -15309,7 +15403,7 @@ exports["default"] = GulpStreamModifier;
|
|
|
15309
15403
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
15310
15404
|
|
|
15311
15405
|
|
|
15312
|
-
/* eslint max-depth: [ warn, 4 ] */
|
|
15406
|
+
/* eslint max-depth: [ warn, 4 ] -- Maybe extracting to methods is possible but it will be too many parameters. */
|
|
15313
15407
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
15314
15408
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15315
15409
|
};
|
|
@@ -15388,7 +15482,7 @@ class SourceCodeSelectiveReprocessingHelper {
|
|
|
15388
15482
|
this.TARGET_FILES_TYPE_IN_SINGULAR_FORM = initializationProperties.logging.targetFilesTypeInSingularForm;
|
|
15389
15483
|
/* [ Theory ] The cached metadata from previous YDA launches could be. */
|
|
15390
15484
|
this.retrieveCacheFromFileAndApplyIfItExists();
|
|
15391
|
-
this.scanFilesHierarchyTreeForEntryPoints(new Set(initializationProperties.initialEntryPointsSourceFilesAbsolutePaths.map((
|
|
15485
|
+
this.scanFilesHierarchyTreeForEntryPoints(new Set(initializationProperties.initialEntryPointsSourceFilesAbsolutePaths.map((entryPointFileAbsolutePath__potentiallyWithOperatingSystemDependentPathSeparators) => es_extensions_nodejs_1.ImprovedPath.replacePathSeparatorsToForwardSlashes(entryPointFileAbsolutePath__potentiallyWithOperatingSystemDependentPathSeparators))));
|
|
15392
15486
|
if (initializationProperties.logging.mustEnable) {
|
|
15393
15487
|
this.logChildrenFilesAndEntryPointsRelationships();
|
|
15394
15488
|
}
|
|
@@ -15488,6 +15582,9 @@ class SourceCodeSelectiveReprocessingHelper {
|
|
|
15488
15582
|
comparedPath: entryPointAbsolutePath__forwardSlashSeparators,
|
|
15489
15583
|
alwaysForwardSlashSeparators: true
|
|
15490
15584
|
});
|
|
15585
|
+
// console.log("CHECKPOINT 1");
|
|
15586
|
+
// console.log("entryPointPathRelativeToConsumingProjectRootDirectory__forwardSlashSeparators");
|
|
15587
|
+
// console.log(entryPointPathRelativeToConsumingProjectRootDirectory__forwardSlashSeparators);
|
|
15491
15588
|
let entryPointLastModificationDateTime__ISO8601;
|
|
15492
15589
|
try {
|
|
15493
15590
|
entryPointLastModificationDateTime__ISO8601 = fs_1.default.statSync(entryPointAbsolutePath__forwardSlashSeparators).
|
|
@@ -15545,19 +15642,20 @@ class SourceCodeSelectiveReprocessingHelper {
|
|
|
15545
15642
|
alwaysForwardSlashSeparators: true
|
|
15546
15643
|
}))
|
|
15547
15644
|
};
|
|
15645
|
+
// console.debug("CHECKPOINT 2");
|
|
15646
|
+
// console.log("absolutePathsOfExistingDirectChildrenFilesOfCurrentEntryPoint__forwardSlashSeparators");
|
|
15647
|
+
// console.log(absolutePathsOfExistingDirectChildrenFilesOfCurrentEntryPoint__forwardSlashSeparators);
|
|
15648
|
+
// console.log("cachedMetadataOfCurrentEntryPoint");
|
|
15649
|
+
// console.log(cachedMetadataOfCurrentEntryPoint);
|
|
15650
|
+
// debugger;
|
|
15548
15651
|
this.entryPointsMetadata.set(entryPointPathRelativeToConsumingProjectRootDirectory__forwardSlashSeparators, cachedMetadataOfCurrentEntryPoint);
|
|
15549
15652
|
}
|
|
15550
|
-
|
|
15551
|
-
mustOutputIf: SourceCodeSelectiveReprocessingHelper.DEBUGGING_MODE,
|
|
15552
|
-
badge: { customText: "Debug" },
|
|
15553
|
-
title: "SourceCodeSelectiveReprocessingHelper, Entry Point Analysis Complete.",
|
|
15554
|
-
description: entryPointPathRelativeToConsumingProjectRootDirectory__forwardSlashSeparators,
|
|
15555
|
-
additionalData: cachedMetadataOfCurrentEntryPoint
|
|
15556
|
-
});
|
|
15653
|
+
const experimentalArrayForInfiniteRecursionPreventing = [entryPointPathRelativeToConsumingProjectRootDirectory__forwardSlashSeparators];
|
|
15557
15654
|
for (const absolutePathOfDirectExistingChildFileOfCurrentEntryPoint__forwardSlashSeparators of absolutePathsOfExistingDirectChildrenFilesOfCurrentEntryPoint__forwardSlashSeparators) {
|
|
15558
15655
|
this.updateMetadataForExistingChildFile({
|
|
15559
15656
|
targetChildFileAbsolutePath__forwardSlashSeparators: absolutePathOfDirectExistingChildFileOfCurrentEntryPoint__forwardSlashSeparators,
|
|
15560
|
-
parentEntryPointAbsolutePath__forwardSlashSeparators: entryPointAbsolutePath__forwardSlashSeparators
|
|
15657
|
+
parentEntryPointAbsolutePath__forwardSlashSeparators: entryPointAbsolutePath__forwardSlashSeparators,
|
|
15658
|
+
experimentalArrayForInfiniteRecursionPreventing
|
|
15561
15659
|
});
|
|
15562
15660
|
this.absolutePathsOfChildrenFilesWhichHasBeenScannedDuringCurrentPass.
|
|
15563
15661
|
add(absolutePathOfDirectExistingChildFileOfCurrentEntryPoint__forwardSlashSeparators);
|
|
@@ -15719,7 +15817,7 @@ class SourceCodeSelectiveReprocessingHelper {
|
|
|
15719
15817
|
}
|
|
15720
15818
|
return null;
|
|
15721
15819
|
}
|
|
15722
|
-
updateMetadataForExistingChildFile({ targetChildFileAbsolutePath__forwardSlashSeparators, parentEntryPointAbsolutePath__forwardSlashSeparators }) {
|
|
15820
|
+
updateMetadataForExistingChildFile({ targetChildFileAbsolutePath__forwardSlashSeparators, parentEntryPointAbsolutePath__forwardSlashSeparators, experimentalArrayForInfiniteRecursionPreventing }) {
|
|
15723
15821
|
const targetChildFileRelativePath__forwardSlashSeparators = es_extensions_nodejs_1.ImprovedPath.computeRelativePath({
|
|
15724
15822
|
basePath: this.CONSUMING_PROJECT_ROOT_DIRECTORY_ABSOLUTE_PATH,
|
|
15725
15823
|
comparedPath: targetChildFileAbsolutePath__forwardSlashSeparators,
|
|
@@ -15735,12 +15833,21 @@ class SourceCodeSelectiveReprocessingHelper {
|
|
|
15735
15833
|
absolutePathsOfAffiliatedFilesWhichHasBeenScannedDuringCurrentPass: this.absolutePathsOfChildrenFilesWhichHasBeenScannedDuringCurrentPass
|
|
15736
15834
|
}
|
|
15737
15835
|
});
|
|
15836
|
+
// console.log("CHECKPOINT 3");
|
|
15837
|
+
// console.log("targetChildFileRelativePath__forwardSlashSeparators");
|
|
15838
|
+
// console.log(targetChildFileRelativePath__forwardSlashSeparators);
|
|
15839
|
+
// console.log("cachedMetadataOfCurrentChildFile");
|
|
15840
|
+
// console.log(cachedMetadataOfCurrentChildFile);
|
|
15841
|
+
// console.log("absolutePathsOfChildrenFilesWhichHasBeenScannedDuringCurrentPass");
|
|
15842
|
+
// console.log(this.absolutePathsOfChildrenFilesWhichHasBeenScannedDuringCurrentPass);
|
|
15843
|
+
// debugger;
|
|
15738
15844
|
/* [ Approach ] If the child file has been scanned it must be in the `childrenFilesMetadata` however for the
|
|
15739
15845
|
* TypeScript type checking the non-undefined check of "cachedMetadataOfCurrentAffiliatedFile" additionally
|
|
15740
15846
|
* required. */
|
|
15741
15847
|
if (this.absolutePathsOfChildrenFilesWhichHasBeenScannedDuringCurrentPass.
|
|
15742
15848
|
has(targetChildFileRelativePath__forwardSlashSeparators) &&
|
|
15743
15849
|
(0, es_extensions_1.isNotUndefined)(cachedMetadataOfCurrentChildFile)) {
|
|
15850
|
+
// console.log("CHECKPOINT 4 - A");
|
|
15744
15851
|
cachedMetadataOfCurrentChildFile.parentEntryPointsAbsolutePaths.
|
|
15745
15852
|
add(parentEntryPointAbsolutePath__forwardSlashSeparators);
|
|
15746
15853
|
this.registerEntryPointAsParentTo({
|
|
@@ -15749,6 +15856,7 @@ class SourceCodeSelectiveReprocessingHelper {
|
|
|
15749
15856
|
});
|
|
15750
15857
|
return;
|
|
15751
15858
|
}
|
|
15859
|
+
// console.log("CHECKPOINT 4 - B");
|
|
15752
15860
|
let targetChildFileModificationDateTime__ISO8601;
|
|
15753
15861
|
try {
|
|
15754
15862
|
targetChildFileModificationDateTime__ISO8601 = fs_1.default.
|
|
@@ -15765,6 +15873,8 @@ class SourceCodeSelectiveReprocessingHelper {
|
|
|
15765
15873
|
});
|
|
15766
15874
|
return;
|
|
15767
15875
|
}
|
|
15876
|
+
// console.log("CHECKPOINT 5");
|
|
15877
|
+
// debugger;
|
|
15768
15878
|
let absolutePathsOfExistingChildrenFilesOfTargetOne__forwardSlashSeparators;
|
|
15769
15879
|
if (cachedMetadataOfCurrentChildFile?.modificationDateTime__ISO8601 === targetChildFileModificationDateTime__ISO8601) {
|
|
15770
15880
|
absolutePathsOfExistingChildrenFilesOfTargetOne__forwardSlashSeparators = new Set();
|
|
@@ -15781,10 +15891,14 @@ class SourceCodeSelectiveReprocessingHelper {
|
|
|
15781
15891
|
add(parentEntryPointAbsolutePath__forwardSlashSeparators);
|
|
15782
15892
|
}
|
|
15783
15893
|
else {
|
|
15894
|
+
// console.log("CHECKPOINT 6-B");
|
|
15784
15895
|
absolutePathsOfExistingChildrenFilesOfTargetOne__forwardSlashSeparators = this.
|
|
15785
15896
|
getAbsolutePathsOfExistingChildrenFilesOfExistingTargetFile__forwardSlashSeparators({
|
|
15786
15897
|
targetFileAbsolutePath__forwardSlashSeparators: targetChildFileAbsolutePath__forwardSlashSeparators
|
|
15787
15898
|
});
|
|
15899
|
+
// console.log("absolutePathsOfExistingChildrenFilesOfTargetOne__forwardSlashSeparators");
|
|
15900
|
+
// console.log(absolutePathsOfExistingChildrenFilesOfTargetOne__forwardSlashSeparators);
|
|
15901
|
+
// debugger;
|
|
15788
15902
|
this.childrenFilesMetadata.set(targetChildFileRelativePath__forwardSlashSeparators, {
|
|
15789
15903
|
parentEntryPointsAbsolutePaths: new Set([parentEntryPointAbsolutePath__forwardSlashSeparators]),
|
|
15790
15904
|
modificationDateTime__ISO8601: targetChildFileModificationDateTime__ISO8601,
|
|
@@ -15797,10 +15911,20 @@ class SourceCodeSelectiveReprocessingHelper {
|
|
|
15797
15911
|
}
|
|
15798
15912
|
this.absolutePathsOfChildrenFilesWhichHasBeenScannedDuringCurrentPass.
|
|
15799
15913
|
add(targetChildFileRelativePath__forwardSlashSeparators);
|
|
15914
|
+
// console.log("CHECKPOINT 7");
|
|
15915
|
+
// console.log("absolutePathsOfChildrenFilesWhichHasBeenScannedDuringCurrentPass");
|
|
15916
|
+
// console.log(this.absolutePathsOfChildrenFilesWhichHasBeenScannedDuringCurrentPass);
|
|
15917
|
+
// console.log("absolutePathsOfExistingChildrenFilesOfTargetOne__forwardSlashSeparators");
|
|
15918
|
+
// console.log(absolutePathsOfExistingChildrenFilesOfTargetOne__forwardSlashSeparators);
|
|
15919
|
+
// experimentalArrayForInfiniteRecursionPreventing.push(experimentalArrayForInfiniteRecursionPreventing)
|
|
15800
15920
|
for (const absolutePathOfExistingAffiliatedFileOfTargetOne__forwardSlashSeparators of absolutePathsOfExistingChildrenFilesOfTargetOne__forwardSlashSeparators) {
|
|
15921
|
+
// console.log("CHECKPOINT 8");
|
|
15922
|
+
// console.log(absolutePathOfExistingAffiliatedFileOfTargetOne__forwardSlashSeparators);
|
|
15923
|
+
// debugger;
|
|
15801
15924
|
this.updateMetadataForExistingChildFile({
|
|
15802
15925
|
targetChildFileAbsolutePath__forwardSlashSeparators: absolutePathOfExistingAffiliatedFileOfTargetOne__forwardSlashSeparators,
|
|
15803
|
-
parentEntryPointAbsolutePath__forwardSlashSeparators
|
|
15926
|
+
parentEntryPointAbsolutePath__forwardSlashSeparators,
|
|
15927
|
+
experimentalArrayForInfiniteRecursionPreventing
|
|
15804
15928
|
});
|
|
15805
15929
|
}
|
|
15806
15930
|
}
|
|
@@ -16311,6 +16435,16 @@ module.exports = require("gulp-stylus");
|
|
|
16311
16435
|
|
|
16312
16436
|
/***/ }),
|
|
16313
16437
|
|
|
16438
|
+
/***/ "htmlnano":
|
|
16439
|
+
/*!***************************!*\
|
|
16440
|
+
!*** external "htmlnano" ***!
|
|
16441
|
+
\***************************/
|
|
16442
|
+
/***/ ((module) => {
|
|
16443
|
+
|
|
16444
|
+
module.exports = require("htmlnano");
|
|
16445
|
+
|
|
16446
|
+
/***/ }),
|
|
16447
|
+
|
|
16314
16448
|
/***/ "imagemin-pngquant":
|
|
16315
16449
|
/*!************************************!*\
|
|
16316
16450
|
!*** external "imagemin-pngquant" ***!
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yamato-daiwa/automation",
|
|
3
|
-
"version": "0.7.0-alpha.
|
|
3
|
+
"version": "0.7.0-alpha.3",
|
|
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",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"typescript"
|
|
11
11
|
],
|
|
12
12
|
"engines": {
|
|
13
|
-
"node": ">=
|
|
13
|
+
"node": ">=20.0.0"
|
|
14
14
|
},
|
|
15
15
|
"bin": {
|
|
16
16
|
"yda": "Executable"
|
|
@@ -50,11 +50,12 @@
|
|
|
50
50
|
"gulp-pug": "5.0.0",
|
|
51
51
|
"gulp-sourcemaps": "3.0.0",
|
|
52
52
|
"gulp-stylus": "3.0.1",
|
|
53
|
+
"htmlnano": "2.1.2",
|
|
53
54
|
"imagemin-pngquant": "9.0.2",
|
|
54
55
|
"js-beautify": "1.15.4",
|
|
55
56
|
"json5-loader": "4.0.1",
|
|
56
57
|
"nanoid": "5.1.5",
|
|
57
|
-
"node-html-parser": "
|
|
58
|
+
"node-html-parser": "7.0.1",
|
|
58
59
|
"node-notifier": "10.0.1",
|
|
59
60
|
"pa11y": "8.0.0",
|
|
60
61
|
"probe-image-size": "7.2.3",
|
|
@@ -69,8 +70,10 @@
|
|
|
69
70
|
"stylus-loader": "8.1.1",
|
|
70
71
|
"ts-loader": "9.5.2",
|
|
71
72
|
"vinyl": "2.2.1",
|
|
73
|
+
"vnu-jar": "24.10.17",
|
|
72
74
|
"vue-loader": "17.4.2",
|
|
73
75
|
"vue-style-loader": "4.1.3",
|
|
76
|
+
"vue-tsc": "2.2.10",
|
|
74
77
|
"webpack": "5.99.8",
|
|
75
78
|
"webpack-node-externals": "3.0.0",
|
|
76
79
|
"webpack-stream": "7.0.0",
|
|
@@ -100,7 +103,6 @@
|
|
|
100
103
|
"eslint-webpack-plugin": "4.2.0",
|
|
101
104
|
"ts-node": "10.9.2",
|
|
102
105
|
"typescript": "5.8.3",
|
|
103
|
-
"vnu-jar": "24.10.17",
|
|
104
106
|
"webpack-cli": "6.0.1"
|
|
105
107
|
},
|
|
106
108
|
"scripts": {
|
|
@@ -114,6 +116,7 @@
|
|
|
114
116
|
"url": "git+https://github.com/TokugawaTakeshi/Yamato-Daiwa-Automation.git"
|
|
115
117
|
},
|
|
116
118
|
"homepage": "https://automation.yamato-daiwa.com/",
|
|
119
|
+
"funding": "https://github.com/TokugawaTakeshi/Yamato-Daiwa-Automation?sponsor=1",
|
|
117
120
|
"bugs": {
|
|
118
121
|
"url": "https://github.com/TokugawaTakeshi/Yamato-Daiwa-Automation/issues",
|
|
119
122
|
"email": "tokugawa.takesi@gmail.com"
|