@yamato-daiwa/automation 0.8.0 → 0.9.0-alpha.2

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 (3) hide show
  1. package/EntryPoint.js +244 -80
  2. package/README.md +13 -1
  3. package/package.json +26 -26
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.8.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.4.0","@typescript-eslint/eslint-plugin":"8.46.1","@typescript-eslint/parser":"8.46.1","@vue/compiler-sfc":"3.5.18","@webdiscus/pug-loader":"2.11.1","@yamato-daiwa/es-extensions":"1.8.1","@yamato-daiwa/es-extensions-nodejs":"1.8.1","@yamato-daiwa/style_guides":"0.10.1","@yamato-daiwa/universal-reactive-webpack-loader":"0.0.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.38.0","eslint-plugin-import":"2.32.0","eslint-plugin-n":"17.23.1","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","postcss-loader":"8.2.0","postcss-normalize-stylus-compatible-container-query-syntax":"1.0.0","probe-image-size":"7.2.3","pug-lint":"2.7.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.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.9.0-alpha.2","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.6.1","@typescript-eslint/eslint-plugin":"8.51.0","@typescript-eslint/parser":"8.51.0","@vue/compiler-sfc":"3.5.26","@webdiscus/pug-loader":"2.11.1","@yamato-daiwa/es-extensions":"1.8.4","@yamato-daiwa/es-extensions-nodejs":"1.8.4","@yamato-daiwa/style_guides":"0.11.6","@yamato-daiwa/universal-reactive-webpack-loader":"0.1.0","autoprefixer":"10.4.23","browser-sync":"3.0.4","css-loader":"7.1.2","cssnano":"7.1.2","dotenv":"17.2.3","eslint":"9.39.2","eslint-plugin-import":"2.32.0","eslint-plugin-n":"17.23.1","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.5","imagemin-pngquant":"9.0.2","js-beautify":"1.15.4","json5-loader":"4.0.1","nanoid":"5.1.6","node-html-parser":"7.0.1","node-notifier":"10.0.1","pa11y":"9.0.1","postcss-loader":"8.2.0","postcss-normalize-stylus-compatible-container-query-syntax":"1.1.2","probe-image-size":"7.2.3","pug-lint":"2.7.0","puppeteer":"24.34.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.2","ts-loader":"9.5.4","vinyl":"2.2.1","vnu-jar":"24.10.17","vue-loader":"17.4.2","vue-style-loader":"4.1.3","vue-tsc":"3.2.1","webpack":"5.103.0","webpack-node-externals":"3.0.0","webpack-stream":"7.0.0","worker-loader":"3.0.8","yaml-loader":"0.9.0"},"devDependencies":{"@types/browser-sync":"2.29.1","@types/cssnano":"5.0.0","@types/gulp":"4.0.18","@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.16","eslint-webpack-plugin":"4.2.0","ts-node":"10.9.2","typescript":"5.9.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
 
@@ -1757,7 +1757,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
1757
1757
  return (mod && mod.__esModule) ? mod : { "default": mod };
1758
1758
  };
1759
1759
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1760
- /* ─── Shared state ───────────────────────────────────────────────────────────────────────────────────────────────── */
1760
+ /* ─── Shared State ───────────────────────────────────────────────────────────────────────────────────────────────── */
1761
1761
  const MarkupProcessingSharedState_1 = __importDefault(__webpack_require__(/*! @MarkupProcessing/MarkupProcessingSharedState */ "./ProjectBuilding/SourceCodeProcessing/Markup/MarkupProcessingSharedState.ts"));
1762
1762
  /* ─── Applied Utils ──────────────────────────────────────────────────────────────────────────────────────────────── */
1763
1763
  const browser_sync_1 = __importDefault(__webpack_require__(/*! browser-sync */ "browser-sync"));
