2025-10-15 10:12:44 +03:00

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
}