let CleanCSS = require('@ndcode/clean-css')
let JSONCache = require('@ndcode/json_cache')
let Site = require('./Site')
+let SVGO = require('svgo')
let assert = require('assert')
let disk_build = require('@ndcode/disk_build')
let emailjs = require('emailjs')
let fs_writeFile = util.promisify(fs.writeFile)
let yauzl_open = util.promisify(yauzl.open)
let clean_css = new CleanCSS({returnPromise: true})
+let svgo = new SVGO(
+ {
+ plugins: [
+ {cleanupAttrs: true},
+ {removeDoctype: true},
+ {removeXMLProcInst: true},
+ {removeComments: true},
+ {removeMetadata: true},
+ {removeTitle: true},
+ {removeDesc: true},
+ {removeUselessDefs: true},
+ {removeEditorsNSData: true},
+ {removeEmptyAttrs: true},
+ {removeHiddenElems: true},
+ {removeEmptyText: true},
+ {removeEmptyContainers: true},
+ {removeViewBox: false},
+ {cleanupEnableBackground: true},
+ {convertStyleToAttrs: true},
+ {convertColors: true},
+ {convertPathData: true},
+ {convertTransform: true},
+ {removeUnknownsAndDefaults: true},
+ {removeNonInheritableGroupAttrs: true},
+ {removeUselessStrokeAndFill: true},
+ {removeUnusedNS: true},
+ {cleanupIDs: true},
+ {cleanupNumericValues: true},
+ {moveElemsAttrsToGroup: true},
+ {moveGroupAttrsToElems: true},
+ {collapseGroups: true},
+ {removeRasterImages: false},
+ {mergePaths: true},
+ {convertShapeToPath: true},
+ {sortAttrs: true},
+ {removeDimensions: true}//,
+ //{removeAttrs: {attrs: '(stroke|fill)'}}
+ ]
+ }
+)
let Server = function() {
if (!this instanceof Server)
this.build_cache_css_less = new BuildCache()
this.build_cache_css_min = new BuildCache()
this.build_cache_js_min = new BuildCache()
+ this.build_cache_svg_min = new BuildCache()
this.build_cache_text = new BuildCache()
this.build_cache_zet = new BuildCache()
this.build_cache_zip = new BuildCache()
)
}
+Server.prototype.get_svg_min = function(pathname) {
+ return /*await*/ this.build_cache_svg_min.get(
+ pathname,
+ async result => {
+ result.value = fs_readFile(
+ await disk_build(
+ pathname,
+ async built_pathname => {
+ console.log('getting', pathname, 'as svg_min')
+ let text = await fs_readFile(pathname, {encoding: 'utf-8'})
+ console.log('building', built_pathname)
+ let render = await svgo.optimize(text, {path: pathname})
+ return /*await*/ fs_writeFile(
+ built_pathname,
+ render.data,
+ {encoding: 'utf-8'}
+ )
+ }
+ )
+ )
+ }
+ )
+}
+
Server.prototype.get_text = function(pathname) {
return /*await*/ this.build_cache_text.get(
pathname,