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  }