mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
migrate code for github
This commit is contained in:
3
vendor/gopkg.in/sourcemap.v1/Makefile
generated
vendored
Normal file
3
vendor/gopkg.in/sourcemap.v1/Makefile
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
all:
|
||||
go test ./... -test.v -test.cpu=1,2,4
|
||||
go test ./... -test.v -test.short -test.race
|
35
vendor/gopkg.in/sourcemap.v1/README.md
generated
vendored
Normal file
35
vendor/gopkg.in/sourcemap.v1/README.md
generated
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
# Source Maps consumer for Golang [](https://travis-ci.org/go-sourcemap/sourcemap)
|
||||
|
||||
## Installation
|
||||
|
||||
Install:
|
||||
|
||||
go get gopkg.in/sourcemap.v1
|
||||
|
||||
## Quickstart
|
||||
|
||||
```go
|
||||
func ExampleParse() {
|
||||
mapURL := "http://code.jquery.com/jquery-2.0.3.min.map"
|
||||
resp, err := http.Get(mapURL)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
b, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
smap, err := sourcemap.Parse(mapURL, b)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
line, column := 5, 6789
|
||||
file, fn, line, col, ok := smap.Source(line, column)
|
||||
fmt.Println(file, fn, line, col, ok)
|
||||
// Output: http://code.jquery.com/jquery-2.0.3.js apply 4360 27 true
|
||||
}
|
||||
```
|
95
vendor/gopkg.in/sourcemap.v1/base64vlq/base64_vlq.go
generated
vendored
Normal file
95
vendor/gopkg.in/sourcemap.v1/base64vlq/base64_vlq.go
generated
vendored
Normal file
@@ -0,0 +1,95 @@
|
||||
package base64vlq
|
||||
|
||||
import (
|
||||
"io"
|
||||
)
|
||||
|
||||
const encodeStd = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
|
||||
|
||||
const (
|
||||
vlqBaseShift = 5
|
||||
vlqBase = 1 << vlqBaseShift
|
||||
vlqBaseMask = vlqBase - 1
|
||||
vlqSignBit = 1
|
||||
vlqContinuationBit = vlqBase
|
||||
)
|
||||
|
||||
var (
|
||||
decodeMap [256]int
|
||||
)
|
||||
|
||||
func init() {
|
||||
for i := 0; i < len(encodeStd); i++ {
|
||||
decodeMap[encodeStd[i]] = i
|
||||
}
|
||||
}
|
||||
|
||||
func toVLQSigned(n int) int {
|
||||
if n < 0 {
|
||||
return -n<<1 + 1
|
||||
} else {
|
||||
return n << 1
|
||||
}
|
||||
}
|
||||
|
||||
func fromVLQSigned(n int) int {
|
||||
isNeg := n&vlqSignBit != 0
|
||||
n >>= 1
|
||||
if isNeg {
|
||||
return -n
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
type Encoder struct {
|
||||
w io.ByteWriter
|
||||
}
|
||||
|
||||
func NewEncoder(w io.ByteWriter) *Encoder {
|
||||
return &Encoder{
|
||||
w: w,
|
||||
}
|
||||
}
|
||||
|
||||
func (enc *Encoder) Encode(n int) error {
|
||||
n = toVLQSigned(n)
|
||||
for digit := vlqContinuationBit; digit&vlqContinuationBit != 0; {
|
||||
digit = n & vlqBaseMask
|
||||
n >>= vlqBaseShift
|
||||
if n > 0 {
|
||||
digit |= vlqContinuationBit
|
||||
}
|
||||
err := enc.w.WriteByte(encodeStd[digit])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type Decoder struct {
|
||||
r io.ByteReader
|
||||
}
|
||||
|
||||
func NewDecoder(r io.ByteReader) *Decoder {
|
||||
return &Decoder{
|
||||
r: r,
|
||||
}
|
||||
}
|
||||
|
||||
func (dec *Decoder) Decode() (n int, err error) {
|
||||
shift := uint(0)
|
||||
for continuation := true; continuation; {
|
||||
c, err := dec.r.ReadByte()
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
digit := decodeMap[c]
|
||||
continuation = digit&vlqContinuationBit != 0
|
||||
digit &= vlqBaseMask
|
||||
n = n + digit<<shift
|
||||
shift += vlqBaseShift
|
||||
}
|
||||
return fromVLQSigned(n), nil
|
||||
}
|
312
vendor/gopkg.in/sourcemap.v1/consumer.go
generated
vendored
Normal file
312
vendor/gopkg.in/sourcemap.v1/consumer.go
generated
vendored
Normal file
@@ -0,0 +1,312 @@
|
||||
package sourcemap // import "gopkg.in/sourcemap.v1"
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/url"
|
||||
"path"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"gopkg.in/sourcemap.v1/base64vlq"
|
||||
)
|
||||
|
||||
type Consumer struct {
|
||||
sourceRootURL *url.URL
|
||||
smap *sourceMap
|
||||
mappings []mapping
|
||||
}
|
||||
|
||||
func Parse(mapURL string, b []byte) (*Consumer, error) {
|
||||
smap := new(sourceMap)
|
||||
err := json.Unmarshal(b, smap)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if smap.Version != 3 {
|
||||
return nil, errors.New("sourcemap: only 3rd version is supported")
|
||||
}
|
||||
|
||||
var sourceRootURL *url.URL
|
||||
if smap.SourceRoot != "" {
|
||||
u, err := url.Parse(smap.SourceRoot)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if u.IsAbs() {
|
||||
sourceRootURL = u
|
||||
}
|
||||
} else if mapURL != "" {
|
||||
u, err := url.Parse(mapURL)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if u.IsAbs() {
|
||||
u.Path = path.Dir(u.Path)
|
||||
sourceRootURL = u
|
||||
}
|
||||
}
|
||||
|
||||
mappings, err := parseMappings(smap.Mappings)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// Free memory.
|
||||
smap.Mappings = ""
|
||||
|
||||
return &Consumer{
|
||||
sourceRootURL: sourceRootURL,
|
||||
smap: smap,
|
||||
mappings: mappings,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Consumer) File() string {
|
||||
return c.smap.File
|
||||
}
|
||||
|
||||
func (c *Consumer) Source(genLine, genCol int) (source, name string, line, col int, ok bool) {
|
||||
i := sort.Search(len(c.mappings), func(i int) bool {
|
||||
m := &c.mappings[i]
|
||||
if m.genLine == genLine {
|
||||
return m.genCol >= genCol
|
||||
}
|
||||
return m.genLine >= genLine
|
||||
})
|
||||
|
||||
// Mapping not found.
|
||||
if i == len(c.mappings) {
|
||||
return
|
||||
}
|
||||
|
||||
match := &c.mappings[i]
|
||||
|
||||
// Fuzzy match.
|
||||
if match.genCol > genCol && i > 0 {
|
||||
match = &c.mappings[i-1]
|
||||
}
|
||||
|
||||
if match.sourcesInd >= 0 {
|
||||
source = c.absSource(c.smap.Sources[match.sourcesInd])
|
||||
}
|
||||
if match.namesInd >= 0 {
|
||||
iv := c.smap.Names[match.namesInd]
|
||||
switch v := iv.(type) {
|
||||
case string:
|
||||
name = v
|
||||
case float64:
|
||||
name = strconv.FormatFloat(v, 'f', -1, 64)
|
||||
default:
|
||||
name = fmt.Sprint(iv)
|
||||
}
|
||||
}
|
||||
line = match.sourceLine
|
||||
col = match.sourceCol
|
||||
ok = true
|
||||
return
|
||||
}
|
||||
|
||||
func (c *Consumer) absSource(source string) string {
|
||||
if path.IsAbs(source) {
|
||||
return source
|
||||
}
|
||||
|
||||
if u, err := url.Parse(source); err == nil && u.IsAbs() {
|
||||
return source
|
||||
}
|
||||
|
||||
if c.sourceRootURL != nil {
|
||||
u := *c.sourceRootURL
|
||||
u.Path = path.Join(c.sourceRootURL.Path, source)
|
||||
return u.String()
|
||||
}
|
||||
|
||||
if c.smap.SourceRoot != "" {
|
||||
return path.Join(c.smap.SourceRoot, source)
|
||||
}
|
||||
|
||||
return source
|
||||
}
|
||||
|
||||
func (c *Consumer) SourceName(genLine, genCol int, genName string) (name string, ok bool) {
|
||||
ind := sort.Search(len(c.mappings), func(i int) bool {
|
||||
m := c.mappings[i]
|
||||
if m.genLine == genLine {
|
||||
return m.genCol >= genCol
|
||||
}
|
||||
return m.genLine >= genLine
|
||||
})
|
||||
|
||||
// Mapping not found.
|
||||
if ind == len(c.mappings) {
|
||||
return "", false
|
||||
}
|
||||
|
||||
for i := ind; i >= 0; i-- {
|
||||
m := c.mappings[i]
|
||||
if m.namesInd == -1 {
|
||||
continue
|
||||
}
|
||||
if c.smap.Names[m.namesInd] == "" {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
type fn func() (fn, error)
|
||||
|
||||
type sourceMap struct {
|
||||
Version int `json:"version"`
|
||||
File string `json:"file"`
|
||||
SourceRoot string `json:"sourceRoot"`
|
||||
Sources []string `json:"sources"`
|
||||
Names []interface{} `json:"names"`
|
||||
Mappings string `json:"mappings"`
|
||||
}
|
||||
|
||||
type mapping struct {
|
||||
genLine int
|
||||
genCol int
|
||||
sourcesInd int
|
||||
sourceLine int
|
||||
sourceCol int
|
||||
namesInd int
|
||||
}
|
||||
|
||||
type mappings struct {
|
||||
rd *strings.Reader
|
||||
dec *base64vlq.Decoder
|
||||
|
||||
genLine int
|
||||
genCol int
|
||||
sourcesInd int
|
||||
sourceLine int
|
||||
sourceCol int
|
||||
namesInd int
|
||||
|
||||
value mapping
|
||||
values []mapping
|
||||
}
|
||||
|
||||
func parseMappings(s string) ([]mapping, error) {
|
||||
rd := strings.NewReader(s)
|
||||
m := &mappings{
|
||||
rd: rd,
|
||||
dec: base64vlq.NewDecoder(rd),
|
||||
|
||||
genLine: 1,
|
||||
sourceLine: 1,
|
||||
}
|
||||
m.zeroValue()
|
||||
err := m.parse()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m.values, nil
|
||||
}
|
||||
|
||||
func (m *mappings) parse() error {
|
||||
next := m.parseGenCol
|
||||
for {
|
||||
c, err := m.rd.ReadByte()
|
||||
if err == io.EOF {
|
||||
m.pushValue()
|
||||
return nil
|
||||
} else if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
switch c {
|
||||
case ',':
|
||||
m.pushValue()
|
||||
next = m.parseGenCol
|
||||
case ';':
|
||||
m.pushValue()
|
||||
|
||||
m.genLine++
|
||||
m.genCol = 0
|
||||
|
||||
next = m.parseGenCol
|
||||
default:
|
||||
m.rd.UnreadByte()
|
||||
|
||||
var err error
|
||||
next, err = next()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (m *mappings) parseGenCol() (fn, error) {
|
||||
n, err := m.dec.Decode()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
m.genCol += n
|
||||
m.value.genCol = m.genCol
|
||||
return m.parseSourcesInd, nil
|
||||
}
|
||||
|
||||
func (m *mappings) parseSourcesInd() (fn, error) {
|
||||
n, err := m.dec.Decode()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
m.sourcesInd += n
|
||||
m.value.sourcesInd = m.sourcesInd
|
||||
return m.parseSourceLine, nil
|
||||
}
|
||||
|
||||
func (m *mappings) parseSourceLine() (fn, error) {
|
||||
n, err := m.dec.Decode()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
m.sourceLine += n
|
||||
m.value.sourceLine = m.sourceLine
|
||||
return m.parseSourceCol, nil
|
||||
}
|
||||
|
||||
func (m *mappings) parseSourceCol() (fn, error) {
|
||||
n, err := m.dec.Decode()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
m.sourceCol += n
|
||||
m.value.sourceCol = m.sourceCol
|
||||
return m.parseNamesInd, nil
|
||||
}
|
||||
|
||||
func (m *mappings) parseNamesInd() (fn, error) {
|
||||
n, err := m.dec.Decode()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
m.namesInd += n
|
||||
m.value.namesInd = m.namesInd
|
||||
return m.parseGenCol, nil
|
||||
}
|
||||
|
||||
func (m *mappings) zeroValue() {
|
||||
m.value = mapping{
|
||||
genLine: m.genLine,
|
||||
genCol: 0,
|
||||
sourcesInd: -1,
|
||||
sourceLine: 0,
|
||||
sourceCol: 0,
|
||||
namesInd: -1,
|
||||
}
|
||||
}
|
||||
|
||||
func (m *mappings) pushValue() {
|
||||
m.values = append(m.values, m.value)
|
||||
m.zeroValue()
|
||||
}
|
Reference in New Issue
Block a user