change runtimeCheckLog
This commit is contained in:
		
							parent
							
								
									ef07a6af47
								
							
						
					
					
						commit
						6de80b0104
					
				| 
						 | 
					@ -94,185 +94,187 @@ export async function runtimeCheckLogs(folderPath) {
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      watcher.setMaxListeners(200);
 | 
					      watcher.setMaxListeners(200);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      watcher.on("change", async (path) => {
 | 
				
			||||||
 | 
					        // fs.watchFile(filePath,{ interval: 15000 },
 | 
				
			||||||
 | 
					        // async (eventType) => {
 | 
				
			||||||
 | 
					        //check special item, extra RAM, error in log
 | 
				
			||||||
 | 
					        // if (path === filePath) {
 | 
				
			||||||
 | 
					        //   let lines = [];
 | 
				
			||||||
 | 
					        //   let allFile = await LogDetectFile.all();
 | 
				
			||||||
 | 
					        //   let allReport = await LogReport.all();
 | 
				
			||||||
 | 
					        //   let allValue = await KeyValue.all();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //   //get information file
 | 
				
			||||||
 | 
					        //   let fileDetect = allFile?.filter(
 | 
				
			||||||
 | 
					        //     (i) => i.$original.file_name === fileName
 | 
				
			||||||
 | 
					        //   )[0];
 | 
				
			||||||
 | 
					          
 | 
				
			||||||
 | 
					        //   let logsDetect = allReport?.filter(
 | 
				
			||||||
 | 
					        //     (i) => i.$original.id_file === fileDetect?.id_ldf
 | 
				
			||||||
 | 
					        //   );
 | 
				
			||||||
 | 
					        //   //get the last line detected
 | 
				
			||||||
 | 
					        //   let lastLine = Math.max(...logsDetect.map((obj) => obj.line));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //   //get content file in local
 | 
				
			||||||
 | 
					        //   let contentFile = await fs
 | 
				
			||||||
 | 
					        //     .readFileSync(filePath)
 | 
				
			||||||
 | 
					        //     .toString()
 | 
				
			||||||
 | 
					        //     ?.split("\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //   //get index SN and send to ERP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //   checkIndexSN(contentFile, lastLine, fileName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //   //get list item to check
 | 
				
			||||||
 | 
					        //   let listKeyValues = allValue.filter(
 | 
				
			||||||
 | 
					        //     (i) =>
 | 
				
			||||||
 | 
					        //       i.$original.key === "MODEL_SPECIAL" ||
 | 
				
			||||||
 | 
					        //       i.$original.key === "CATCH_FAULTY"
 | 
				
			||||||
 | 
					        //   );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //   //get list exclude error
 | 
				
			||||||
 | 
					        //   let listExcludeErr = allValue
 | 
				
			||||||
 | 
					        //     .filter((i) => i.$original.key === "EXCLUDE_ERR")
 | 
				
			||||||
 | 
					        //     .map((obj) => obj.$original.value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //   //get list item special
 | 
				
			||||||
 | 
					        //   let listExtraItem = allValue
 | 
				
			||||||
 | 
					        //     .filter((i) => i.$original.key === "MODEL_SPECIAL")
 | 
				
			||||||
 | 
					        //     .map((obj) => obj.$original.value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //   //Process file content
 | 
				
			||||||
 | 
					        //   contentFile.map((line, index) => {
 | 
				
			||||||
 | 
					        //     //check line the line with errors and exclude errors
 | 
				
			||||||
 | 
					        //     listKeyValues
 | 
				
			||||||
 | 
					        //       .map((obj) => obj.$original.value)
 | 
				
			||||||
 | 
					        //       .map(async (value) => {
 | 
				
			||||||
 | 
					        //         if (
 | 
				
			||||||
 | 
					        //           line.search(value) !== -1 &&
 | 
				
			||||||
 | 
					        //           listExcludeErr.filter((err) => line.includes(err))
 | 
				
			||||||
 | 
					        //             .length === 0
 | 
				
			||||||
 | 
					        //         ) {
 | 
				
			||||||
 | 
					        //           let log = allFile?.filter(
 | 
				
			||||||
 | 
					        //             (i) => i.$original.file_name === fileName
 | 
				
			||||||
 | 
					        //           )[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //           let checkLog = allReport?.filter(
 | 
				
			||||||
 | 
					        //             (report) =>
 | 
				
			||||||
 | 
					        //               report.$original.id_file === log?.id_ldf &&
 | 
				
			||||||
 | 
					        //               report.$original.line === index + 1 &&
 | 
				
			||||||
 | 
					        //               report.$original.detected_content === value
 | 
				
			||||||
 | 
					        //           );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //           if (checkLog?.length === 0) {
 | 
				
			||||||
 | 
					        //             await LogReport.create({
 | 
				
			||||||
 | 
					        //               detected_content: value,
 | 
				
			||||||
 | 
					        //               line: index + 1,
 | 
				
			||||||
 | 
					        //               id_file: log?.id_ldf,
 | 
				
			||||||
 | 
					        //             });
 | 
				
			||||||
 | 
					        //             lines.push(index + 1);
 | 
				
			||||||
 | 
					        //           }
 | 
				
			||||||
 | 
					        //         }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //         // if(checkSpecialVersion())
 | 
				
			||||||
 | 
					        //       });
 | 
				
			||||||
 | 
					        //   });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //   //true: import log to log_report table, send report to Zulip
 | 
				
			||||||
 | 
					        //   setTimeout(async () => {
 | 
				
			||||||
 | 
					        //     if (lines.length === 0) {
 | 
				
			||||||
 | 
					        //       console.log(`${fileName} has changed ---Good`);
 | 
				
			||||||
 | 
					        //     } else {
 | 
				
			||||||
 | 
					        //       console.log(
 | 
				
			||||||
 | 
					        //         `${fileName} has changed ---SOS---${lines.length}`
 | 
				
			||||||
 | 
					        //       );
 | 
				
			||||||
 | 
					        //       let allReport_new = await LogReport.all();
 | 
				
			||||||
 | 
					        //       let fileDetect = allFile?.filter(
 | 
				
			||||||
 | 
					        //         (i) => i.$original.file_name === fileName
 | 
				
			||||||
 | 
					        //       )[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //       let logsDetect = allReport_new?.filter(
 | 
				
			||||||
 | 
					        //         (i) => i.$original.id_file === fileDetect?.id_ldf
 | 
				
			||||||
 | 
					        //       );
 | 
				
			||||||
 | 
					        //       // console.log(logsDetect)
 | 
				
			||||||
 | 
					        //       // await Database.rawQuery(
 | 
				
			||||||
 | 
					        //       //   "select * from log_reports where id_file = " +
 | 
				
			||||||
 | 
					        //       //     fileDetect?.id_ldf
 | 
				
			||||||
 | 
					        //       // );
 | 
				
			||||||
 | 
					        //       //Get all report newest
 | 
				
			||||||
 | 
					        //       let listReport = await getListLineByItem(
 | 
				
			||||||
 | 
					        //         logsDetect
 | 
				
			||||||
 | 
					        //           .map((obj) => obj.$original)
 | 
				
			||||||
 | 
					        //           .filter((l) => l.line > lastLine)
 | 
				
			||||||
 | 
					        //       );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //       let content =
 | 
				
			||||||
 | 
					        //         "|  |Last updated at | Item/error | Line | Report \n|---|:---:|:---|:---|:-----------:\n";
 | 
				
			||||||
 | 
					        //       let spoiler = "";
 | 
				
			||||||
 | 
					        //       let issueFound = "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //       listReport.map((log, index) => {
 | 
				
			||||||
 | 
					        //         let item = listExtraItem.includes(log.detected_content)
 | 
				
			||||||
 | 
					        //           ? ":medal: **" + log.detected_content + "**"
 | 
				
			||||||
 | 
					        //           : ":small_orange_diamond: " + log.detected_content;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //         log.line?.map((line) => {
 | 
				
			||||||
 | 
					        //           issueFound =
 | 
				
			||||||
 | 
					        //             issueFound +
 | 
				
			||||||
 | 
					        //             "\n`" +
 | 
				
			||||||
 | 
					        //             line +
 | 
				
			||||||
 | 
					        //             "` " +
 | 
				
			||||||
 | 
					        //             contentFile[line - 1]?.replace(
 | 
				
			||||||
 | 
					        //               log.detected_content,
 | 
				
			||||||
 | 
					        //               "[" +
 | 
				
			||||||
 | 
					        //                 log.detected_content +
 | 
				
			||||||
 | 
					        //                 "](https://logs.danielvu.com/logs/" +
 | 
				
			||||||
 | 
					        //                 fileName +
 | 
				
			||||||
 | 
					        //                 "#" +
 | 
				
			||||||
 | 
					        //                 line +
 | 
				
			||||||
 | 
					        //                 ")"
 | 
				
			||||||
 | 
					        //             );
 | 
				
			||||||
 | 
					        //         });
 | 
				
			||||||
 | 
					        //         content =
 | 
				
			||||||
 | 
					        //           content +
 | 
				
			||||||
 | 
					        //           "|" +
 | 
				
			||||||
 | 
					        //           (index + 1) +
 | 
				
			||||||
 | 
					        //           "|**" +
 | 
				
			||||||
 | 
					        //           moment(Date.now()).format("HH:mm - DD/MM") +
 | 
				
			||||||
 | 
					        //           "**|" +
 | 
				
			||||||
 | 
					        //           item +
 | 
				
			||||||
 | 
					        //           "|" +
 | 
				
			||||||
 | 
					        //           log.line +
 | 
				
			||||||
 | 
					        //           "|[View](https://logs.danielvu.com/logs/" +
 | 
				
			||||||
 | 
					        //           fileName +
 | 
				
			||||||
 | 
					        //           "#" +
 | 
				
			||||||
 | 
					        //           log.line +
 | 
				
			||||||
 | 
					        //           ")\n";
 | 
				
			||||||
 | 
					        //       });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //       sendMessToZulip(
 | 
				
			||||||
 | 
					        //         "stream",
 | 
				
			||||||
 | 
					        //         Env.get("ZULIP_STREAM_ALERT"),
 | 
				
			||||||
 | 
					        //         Env.get("ZULIP_TOPIC_ALERT"),
 | 
				
			||||||
 | 
					        //         "------------\n\n:warning: :warning: **" +
 | 
				
			||||||
 | 
					        //           fileName +
 | 
				
			||||||
 | 
					        //           "**\n\n" +
 | 
				
			||||||
 | 
					        //           content +
 | 
				
			||||||
 | 
					        //           "\n\n" +
 | 
				
			||||||
 | 
					        //           spoiler +
 | 
				
			||||||
 | 
					        //           "\n\n***Issue found:***\n" +
 | 
				
			||||||
 | 
					        //           issueFound
 | 
				
			||||||
 | 
					        //       );
 | 
				
			||||||
 | 
					        //     }
 | 
				
			||||||
 | 
					        //   }, 3000);
 | 
				
			||||||
 | 
					        // }
 | 
				
			||||||
 | 
					        console.log(path + " change")
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
      await fileList.slice(0,40)
 | 
					      await fileList.slice(0,40)
 | 
				
			||||||
        ?.filter((i) => fileList_old.includes(i) === false)
 | 
					        ?.filter((i) => fileList_old.includes(i) === false)
 | 
				
			||||||
        ?.forEach((fileName) => {
 | 
					        ?.forEach((fileName) => {
 | 
				
			||||||
          //path file
 | 
					          //path file
 | 
				
			||||||
          const filePath = `${folderPath}/${fileName}`;
 | 
					          const filePath = `${folderPath}/${fileName}`;
 | 
				
			||||||
          watcher.on("change", async (path) => {
 | 
					 | 
				
			||||||
            // fs.watchFile(filePath,{ interval: 15000 },
 | 
					 | 
				
			||||||
            // async (eventType) => {
 | 
					 | 
				
			||||||
            //check special item, extra RAM, error in log
 | 
					 | 
				
			||||||
            // if (path === filePath) {
 | 
					 | 
				
			||||||
            //   let lines = [];
 | 
					 | 
				
			||||||
            //   let allFile = await LogDetectFile.all();
 | 
					 | 
				
			||||||
            //   let allReport = await LogReport.all();
 | 
					 | 
				
			||||||
            //   let allValue = await KeyValue.all();
 | 
					 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
            //   //get information file
 | 
					 | 
				
			||||||
            //   let fileDetect = allFile?.filter(
 | 
					 | 
				
			||||||
            //     (i) => i.$original.file_name === fileName
 | 
					 | 
				
			||||||
            //   )[0];
 | 
					 | 
				
			||||||
              
 | 
					 | 
				
			||||||
            //   let logsDetect = allReport?.filter(
 | 
					 | 
				
			||||||
            //     (i) => i.$original.id_file === fileDetect?.id_ldf
 | 
					 | 
				
			||||||
            //   );
 | 
					 | 
				
			||||||
            //   //get the last line detected
 | 
					 | 
				
			||||||
            //   let lastLine = Math.max(...logsDetect.map((obj) => obj.line));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //   //get content file in local
 | 
					 | 
				
			||||||
            //   let contentFile = await fs
 | 
					 | 
				
			||||||
            //     .readFileSync(filePath)
 | 
					 | 
				
			||||||
            //     .toString()
 | 
					 | 
				
			||||||
            //     ?.split("\n");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //   //get index SN and send to ERP
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //   checkIndexSN(contentFile, lastLine, fileName);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //   //get list item to check
 | 
					 | 
				
			||||||
            //   let listKeyValues = allValue.filter(
 | 
					 | 
				
			||||||
            //     (i) =>
 | 
					 | 
				
			||||||
            //       i.$original.key === "MODEL_SPECIAL" ||
 | 
					 | 
				
			||||||
            //       i.$original.key === "CATCH_FAULTY"
 | 
					 | 
				
			||||||
            //   );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //   //get list exclude error
 | 
					 | 
				
			||||||
            //   let listExcludeErr = allValue
 | 
					 | 
				
			||||||
            //     .filter((i) => i.$original.key === "EXCLUDE_ERR")
 | 
					 | 
				
			||||||
            //     .map((obj) => obj.$original.value);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //   //get list item special
 | 
					 | 
				
			||||||
            //   let listExtraItem = allValue
 | 
					 | 
				
			||||||
            //     .filter((i) => i.$original.key === "MODEL_SPECIAL")
 | 
					 | 
				
			||||||
            //     .map((obj) => obj.$original.value);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //   //Process file content
 | 
					 | 
				
			||||||
            //   contentFile.map((line, index) => {
 | 
					 | 
				
			||||||
            //     //check line the line with errors and exclude errors
 | 
					 | 
				
			||||||
            //     listKeyValues
 | 
					 | 
				
			||||||
            //       .map((obj) => obj.$original.value)
 | 
					 | 
				
			||||||
            //       .map(async (value) => {
 | 
					 | 
				
			||||||
            //         if (
 | 
					 | 
				
			||||||
            //           line.search(value) !== -1 &&
 | 
					 | 
				
			||||||
            //           listExcludeErr.filter((err) => line.includes(err))
 | 
					 | 
				
			||||||
            //             .length === 0
 | 
					 | 
				
			||||||
            //         ) {
 | 
					 | 
				
			||||||
            //           let log = allFile?.filter(
 | 
					 | 
				
			||||||
            //             (i) => i.$original.file_name === fileName
 | 
					 | 
				
			||||||
            //           )[0];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //           let checkLog = allReport?.filter(
 | 
					 | 
				
			||||||
            //             (report) =>
 | 
					 | 
				
			||||||
            //               report.$original.id_file === log?.id_ldf &&
 | 
					 | 
				
			||||||
            //               report.$original.line === index + 1 &&
 | 
					 | 
				
			||||||
            //               report.$original.detected_content === value
 | 
					 | 
				
			||||||
            //           );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //           if (checkLog?.length === 0) {
 | 
					 | 
				
			||||||
            //             await LogReport.create({
 | 
					 | 
				
			||||||
            //               detected_content: value,
 | 
					 | 
				
			||||||
            //               line: index + 1,
 | 
					 | 
				
			||||||
            //               id_file: log?.id_ldf,
 | 
					 | 
				
			||||||
            //             });
 | 
					 | 
				
			||||||
            //             lines.push(index + 1);
 | 
					 | 
				
			||||||
            //           }
 | 
					 | 
				
			||||||
            //         }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //         // if(checkSpecialVersion())
 | 
					 | 
				
			||||||
            //       });
 | 
					 | 
				
			||||||
            //   });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //   //true: import log to log_report table, send report to Zulip
 | 
					 | 
				
			||||||
            //   setTimeout(async () => {
 | 
					 | 
				
			||||||
            //     if (lines.length === 0) {
 | 
					 | 
				
			||||||
            //       console.log(`${fileName} has changed ---Good`);
 | 
					 | 
				
			||||||
            //     } else {
 | 
					 | 
				
			||||||
            //       console.log(
 | 
					 | 
				
			||||||
            //         `${fileName} has changed ---SOS---${lines.length}`
 | 
					 | 
				
			||||||
            //       );
 | 
					 | 
				
			||||||
            //       let allReport_new = await LogReport.all();
 | 
					 | 
				
			||||||
            //       let fileDetect = allFile?.filter(
 | 
					 | 
				
			||||||
            //         (i) => i.$original.file_name === fileName
 | 
					 | 
				
			||||||
            //       )[0];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //       let logsDetect = allReport_new?.filter(
 | 
					 | 
				
			||||||
            //         (i) => i.$original.id_file === fileDetect?.id_ldf
 | 
					 | 
				
			||||||
            //       );
 | 
					 | 
				
			||||||
            //       // console.log(logsDetect)
 | 
					 | 
				
			||||||
            //       // await Database.rawQuery(
 | 
					 | 
				
			||||||
            //       //   "select * from log_reports where id_file = " +
 | 
					 | 
				
			||||||
            //       //     fileDetect?.id_ldf
 | 
					 | 
				
			||||||
            //       // );
 | 
					 | 
				
			||||||
            //       //Get all report newest
 | 
					 | 
				
			||||||
            //       let listReport = await getListLineByItem(
 | 
					 | 
				
			||||||
            //         logsDetect
 | 
					 | 
				
			||||||
            //           .map((obj) => obj.$original)
 | 
					 | 
				
			||||||
            //           .filter((l) => l.line > lastLine)
 | 
					 | 
				
			||||||
            //       );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //       let content =
 | 
					 | 
				
			||||||
            //         "|  |Last updated at | Item/error | Line | Report \n|---|:---:|:---|:---|:-----------:\n";
 | 
					 | 
				
			||||||
            //       let spoiler = "";
 | 
					 | 
				
			||||||
            //       let issueFound = "";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //       listReport.map((log, index) => {
 | 
					 | 
				
			||||||
            //         let item = listExtraItem.includes(log.detected_content)
 | 
					 | 
				
			||||||
            //           ? ":medal: **" + log.detected_content + "**"
 | 
					 | 
				
			||||||
            //           : ":small_orange_diamond: " + log.detected_content;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //         log.line?.map((line) => {
 | 
					 | 
				
			||||||
            //           issueFound =
 | 
					 | 
				
			||||||
            //             issueFound +
 | 
					 | 
				
			||||||
            //             "\n`" +
 | 
					 | 
				
			||||||
            //             line +
 | 
					 | 
				
			||||||
            //             "` " +
 | 
					 | 
				
			||||||
            //             contentFile[line - 1]?.replace(
 | 
					 | 
				
			||||||
            //               log.detected_content,
 | 
					 | 
				
			||||||
            //               "[" +
 | 
					 | 
				
			||||||
            //                 log.detected_content +
 | 
					 | 
				
			||||||
            //                 "](https://logs.danielvu.com/logs/" +
 | 
					 | 
				
			||||||
            //                 fileName +
 | 
					 | 
				
			||||||
            //                 "#" +
 | 
					 | 
				
			||||||
            //                 line +
 | 
					 | 
				
			||||||
            //                 ")"
 | 
					 | 
				
			||||||
            //             );
 | 
					 | 
				
			||||||
            //         });
 | 
					 | 
				
			||||||
            //         content =
 | 
					 | 
				
			||||||
            //           content +
 | 
					 | 
				
			||||||
            //           "|" +
 | 
					 | 
				
			||||||
            //           (index + 1) +
 | 
					 | 
				
			||||||
            //           "|**" +
 | 
					 | 
				
			||||||
            //           moment(Date.now()).format("HH:mm - DD/MM") +
 | 
					 | 
				
			||||||
            //           "**|" +
 | 
					 | 
				
			||||||
            //           item +
 | 
					 | 
				
			||||||
            //           "|" +
 | 
					 | 
				
			||||||
            //           log.line +
 | 
					 | 
				
			||||||
            //           "|[View](https://logs.danielvu.com/logs/" +
 | 
					 | 
				
			||||||
            //           fileName +
 | 
					 | 
				
			||||||
            //           "#" +
 | 
					 | 
				
			||||||
            //           log.line +
 | 
					 | 
				
			||||||
            //           ")\n";
 | 
					 | 
				
			||||||
            //       });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //       sendMessToZulip(
 | 
					 | 
				
			||||||
            //         "stream",
 | 
					 | 
				
			||||||
            //         Env.get("ZULIP_STREAM_ALERT"),
 | 
					 | 
				
			||||||
            //         Env.get("ZULIP_TOPIC_ALERT"),
 | 
					 | 
				
			||||||
            //         "------------\n\n:warning: :warning: **" +
 | 
					 | 
				
			||||||
            //           fileName +
 | 
					 | 
				
			||||||
            //           "**\n\n" +
 | 
					 | 
				
			||||||
            //           content +
 | 
					 | 
				
			||||||
            //           "\n\n" +
 | 
					 | 
				
			||||||
            //           spoiler +
 | 
					 | 
				
			||||||
            //           "\n\n***Issue found:***\n" +
 | 
					 | 
				
			||||||
            //           issueFound
 | 
					 | 
				
			||||||
            //       );
 | 
					 | 
				
			||||||
            //     }
 | 
					 | 
				
			||||||
            //   }, 3000);
 | 
					 | 
				
			||||||
            // }
 | 
					 | 
				
			||||||
            console.log(path + " change")
 | 
					 | 
				
			||||||
          });
 | 
					 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  } catch (error) {
 | 
					  } catch (error) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue