mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-10-31 13:01:31 +08:00 
			
		
		
		
	lexer impl WIP + test
This commit is contained in:
		
							parent
							
								
									32eaafd024
								
							
						
					
					
						commit
						e77e0ce675
					
				
							
								
								
									
										413
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										413
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -17,9 +17,9 @@ | |||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "@babel/runtime": { |     "@babel/runtime": { | ||||||
|       "version": "7.9.2", |       "version": "7.9.6", | ||||||
|       "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", |       "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.6.tgz", | ||||||
|       "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", |       "integrity": "sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "regenerator-runtime": "^0.13.4" |         "regenerator-runtime": "^0.13.4" | ||||||
|       } |       } | ||||||
| @ -198,26 +198,24 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/bmp": { |     "@jimp/bmp": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.12.0.tgz", | ||||||
|       "integrity": "sha512-keMOc5woiDmONXsB/6aXLR4Z5Q+v8lFq3EY2rcj2FmstbDMhRuGbmcBxlEgOqfRjwvtf/wOtJ3Of37oAWtVfLg==", |       "integrity": "sha512-PjgGVaSQvPrepsD52aTQe6B8A1G/OOYIcpXt6K59AUHQE3s6oNo9lYfyUv96gInBBIMze9s8AgLhMLjU8ijw4Q==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0", | ||||||
|         "bmp-js": "^0.1.0", |         "bmp-js": "^0.1.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/core": { |     "@jimp/core": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.12.0.tgz", | ||||||
|       "integrity": "sha512-Gd5IpL3U2bFIO57Fh/OA3HCpWm4uW/pU01E75rI03BXfTdz3T+J7TwvyG1XaqsQ7/DSlS99GXtLQPlfFIe28UA==", |       "integrity": "sha512-xLF8gvRyJSCu08PI01b/MFijxoBoPusJFbSOOzMnP286qVDouxdXQy6CJB3mMosnlZRgp12I+ZgUvMsdJsL8ig==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0", | ||||||
|         "any-base": "^1.1.0", |         "any-base": "^1.1.0", | ||||||
|         "buffer": "^5.2.0", |         "buffer": "^5.2.0", | ||||||
|         "core-js": "^3.4.1", |  | ||||||
|         "exif-parser": "^0.1.12", |         "exif-parser": "^0.1.12", | ||||||
|         "file-type": "^9.0.0", |         "file-type": "^9.0.0", | ||||||
|         "load-bmfont": "^1.3.1", |         "load-bmfont": "^1.3.1", | ||||||
| @ -235,323 +233,294 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/custom": { |     "@jimp/custom": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.12.0.tgz", | ||||||
|       "integrity": "sha512-nZmSI+jwTi5IRyNLbKSXQovoeqsw+D0Jn0SxW08wYQvdkiWA8bTlDQFgQ7HVwCAKBm8oKkDB/ZEo9qvHJ+1gAQ==", |       "integrity": "sha512-Rf3p50Jmvy9Aeovs0kyIpd0qbt2peLqDRq6f93AlDkUpB6OZ/rQwgJO8yysNMgI877a3xQz0Tda5j5Lv8AjWgA==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/core": "^0.10.3", |         "@jimp/core": "^0.12.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/gif": { |     "@jimp/gif": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.12.0.tgz", | ||||||
|       "integrity": "sha512-vjlRodSfz1CrUvvrnUuD/DsLK1GHB/yDZXHthVdZu23zYJIW7/WrIiD1IgQ5wOMV7NocfrvPn2iqUfBP81/WWA==", |       "integrity": "sha512-CMapyrH5LGXbl2jHgQA923wHUNbC0LajqMmMHfyFZE9GZFzXULqbTZdRemHXTXn++iruPSR37oVUYi67WG9qmQ==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0", | ||||||
|         "core-js": "^3.4.1", |  | ||||||
|         "omggif": "^1.0.9" |         "omggif": "^1.0.9" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/jpeg": { |     "@jimp/jpeg": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.12.0.tgz", | ||||||
|       "integrity": "sha512-AAANwgUZOt6f6P7LZxY9lyJ9xclqutYJlsxt3JbriXUGJgrrFAIkcKcqv1nObgmQASSAQKYaMV9KdHjMlWFKlQ==", |       "integrity": "sha512-jAC9gWPCBJ0ysTZDqDUOVUty3/tk2qStw3N5Vk9W3XZNSTNlLp5xWsiATlkAoSrwoBmdgjf6OfZwqmkFDFVMKw==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0", | ||||||
|         "core-js": "^3.4.1", |  | ||||||
|         "jpeg-js": "^0.3.4" |         "jpeg-js": "^0.3.4" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-blit": { |     "@jimp/plugin-blit": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.12.0.tgz", | ||||||
|       "integrity": "sha512-5zlKlCfx4JWw9qUVC7GI4DzXyxDWyFvgZLaoGFoT00mlXlN75SarlDwc9iZ/2e2kp4bJWxz3cGgG4G/WXrbg3Q==", |       "integrity": "sha512-csSxB/ZOljGLtvRne+nF1EGpcHZ/6mdGc+trcihClTTLAS5FzX+tySpQj9sHrIzzHtEcILYPMOKaf6KC4LOrfw==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-blur": { |     "@jimp/plugin-blur": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.12.0.tgz", | ||||||
|       "integrity": "sha512-cTOK3rjh1Yjh23jSfA6EHCHjsPJDEGLC8K2y9gM7dnTUK1y9NNmkFS23uHpyjgsWFIoH9oRh2SpEs3INjCpZhQ==", |       "integrity": "sha512-HCL570HvZxhT7Yn/Qqow00sRK0J/E4j1Clwp78vMnQWQ38PONi/Ipyjqp0RLdvCj3tJ3mzrKDqlnN2bbLcKsjQ==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-circle": { |     "@jimp/plugin-circle": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.12.0.tgz", | ||||||
|       "integrity": "sha512-51GAPIVelqAcfuUpaM5JWJ0iWl4vEjNXB7p4P7SX5udugK5bxXUjO6KA2qgWmdpHuCKtoNgkzWU9fNSuYp7tCA==", |       "integrity": "sha512-d+cRlyrM4ylXKk6TuFZcoFz8xsXqLHGfZcX+BDFe9HPz+TTW7AoL5eq8I0uLpTHRD1dLdBPScMejkn3ppLKnjg==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-color": { |     "@jimp/plugin-color": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.12.0.tgz", | ||||||
|       "integrity": "sha512-RgeHUElmlTH7vpI4WyQrz6u59spiKfVQbsG/XUzfWGamFSixa24ZDwX/yV/Ts+eNaz7pZeIuv533qmKPvw2ujg==", |       "integrity": "sha512-RmPSwryrmLLtsNluQ9hT73EovM+KcthacDmF7VN/xnJMD/r+vXfgUcDLZDx8yQsd5kdezhtPh7wKihH2+voOwg==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0", | ||||||
|         "core-js": "^3.4.1", |  | ||||||
|         "tinycolor2": "^1.4.1" |         "tinycolor2": "^1.4.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-contain": { |     "@jimp/plugin-contain": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.12.0.tgz", | ||||||
|       "integrity": "sha512-bYJKW9dqzcB0Ihc6u7jSyKa3juStzbLs2LFr6fu8TzA2WkMS/R8h+ddkiO36+F9ILTWHP0CIA3HFe5OdOGcigw==", |       "integrity": "sha512-mA1l2GbtmY2uLdCiwzdSJa9tZSyL5uvQwT3UrKDWaPiyhT4+VrCgQVD4CBbOFztI8ToxPcGM9GG4oRuRR2cKDQ==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-cover": { |     "@jimp/plugin-cover": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.12.0.tgz", | ||||||
|       "integrity": "sha512-pOxu0cM0BRPzdV468n4dMocJXoMbTnARDY/EpC3ZW15SpMuc/dr1KhWQHgoQX5kVW1Wt8zgqREAJJCQ5KuPKDA==", |       "integrity": "sha512-rTrGxCBr1dn6DOVF+g8IFUCXHpfOaZCC4kvOyx/GIE3861GqKyOWzjLRcWTVBfgyiuOx+S6kBwpadmnsFO8tHg==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-crop": { |     "@jimp/plugin-crop": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.12.0.tgz", | ||||||
|       "integrity": "sha512-nB7HgOjjl9PgdHr076xZ3Sr6qHYzeBYBs9qvs3tfEEUeYMNnvzgCCGtUl6eMakazZFCMk3mhKmcB9zQuHFOvkg==", |       "integrity": "sha512-sEz1T7waD5c+nB0aJERipc8/LSaRo4IxPzemOuzWaXxvwdUVRPtM7Rk7XOZmJyc2nW8qPNet+2JkaSjg848xgQ==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-displace": { |     "@jimp/plugin-displace": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.12.0.tgz", | ||||||
|       "integrity": "sha512-8t3fVKCH5IVqI4lewe4lFFjpxxr69SQCz5/tlpDLQZsrNScNJivHdQ09zljTrVTCSgeCqQJIKgH2Q7Sk/pAZ0w==", |       "integrity": "sha512-VWlTF6TEDdGoN56tnOfsHVNNtsWBHCBmT77G+2k2agbXWAPD5A++bye0y4XP/icAS//sAd7UFzvNQlnT7sIAdg==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-dither": { |     "@jimp/plugin-dither": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.12.0.tgz", | ||||||
|       "integrity": "sha512-JCX/oNSnEg1kGQ8ffZ66bEgQOLCY3Rn+lrd6v1jjLy/mn9YVZTMsxLtGCXpiCDC2wG/KTmi4862ysmP9do9dAQ==", |       "integrity": "sha512-EzhHugll52ngdV1RBh1wmRUjf1jgo2GfU+Zh/a05uLxKGZEDWqGcsfFlI4lZnJbiKUhHCTNwZRCkV2w9gNJ6uw==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-fisheye": { |     "@jimp/plugin-fisheye": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.12.0.tgz", | ||||||
|       "integrity": "sha512-RRZb1wqe+xdocGcFtj2xHU7sF7xmEZmIa6BmrfSchjyA2b32TGPWKnP3qyj7p6LWEsXn+19hRYbjfyzyebPElQ==", |       "integrity": "sha512-Rz/gboWtY6sow6FC4tg9kG/fNBLopjGRoMmzHVcoQK1XXI2O/tH6nrliHHv3s3AvBBrQ5qPyO5VyCb1vm9xOmA==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-flip": { |     "@jimp/plugin-flip": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.12.0.tgz", | ||||||
|       "integrity": "sha512-0epbi8XEzp0wmSjoW9IB0iMu0yNF17aZOxLdURCN3Zr+8nWPs5VNIMqSVa1Y62GSyiMDpVpKF/ITiXre+EqrPg==", |       "integrity": "sha512-NFeIHWU95rSmIUnUdHVAYU4dYE3X10qY2peTgbMJ+q1J2qsrUO7w6Gepfd26tA9lh41zwDD5UzuAorpHQ3z27g==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-gaussian": { |     "@jimp/plugin-gaussian": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.12.0.tgz", | ||||||
|       "integrity": "sha512-25eHlFbHUDnMMGpgRBBeQ2AMI4wsqCg46sue0KklI+c2BaZ+dGXmJA5uT8RTOrt64/K9Wz5E+2n7eBnny4dfpQ==", |       "integrity": "sha512-LXus5pMzUaIYGTCoWDxRiMb5AW0gJMqet3U6+mQIP7OtSnBL2Vimz9WBbzZuEfKRMCc1l6oDwD/o/fH5ehv+TQ==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-invert": { |     "@jimp/plugin-invert": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.12.0.tgz", | ||||||
|       "integrity": "sha512-effYSApWY/FbtlzqsKXlTLkgloKUiHBKjkQnqh5RL4oQxh/33j6aX+HFdDyQKtsXb8CMd4xd7wyiD2YYabTa0g==", |       "integrity": "sha512-fkOBCFg9P3Nkc0aFgWt5WgRP41KOs9m8OOnIi4jLnvCamv/Fv8GJLMeDS3gIXuzb/XkS0W/WpMQJmvI1+Zj2xg==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-mask": { |     "@jimp/plugin-mask": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.12.0.tgz", | ||||||
|       "integrity": "sha512-twrg8q8TIhM9Z6Jcu9/5f+OCAPaECb0eKrrbbIajJqJ3bCUlj5zbfgIhiQIzjPJ6KjpnFPSqHQfHkU1Vvk/nVw==", |       "integrity": "sha512-BWe0n6EB5/b5H062Vybyd2rTkC7yV/DNtNgJiVseZiqJCwmOjZDq+Gx+gKmB3959Th9ipwdEt3nzwBwmyDBVwA==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-normalize": { |     "@jimp/plugin-normalize": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.12.0.tgz", | ||||||
|       "integrity": "sha512-xkb5eZI/mMlbwKkDN79+1/t/+DBo8bBXZUMsT4gkFgMRKNRZ6NQPxlv1d3QpRzlocsl6UMxrHnhgnXdLAcgrXw==", |       "integrity": "sha512-w66beKgxBI1Psv7BmKDxCFJOqAxzn4whVcHgsQ31627HFTelDAf9kSTUOdcIPEwWfWg0tzkKmnHGYQhfJUHYRw==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-print": { |     "@jimp/plugin-print": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.12.0.tgz", | ||||||
|       "integrity": "sha512-wjRiI6yjXsAgMe6kVjizP+RgleUCLkH256dskjoNvJzmzbEfO7xQw9g6M02VET+emnbY0CO83IkrGm2q43VRyg==", |       "integrity": "sha512-DdPAmPlTc0rNXRD7efLnCUD2VhYe9kx6h+2mCobGA3AHakrAdJ8qndkWF6UsYxlyrLXxVTftfWKhHOTGOGyA7Q==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0", | ||||||
|         "core-js": "^3.4.1", |  | ||||||
|         "load-bmfont": "^1.4.0" |         "load-bmfont": "^1.4.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-resize": { |     "@jimp/plugin-resize": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.12.0.tgz", | ||||||
|       "integrity": "sha512-rf8YmEB1d7Sg+g4LpqF0Mp+dfXfb6JFJkwlAIWPUOR7lGsPWALavEwTW91c0etEdnp0+JB9AFpy6zqq7Lwkq6w==", |       "integrity": "sha512-5qqrYmMeSyfNvFb+hdL1XDdGC2Db+/1KwWH9Zw3IxaAB4pXVPmZYMfBi9cJXd1mVHafl+FQWAEy5Ii3hXA32aw==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-rotate": { |     "@jimp/plugin-rotate": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.12.0.tgz", | ||||||
|       "integrity": "sha512-YXLlRjm18fkW9MOHUaVAxWjvgZM851ofOipytz5FyKp4KZWDLk+dZK1JNmVmK7MyVmAzZ5jsgSLhIgj+GgN0Eg==", |       "integrity": "sha512-tOgn86RoFyDm+BJOfdhPXNjaUiaotKcvMzfdR/o4kL/55y+x7xfVj7v7CJbvudnG29bDwEM+3r8HwfaQsezosg==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-scale": { |     "@jimp/plugin-scale": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.12.0.tgz", | ||||||
|       "integrity": "sha512-5DXD7x7WVcX1gUgnlFXQa8F+Q3ThRYwJm+aesgrYvDOY+xzRoRSdQvhmdd4JEEue3lyX44DvBSgCIHPtGcEPaw==", |       "integrity": "sha512-FS8MWgUcCZ1nwFX4YupTK59nuTqK8seo2CXJeHXgGjl8UU6c/EPBD9SrAuqSNbngcDY9fZ65i6srUyqrQ8kk7w==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-shadow": { |     "@jimp/plugin-shadow": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.12.0.tgz", | ||||||
|       "integrity": "sha512-/nkFXpt2zVcdP4ETdkAUL0fSzyrC5ZFxdcphbYBodqD7fXNqChS/Un1eD4xCXWEpW8cnG9dixZgQgStjywH0Mg==", |       "integrity": "sha512-FzzTVccC6BkL9Y0rFxI5Di4JEZvCxKq7AyyK6qI7OwBrwxoAmtUodkxGDZTUvYfpmtMZeLWG9TUVrJ/sBQ+NWA==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugin-threshold": { |     "@jimp/plugin-threshold": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.12.0.tgz", | ||||||
|       "integrity": "sha512-Dzh0Yq2wXP2SOnxcbbiyA4LJ2luwrdf1MghNIt9H+NX7B+IWw/N8qA2GuSm9n4BPGSLluuhdAWJqHcTiREriVA==", |       "integrity": "sha512-Sqf2MFDQY/kz0sAPtfjjG4BUcrF58lT09h2EJ75Rdc3hiAWrB7XizLvnI1J8rooHci8Ablbkb/E6xu+52KOGuw==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0" | ||||||
|         "core-js": "^3.4.1" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/plugins": { |     "@jimp/plugins": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.12.0.tgz", | ||||||
|       "integrity": "sha512-jTT3/7hOScf0EIKiAXmxwayHhryhc1wWuIe3FrchjDjr9wgIGNN2a7XwCgPl3fML17DXK1x8EzDneCdh261bkw==", |       "integrity": "sha512-P/1vKex4P697ayzVysMSjckcHE2Ii61tyNkq9t1RSZuERgyE616llVKMcil0aVYTnoqapjOwEW36c/fWY8Zj6g==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/plugin-blit": "^0.10.3", |         "@jimp/plugin-blit": "^0.12.0", | ||||||
|         "@jimp/plugin-blur": "^0.10.3", |         "@jimp/plugin-blur": "^0.12.0", | ||||||
|         "@jimp/plugin-circle": "^0.10.3", |         "@jimp/plugin-circle": "^0.12.0", | ||||||
|         "@jimp/plugin-color": "^0.10.3", |         "@jimp/plugin-color": "^0.12.0", | ||||||
|         "@jimp/plugin-contain": "^0.10.3", |         "@jimp/plugin-contain": "^0.12.0", | ||||||
|         "@jimp/plugin-cover": "^0.10.3", |         "@jimp/plugin-cover": "^0.12.0", | ||||||
|         "@jimp/plugin-crop": "^0.10.3", |         "@jimp/plugin-crop": "^0.12.0", | ||||||
|         "@jimp/plugin-displace": "^0.10.3", |         "@jimp/plugin-displace": "^0.12.0", | ||||||
|         "@jimp/plugin-dither": "^0.10.3", |         "@jimp/plugin-dither": "^0.12.0", | ||||||
|         "@jimp/plugin-fisheye": "^0.10.3", |         "@jimp/plugin-fisheye": "^0.12.0", | ||||||
|         "@jimp/plugin-flip": "^0.10.3", |         "@jimp/plugin-flip": "^0.12.0", | ||||||
|         "@jimp/plugin-gaussian": "^0.10.3", |         "@jimp/plugin-gaussian": "^0.12.0", | ||||||
|         "@jimp/plugin-invert": "^0.10.3", |         "@jimp/plugin-invert": "^0.12.0", | ||||||
|         "@jimp/plugin-mask": "^0.10.3", |         "@jimp/plugin-mask": "^0.12.0", | ||||||
|         "@jimp/plugin-normalize": "^0.10.3", |         "@jimp/plugin-normalize": "^0.12.0", | ||||||
|         "@jimp/plugin-print": "^0.10.3", |         "@jimp/plugin-print": "^0.12.0", | ||||||
|         "@jimp/plugin-resize": "^0.10.3", |         "@jimp/plugin-resize": "^0.12.0", | ||||||
|         "@jimp/plugin-rotate": "^0.10.3", |         "@jimp/plugin-rotate": "^0.12.0", | ||||||
|         "@jimp/plugin-scale": "^0.10.3", |         "@jimp/plugin-scale": "^0.12.0", | ||||||
|         "@jimp/plugin-shadow": "^0.10.3", |         "@jimp/plugin-shadow": "^0.12.0", | ||||||
|         "@jimp/plugin-threshold": "^0.10.3", |         "@jimp/plugin-threshold": "^0.12.0", | ||||||
|         "core-js": "^3.4.1", |  | ||||||
|         "timm": "^1.6.1" |         "timm": "^1.6.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/png": { |     "@jimp/png": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.12.0.tgz", | ||||||
|       "integrity": "sha512-YKqk/dkl+nGZxSYIDQrqhmaP8tC3IK8H7dFPnnzFVvbhDnyYunqBZZO3SaZUKTichClRw8k/CjBhbc+hifSGWg==", |       "integrity": "sha512-5MgVBRhjkivIHy7cJ6QnU4CygndSde0ZMcaVkfBIyh6gd8pCcIG/XbY2TcR9lSkflgw3tUVzLrFR1xWUYr2trg==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/utils": "^0.10.3", |         "@jimp/utils": "^0.12.0", | ||||||
|         "core-js": "^3.4.1", |  | ||||||
|         "pngjs": "^3.3.3" |         "pngjs": "^3.3.3" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/tiff": { |     "@jimp/tiff": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.12.0.tgz", | ||||||
|       "integrity": "sha512-7EsJzZ5Y/EtinkBGuwX3Bi4S+zgbKouxjt9c82VJTRJOQgLWsE/RHqcyRCOQBhHAZ9QexYmDz34medfLKdoX0g==", |       "integrity": "sha512-h7HBCSjTA4YlnWx66qxQh9YxuzxMoBSGkTiUDEhao2BIhYa2pRmRwtMfqp1EdeRYcXkswWpn4qZAr7zY1TlIGw==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "core-js": "^3.4.1", |  | ||||||
|         "utif": "^2.0.1" |         "utif": "^2.0.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/types": { |     "@jimp/types": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.12.0.tgz", | ||||||
|       "integrity": "sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==", |       "integrity": "sha512-6avU1n9lY4vpAHjKSQqrLbk6L5PCNFORre+T1Rcyvv/CGQKxVIAuRj1w+RzXClob8MEmvI17OI3R2w5RCbYpQw==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/bmp": "^0.10.3", |         "@jimp/bmp": "^0.12.0", | ||||||
|         "@jimp/gif": "^0.10.3", |         "@jimp/gif": "^0.12.0", | ||||||
|         "@jimp/jpeg": "^0.10.3", |         "@jimp/jpeg": "^0.12.0", | ||||||
|         "@jimp/png": "^0.10.3", |         "@jimp/png": "^0.12.0", | ||||||
|         "@jimp/tiff": "^0.10.3", |         "@jimp/tiff": "^0.12.0", | ||||||
|         "core-js": "^3.4.1", |  | ||||||
|         "timm": "^1.6.1" |         "timm": "^1.6.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@jimp/utils": { |     "@jimp/utils": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.12.0.tgz", | ||||||
|       "integrity": "sha512-VcSlQhkil4ReYmg1KkN+WqHyYfZ2XfZxDsKAHSfST1GEz/RQHxKZbX+KhFKtKflnL0F4e6DlNQj3vznMNXCR2w==", |       "integrity": "sha512-MVoR31cQ6QRXHQI+qS9po7sr1LQTOOpQHE9I2oVeakcDkVX80xrRBif3WoNPvq3BG2+BDxt09CFwwHFHHFY49Q==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "core-js": "^3.4.1", |  | ||||||
|         "regenerator-runtime": "^0.13.3" |         "regenerator-runtime": "^0.13.3" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
| @ -2644,7 +2613,9 @@ | |||||||
|     "core-js": { |     "core-js": { | ||||||
|       "version": "3.4.4", |       "version": "3.4.4", | ||||||
|       "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.4.tgz", |       "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.4.tgz", | ||||||
|       "integrity": "sha512-vKea1DrcLA80Hrfc7AQgfoGvEaByfR5mH08t+zuWOWY94TFBmabdEL56mUbcijvadG9RxsXR2gUUFrfj4/iTcA==" |       "integrity": "sha512-vKea1DrcLA80Hrfc7AQgfoGvEaByfR5mH08t+zuWOWY94TFBmabdEL56mUbcijvadG9RxsXR2gUUFrfj4/iTcA==", | ||||||
|  |       "dev": true, | ||||||
|  |       "optional": true | ||||||
|     }, |     }, | ||||||
|     "core-util-is": { |     "core-util-is": { | ||||||
|       "version": "1.0.2", |       "version": "1.0.2", | ||||||
| @ -2832,9 +2803,9 @@ | |||||||
|       "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=" |       "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=" | ||||||
|     }, |     }, | ||||||
|     "dayjs": { |     "dayjs": { | ||||||
|       "version": "1.8.26", |       "version": "1.8.27", | ||||||
|       "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.26.tgz", |       "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.27.tgz", | ||||||
|       "integrity": "sha512-KqtAuIfdNfZR5sJY1Dixr2Is4ZvcCqhb0dZpCOt5dGEFiMzoIbjkTSzUb4QKTCsP+WNpGwUjAFIZrnZvUxxkhw==" |       "integrity": "sha512-Jpa2acjWIeOkg8KURUHICk0EqnEFSSF5eMEscsOgyJ92ZukXwmpmRkPSUka7KHSfbj5eKH30ieosYip+ky9emQ==" | ||||||
|     }, |     }, | ||||||
|     "debug": { |     "debug": { | ||||||
|       "version": "4.1.1", |       "version": "4.1.1", | ||||||
| @ -3337,9 +3308,9 @@ | |||||||
|       "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" |       "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" | ||||||
|     }, |     }, | ||||||
|     "ejs": { |     "ejs": { | ||||||
|       "version": "3.1.2", |       "version": "3.1.3", | ||||||
|       "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.2.tgz", |       "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.3.tgz", | ||||||
|       "integrity": "sha512-zFuywxrAWtX5Mk2KAuoJNkXXbfezpNA0v7i+YC971QORguPekpjpAgeOv99YWSdKXwj7JxI2QAWDeDkE8fWtXw==", |       "integrity": "sha512-wmtrUGyfSC23GC/B1SMv2ogAUgbQEtDmTIhfqielrG5ExIM9TP4UoYdi90jLF1aTcsWCJNEO0UrgKzP0y3nTSg==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "jake": "^10.6.1" |         "jake": "^10.6.1" | ||||||
|       } |       } | ||||||
| @ -4448,9 +4419,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "file-type": { |     "file-type": { | ||||||
|       "version": "14.3.0", |       "version": "14.4.0", | ||||||
|       "resolved": "https://registry.npmjs.org/file-type/-/file-type-14.3.0.tgz", |       "resolved": "https://registry.npmjs.org/file-type/-/file-type-14.4.0.tgz", | ||||||
|       "integrity": "sha512-s71v6jMkbfwVdj87csLeNpL5K93mv4lN+lzgzifoICtPHhnXokDwBa3jrzfg+z6FK872iYJ0vS0i74v8XmoFDA==", |       "integrity": "sha512-U5Q2lHPcERmBsg+DpS/+0r+g7PCsJmyW+aggHnGbMimCyNCpIerLv/VzHJHqtc0O91AXr4Puz4DL7LzA5hMdwA==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "readable-web-to-node-stream": "^2.0.0", |         "readable-web-to-node-stream": "^2.0.0", | ||||||
|         "strtok3": "^6.0.0", |         "strtok3": "^6.0.0", | ||||||
| @ -6114,9 +6085,12 @@ | |||||||
|       "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=" |       "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=" | ||||||
|     }, |     }, | ||||||
|     "is-wsl": { |     "is-wsl": { | ||||||
|       "version": "2.1.1", |       "version": "2.2.0", | ||||||
|       "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", |       "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", | ||||||
|       "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==" |       "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", | ||||||
|  |       "requires": { | ||||||
|  |         "is-docker": "^2.0.0" | ||||||
|  |       } | ||||||
|     }, |     }, | ||||||
|     "is-yarn-global": { |     "is-yarn-global": { | ||||||
|       "version": "0.3.0", |       "version": "0.3.0", | ||||||
| @ -6216,6 +6190,38 @@ | |||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "jasmine": { | ||||||
|  |       "version": "3.5.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.5.0.tgz", | ||||||
|  |       "integrity": "sha512-DYypSryORqzsGoMazemIHUfMkXM7I7easFaxAvNM3Mr6Xz3Fy36TupTrAOxZWN8MVKEU5xECv22J4tUQf3uBzQ==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "glob": "^7.1.4", | ||||||
|  |         "jasmine-core": "~3.5.0" | ||||||
|  |       }, | ||||||
|  |       "dependencies": { | ||||||
|  |         "glob": { | ||||||
|  |           "version": "7.1.6", | ||||||
|  |           "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", | ||||||
|  |           "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "fs.realpath": "^1.0.0", | ||||||
|  |             "inflight": "^1.0.4", | ||||||
|  |             "inherits": "2", | ||||||
|  |             "minimatch": "^3.0.4", | ||||||
|  |             "once": "^1.3.0", | ||||||
|  |             "path-is-absolute": "^1.0.0" | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "jasmine-core": { | ||||||
|  |       "version": "3.5.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.5.0.tgz", | ||||||
|  |       "integrity": "sha512-nCeAiw37MIMA9w9IXso7bRaLl+c/ef3wnxsoSAlYrzS+Ot0zTG6nU8G/cIfGkqpkjX2wNaIW9RFG0TwIFnG6bA==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "jest-worker": { |     "jest-worker": { | ||||||
|       "version": "25.5.0", |       "version": "25.5.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", |       "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", | ||||||
| @ -6244,15 +6250,14 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "jimp": { |     "jimp": { | ||||||
|       "version": "0.10.3", |       "version": "0.12.0", | ||||||
|       "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.10.3.tgz", |       "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.12.0.tgz", | ||||||
|       "integrity": "sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ==", |       "integrity": "sha512-8QD1QNk2ZpoSFLDEQn4rlQ0sDAO1z6UagIqUsH6YjopHCExcAbk3q2hJFXk6wSf+LMHHkic44PhdVTZ0drER2w==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@babel/runtime": "^7.7.2", |         "@babel/runtime": "^7.7.2", | ||||||
|         "@jimp/custom": "^0.10.3", |         "@jimp/custom": "^0.12.0", | ||||||
|         "@jimp/plugins": "^0.10.3", |         "@jimp/plugins": "^0.12.0", | ||||||
|         "@jimp/types": "^0.10.3", |         "@jimp/types": "^0.12.0", | ||||||
|         "core-js": "^3.4.1", |  | ||||||
|         "regenerator-runtime": "^0.13.3" |         "regenerator-runtime": "^0.13.3" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
| @ -8231,9 +8236,9 @@ | |||||||
|       "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" |       "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" | ||||||
|     }, |     }, | ||||||
|     "open": { |     "open": { | ||||||
|       "version": "7.0.3", |       "version": "7.0.4", | ||||||
|       "resolved": "https://registry.npmjs.org/open/-/open-7.0.3.tgz", |       "resolved": "https://registry.npmjs.org/open/-/open-7.0.4.tgz", | ||||||
|       "integrity": "sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA==", |       "integrity": "sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "is-docker": "^2.0.0", |         "is-docker": "^2.0.0", | ||||||
|         "is-wsl": "^2.1.1" |         "is-wsl": "^2.1.1" | ||||||
|  | |||||||
							
								
								
									
										14
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								package.json
									
									
									
									
									
								
							| @ -18,7 +18,8 @@ | |||||||
|     "build-backend-docs": "./node_modules/.bin/jsdoc -c jsdoc-conf.json -d ./docs/backend_api src/entities/*.js src/services/backend_script_api.js", |     "build-backend-docs": "./node_modules/.bin/jsdoc -c jsdoc-conf.json -d ./docs/backend_api src/entities/*.js src/services/backend_script_api.js", | ||||||
|     "build-frontend-docs": "./node_modules/.bin/jsdoc -c jsdoc-conf.json -d ./docs/frontend_api src/public/app/entities/*.js src/public/app/services/frontend_script_api.js src/public/app/widgets/collapsible_widget.js", |     "build-frontend-docs": "./node_modules/.bin/jsdoc -c jsdoc-conf.json -d ./docs/frontend_api src/public/app/entities/*.js src/public/app/services/frontend_script_api.js src/public/app/widgets/collapsible_widget.js", | ||||||
|     "build-docs": "npm run build-backend-docs && npm run build-frontend-docs", |     "build-docs": "npm run build-backend-docs && npm run build-frontend-docs", | ||||||
|     "webpack": "npx webpack -c webpack-desktop.config.js && npx webpack -c webpack-mobile.config.js && npx webpack -c webpack-setup.config.js" |     "webpack": "npx webpack -c webpack-desktop.config.js && npx webpack -c webpack-mobile.config.js && npx webpack -c webpack-setup.config.js", | ||||||
|  |     "test": "jasmine" | ||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "async-mutex": "0.2.2", |     "async-mutex": "0.2.2", | ||||||
| @ -28,16 +29,16 @@ | |||||||
|     "commonmark": "0.29.1", |     "commonmark": "0.29.1", | ||||||
|     "cookie-parser": "1.4.5", |     "cookie-parser": "1.4.5", | ||||||
|     "csurf": "1.11.0", |     "csurf": "1.11.0", | ||||||
|     "dayjs": "1.8.26", |     "dayjs": "1.8.27", | ||||||
|     "debug": "4.1.1", |     "debug": "4.1.1", | ||||||
|     "ejs": "3.1.2", |     "ejs": "3.1.3", | ||||||
|     "electron-debug": "3.0.1", |     "electron-debug": "3.0.1", | ||||||
|     "electron-dl": "3.0.0", |     "electron-dl": "3.0.0", | ||||||
|     "electron-find": "1.0.6", |     "electron-find": "1.0.6", | ||||||
|     "electron-window-state": "5.0.3", |     "electron-window-state": "5.0.3", | ||||||
|     "express": "4.17.1", |     "express": "4.17.1", | ||||||
|     "express-session": "1.17.1", |     "express-session": "1.17.1", | ||||||
|     "file-type": "14.3.0", |     "file-type": "14.4.0", | ||||||
|     "fs-extra": "9.0.0", |     "fs-extra": "9.0.0", | ||||||
|     "helmet": "3.22.0", |     "helmet": "3.22.0", | ||||||
|     "html": "1.0.0", |     "html": "1.0.0", | ||||||
| @ -51,11 +52,11 @@ | |||||||
|     "imagemin-pngquant": "8.0.0", |     "imagemin-pngquant": "8.0.0", | ||||||
|     "ini": "1.3.5", |     "ini": "1.3.5", | ||||||
|     "is-svg": "4.2.1", |     "is-svg": "4.2.1", | ||||||
|     "jimp": "0.10.3", |     "jimp": "0.12.0", | ||||||
|     "mime-types": "2.1.27", |     "mime-types": "2.1.27", | ||||||
|     "multer": "1.4.2", |     "multer": "1.4.2", | ||||||
|     "node-abi": "2.16.0", |     "node-abi": "2.16.0", | ||||||
|     "open": "7.0.3", |     "open": "7.0.4", | ||||||
|     "portscanner": "2.2.0", |     "portscanner": "2.2.0", | ||||||
|     "rand-token": "1.0.1", |     "rand-token": "1.0.1", | ||||||
|     "rcedit": "2.1.1", |     "rcedit": "2.1.1", | ||||||
| @ -82,6 +83,7 @@ | |||||||
|     "electron-builder": "22.6.0", |     "electron-builder": "22.6.0", | ||||||
|     "electron-packager": "14.2.1", |     "electron-packager": "14.2.1", | ||||||
|     "electron-rebuild": "1.11.0", |     "electron-rebuild": "1.11.0", | ||||||
|  |     "jasmine": "^3.5.0", | ||||||
|     "jsdoc": "3.6.4", |     "jsdoc": "3.6.4", | ||||||
|     "lorem-ipsum": "2.0.3", |     "lorem-ipsum": "2.0.3", | ||||||
|     "webpack": "5.0.0-beta.16", |     "webpack": "5.0.0-beta.16", | ||||||
|  | |||||||
							
								
								
									
										29
									
								
								spec/lexer.spec.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								spec/lexer.spec.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,29 @@ | |||||||
|  | const lexerSpec = require('../src/services/search/lexer.js'); | ||||||
|  | 
 | ||||||
|  | describe("Lexer", function() { | ||||||
|  |     it("simple lexing", () => { | ||||||
|  |         expect(lexerSpec("hello world").fulltextTokens) | ||||||
|  |             .toEqual(["hello", "world"]); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     it("use quotes to keep words together", () => { | ||||||
|  |         expect(lexerSpec("'hello world' my friend").fulltextTokens) | ||||||
|  |             .toEqual(["hello world", "my", "friend"]); | ||||||
|  | 
 | ||||||
|  |         expect(lexerSpec('"hello world" my friend').fulltextTokens) | ||||||
|  |             .toEqual(["hello world", "my", "friend"]); | ||||||
|  | 
 | ||||||
|  |         expect(lexerSpec('`hello world` my friend').fulltextTokens) | ||||||
|  |             .toEqual(["hello world", "my", "friend"]); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     it("you can use different quotes and other special characters inside quotes", () => { | ||||||
|  |         expect(lexerSpec("'I can use \" or ` or #@=*' without problem").fulltextTokens) | ||||||
|  |             .toEqual(["I can use \" or ` or #@=*", "without", "problem"]); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     it("if quote is not ended then it's just one long token", () => { | ||||||
|  |         expect(lexerSpec("'unfinished quote").fulltextTokens) | ||||||
|  |             .toEqual(["unfinished quote"]); | ||||||
|  |     }); | ||||||
|  | }); | ||||||
							
								
								
									
										11
									
								
								spec/support/jasmine.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								spec/support/jasmine.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | |||||||
|  | { | ||||||
|  |   "spec_dir": "spec", | ||||||
|  |   "spec_files": [ | ||||||
|  |     "**/*[sS]pec.js" | ||||||
|  |   ], | ||||||
|  |   "helpers": [ | ||||||
|  |     "helpers/**/*.js" | ||||||
|  |   ], | ||||||
|  |   "stopSpecOnExpectationFailure": false, | ||||||
|  |   "random": true | ||||||
|  | } | ||||||
| @ -1,7 +1,7 @@ | |||||||
| const repository = require('./repository'); | const repository = require('./repository'); | ||||||
| const sql = require('./sql'); | const sql = require('./sql'); | ||||||
| const log = require('./log'); | const log = require('./log'); | ||||||
| const parseFilters = require('./parse_filters'); | const parseFilters = require('./search/parse_filters.js'); | ||||||
| const buildSearchQuery = require('./build_search_query'); | const buildSearchQuery = require('./build_search_query'); | ||||||
| const noteCacheService = require('./note_cache/note_cache.js'); | const noteCacheService = require('./note_cache/note_cache.js'); | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										15
									
								
								src/services/search/expressions/not.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/services/search/expressions/not.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | |||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | class NotExp { | ||||||
|  |     constructor(subExpression) { | ||||||
|  |         this.subExpression = subExpression; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     execute(noteSet, searchContext) { | ||||||
|  |         const subNoteSet = this.subExpression.execute(noteSet, searchContext); | ||||||
|  | 
 | ||||||
|  |         return noteSet.minus(subNoteSet); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | module.exports = NotExp; | ||||||
							
								
								
									
										94
									
								
								src/services/search/lexer.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								src/services/search/lexer.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,94 @@ | |||||||
|  | function lexer(str) { | ||||||
|  |     const fulltextTokens = []; | ||||||
|  |     const expressionTokens = []; | ||||||
|  | 
 | ||||||
|  |     let quotes = false; | ||||||
|  |     let fulltextEnded = false; | ||||||
|  |     let currentWord = ''; | ||||||
|  |     let symbol = false; | ||||||
|  | 
 | ||||||
|  |     function isSymbol(chr) { | ||||||
|  |         return ['=', '*', '>', '<', '!'].includes(chr); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     function finishWord() { | ||||||
|  |         if (currentWord === '') { | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         if (fulltextEnded) { | ||||||
|  |             expressionTokens.push(currentWord); | ||||||
|  |         } else { | ||||||
|  |             fulltextTokens.push(currentWord); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         currentWord = ''; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     for (let i = 0; i < str.length; i++) { | ||||||
|  |         const chr = str[i]; | ||||||
|  | 
 | ||||||
|  |         if (chr === '\\') { | ||||||
|  |             if ((i + 1) < str.length) { | ||||||
|  |                 i++; | ||||||
|  | 
 | ||||||
|  |                 currentWord += str[i]; | ||||||
|  |             } | ||||||
|  |             else { | ||||||
|  |                 currentWord += chr; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             continue; | ||||||
|  |         } | ||||||
|  |         else if (['"', "'", '`'].includes(chr)) { | ||||||
|  |             if (!quotes) { | ||||||
|  |                 if (currentWord.length === 0) { | ||||||
|  |                     quotes = chr; | ||||||
|  |                 } | ||||||
|  |                 else { | ||||||
|  |                     // quote inside a word does not have special meening and does not break word
 | ||||||
|  |                     // e.g. d'Artagnan is kept as a single token
 | ||||||
|  |                     currentWord += chr; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             else if (quotes === chr) { | ||||||
|  |                 quotes = false; | ||||||
|  | 
 | ||||||
|  |                 finishWord(); | ||||||
|  |             } | ||||||
|  |             else { | ||||||
|  |                 // it's a quote but within other kind of quotes so it's valid as a literal character
 | ||||||
|  |                 currentWord += chr; | ||||||
|  |             } | ||||||
|  |             continue; | ||||||
|  |         } | ||||||
|  |         else if (!quotes) { | ||||||
|  |             if (chr === '#' || chr === '@') { | ||||||
|  |                 fulltextEnded = true; | ||||||
|  |                 continue; | ||||||
|  |             } | ||||||
|  |             else if (chr === ' ') { | ||||||
|  |                 finishWord(); | ||||||
|  |                 continue; | ||||||
|  |             } | ||||||
|  |             else if (fulltextEnded && symbol !== isSymbol(chr)) { | ||||||
|  |                 finishWord(); | ||||||
|  | 
 | ||||||
|  |                 currentWord += chr; | ||||||
|  |                 symbol = isSymbol(chr); | ||||||
|  |                 continue; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         currentWord += chr; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     finishWord(); | ||||||
|  | 
 | ||||||
|  |     return { | ||||||
|  |         fulltextTokens, | ||||||
|  |         expressionTokens | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | module.exports = lexer; | ||||||
| @ -21,6 +21,18 @@ class NoteSet { | |||||||
|     mergeIn(anotherNoteSet) { |     mergeIn(anotherNoteSet) { | ||||||
|         this.notes = this.notes.concat(anotherNoteSet.arr); |         this.notes = this.notes.concat(anotherNoteSet.arr); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     minus(anotherNoteSet) { | ||||||
|  |         const newNoteSet = new NoteSet(); | ||||||
|  | 
 | ||||||
|  |         for (const note of this.notes) { | ||||||
|  |             if (!anotherNoteSet.hasNoteId(note.noteId)) { | ||||||
|  |                 newNoteSet.add(note); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         return newNoteSet; | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| module.exports = NoteSet; | module.exports = NoteSet; | ||||||
|  | |||||||
| @ -1,4 +1,9 @@ | |||||||
| const dayjs = require("dayjs"); | const dayjs = require("dayjs"); | ||||||
|  | const AndExp = require('./expressions/and'); | ||||||
|  | const OrExp = require('./expressions/or'); | ||||||
|  | const NotExp = require('./expressions/not'); | ||||||
|  | const NoteCacheFulltextExp = require('./expressions/note_cache_fulltext'); | ||||||
|  | const NoteContentFulltextExp = require('./expressions/note_content_fulltext'); | ||||||
| 
 | 
 | ||||||
| const filterRegex = /(\b(AND|OR)\s+)?@(!?)([\p{L}\p{Number}_]+|"[^"]+")\s*((=|!=|<|<=|>|>=|!?\*=|!?=\*|!?\*=\*)\s*([^\s=*"]+|"[^"]+"))?/igu; | const filterRegex = /(\b(AND|OR)\s+)?@(!?)([\p{L}\p{Number}_]+|"[^"]+")\s*((=|!=|<|<=|>|>=|!?\*=|!?=\*|!?\*=\*)\s*([^\s=*"]+|"[^"]+"))?/igu; | ||||||
| const smartValueRegex = /^(NOW|TODAY|WEEK|MONTH|YEAR) *([+\-] *\d+)?$/i; | const smartValueRegex = /^(NOW|TODAY|WEEK|MONTH|YEAR) *([+\-] *\d+)?$/i; | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 zadam
						zadam