/
static.go
288 lines (256 loc) · 10.4 KB
/
static.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
// Code generated by "esc "; DO NOT EDIT.
package js
import (
"bytes"
"compress/gzip"
"encoding/base64"
"io/ioutil"
"net/http"
"os"
"path"
"sync"
"time"
)
type _escLocalFS struct{}
var _escLocal _escLocalFS
type _escStaticFS struct{}
var _escStatic _escStaticFS
type _escDirectory struct {
fs http.FileSystem
name string
}
type _escFile struct {
compressed string
size int64
modtime int64
local string
isDir bool
once sync.Once
data []byte
name string
}
func (_escLocalFS) Open(name string) (http.File, error) {
f, present := _escData[path.Clean(name)]
if !present {
return nil, os.ErrNotExist
}
return os.Open(f.local)
}
func (_escStaticFS) prepare(name string) (*_escFile, error) {
f, present := _escData[path.Clean(name)]
if !present {
return nil, os.ErrNotExist
}
var err error
f.once.Do(func() {
f.name = path.Base(name)
if f.size == 0 {
return
}
var gr *gzip.Reader
b64 := base64.NewDecoder(base64.StdEncoding, bytes.NewBufferString(f.compressed))
gr, err = gzip.NewReader(b64)
if err != nil {
return
}
f.data, err = ioutil.ReadAll(gr)
})
if err != nil {
return nil, err
}
return f, nil
}
func (fs _escStaticFS) Open(name string) (http.File, error) {
f, err := fs.prepare(name)
if err != nil {
return nil, err
}
return f.File()
}
func (dir _escDirectory) Open(name string) (http.File, error) {
return dir.fs.Open(dir.name + name)
}
func (f *_escFile) File() (http.File, error) {
type httpFile struct {
*bytes.Reader
*_escFile
}
return &httpFile{
Reader: bytes.NewReader(f.data),
_escFile: f,
}, nil
}
func (f *_escFile) Close() error {
return nil
}
func (f *_escFile) Readdir(count int) ([]os.FileInfo, error) {
return nil, nil
}
func (f *_escFile) Stat() (os.FileInfo, error) {
return f, nil
}
func (f *_escFile) Name() string {
return f.name
}
func (f *_escFile) Size() int64 {
return f.size
}
func (f *_escFile) Mode() os.FileMode {
return 0
}
func (f *_escFile) ModTime() time.Time {
return time.Unix(f.modtime, 0)
}
func (f *_escFile) IsDir() bool {
return f.isDir
}
func (f *_escFile) Sys() interface{} {
return f
}
// _escFS returns a http.Filesystem for the embedded assets. If useLocal is true,
// the filesystem's contents are instead used.
func _escFS(useLocal bool) http.FileSystem {
if useLocal {
return _escLocal
}
return _escStatic
}
// _escDir returns a http.Filesystem for the embedded assets on a given prefix dir.
// If useLocal is true, the filesystem's contents are instead used.
func _escDir(useLocal bool, name string) http.FileSystem {
if useLocal {
return _escDirectory{fs: _escLocal, name: name}
}
return _escDirectory{fs: _escStatic, name: name}
}
// _escFSByte returns the named file from the embedded assets. If useLocal is
// true, the filesystem's contents are instead used.
func _escFSByte(useLocal bool, name string) ([]byte, error) {
if useLocal {
f, err := _escLocal.Open(name)
if err != nil {
return nil, err
}
b, err := ioutil.ReadAll(f)
_ = f.Close()
return b, err
}
f, err := _escStatic.prepare(name)
if err != nil {
return nil, err
}
return f.data, nil
}
// _escFSMustByte is the same as _escFSByte, but panics if name is not present.
func _escFSMustByte(useLocal bool, name string) []byte {
b, err := _escFSByte(useLocal, name)
if err != nil {
panic(err)
}
return b
}
// _escFSString is the string version of _escFSByte.
func _escFSString(useLocal bool, name string) (string, error) {
b, err := _escFSByte(useLocal, name)
return string(b), err
}
// _escFSMustString is the string version of _escFSMustByte.
func _escFSMustString(useLocal bool, name string) string {
return string(_escFSMustByte(useLocal, name))
}
var _escData = map[string]*_escFile{
"/helpers.js": {
local: "pkg/js/helpers.js",
size: 18516,
modtime: 0,
compressed: `
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
`,
},
"/": {
isDir: true,
local: "pkg/js",
},
}