github.com/pbberlin/go-pwa@v0.0.0-20220328105622-7c26e0ca1ab8/pkg/static/dirs-default.go (about) 1 package static 2 3 import "net/http" 4 5 // 6 // 7 // default static config 8 9 var staticDirsDefault = dirsT{ 10 11 // special files - single files 12 "/service-worker.js": { 13 isSingleFile: true, 14 srcTpl: "./app-bucket/tpl/service-worker.tpl.js", 15 tplExecutor: execServiceWorker, 16 17 src: "./app-bucket/js-service-worker/", 18 fn: "service-worker.js", 19 20 urlPath: "/service-worker.js", 21 MimeType: "application/javascript", 22 HTTPCache: 60 * 60 * 120, 23 24 preGZIP: true, 25 swpc: serviceWorkerPreCache{ 26 cache: false, 27 }, 28 }, 29 "/only-template-preparation-1": { 30 isSingleFile: true, 31 srcTpl: "./app-bucket/tpl/db.tpl.js", 32 tplExecutor: execDB, 33 34 src: "./app-bucket/js/", 35 fn: "db.js", 36 }, 37 "/only-template-preparation-2": { 38 isSingleFile: true, 39 srcTpl: "./app-bucket/tpl/manifest.tpl.json", 40 tplExecutor: execManifest, 41 42 src: "./app-bucket/json/", 43 fn: "/manifest.json", 44 }, 45 "/favicon.ico": { 46 isSingleFile: true, 47 // always requested from root 48 src: "./app-bucket/img/", 49 fn: "favicon.ico", 50 51 urlPath: "/favicon.ico", 52 MimeType: "image/x-icon", 53 HTTPCache: 60 * 60 * 120, 54 55 preGZIP: true, 56 swpc: serviceWorkerPreCache{ 57 cache: true, 58 }, 59 }, 60 "/robots.txt": { 61 isSingleFile: true, 62 src: "./app-bucket/txt/", 63 fn: "robots.txt", 64 65 urlPath: "/robots.txt", 66 MimeType: "text/plain", 67 // no caching since file is not requested by web browsers 68 }, 69 70 // 71 // directories 72 "/js": { 73 src: "./app-bucket/js/", 74 75 urlPath: "/js/", 76 MimeType: "application/javascript", 77 HTTPCache: 60 * 60 * 120, 78 79 preGZIP: true, 80 swpc: serviceWorkerPreCache{ 81 cache: true, 82 }, 83 HeadTemplate: ` <script src="/js/%s/%v" nonce="%s" ></script>`, 84 }, 85 "/css": { 86 src: "./app-bucket/css/", 87 88 urlPath: "/css/", 89 MimeType: "text/css", 90 HTTPCache: 60 * 60 * 120, 91 92 preGZIP: true, 93 swpc: serviceWorkerPreCache{ 94 cache: true, 95 }, 96 HeadTemplate: ` <link href="/css/%s/%s" nonce="%s" rel="stylesheet" type="text/css" media="screen" />`, 97 }, 98 "/json": { 99 src: "./app-bucket/json/", 100 101 urlPath: "/json/", 102 MimeType: "application/json", 103 HTTPCache: 60 * 60 * 120, 104 105 preGZIP: true, 106 swpc: serviceWorkerPreCache{ 107 cache: true, 108 }, 109 // HeadTemplate: ``, 110 }, 111 "/img": { 112 src: "./app-bucket/img/", 113 114 urlPath: "/img/", 115 MimeType: "image/webp", 116 HTTPCache: 60 * 60 * 120, 117 includeExtensions: []string{".webp", ".ico"}, 118 119 preGZIP: false, // webp files are already compressed 120 swpc: serviceWorkerPreCache{ 121 cache: true, 122 includeExtensions: []string{".webp"}, 123 }, 124 }, 125 } 126 127 func Register(mux *http.ServeMux) { 128 staticDirsDefault.Register(mux) 129 } 130 131 func PrepareStatic(w http.ResponseWriter, req *http.Request) { 132 staticDirsDefault.PrepareStatic(w, req) 133 }