@@ -1767,73 +1767,111 @@ const es_extensions_nodejs_1 = __webpack_require__(/*! @yamato-daiwa/es-extensio
1767
1767
  /* ─── Localization ───────────────────────────────────────────────────────────────────────────────────────────────── */
1768
1768
  const BrowserLiveReloaderLocalization_english_1 = __importDefault(__webpack_require__(/*! @BrowserLiveReloading/BrowserLiveReloaderLocalization.english */ "./ProjectBuilding/BrowserLiveReloading/BrowserLiveReloaderLocalization.english.ts"));
1769
1769
  class BrowserLiveReloader {
1770
+ /* ━━━ Static Fields ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
1771
+ /* ┅┅┅ Public ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ */
1772
+ static selfSingleInstance;
1770
1773
  static localization = BrowserLiveReloaderLocalization_english_1.default;
1771
- static onURI_ChangedEventHandlers = [];
1772
- static EXPERIMENTAL_LOGGING = false;
1774
+ /* ┅┅┅ Private ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ */
1775
+ static onNewPageOpenedEventHandlers = new Map();
1776
+ static EXPERIMENTAL_LOGGING = true;
1777
+ /* ━━━ Instance Fields ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
1773
1778
  browserLiveReloadingSettingsRepresentative;
1779
+ markupProcessingSettingsRepresentative;
1774
1780
  waitingForSubsequentFilesWillBeUpdatedCountdown;
1775
- currentHTML_File__EXPERIMENTAL = null;
1781
+ currentHTML_File = null;
1782
+ hasAcceptedAtLeastOneRequestPreviously = false;
1783
+ /* ━━━ Public Methods ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
1776
1784
  static provideBrowserLiveReloadingIfMust(masterConfigRepresentative) {
1777
1785
  const browserLiveReloadingConfigRepresentative = masterConfigRepresentative.getBrowserLiveReloadingSettingsRepresentativeIfMustProvideBrowserLiveReloading();
1778
1786
  if ((0, es_extensions_1.isNull)(browserLiveReloadingConfigRepresentative)) {
1779
1787
  return (callback) => { callback(); };
1780
1788
  }
1781
- const dataHoldingSelfInstance = new BrowserLiveReloader(browserLiveReloadingConfigRepresentative);
1789
+ const selfInstance = new BrowserLiveReloader(browserLiveReloadingConfigRepresentative, masterConfigRepresentative.markupProcessingSettingsRepresentative);
1790
+ BrowserLiveReloader.selfSingleInstance = selfInstance;
1782
1791
  return (callback) => {
1783
1792
  BrowserCoordinatorRelatedFilesWatcher_1.default.initialize({
1784
- onAnyEventRelatedWithActualFilesHandler: dataHoldingSelfInstance.onAnyChangeInRelatedFiles.
1785
- bind(dataHoldingSelfInstance),
1793
+ onAnyEventRelatedWithActualFilesHandler: selfInstance.onAnyChangeInRelatedFiles.
1794
+ bind(selfInstance),
1786
1795
  browserLiveReloadingSettingsRepresentative: browserLiveReloadingConfigRepresentative
1787
1796
  });
1788
- dataHoldingSelfInstance.initializeBrowsersync();
1797
+ selfInstance.initializeBrowsersync();
1789
1798
  callback();
1790
1799
  };
1791
1800
  }
1792
- static addOnURI_ChangedEventHandler(onURI_ChangedEventHandler) {
1793
- this.onURI_ChangedEventHandlers.push(onURI_ChangedEventHandler);
1801
+ static addOnNewPageOpenedEventHandler({ handlerID, handler }) {
1802
+ BrowserLiveReloader.onNewPageOpenedEventHandlers.set(handlerID, handler);
1794
1803
  }
1795
- constructor(browserLiveReloadingConfigRepresentative) {
1804
+ static reload() {
1805
+ browser_sync_1.default.reload();
1806
+ }
1807
+ /* ━━━ Constructor ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
1808
+ constructor(browserLiveReloadingConfigRepresentative, markupProcessingSettingsRepresentative) {
1796
1809
  this.browserLiveReloadingSettingsRepresentative = browserLiveReloadingConfigRepresentative;
1810
+ this.markupProcessingSettingsRepresentative = markupProcessingSettingsRepresentative;
1797
1811
  }
1812
+ /* ━━━ Private Methods ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
1798
1813
  initializeBrowsersync() {
1799
1814
  browser_sync_1.default.init({
1800
1815
  /* [ Browsersync theory ] Either "server" or "proxy" could be specified but not both. */
1801
- ...(0, es_extensions_1.isNull)(this.browserLiveReloadingSettingsRepresentative.proxy) ? {
1802
- server: {
1803
- baseDir: this.browserLiveReloadingSettingsRepresentative.targetFilesRootDirectoryAbsolutePath,
1804
- index: this.browserLiveReloadingSettingsRepresentative.startingFileNameWithExtension
1805
- }
1806
- } : {
1816
+ ...(0, es_extensions_1.isNull)(this.browserLiveReloadingSettingsRepresentative.proxy) ?
1817
+ {
1818
+ server: {
1819
+ baseDir: this.browserLiveReloadingSettingsRepresentative.targetFilesRootDirectoryAbsolutePath,
1820
+ index: this.browserLiveReloadingSettingsRepresentative.startingFileNameWithExtension
1821
+ }
1822
+ } : {
1807
1823
  proxy: this.browserLiveReloadingSettingsRepresentative.proxy
1808
1824
  },
1809
- ...(0, es_extensions_1.isNotNull)(this.browserLiveReloadingSettingsRepresentative.HTTPS) ? {
1810
- https: {
1811
- key: this.browserLiveReloadingSettingsRepresentative.HTTPS.keyAbsolutePath,
1812
- cert: this.browserLiveReloadingSettingsRepresentative.HTTPS.certificateAbsolutePath
1813
- }
1814
- } : null,
1825
+ ...(0, es_extensions_1.isNotNull)(this.browserLiveReloadingSettingsRepresentative.HTTPS) ?
1826
+ {
1827
+ https: {
1828
+ key: this.browserLiveReloadingSettingsRepresentative.HTTPS.keyAbsolutePath,
1829
+ cert: this.browserLiveReloadingSettingsRepresentative.HTTPS.certificateAbsolutePath
1830
+ }
1831
+ } :
1832
+ null,
1815
1833
  cors: this.browserLiveReloadingSettingsRepresentative.mustUseCORS,
1816
1834
  /* [ Browsersync theory ] When port is undefined, it will be assigned automatically. */
1817
- ...(0, es_extensions_1.isNotNull)(this.browserLiveReloadingSettingsRepresentative.localServerCustomPort) ? {
1818
- port: this.browserLiveReloadingSettingsRepresentative.localServerCustomPort
1819
- } : null,
1835
+ ...(0, es_extensions_1.isNotNull)(this.browserLiveReloadingSettingsRepresentative.localServerCustomPort) ?
1836
+ {
1837
+ port: this.browserLiveReloadingSettingsRepresentative.localServerCustomPort
1838
+ } :
1839
+ null,
1820
1840
  ignore: this.browserLiveReloadingSettingsRepresentative.globSelectorsOfFilesAndDirectoriesWhichWillBeIgnored,
1821
1841
  /* [ Browsersync theory ] When value is empty array, no browsers will be opened. */
1822
- ...this.browserLiveReloadingSettingsRepresentative.targetBrowsers.length > 0 ? {
1823
- browser: this.browserLiveReloadingSettingsRepresentative.targetBrowsers
1824
- } : null,
1825
- ui: this.browserLiveReloadingSettingsRepresentative.mustEnableBrowsersyncUserInterface ? {
1826
- /* [ Browsersync theory ] When port is undefined, it will be assigned automatically. */
1827
- ...(0, es_extensions_1.isNotNull)(this.browserLiveReloadingSettingsRepresentative.browsersyncUserInterfaceCustomPort) ? {
1828
- port: this.browserLiveReloadingSettingsRepresentative.browsersyncUserInterfaceCustomPort
1829
- } : null
1830
- } : false,
1831
- logLevel: "warn",
1842
+ ...this.browserLiveReloadingSettingsRepresentative.targetBrowsers.length > 0 ?
1843
+ {
1844
+ browser: this.browserLiveReloadingSettingsRepresentative.targetBrowsers
1845
+ } :
1846
+ null,
1847
+ ui: this.browserLiveReloadingSettingsRepresentative.mustEnableBrowsersyncUserInterface ?
1848
+ {
1849
+ /* [ Browsersync theory ] When the port is undefined, it will be assigned automatically. */
1850
+ ...(0, es_extensions_1.isNotNull)(this.browserLiveReloadingSettingsRepresentative.browsersyncUserInterfaceCustomPort) ?
1851
+ { port: this.browserLiveReloadingSettingsRepresentative.browsersyncUserInterfaceCustomPort } : null
1852
+ } :
1853
+ false,
1832
1854
  notify: this.browserLiveReloadingSettingsRepresentative.mustDisplayBrowsersyncConnectedPopupInBrowser,
1833
1855
  middleware: this.onRequest.bind(this)
1834
1856
  });
1835
1857
  }
