44 lines
1.2 KiB
Go
44 lines
1.2 KiB
Go
package packagejson
|
|
|
|
import (
|
|
json "github.com/go-json-experiment/json"
|
|
"github.com/go-json-experiment/json/jsontext"
|
|
)
|
|
|
|
type HeaderFields struct {
|
|
Name Expected[string] `json:"name"`
|
|
Version Expected[string] `json:"version"`
|
|
Type Expected[string] `json:"type"`
|
|
}
|
|
|
|
type PathFields struct {
|
|
TSConfig Expected[string] `json:"tsconfig"`
|
|
Main Expected[string] `json:"main"`
|
|
Types Expected[string] `json:"types"`
|
|
Typings Expected[string] `json:"typings"`
|
|
TypesVersions JSONValue `json:"typesVersions"`
|
|
Imports ExportsOrImports `json:"imports"`
|
|
Exports ExportsOrImports `json:"exports"`
|
|
}
|
|
|
|
type DependencyFields struct {
|
|
Dependencies Expected[map[string]string] `json:"dependencies"`
|
|
DevDependencies Expected[map[string]string] `json:"devDependencies"`
|
|
PeerDependencies Expected[map[string]string] `json:"peerDependencies"`
|
|
OptionalDependencies Expected[map[string]string] `json:"optionalDependencies"`
|
|
}
|
|
|
|
type Fields struct {
|
|
HeaderFields
|
|
PathFields
|
|
DependencyFields
|
|
}
|
|
|
|
func Parse(data []byte) (Fields, error) {
|
|
var f Fields
|
|
if err := json.Unmarshal(data, &f, jsontext.AllowDuplicateNames(true)); err != nil {
|
|
return Fields{}, err
|
|
}
|
|
return f, nil
|
|
}
|