1836
- onAnyChangeInRelatedFiles() {
1858
+ // ━━━ TODO ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1859
+ onAnyChangeInRelatedFiles(targetFileAbsolutePath__forwardSlashesPathSeparators) {
1860
+ es_extensions_1.Logger.logWarning({
1861
+ badge: { customText: "Experimental" },
1862
+ title: "BrowserLiveReloader.onAnyChangeInRelatedFiles,",
1863
+ description: targetFileAbsolutePath__forwardSlashesPathSeparators,
1864
+ compactLayout: true,
1865
+ mustOutputIf: BrowserLiveReloader.EXPERIMENTAL_LOGGING
1866
+ });
1867
+ if (this.markupProcessingSettingsRepresentative?.processingOnDemandSettings.enabled === true &&
1868
+ (0, es_extensions_1.extractLastExtensionOfFileName)({
1869
+ targetPath: targetFileAbsolutePath__forwardSlashesPathSeparators,
1870
+ withLeadingDot: true
1871
+ }) === "html") {
1872
+ console.log("ok!!!");
1873
+ return;
1874
+ }
1837
1875
  clearTimeout(this.waitingForSubsequentFilesWillBeUpdatedCountdown);
1838
1876
  this.waitingForSubsequentFilesWillBeUpdatedCountdown = setTimeout(() => {
1839
1877
  es_extensions_1.Logger.logInfo({
@@ -1843,13 +1881,18 @@ class BrowserLiveReloader {
1843
1881
  browser_sync_1.default.reload();
1844
1882
  }, (0, es_extensions_1.secondsToMilliseconds)(this.browserLiveReloadingSettingsRepresentative.periodBetweenFileUpdatingAndBrowserReloading__seconds));
1845
1883
  }
1846
- onRequest(request, _response, letPass) {
1884
+ onRequest(request, response, letPass) {
1847
1885
  es_extensions_1.Logger.logWarning({
1848
1886
  badge: { customText: "Experimental" },
1849
- title: "Local Server, Request:",
1887
+ title: "BrowserLiveReloader.onRequest, URI:",
1850
1888
  description: request.url ?? "No URI",
1889
+ compactLayout: true,
1851
1890
  mustOutputIf: BrowserLiveReloader.EXPERIMENTAL_LOGGING
1852
1891
  });
1892
+ if (this.markupProcessingSettingsRepresentative?.processingOnDemandSettings.enabled !== true) {
1893
+ letPass();
1894
+ return;
1895
+ }
1853
1896
  if ((0, es_extensions_1.isUndefined)(request.url)) {
1854
1897
  letPass();
1855
1898
  return;
@@ -1867,21 +1910,33 @@ class BrowserLiveReloader {
1867
1910
  letPass();
1868
1911
  return;
1869
1912
  }
1913
+ const correspondingSourcePugFileAbsolutePath__forwardSlashSeparators = (0, es_extensions_1.getExpectedToBeNonUndefinedMapValue)(MarkupProcessingSharedState_1.default.outputHTML_FilesAndSourcePugFilesAbsolutePathsCorrespondenceMap, targetHTML_FileAbsolutePath);
1914
+ const hasPageChanged = this.currentHTML_File !== targetHTML_FileAbsolutePath;
1870
1915
  es_extensions_1.Logger.logWarning({
1871
1916
  badge: { customText: "Experimental" },
1872
- title: "Local Server, Target HTML File",
1917
+ title: "BrowserLiveReloader.onRequest, Target HTML File:",
1873
1918
  description: targetHTML_FileAbsolutePath,
1874
1919
  mustOutputIf: BrowserLiveReloader.EXPERIMENTAL_LOGGING,
1875
1920
  additionalData: {
1876
- hasPageChanged: this.currentHTML_File__EXPERIMENTAL !== targetHTML_FileAbsolutePath,
1877
- relatedEntryPointsSourceFiles: Array.from(MarkupProcessingSharedState_1.default.entryPointsSourceAndOutputFilesAbsolutePathsCorrespondenceMap.entries()).
1878
- filter(([, entryPointOutputFileAbsolutePath]) => targetHTML_FileAbsolutePath === entryPointOutputFileAbsolutePath).
1879
- map(([entryPointSourceFileAbsolutePath]) => entryPointSourceFileAbsolutePath)
1921
+ hasPageChanged,
1922
+ relatedEntryPointsSourceFiles: correspondingSourcePugFileAbsolutePath__forwardSlashSeparators
1880
1923
  }
1881
1924
  });
1882
- this.currentHTML_File__EXPERIMENTAL = targetHTML_FileAbsolutePath;
1883
- for (const handler of BrowserLiveReloader.onURI_ChangedEventHandlers) {
1884
- handler(targetHTML_FileAbsolutePath);
1925
+ this.currentHTML_File = targetHTML_FileAbsolutePath;
1926
+ if (hasPageChanged) {
1927
+ for (const handler of BrowserLiveReloader.onNewPageOpenedEventHandlers.values()) {
1928
+ handler({
1929
+ relatedSourcePugFileAbsolutePath__forwardSlashSeparators: correspondingSourcePugFileAbsolutePath__forwardSlashSeparators,
1930
+ HTML_FileAbsolutePath__forwardSlashSeparators: targetHTML_FileAbsolutePath
1931
+ });
1932
+ }
1933
+ }
1934
+ if (!this.hasAcceptedAtLeastOneRequestPreviously) {
1935
+ this.hasAcceptedAtLeastOneRequestPreviously = true;
1936
+ response.setHeader("Content-Type", "text/html");
1937
+ response.write("<body><h1>Please wait</h1></body>");
1938
+ response.end();
1939
+ return;
1885
1940
  }
1886
1941
  letPass();
1887
1942
  }
@@ -1899,7 +1954,7 @@ exports["default"] = BrowserLiveReloader;
1899
1954
 
1900
1955
 
1901
1956
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1902
- const BrowserLiveReloaderLocalization__English = {
1957
+ const browserLiveReloaderLocalization__english = {
1903
1958
  generateOutputFileChangeDetectionLog: (namedParameters) => ({
1904
1959
  title: "Browser live reloader, file status changing detected",
1905
1960
  description: `\tEvent : ${namedParameters.eventLocalizedInterpretation}\n` +
@@ -1911,7 +1966,7 @@ const BrowserLiveReloaderLocalization__English = {
1911
1966
  description: "The waiting period of other files will be saved elapsed. Browser will be reloaded soon."
1912
1967
  }
1913
1968
  };
1914
- exports["default"] = BrowserLiveReloaderLocalization__English;
1969
+ exports["default"] = browserLiveReloaderLocalization__english;
1915
1970
 
1916
1971
 
1917
1972
  /***/ }),
@@ -3270,7 +3325,7 @@ const es_extensions_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions */ "
3270
3325
  var SourceCodeProcessingSettingsGenericProperties__FromFile__RawValid;
3271
3326
  (function (SourceCodeProcessingSettingsGenericProperties__FromFile__RawValid) {
3272
3327
  /* ━━━ Properties Specification ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
3273
- function generatePropertiesSpecification({ entryPointsGroupBuildingModeIndependentSpecificSettingsLocalizedPropertiesSpecification = {}, entryPointsGroupBuildingModeDependentSpecificSettingsLocalizedPropertiesSpecification = {} }) {
3328
+ function generatePropertiesSpecification({ entryPointsGroupBuildingModeIndependentSpecificSettingsLocalizedPropertiesSpecification = {}, entryPointsGroupBuildingModeDependentSpecificSettingsLocalizedPropertiesSpecification }) {
3274
3329
  return {
3275
3330
  $entryPointsGroups: {
3276
3331
  newName: "entryPointsGroups",
@@ -7034,7 +7089,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
7034
7089
  var ECMA_ScriptLogicProcessingRestrictions;
7035
7090
  (function (ECMA_ScriptLogicProcessingRestrictions) {
7036
7091
  ECMA_ScriptLogicProcessingRestrictions.supportedEntryPointsSourceFilesNamesExtensionsWithoutLeadingDots = new Set([
7037
- "js", "mjs", "ts", "mts"
7092
+ "js", "mjs", "ts", "mts", "jsx", "tsx"
7038
7093
  ]);
7039
7094
  ECMA_ScriptLogicProcessingRestrictions.supportedAdditionalFilesNamesExtensionsWithoutLeadingDotsOfChildrenFiles = new Set([
7040
7095
  "jsx", "tsx", "vue"
@@ -7073,12 +7128,14 @@ const SourceCodeProcessingConfigRepresentative_1 = __importDefault(__webpack_req
7073
7128
  /* ─── Utils ──────────────────────────────────────────────────────────────────────────────────────────────────────── */
7074
7129
  const es_extensions_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions */ "@yamato-daiwa/es-extensions");
7075
7130
  class ECMA_ScriptLogicProcessingSettingsRepresentative extends SourceCodeProcessingConfigRepresentative_1.default {
7131
+ /* ━━━ Fields ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
7132
+ /* ┅┅┅ Superclasses' Requirements ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ */
7076
7133
  /* [ Theory ] Below two fields could be even or not. */
7077
7134
  supportedEntryPointsSourceFileNameExtensionsWithoutLeadingDots;
7078
7135
  actualFileNameExtensionsWithoutLeadingDots;
7079
- TARGET_FILES_KIND_FOR_LOGGING__SINGULAR_FORM = "ECMAScript logic";
7080
- TARGET_FILES_KIND_FOR_LOGGING__PLURAL_FORM = "ECMAScript logic";
7081
- TASK_NAME_FOR_LOGGING = "ECMAScript Logic Processing";
7136
+ TARGET_FILES_KIND_FOR_LOGGING__SINGULAR_FORM = "ECMAScript Logic";
7137
+ TARGET_FILES_KIND_FOR_LOGGING__PLURAL_FORM = "ECMAScript Logic";
7138
+ /* ┅┅┅ Specific ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ */
7082
7139
  entryPointsGroupsNormalizedSettingsMappedByReferences;
7083
7140
  relevantEntryPointsGroupsSettings;
7084
7141
  electronSettings;
@@ -8804,8 +8861,8 @@ class WebpackConfigGenerator {
8804
8861
  loader: "ts-loader",
8805
8862
  options: {
8806
8863
  configFile: entryPointsGroupSettings.typeScriptConfigurationFileAbsolutePath,
8807
- /* [ Performance Optimization ] Type checking is been executed externally and once for all files. */
8808
- transpileOnly: false,
8864
+ /* [ Performance Optimization ] Type checking is being executed externally and once for all files. */
8865
+ transpileOnly: true,
8809
8866
  /* [ Theory ] This option allows TypeScript to process the code extracted from a single file component.
8810
8867
  * [ Reference ] https://github.com/Microsoft/TypeScript-Vue-Starter#single-file-components */
8811
8868
  appendTsSuffixTo: [/\.vue$/u]
@@ -8840,7 +8897,10 @@ class WebpackConfigGenerator {
8840
8897
  },
8841
8898
  {
8842
8899
  test: /\.ydur\.pug$/u,
8843
- loader: "@yamato-daiwa/universal-reactive-webpack-loader"
8900
+ loader: "@yamato-daiwa/universal-reactive-webpack-loader",
8901
+ options: {
8902
+ debug: false
8903
+ }
8844
8904
  },
8845
8905
  {
8846
8906
  loader: "@webdiscus/pug-loader",
@@ -9216,20 +9276,25 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
9216
9276
  /* ─── Restrictions ───────────────────────────────────────────────────────────────────────────────────────────────── */
9217
9277
  const MarkupProcessingRestrictions_1 = __importDefault(__webpack_require__(/*! @MarkupProcessing/MarkupProcessingRestrictions */ "./ProjectBuilding/SourceCodeProcessing/Markup/MarkupProcessingRestrictions.ts"));
9218
9278
  const PROCESSABLE_FILES_POINTER_ALIAS_PREFIX_1 = __importDefault(__webpack_require__(/*! @ProjectBuilding/Common/Restrictions/ResourcesReferences/PROCESSABLE_FILES_POINTER_ALIAS_PREFIX */ "./ProjectBuilding/Common/Restrictions/ResourcesReferences/PROCESSABLE_FILES_POINTER_ALIAS_PREFIX.ts"));
9219
- const PLAIN_COPIED_FILES_POINTER_ALIAS_PREFIX_1 = __importDefault(__webpack_require__(/*! @ProjectBuilding/Common/Restrictions/ResourcesReferences/PLAIN_COPIED_FILES_POINTER_ALIAS_PREFIX */ "./ProjectBuilding/Common/Restrictions/ResourcesReferences/PLAIN_COPIED_FILES_POINTER_ALIAS_PREFIX.ts"));
9220
9279
  const GulpStreamBasedSourceCodeProcessingConfigRepresentative_1 = __importDefault(__webpack_require__(/*! @ProjectBuilding/Common/SettingsRepresentatives/GulpStreamBasedSourceCodeProcessingConfigRepresentative */ "./ProjectBuilding/Common/SettingsRepresentatives/GulpStreamBasedSourceCodeProcessingConfigRepresentative.ts"));
9221
9280
  /* ─── Utils ──────────────────────────────────────────────────────────────────────────────────────────────────────── */
9222
9281
  const es_extensions_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions */ "@yamato-daiwa/es-extensions");
9223
9282
  const es_extensions_nodejs_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions-nodejs */ "@yamato-daiwa/es-extensions-nodejs");
9224
9283
  class MarkupProcessingSettingsRepresentative extends GulpStreamBasedSourceCodeProcessingConfigRepresentative_1.default {
9284
+ /* ━━━ Fields ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
9285
+ /* ┅┅┅ Superclasses' Requirements ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ */
9225
9286
  /* [ Theory ] Below two fields could be even or not. */
9226
9287
  supportedEntryPointsSourceFileNameExtensionsWithoutLeadingDots;
9227
9288
  actualFileNameExtensionsWithoutLeadingDots;
9228
- TARGET_FILES_KIND_FOR_LOGGING__PLURAL_FORM = "Markup";
9229
9289
  TARGET_FILES_KIND_FOR_LOGGING__SINGULAR_FORM = "Markup";
9230
- TASK_NAME_FOR_LOGGING = "Markup Processing";
9231
- PLAIN_COPIED_FILES_ALIAS_PREFIX = PLAIN_COPIED_FILES_POINTER_ALIAS_PREFIX_1.default;
9290
+ TARGET_FILES_KIND_FOR_LOGGING__PLURAL_FORM = "Markup";
9291
+ /* ┅┅┅ Specific ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ */
9292
+ /* ╍╍╍ Settings ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍ */
9293
+ /* ─── Common ───────────────────────────────────────────────────────────────────────────────────────────────────── */
9232
9294
  WAITING_FOR_SUBSEQUENT_FILES_WILL_SAVED_PERIOD__SECONDS;
9295
+ processingOnDemandSettings;
9296
+ /* ╍╍╍ Other ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍ */
9297
+ TASK_NAME_FOR_LOGGING = "Markup Processing";
9233
9298
  entryPointsGroupsNormalizedSettingsMappedByReferences;
9234
9299
  sourceCodeLintingCommonSettings;
9235
9300
  importingFromTypeScriptSettings;
@@ -9241,9 +9306,14 @@ class MarkupProcessingSettingsRepresentative extends GulpStreamBasedSourceCodePr
9241
9306
  mustValidateHTML;
9242
9307
  mustInspectAccessibility;
9243
9308
  sourceCodeProcessingCommonSettings;
9244
- mustResolveResourcesReferencesToAbsolutePath;
9245
9309
  constructor(normalizedMarkupProcessingSettings, projectBuildingMasterConfigRepresentative) {
9246
9310
  super(projectBuildingMasterConfigRepresentative);
9311
+ this.supportedEntryPointsSourceFileNameExtensionsWithoutLeadingDots = normalizedMarkupProcessingSettings.common.
9312
+ supportedEntryPointsSourceFilesNamesExtensionsWithoutLeadingDots;
9313
+ this.actualFileNameExtensionsWithoutLeadingDots = (0, es_extensions_1.mergeSets)(this.supportedEntryPointsSourceFileNameExtensionsWithoutLeadingDots, normalizedMarkupProcessingSettings.common.supportedAdditionalFilesNamesExtensionsWithoutLeadingDotsOfChildrenFiles);
9314
+ this.WAITING_FOR_SUBSEQUENT_FILES_WILL_SAVED_PERIOD__SECONDS = normalizedMarkupProcessingSettings.common.
9315
+ secondsBetweenFileUpdatingAndStartingOfRebuilding;
9316
+ this.processingOnDemandSettings = normalizedMarkupProcessingSettings.common.processingOnDemand;
9247
9317
  this.sourceCodeLintingCommonSettings = normalizedMarkupProcessingSettings.linting;
9248
9318
  this.importingFromTypeScriptSettings = normalizedMarkupProcessingSettings.importingFromTypeScript;
9249
9319
  this.importingFromJavaScriptSettings = normalizedMarkupProcessingSettings.importingFromJavaScript;
@@ -9251,11 +9321,6 @@ class MarkupProcessingSettingsRepresentative extends GulpStreamBasedSourceCodePr
9251
9321
  this.routingSettings = normalizedMarkupProcessingSettings.routing;
9252
9322
  this.relevantEntryPointsGroupsSettings = normalizedMarkupProcessingSettings.relevantEntryPointsGroups;
9253
9323
  this.loggingSettings = normalizedMarkupProcessingSettings.logging;
9254
- this.supportedEntryPointsSourceFileNameExtensionsWithoutLeadingDots = normalizedMarkupProcessingSettings.common.
9255
- supportedEntryPointsSourceFilesNamesExtensionsWithoutLeadingDots;
9256
- this.actualFileNameExtensionsWithoutLeadingDots = (0, es_extensions_1.mergeSets)(this.supportedEntryPointsSourceFileNameExtensionsWithoutLeadingDots, normalizedMarkupProcessingSettings.common.supportedAdditionalFilesNamesExtensionsWithoutLeadingDotsOfChildrenFiles);
9257
- this.WAITING_FOR_SUBSEQUENT_FILES_WILL_SAVED_PERIOD__SECONDS = normalizedMarkupProcessingSettings.common.
9258
- secondsBetweenFileUpdatingAndStartingOfRebuilding;
9259
9324
  this.entryPointsGroupsNormalizedSettingsMappedByReferences = new Map(Array.from(this.relevantEntryPointsGroupsSettings.values()).map((entryPointsGroupSettings) => [
9260
9325
  `${PROCESSABLE_FILES_POINTER_ALIAS_PREFIX_1.default}${entryPointsGroupSettings.ID}`,
9261
9326
  entryPointsGroupSettings
@@ -9263,8 +9328,6 @@ class MarkupProcessingSettingsRepresentative extends GulpStreamBasedSourceCodePr
9263
9328
  this.mustValidateHTML = Array.from(this.relevantEntryPointsGroupsSettings.values()).some((entryPointsGroupSettings) => entryPointsGroupSettings.HTML_Validation.mustExecute);
9264
9329
  this.mustInspectAccessibility = Array.from(this.relevantEntryPointsGroupsSettings.values()).some((entryPointsGroupSettings) => entryPointsGroupSettings.accessibilityInspection.mustExecute);
9265
9330
  this.sourceCodeProcessingCommonSettings = normalizedMarkupProcessingSettings.common;
9266
- this.mustResolveResourcesReferencesToAbsolutePath = normalizedMarkupProcessingSettings.common.
9267
- mustResolveResourcesReferencesToAbsolutePath;
9268
9331
  }
9269
9332
  /* ━━━ Common ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
9270
9333
  computeOutputFileNameExtension(compoundParameter) {
@@ -9430,6 +9493,7 @@ class MarkupProcessingSettingsRepresentative extends GulpStreamBasedSourceCodePr
9430
9493
  }
9431
9494
  return {
9432
9495
  mustInitialFileBeKept: !areLocalizedVersionsRequiredForCurrentFile,
9496
+ initialSourceFileAbsolutePath: sourceFileAbsolutePath__forwardSlashesSeparators,
9433
9497
  sourceAndOutputAbsolutePathsOfAllVariations,
9434
9498
  absoluteSourcePathsOfAllVariations,
9435
9499
  dataForPugBySourceFilesAbsolutePaths
@@ -9456,6 +9520,10 @@ const MarkupProcessingRestrictions_1 = __importDefault(__webpack_require__(/*! @
9456
9520
  const es_extensions_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions */ "@yamato-daiwa/es-extensions");
9457
9521
  const MarkupProcessingSettings__Default = {
9458
9522
  periodBetweenFileUpdatingAndRebuildingStarting__seconds: 1,
9523
+ processingOnDemand: {
9524
+ enabled: false,
9525
+ fullInitialBuilding: false
9526
+ },
9459
9527
  staticPreview: {
9460
9528
  typeScriptConfigurationFileRelativePath: "tsconfig.json"
9461
9529
  },
@@ -9694,12 +9762,14 @@ var MarkupProcessingSettings__FromFile__RawValid;
9694
9762
  areNullTypeValuesForbidden: true,
9695
9763
  minimalEntriesCount: 1,
9696
9764
  allowedKeys: [
9765
+ "$staticPreview",
9697
9766
  "$localDevelopment",
9698
9767
  "$testing",
9699
9768
  "$staging",
9700
9769
  "$production"
9701
9770
  ],
9702
9771
  keysRenamings: {
9772
+ $staticPreview: ConsumingProjectBuildingModes_1.default.staticPreview,
9703
9773
  $localDevelopment: ConsumingProjectBuildingModes_1.default.localDevelopment,
9704
9774
  $testing: ConsumingProjectBuildingModes_1.default.testing,
9705
9775
  $staging: ConsumingProjectBuildingModes_1.default.staging,
@@ -9711,16 +9781,50 @@ var MarkupProcessingSettings__FromFile__RawValid;
9711
9781
  $secondsBetweenFileUpdatingAndStartingOfRebuilding: {
9712
9782
  newName: "secondsBetweenFileUpdatingAndStartingOfRebuilding",
9713
9783
  type: Number,
9714
- numbersSet: es_extensions_1.RawObjectDataProcessor.NumbersSets.naturalNumber,
9784
+ numbersSet: es_extensions_1.RawObjectDataProcessor.NumbersSets.positiveRealNumber,
9715
9785
  isNaN_Forbidden: true,
9716
9786
  isUndefinedForbidden: false,
9717
9787
  isNullForbidden: true
9718
9788
  },
9789
+ // TODO Must be undefined if static preview
9719
9790
  $mustResolveResourcesPointersToRelativePaths: {
9720
9791
  newName: "mustResolveResourcesPointersToRelativePaths",
9721
9792
  type: Boolean,
9722
9793
  isUndefinedForbidden: false,
9723
9794
  isNullForbidden: true
9795
+ },
9796
+ $processingOnDemand: {
9797
+ newName: "processingOnDemand",
9798
+ type: Object,
9799
+ isUndefinedForbidden: false,
9800
+ mustBeUndefinedIf: {
9801
+ predicate: ({ targetPropertyDotSeparatedPath }) => ![
9802
+ "$staticPreview",
9803
+ "$localDevelopment"
9804
+ /* eslint-disable-next-line @typescript-eslint/no-magic-numbers --
9805
+ * No clear name for `-2` value.
9806
+ * Refers to the last 2 elements in split full qualified name like `$localDevelopment.
9807
+ * $processingOnDemand` in
9808
+ * `$projectBuilding.$markupProcessing.$common.$buildingModeDependent.$localDevelopment.
9809
+ * $processingOnDemand`. */
9810
+ ].includes((0, es_extensions_1.splitString)(targetPropertyDotSeparatedPath, ".").slice(-2)[0]),
9811
+ descriptionForLogging: "building mode is production-like (testing, staging, production)"
9812
+ },
9813
+ mustTransformNullToUndefined: true,
9814
+ properties: {
9815
+ $enabled: {
9816
+ newName: "enabled",
9817
+ type: Boolean,
9818
+ isUndefinedForbidden: false,
9819
+ isNullForbidden: true
9820
+ },
9821
+ $fullInitialBuilding: {
9822
+ newName: "fullInitialBuilding",
9823
+ type: Boolean,
9824
+ isUndefinedForbidden: false,
9825
+ isNullForbidden: true
9826
+ }
9827
+ }
9724
9828
  }
9725
9829
  }
9726
9830
  }
@@ -10172,7 +10276,15 @@ class MarkupProcessingSharedState {
10172
10276
  static importsFromTypeScript;
10173
10277
  static importsFromJavaScript;
10174
10278
  static pagesVariationsMetadata = new Map();
10175
- static get entryPointsSourceAndOutputFilesAbsolutePathsCorrespondenceMap() {
10279
+ /**
10280
+ * @description
10281
+ * For the state-dependent variations of static preview and/or static localizations cases, the output files number is
10282
+ * greater than the number of source ones. To resolve internal links like
10283
+ * `@Pages/Task/Management/TasksManagementPage__Loading.english` to file
10284
+ * `[PagesDirectory]/Task/Management/TasksManagementPage.pug`, the path to the fictive
10285
+ * `[PagesDirectory]/Task/Management/TasksManagementPageLoading.english.pug` file must be stored.
10286
+ */
10287
+ static get entryPointsSourceAndOutputFilesAbsolutePathsCorrespondenceMap__includingFictiveOnes() {
10176
10288
  return Array.from(MarkupProcessingSharedState.pagesVariationsMetadata.values()).
10177
10289
  reduce((interimConcatenatedMap, { sourceAndOutputAbsolutePathsOfAllVariations }) => (0, es_extensions_1.addEntriesToMap)({
10178
10290
  targetMap: interimConcatenatedMap,
@@ -10180,6 +10292,15 @@ class MarkupProcessingSharedState {
10180
10292
  newEntries: sourceAndOutputAbsolutePathsOfAllVariations
10181
10293
  }), new Map());
10182
10294
  }
10295
+ static get outputHTML_FilesAndSourcePugFilesAbsolutePathsCorrespondenceMap() {
10296
+ return Array.from(MarkupProcessingSharedState.pagesVariationsMetadata.values()).
10297
+ reduce((interimConcatenatedMap, { initialSourceFileAbsolutePath, sourceAndOutputAbsolutePathsOfAllVariations }) => (0, es_extensions_1.addEntriesToMap)({
10298
+ targetMap: interimConcatenatedMap,
10299
+ mutably: true,
10300
+ newEntries: Array.from(sourceAndOutputAbsolutePathsOfAllVariations.values()).
10301
+ map((outputHTML_FieldAbsolutePath) => [outputHTML_FieldAbsolutePath, initialSourceFileAbsolutePath])
10302
+ }), new Map());
10303
+ }
10183
10304
  }
10184
10305
  exports["default"] = MarkupProcessingSharedState;
10185
10306
 
@@ -10230,6 +10351,7 @@ const htmlnano_1 = __importDefault(__webpack_require__(/*! htmlnano */ "htmlnano
10230
10351
  const es_extensions_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions */ "@yamato-daiwa/es-extensions");
10231
10352
  const es_extensions_nodejs_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions-nodejs */ "@yamato-daiwa/es-extensions-nodejs");
10232
10353
  const node_html_parser_1 = __webpack_require__(/*! node-html-parser */ "node-html-parser");
10354
+ const BrowserLiveReloader_1 = __importDefault(__webpack_require__(/*! @BrowserLiveReloading/BrowserLiveReloader */ "./ProjectBuilding/BrowserLiveReloading/BrowserLiveReloader.ts"));
10233
10355
  class MarkupProcessor extends GulpStreamsBasedTaskExecutor_1.default {
10234
10356
  static CACHED_ACCESSIBILITY_INSPECTION_RESULTS_DIRECTORY_NAME = "AccessibilityInspection";
10235
10357
  static ENTRY_POINTS_AND_PARTIAL_FILES_MAPPING_CACHE_FILE_NAME_WITH_EXTENSION = "MarkupEntryPointsAndAffiliatedFilesMappingCache.json";
@@ -10307,13 +10429,24 @@ class MarkupProcessor extends GulpStreamsBasedTaskExecutor_1.default {
10307
10429
  handlerID: "ON_MARKUP_ENTRY_POINT_FILE_DELETED--BY_MARKUP_PROCESSOR",
10308
10430
  handler: MarkupProcessor.onEntryPointFileDeleted
10309
10431
  });
10432
+ if (markupProcessingSettingsRepresentative.processingOnDemandSettings.enabled) {
10433
+ BrowserLiveReloader_1.default.addOnNewPageOpenedEventHandler({
10434
+ handlerID: "ON_PAGE_CHANGE_EVENT_HANDLER--BY_MARKUP_PROCESSOR",
10435
+ handler({ relatedSourcePugFileAbsolutePath__forwardSlashSeparators }) {
10436
+ dataHoldingSelfInstance.processEntryPoints([relatedSourcePugFileAbsolutePath__forwardSlashSeparators])();
10437
+ }
10438
+ });
10439
+ if (!markupProcessingSettingsRepresentative.processingOnDemandSettings.fullInitialBuilding) {
10440
+ return (0, createImmediatelyEndingEmptyStream_1.default)();
10441
+ }
10442
+ }
10310
10443
  }
10311
10444
  return dataHoldingSelfInstance.processEntryPoints(markupProcessingSettingsRepresentative.initialRelevantEntryPointsSourceFilesAbsolutePaths);
10312
10445
  }
10313
10446
  constructor(markupProcessingSettingsRepresentative, projectBuildingMasterConfigRepresentative) {
10314
10447
  super({
10315
10448
  projectBuildingMasterConfigRepresentative,
10316
- taskTitleForLogging: "Markup Processing"
10449
+ taskTitleForLogging: markupProcessingSettingsRepresentative.TASK_NAME_FOR_LOGGING
10317
10450
  });
10318
10451
  this.logging = {
10319
10452
  pathsOfFilesWillBeProcessed: markupProcessingSettingsRepresentative.loggingSettings.filesPaths,
@@ -10499,6 +10632,10 @@ class MarkupProcessor extends GulpStreamsBasedTaskExecutor_1.default {
10499
10632
  AccessibilityInspector_1.default.reportCachedValidationsResultsAndFinalize();
10500
10633
  }
10501
10634
  }
10635
+ if (this.markupProcessingSettingsRepresentative.processingOnDemandSettings.enabled) {
10636
+ // TODO Грохнется, если BrowserSYnc Не готов
10637
+ BrowserLiveReloader_1.default.reload();
10638
+ }
10502
10639
  }
10503
10640
  /* ━━━ Rebuilding ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
10504
10641
  onSourceFilesWatcherEmitsAnyEvent(targetFileAbsolutePath__forwardSlashesSeparators) {
@@ -12472,7 +12609,7 @@ class ResourcesPointersResolverForHTML {
12472
12609
  supportedEntryPointsSourceFileNameExtensionsWithoutLeadingDots: this.markupProcessingSettingsRepresentative.
12473
12610
  supportedEntryPointsSourceFileNameExtensionsWithoutLeadingDots,
12474
12611
  sourceAndOutputFilesAbsolutePathsCorrespondenceMap: MarkupProcessingSharedState_1.default.
12475
- entryPointsSourceAndOutputFilesAbsolutePathsCorrespondenceMap,
12612
+ entryPointsSourceAndOutputFilesAbsolutePathsCorrespondenceMap__includingFictiveOnes,
12476
12613
  fileTypeForLogging__singularForm: this.markupProcessingSettingsRepresentative.
12477
12614
  TARGET_FILES_KIND_FOR_LOGGING__SINGULAR_FORM,
12478
12615
  fileTypeForLogging__pluralForm: this.markupProcessingSettingsRepresentative.
@@ -13113,7 +13250,21 @@ class MarkupProcessingRawSettingsNormalizer extends SourceCodeProcessingRawSetti
13113
13250
  common?.
13114
13251
  buildingModeDependent?.[dataHoldingSelfInstance.consumingProjectBuildingMode]?.
13115
13252
  secondsBetweenFileUpdatingAndStartingOfRebuilding ??
13116
- MarkupProcessingSettings__Default_1.default.periodBetweenFileUpdatingAndRebuildingStarting__seconds
13253
+ MarkupProcessingSettings__Default_1.default.periodBetweenFileUpdatingAndRebuildingStarting__seconds,
13254
+ processingOnDemand: {
13255
+ enabled: dataHoldingSelfInstance.markupProcessingSettings__fromFile__rawValid.
13256
+ common?.
13257
+ buildingModeDependent?.[dataHoldingSelfInstance.consumingProjectBuildingMode]?.
13258
+ processingOnDemand?.
13259
+ enabled ??
13260
+ MarkupProcessingSettings__Default_1.default.processingOnDemand.enabled,
13261
+ fullInitialBuilding: dataHoldingSelfInstance.markupProcessingSettings__fromFile__rawValid.
13262
+ common?.
13263
+ buildingModeDependent?.[dataHoldingSelfInstance.consumingProjectBuildingMode]?.
13264
+ processingOnDemand?.
13265
+ fullInitialBuilding ??
13266
+ MarkupProcessingSettings__Default_1.default.processingOnDemand.fullInitialBuilding
13267
+ }
13117
13268
  },
13118
13269
  linting: dataHoldingSelfInstance.normalizeLintingSettings(),
13119
13270
  ...(0, es_extensions_1.isNotUndefined)(markupProcessingSettings__fromFile__rawValid.importingFromTypeScript) ?
@@ -14820,12 +14971,16 @@ const GulpStreamBasedSourceCodeProcessingConfigRepresentative_1 = __importDefaul
14820
14971
  /* ─── Utils ──────────────────────────────────────────────────────────────────────────────────────────────────────── */
14821
14972
  const es_extensions_1 = __webpack_require__(/*! @yamato-daiwa/es-extensions */ "@yamato-daiwa/es-extensions");
14822
14973
  class StylesProcessingSettingsRepresentative extends GulpStreamBasedSourceCodeProcessingConfigRepresentative_1.default {
14974
+ /* ━━━ Fields ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
14975
+ /* ┅┅┅ Superclasses' Requirements ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ */
14823
14976
  /* [ Theory ] Below two fields could be even or not. */
14824
14977
  supportedEntryPointsSourceFileNameExtensionsWithoutLeadingDots;
14825
14978
  actualFileNameExtensionsWithoutLeadingDots;
14826
14979
  TARGET_FILES_KIND_FOR_LOGGING__SINGULAR_FORM = "Stylesheet";
14827
14980
  TARGET_FILES_KIND_FOR_LOGGING__PLURAL_FORM = "Stylesheets";
14828
- TASK_NAME_FOR_LOGGING = "Styles Processing";
14981
+ /* ┅┅┅ Specific ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ */
14982
+ /* ╍╍╍ Settings ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍ */
14983
+ /* ─── Common ───────────────────────────────────────────────────────────────────────────────────────────────────── */
14829
14984
  WAITING_FOR_SUBSEQUENT_FILES_WILL_SAVED_PERIOD__SECONDS;
14830
14985
  entryPointsGroupsNormalizedSettingsMappedByReferences;
14831
14986
  sourceCodeLintingCommonSettings;
@@ -14953,7 +15108,7 @@ var StylesProcessingSettings__FromFile__RawValid;
14953
15108
  $secondsBetweenFileUpdatingAndStartingOfRebuilding: {
14954
15109
  newName: "secondsBetweenFileUpdatingAndStartingOfRebuilding",
14955
15110
  type: Number,
14956
- numbersSet: es_extensions_1.RawObjectDataProcessor.NumbersSets.naturalNumber,
15111
+ numbersSet: es_extensions_1.RawObjectDataProcessor.NumbersSets.positiveRealNumber,
14957
15112
  isNaN_Forbidden: true,
14958
15113
  isUndefinedForbidden: false,
14959
15114
  isNullForbidden: true
@@ -15088,6 +15243,7 @@ const gulp_stylus_1 = __importDefault(__webpack_require__(/*! gulp-stylus */ "gu
15088
15243
  const gulp_postcss_1 = __importDefault(__webpack_require__(/*! gulp-postcss */ "gulp-postcss"));
15089
15244
  const autoprefixer_1 = __importDefault(__webpack_require__(/*! autoprefixer */ "autoprefixer"));
15090
15245
  const cssnano_1 = __importDefault(__webpack_require__(/*! cssnano */ "cssnano"));
15246
+ const postcss_normalize_stylus_compatible_container_query_syntax_1 = __importDefault(__webpack_require__(/*! postcss-normalize-stylus-compatible-container-query-syntax */ "postcss-normalize-stylus-compatible-container-query-syntax"));
15091
15247
  /* ─── Third-party Solutions Specialists ──────────────────────────────────────────────────────────────────────────── */
15092
15248
  const StylusPreProcessorSpecialist_1 = __importDefault(__webpack_require__(/*! @ThirdPartySolutionsSpecialists/StylusPreProcessorSpecialist */ "./ThirdPartySolutionsSpecialists/StylusPreProcessorSpecialist.ts"));
15093
15249
  /* ─── Applied Utils ──────────────────────────────────────────────────────────────────────────────────────────────── */
@@ -15195,6 +15351,7 @@ class StylesProcessor extends GulpStreamsBasedTaskExecutor_1.default {
15195
15351
  })).
15196
15352
  pipe((0, gulp_postcss_1.default)(() => ({
15197
15353
  plugins: [
15354
+ postcss_normalize_stylus_compatible_container_query_syntax_1.default,
15198
15355
  autoprefixer_1.default,
15199
15356
  (0, cssnano_1.default)({
15200
15357
  preset: [
@@ -17206,6 +17363,16 @@ module.exports = require("path");
17206
17363
 
17207
17364
  /***/ }),
17208
17365
 
17366
+ /***/ "postcss-normalize-stylus-compatible-container-query-syntax":
17367
+ /*!*****************************************************************************!*\
17368
+ !*** external "postcss-normalize-stylus-compatible-container-query-syntax" ***!
17369
+ \*****************************************************************************/
17370
+ /***/ ((module) => {
17371
+
17372
+ module.exports = require("postcss-normalize-stylus-compatible-container-query-syntax");
17373
+
17374
+ /***/ }),
17375
+
17209
17376
  /***/ "probe-image-size":
17210
17377
  /*!***********************************!*\
17211
17378
  !*** external "probe-image-size" ***!
@@ -17407,9 +17574,6 @@ module.exports = require("webpack-stream");
17407
17574
  /******/ // Load entry module and return exports
17408
17575
  /******/ // This entry module is referenced by other modules so it can't be inlined
17409
17576
  /******/ var __webpack_exports__ = __webpack_require__("./EntryPoint.ts");
17410
- /******/ var __webpack_export_target__ = exports;
17411
- /******/ for(var __webpack_i__ in __webpack_exports__) __webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
17412
- /******/ if(__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, "__esModule", { value: true });
17413
17577
  /******/
17414
17578
  /******/ })()
17415
17579
  ;
package/README.md CHANGED
@@ -1,8 +1,20 @@
1
1
  # Yamato Daiwa Automation 〔 YDA 〕
2
2
 
3
+ [![npm](https://img.shields.io/badge/npm-CB3837?style=for-the-badge&logo=npm&logoColor=white)](https://www.npmjs.com/package/@yamato-daiwa/automation)
4
+ [![GitHub](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/TokugawaTakeshi/Yamato-Daiwa-Automation)
5
+ ![MIT](https://img.shields.io/badge/MIT-green?style=for-the-badge)
6
+ ![Node.js](https://img.shields.io/badge/Node%20js-339933?style=for-the-badge&logo=nodedotjs&logoColor=white)
7
+
8
+ [![NPM Version](https://img.shields.io/npm/v/@yamato-daiwa/backend)](https://www.npmjs.com/package/@yamato-daiwa/automation)
9
+ ![Minimal Node Version](https://img.shields.io/badge/Minimal_Node.js_Version-20.0.0-brightgreen.svg?style=flat)
10
+
11
+ [![GitHub Sponsors](https://img.shields.io/badge/sponsor-30363D?style=for-the-badge&logo=GitHub-Sponsors&logoColor=#white)](https://github.com/TokugawaTakeshi/Yamato-Daiwa-Automation?sponsor=1)
12
+ [![PAYPAL](https://img.shields.io/badge/PayPal-00457C?style=for-the-badge&logo=paypal&logoColor=white)](https://www.paypal.com/paypalme/tokugawatakeshi)
13
+ [![LIBERAPAY]( https://img.shields.io/badge/Liberapay-F6C915?style=for-the-badge&logo=liberapay&logoColor=black)](https://liberapay.com/TokugawaT-YD)
14
+
3
15
  The project building tool with declarative YAML configuration based on Gulp and Webpack.
4
16
  Specializing on Pug, Stylus and TypeScript as source code languages; also works with images, fonts, videos and audios.
5
- Could be used for development of websites, web applications, console utilities and libraries.
17
+ Can be used to develop websites, web applications, native application with HTML/CSS frontend, console utilities and libraries.
6
18
 
7
19
  ![Main visual of Yamato-Daiwa Automation tool](https://user-images.githubusercontent.com/41653501/167278259-b2ac61e9-b781-4d0c-93d6-4b9709387974.png)
8
20
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yamato-daiwa/automation",
3
- "version": "0.8.0",
3
+ "version": "0.9.0-alpha.2",
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,21 +20,21 @@
20
20
  ],
21
21
  "dependencies": {
22
22
  "@eslint-community/eslint-plugin-eslint-comments": "4.5.0",
23
- "@stylistic/eslint-plugin": "5.4.0",
24
- "@typescript-eslint/eslint-plugin": "8.46.1",
25
- "@typescript-eslint/parser": "8.46.1",
26
- "@vue/compiler-sfc": "3.5.18",
23
+ "@stylistic/eslint-plugin": "5.6.1",
24
+ "@typescript-eslint/eslint-plugin": "8.51.0",
25
+ "@typescript-eslint/parser": "8.51.0",
26
+ "@vue/compiler-sfc": "3.5.26",
27
27
  "@webdiscus/pug-loader": "2.11.1",
28
- "@yamato-daiwa/es-extensions": "1.8.1",
29
- "@yamato-daiwa/es-extensions-nodejs": "1.8.1",
30
- "@yamato-daiwa/style_guides": "0.10.1",
31
- "@yamato-daiwa/universal-reactive-webpack-loader": "0.0.0",
32
- "autoprefixer": "10.4.21",
28
+ "@yamato-daiwa/es-extensions": "1.8.4",
29
+ "@yamato-daiwa/es-extensions-nodejs": "1.8.4",
30
+ "@yamato-daiwa/style_guides": "0.11.6",
31
+ "@yamato-daiwa/universal-reactive-webpack-loader": "0.1.0",
32
+ "autoprefixer": "10.4.23",
33
33
  "browser-sync": "3.0.4",
34
34
  "css-loader": "7.1.2",
35
- "cssnano": "7.1.0",
36
- "dotenv": "17.2.1",
37
- "eslint": "9.38.0",
35
+ "cssnano": "7.1.2",
36
+ "dotenv": "17.2.3",
37
+ "eslint": "9.39.2",
38
38
  "eslint-plugin-import": "2.32.0",
39
39
  "eslint-plugin-n": "17.23.1",
40
40
  "eslint-plugin-react": "7.37.5",
@@ -50,42 +50,42 @@
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
+ "htmlnano": "2.1.5",
54
54
  "imagemin-pngquant": "9.0.2",
55
55
  "js-beautify": "1.15.4",
56
56
  "json5-loader": "4.0.1",
57
- "nanoid": "5.1.5",
57
+ "nanoid": "5.1.6",
58
58
  "node-html-parser": "7.0.1",
59
59
  "node-notifier": "10.0.1",
60
- "pa11y": "9.0.0",
60
+ "pa11y": "9.0.1",
61
61
  "postcss-loader": "8.2.0",
62
- "postcss-normalize-stylus-compatible-container-query-syntax": "1.0.0",
62
+ "postcss-normalize-stylus-compatible-container-query-syntax": "1.1.2",
63
63
  "probe-image-size": "7.2.3",
64
64
  "pug-lint": "2.7.0",
65
- "puppeteer": "24.10.0",
65
+ "puppeteer": "24.34.0",
66
66
  "require-from-string": "2.0.2",
67
67
  "rev-hash": "4.1.0",
68
68
  "stlint": "1.0.65",
69
69
  "stream-combiner2": "1.1.1",
70
70
  "style-loader": "4.0.0",
71
71
  "stylus": "0.63.0",
72
- "stylus-loader": "8.1.1",
73
- "ts-loader": "9.5.2",
72
+ "stylus-loader": "8.1.2",
73
+ "ts-loader": "9.5.4",
74
74
  "vinyl": "2.2.1",
75
75
  "vnu-jar": "24.10.17",
76
76
  "vue-loader": "17.4.2",
77
77
  "vue-style-loader": "4.1.3",
78
- "vue-tsc": "3.0.5",
79
- "webpack": "5.101.0",
78
+ "vue-tsc": "3.2.1",
79
+ "webpack": "5.103.0",
80
80
  "webpack-node-externals": "3.0.0",
81
81
  "webpack-stream": "7.0.0",
82
82
  "worker-loader": "3.0.8",
83
- "yaml-loader": "0.8.1"
83
+ "yaml-loader": "0.9.0"
84
84
  },
85
85
  "devDependencies": {
86
- "@types/browser-sync": "2.29.0",
86
+ "@types/browser-sync": "2.29.1",
87
87
  "@types/cssnano": "5.0.0",
88
- "@types/gulp": "4.0.17",
88
+ "@types/gulp": "4.0.18",
89
89
  "@types/gulp-if": "3.0.5",
90
90
  "@types/gulp-imagemin": "7.0.3",
91
91
  "@types/gulp-nodemon": "0.0.37",
@@ -102,7 +102,7 @@
102
102
  "@types/require-from-string": "1.2.3",
103
103
  "@types/vnu-jar": "17.11.2",
104
104
  "@types/webpack-node-externals": "3.0.4",
105
- "@types/webpack-stream": "3.2.15",
105
+ "@types/webpack-stream": "3.2.16",
106
106
  "eslint-webpack-plugin": "4.2.0",
107
107
  "ts-node": "10.9.2",
108
108
  "typescript": "5.9.3",