diff --git a/experimental/rules-keeper/github.go b/experimental/rules-keeper/github.go new file mode 100644 index 0000000..516d6ba --- /dev/null +++ b/experimental/rules-keeper/github.go @@ -0,0 +1,181 @@ +package main + +import ( + "context" + "io" + "net/http" + "time" + + "github.com/bradleyfalzon/ghinstallation/v2" + "github.com/google/go-github/v50/github" +) + +type fetchFunc[T any] func(*github.ListOptions) ([]T, *github.Response, error) + +type iterator[T any] struct { + fetch fetchFunc[T] + nextPage int + buf []T +} + +func newIterator[T any](f fetchFunc[T]) *iterator[T] { + return &iterator[T]{ + fetch: f, + nextPage: 1, + } +} + +func (it *iterator[T]) Next() (res T, _ error) { + if len(it.buf) == 0 && it.nextPage > 0 { + buf, resp, err := it.fetch(&github.ListOptions{ + Page: it.nextPage, + }) + if err != nil { + return res, err + } + it.nextPage = resp.NextPage + it.buf = buf + } + if len(it.buf) == 0 { + return res, io.EOF + } + res, it.buf = it.buf[0], it.buf[1:] + return res, nil +} + +type app struct { + cli *github.Client +} + +func newApp(appID int64, privateKey string) (*app, error) { + // TODO: find a better way for handling the token source. + itr, err := ghinstallation.NewAppsTransportKeyFromFile(http.DefaultTransport, appID, privateKey) + if err != nil { + return nil, err + } + return &app{github.NewClient(&http.Client{Transport: itr})}, nil +} + +func (a *app) ListInstallations(ctx context.Context) *iterator[*installation] { + return newIterator(func(opts *github.ListOptions) ([]*installation, *github.Response, error) { + ins, resp, err := a.cli.Apps.ListInstallations(ctx, opts) + if err != nil { + return nil, nil, err + } + res := make([]*installation, 0, len(ins)) + for _, i := range ins { + it, err := newInstallation(i.GetAppID(), i.GetID(), privateKey) + if err != nil { + return nil, nil, err + } + res = append(res, it) + } + return res, resp, nil + }) +} + +type installation struct { + cli *github.Client +} + +func newInstallation(appID, installID int64, privateKey string) (*installation, error) { + itr, err := ghinstallation.NewKeyFromFile(http.DefaultTransport, appID, installID, privateKey) + if err != nil { + return nil, err + } + return &installation{github.NewClient(&http.Client{Transport: itr})}, nil +} + +func (n *installation) ListRepos(ctx context.Context) *iterator[*repo] { + return newIterator(func(opts *github.ListOptions) ([]*repo, *github.Response, error) { + r, resp, err := n.cli.Apps.ListRepos(ctx, opts) + if err != nil { + return nil, nil, err + } + res := make([]*repo, 0, len(r.Repositories)) + for _, r := range r.Repositories { + res = append(res, &repo{ + cli: n.cli, + owner: r.GetOwner().GetLogin(), + name: r.GetName(), + }) + } + return res, resp, nil + }) +} + +type repo struct { + cli *github.Client + owner string + name string +} + +func (r *repo) ListIssues(ctx context.Context, since time.Time) *iterator[*github.Issue] { + return newIterator(func(opts *github.ListOptions) ([]*github.Issue, *github.Response, error) { + return r.cli.Issues.ListByRepo(ctx, r.owner, r.name, &github.IssueListByRepoOptions{ + State: "all", + Since: since, + ListOptions: *opts, + }) + }) +} + +// ListIssueEvents returns all issue events for the repository. The iterator +// traverses events in reverse chronological order. +func (r *repo) ListIssueEvents(ctx context.Context) *iterator[*github.IssueEvent] { + return newIterator(func(opts *github.ListOptions) ([]*github.IssueEvent, *github.Response, error) { + return r.cli.Issues.ListRepositoryEvents(ctx, r.owner, r.name, opts) + }) +} + +func (r *repo) GetLicense(ctx context.Context) (string, error) { + l, _, err := r.cli.Repositories.License(ctx, r.owner, r.name) + if err != nil { + return "", err + } + return l.GetLicense().GetName(), nil +} + +func (r *repo) GetReadme(ctx context.Context, ref string) (string, error) { + c, _, err := r.cli.Repositories.GetReadme(ctx, r.owner, r.name, &github.RepositoryContentGetOptions{ + Ref: ref, + }) + if err != nil { + return "", err + } + return c.GetContent() +} + +func (r *repo) GetContent(ctx context.Context, ref, path string) (string, error) { + fc, _, _, err := r.cli.Repositories.GetContents(ctx, r.owner, r.name, path, &github.RepositoryContentGetOptions{ + Ref: ref, + }) + if err != nil { + return "", err + } + return fc.GetContent() +} + +func (r *repo) ListTags(ctx context.Context) *iterator[*github.RepositoryTag] { + return newIterator(func(opts *github.ListOptions) ([]*github.RepositoryTag, *github.Response, error) { + return r.cli.Repositories.ListTags(ctx, r.owner, r.name, opts) + }) +} + +func (r *repo) GetParticipations(ctx context.Context) (*github.RepositoryParticipation, error) { + pns, _, err := r.cli.Repositories.ListParticipation(ctx, r.owner, r.name) + return pns, err +} + +// Note: it will return 404 for forked repos. +func (r *repo) GetCommunityHealthMetrics(ctx context.Context) (*github.CommunityHealthMetrics, error) { + chm, _, err := r.cli.Repositories.GetCommunityHealthMetrics(ctx, r.owner, r.name) + return chm, err +} + +// ListReleases returns the releases for a repo. +func (r *repo) ListReleases(ctx context.Context) *iterator[*github.RepositoryRelease] { + return newIterator(func(opts *github.ListOptions) ([]*github.RepositoryRelease, *github.Response, error) { + return r.cli.Repositories.ListReleases(ctx, r.owner, r.name, opts) + }) +} diff --git a/experimental/rules-keeper/github_logger.go b/experimental/rules-keeper/github_logger.go new file mode 100644 index 0000000..6bbddd0 --- /dev/null +++ b/experimental/rules-keeper/github_logger.go @@ -0,0 +1,37 @@ +package main + +import ( + "fmt" + "net/http" + "time" + + "github.com/ernesto-jimenez/httplogger" + "github.com/golang/glog" +) + +func newLoggedHTTPClient() *http.Client { + return &http.Client{ + Transport: httplogger.NewLoggedTransport(http.DefaultTransport, httpLogger{}), + } +} + +type httpLogger struct{} + +const logDepth = 2 + +func (httpLogger) LogRequest(req *http.Request) { + glog.InfoDepth(logDepth, fmt.Sprintf("Request %s %s", req.Method, req.URL)) +} + +func (httpLogger) LogResponse(req *http.Request, res *http.Response, err error, duration time.Duration) { + if err != nil { + glog.ErrorDepth(logDepth, err) + return + } + glog.InfoDepth(logDepth, fmt.Sprintf("Response method=%s status=%d durationMs=%d %s", + req.Method, + res.StatusCode, + duration.Milliseconds(), + req.URL, + )) +} diff --git a/experimental/rules-keeper/go.mod b/experimental/rules-keeper/go.mod new file mode 100644 index 0000000..bee6239 --- /dev/null +++ b/experimental/rules-keeper/go.mod @@ -0,0 +1,27 @@ +module github.com/bazel-contrib/SIG-rules-authors/experimental/rules-keeper + +go 1.19 + +require ( + github.com/bradleyfalzon/ghinstallation/v2 v2.1.0 + github.com/ernesto-jimenez/httplogger v0.0.0-20220128121225-117514c3f345 + github.com/gocarina/gocsv v0.0.0-20230226133904-70c27cb2918a + github.com/golang/glog v1.0.0 + github.com/google/go-github/v50 v50.0.0 + golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be + google.golang.org/genproto v0.0.0-20230301171018-9ab4bdc49ad5 + google.golang.org/protobuf v1.28.1 +) + +require golang.org/x/sys v0.5.0 // indirect + +require ( + github.com/golang-jwt/jwt/v4 v4.4.1 // indirect + github.com/golang/protobuf v1.5.2 // indirect + github.com/google/go-github/v45 v45.2.0 // indirect + github.com/google/go-querystring v1.1.0 // indirect + go.starlark.net v0.0.0-20230302034142-4b1e35fe2254 + golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 // indirect + golang.org/x/net v0.7.0 // indirect + google.golang.org/appengine v1.6.7 // indirect +) diff --git a/experimental/rules-keeper/go.sum b/experimental/rules-keeper/go.sum new file mode 100644 index 0000000..a931379 --- /dev/null +++ b/experimental/rules-keeper/go.sum @@ -0,0 +1,117 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/bradleyfalzon/ghinstallation/v2 v2.1.0 h1:5+NghM1Zred9Z078QEZtm28G/kfDfZN/92gkDlLwGVA= +github.com/bradleyfalzon/ghinstallation/v2 v2.1.0/go.mod h1:Xg3xPRN5Mcq6GDqeUVhFbjEWMb4JHCyWEeeBGEYQoTU= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/ernesto-jimenez/httplogger v0.0.0-20220128121225-117514c3f345 h1:AZLrCR38RDhsyCQakz1UxCx72As18Ai5mObrKvT8DK8= +github.com/ernesto-jimenez/httplogger v0.0.0-20220128121225-117514c3f345/go.mod h1:pw+gaKQ52Cl/SrERU62yQAiWauPpLgKpuR1hkxwL4tM= +github.com/gocarina/gocsv v0.0.0-20230226133904-70c27cb2918a h1:/5o1ejt5M0fNAN2lU1NBLtPzUSZru689EWJq01ptr+E= +github.com/gocarina/gocsv v0.0.0-20230226133904-70c27cb2918a/go.mod h1:5YoVOkjYAQumqlV356Hj3xeYh4BdZuLE0/nRkf2NKkI= +github.com/golang-jwt/jwt/v4 v4.4.1 h1:pC5DB52sCeK48Wlb9oPcdhnjkz1TKt1D/P7WKJ0kUcQ= +github.com/golang-jwt/jwt/v4 v4.4.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-github/v45 v45.2.0 h1:5oRLszbrkvxDDqBCNj2hjDZMKmvexaZ1xw/FCD+K3FI= +github.com/google/go-github/v45 v45.2.0/go.mod h1:FObaZJEDSTa/WGCzZ2Z3eoCDXWJKMenWWTrd8jrta28= +github.com/google/go-github/v50 v50.0.0 h1:gdO1AeuSZZK4iYWwVbjni7zg8PIQhp7QfmPunr016Jk= +github.com/google/go-github/v50 v50.0.0/go.mod h1:Ev4Tre8QoKiolvbpOSG3FIi4Mlon3S2Nt9W5JYqKiwA= +github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +go.starlark.net v0.0.0-20230302034142-4b1e35fe2254 h1:Ss6D3hLXTM0KobyBYEAygXzFfGcjnmfEJOBgSbemCtg= +go.starlark.net v0.0.0-20230302034142-4b1e35fe2254/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ= +golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be h1:vEDujvNQGv4jgYKudGeI/+DAX4Jffq6hpD55MmoEvKs= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20230301171018-9ab4bdc49ad5 h1:/cadn7taPtPlCgiWNetEPsle7jgnlad2R7gR5MXB6dM= +google.golang.org/genproto v0.0.0-20230301171018-9ab4bdc49ad5/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/experimental/rules-keeper/main.go b/experimental/rules-keeper/main.go new file mode 100644 index 0000000..7dfcf16 --- /dev/null +++ b/experimental/rules-keeper/main.go @@ -0,0 +1,127 @@ +package main + +import ( + "context" + "flag" + "io" + "strings" + "time" + + "github.com/golang/glog" + "github.com/google/go-github/v50/github" + "golang.org/x/oauth2" +) + +var ( + appID int64 = 290065 + privateKey = "appventure-test.2023-02-06.private-key.pem" + personalToken = "" + repoOwner = "" + repoName = "" + timeSeriesRetention = 366 * 24 * time.Hour // Roughly a year. +) + +func init() { + flag.Int64Var(&appID, "app_id", appID, "The Github App ID.") + flag.StringVar(&privateKey, "private_key", privateKey, "The path to the Github App private key file.") + flag.StringVar(&personalToken, "personal_token", personalToken, "The personal token to use for the Github API. When set, instead of using App credential to fetch all installed repos, you must specify the owner and repo to update metrics.") + flag.StringVar(&repoOwner, "owner", repoOwner, "The owner of the repo to update metrics. Must be specified when using personal token.") + flag.StringVar(&repoName, "repo", repoName, "The name of the repo to update metrics. Must be specified when using personal token.") + flag.DurationVar(&timeSeriesRetention, "time_series_retention", timeSeriesRetention, "The retention of the time series data.") +} + +var releaseContentType = map[string]bool{ + "application/x-gzip": true, + "application/gzip": true, + "application/zip": true, +} + +func parse(repoPath string) (owner, repo string) { + idx := strings.LastIndexByte(repoPath, '/') + return repoPath[:idx], repoPath[idx+1:] +} + +func main() { + flag.Parse() + + ctx := context.Background() + ctx = context.WithValue(ctx, oauth2.HTTPClient, newLoggedHTTPClient()) + + if personalToken != "" { + if repoOwner == "" || repoName == "" { + glog.Exitf("owner and repo must be specified when using personal token") + } + r := &repo{ + cli: github.NewTokenClient(ctx, personalToken), + owner: repoOwner, + name: repoName, + } + if err := r.Update(ctx); err != nil { + glog.Exit(err) + } + if err := r.UpdateMetrics(ctx); err != nil { + glog.Exit(err) + } + return + } + + app, err := newApp(appID, privateKey) + if err != nil { + glog.Exit(err) + } + // TODO(@ashi009): flatten the iterator. + for it := app.ListInstallations(ctx); ; { + inst, err := it.Next() + if err == io.EOF { + break + } + if err != nil { + glog.Exit(err) + } + for rit := inst.ListRepos(ctx); ; { + r, err := rit.Next() + if err == io.EOF { + break + } + if err != nil { + glog.Exit(err) + } + if err := r.UpdateMetrics(ctx); err != nil { + glog.Exit(err) + } + if err := r.UpdateVersions(ctx); err != nil { + glog.Exit(err) + } + } + } +} + +func (r *repo) Update(ctx context.Context) error { + if err := r.UpdateVersions(ctx); err != nil { + return err + } + if err := r.UpdateMetrics(ctx); err != nil { + return err + } + return nil +} + +func (r *repo) UpdateMetrics(ctx context.Context) error { + glog.Infof("Updating metrics for %s/%s", r.owner, r.name) + if err := r.UpdateRepoStats(ctx); err != nil { + return err + } + if err := r.UpdateCommitActivity(ctx); err != nil { + return err + } + if err := r.UpdateIssueActivity(ctx); err != nil { + return err + } + if err := r.UpdateComunityHealth(ctx); err != nil { + return err + } + if err := r.UpdateTraffic(ctx); err != nil { + return err + } + return nil +} diff --git a/experimental/rules-keeper/metrics_project_activity.go b/experimental/rules-keeper/metrics_project_activity.go new file mode 100644 index 0000000..74ff48c --- /dev/null +++ b/experimental/rules-keeper/metrics_project_activity.go @@ -0,0 +1,155 @@ +package main + +import ( + "context" + "fmt" + "io" + "time" + + "github.com/bazel-contrib/SIG-rules-authors/experimental/rules-keeper/timeseries" +) + +type CommitActivityPoint struct { + Date timeseries.Date `csv:"date (UTC)"` + Count int `csv:"# commits"` + OwnerCount int `csv:"# commits by owner"` +} + +func (p *CommitActivityPoint) Timestamp() time.Time { + return p.Date.Time +} + +var CommitActivity = ×eries.Descriptor[*CommitActivityPoint]{ + NewPoint: func(t time.Time) *CommitActivityPoint { + return &CommitActivityPoint{Date: timeseries.Date{Time: t}} + }, + Align: timeseries.AlignToISO8601WeekStartDayInUTC, + Retention: timeSeriesRetention, +} + +func (r *repo) loadCommitActivityStore() (*timeseries.Store[*CommitActivityPoint], error) { + return timeseries.Load(CommitActivity, fmt.Sprintf("store/%s/%s/metrics/commit_activity", r.owner, r.name)) +} + +func (r *repo) UpdateCommitActivity(ctx context.Context) error { + s, err := r.loadCommitActivityStore() + if err != nil { + return err + } + + now := time.Now() + ps, _, err := r.cli.Repositories.ListParticipation(ctx, r.owner, r.name) + if err != nil { + return err + } + // ListParticipation returns the last 52 weeks of data, but it doesn't specify + // when a week starts. We are using ISO 8601 + for i := range ps.All { + t := now.AddDate(0, 0, -i*7) + p := s.GetOrCreatePointAt(t) + p.Count = ps.All[i] + p.OwnerCount = ps.Owner[i] + } + + s.ShiftWindow(now) + return s.Flush() +} + +type IssueActivityPoint struct { + Date timeseries.Date `csv:"date (UTC)"` + OpenPRCount int `csv:"# open pr"` + ClosePRCount int `csv:"# close pr"` + OpenIssueCount int `csv:"# open issue"` + CloseIssueCount int `csv:"# close issue"` +} + +func (p *IssueActivityPoint) Timestamp() time.Time { + return p.Date.Time +} + +var IssueActivity = ×eries.Descriptor[*IssueActivityPoint]{ + NewPoint: func(t time.Time) *IssueActivityPoint { + return &IssueActivityPoint{Date: timeseries.Date{Time: t}} + }, + Align: timeseries.AlignToDayInUTC, + Retention: timeSeriesRetention, +} + +func (r *repo) loadIssueActivtyStore() (*timeseries.Store[*IssueActivityPoint], error) { + return timeseries.Load(IssueActivity, fmt.Sprintf("store/%s/%s/metrics/issue_activity", r.owner, r.name)) +} + +func (r *repo) UpdateIssueActivity(ctx context.Context) error { + s, err := r.loadIssueActivtyStore() + if err != nil { + return err + } + + _, lastUpdate := s.Window() + now := time.Now() + + // We want to add data from [lastUpdate, now), all new points need to check + // against those boundaries. + + // List all repo events to check on close and reopen events. Interestingly + // enough, ListIssueEvents doesn't include create events. We need to list + // issues to find create events instead. + for it := r.ListIssueEvents(ctx); ; { + evt, err := it.Next() + if err == io.EOF { + break + } + if err != nil { + return err + } + ct := evt.GetCreatedAt().Time + if !ct.Before(now) { + continue + } + if ct.Before(lastUpdate) { + break + } + switch evt.GetEvent() { + case "closed": + p := s.GetOrCreatePointAt(ct) + if evt.GetIssue().PullRequestLinks == nil { + p.CloseIssueCount++ + } else { + p.ClosePRCount++ + } + case "reopened": + p := s.GetOrCreatePointAt(ct) + if evt.GetIssue().PullRequestLinks == nil { + p.OpenIssueCount++ + } else { + p.OpenPRCount++ + } + } + } + + for it := r.ListIssues(ctx, lastUpdate); ; { + iss, err := it.Next() + if err == io.EOF { + break + } + if err != nil { + return err + } + ct := iss.GetCreatedAt().Time + // Note that, list issues returns all issues that has been updated since + // lastUpdate, so It's possible that the create time are out of range. As we + // only care about create events, we need to filter out those issues. + if ct.Before(lastUpdate) || !ct.Before(now) { + continue + } + p := s.GetOrCreatePointAt(ct) + if iss.PullRequestLinks == nil { + p.OpenIssueCount++ + } else { + p.OpenPRCount++ + } + } + + s.ShiftWindow(now) + return s.Flush() +} diff --git a/experimental/rules-keeper/metrics_project_health.go b/experimental/rules-keeper/metrics_project_health.go new file mode 100644 index 0000000..b8f91a7 --- /dev/null +++ b/experimental/rules-keeper/metrics_project_health.go @@ -0,0 +1,57 @@ +package main + +import ( + "context" + "fmt" + "time" + + "github.com/bazel-contrib/SIG-rules-authors/experimental/rules-keeper/timeseries" + + pb "github.com/bazel-contrib/SIG-rules-authors/experimental/rules-keeper/proto" +) + +// GetProjectHealth returns the health of a project. +func (r *repo) GetProjectHealth(ctx context.Context) (*pb.ProjectHealth, error) { + return &pb.ProjectHealth{ + // TODO(@ashi009): Aggregate ts here. + }, nil +} + +type CommunityHealthPoint struct { + Time timeseries.DateTime `csv:"time (UTC)"` + CommunityHealthPercentage int `csv:"community health percentage"` +} + +func (p *CommunityHealthPoint) Timestamp() time.Time { + return p.Time.Time +} + +var CommunityHealth = ×eries.Descriptor[*CommunityHealthPoint]{ + NewPoint: func(t time.Time) *CommunityHealthPoint { + return &CommunityHealthPoint{Time: timeseries.DateTime{Time: t}} + }, + Align: timeseries.AlignToSecond, + Retention: timeSeriesRetention, +} + +func (r *repo) loadCommunityHealthStore() (*timeseries.Store[*CommunityHealthPoint], error) { + return timeseries.Load(CommunityHealth, fmt.Sprintf("store/%s/%s/metrics/community_health", r.owner, r.name)) +} + +func (r *repo) UpdateComunityHealth(ctx context.Context) error { + s, err := r.loadCommunityHealthStore() + if err != nil { + return err + } + + now := time.Now() + m, _, err := r.cli.Repositories.GetCommunityHealthMetrics(ctx, r.owner, r.name) + if err != nil { + return err + } + p := s.GetOrCreatePointAt(now) + p.CommunityHealthPercentage = m.GetHealthPercentage() + + s.ShiftWindow(now) + return s.Flush() +} diff --git a/experimental/rules-keeper/metrics_project_popularity.go b/experimental/rules-keeper/metrics_project_popularity.go new file mode 100644 index 0000000..89f224b --- /dev/null +++ b/experimental/rules-keeper/metrics_project_popularity.go @@ -0,0 +1,134 @@ +package main + +import ( + "context" + "fmt" + "time" + + "github.com/bazel-contrib/SIG-rules-authors/experimental/rules-keeper/timeseries" + + "github.com/google/go-github/v50/github" + "google.golang.org/protobuf/types/known/timestamppb" + + pb "github.com/bazel-contrib/SIG-rules-authors/experimental/rules-keeper/proto" +) + +// GetProjectPopularity returns the popularity of a project. +func (r *repo) GetProjectPopularity(ctx context.Context) (*pb.ProjectPopularity, error) { + now := time.Now().UTC() + + return &pb.ProjectPopularity{ + UpdateTime: timestamppb.New(now), + // TODO(@ashi009): Aggregate ts here. + }, nil +} + +type RepoStatsPoint struct { + Time timeseries.DateTime `csv:"time (UTC)"` + StarsCount int `csv:"# stars"` + ForksCount int `csv:"# forks"` +} + +func (p *RepoStatsPoint) Timestamp() time.Time { + return p.Time.Time +} + +var RepoStats = ×eries.Descriptor[*RepoStatsPoint]{ + NewPoint: func(t time.Time) *RepoStatsPoint { + return &RepoStatsPoint{Time: timeseries.DateTime{Time: t}} + }, + Align: timeseries.AlignToSecond, + Retention: timeSeriesRetention, +} + +func (r *repo) loadRepoStatStore() (*timeseries.Store[*RepoStatsPoint], error) { + return timeseries.Load(RepoStats, fmt.Sprintf("store/%s/%s/metrics/repo_stats", r.owner, r.name)) +} + +func (r *repo) UpdateRepoStats(ctx context.Context) error { + s, err := r.loadRepoStatStore() + if err != nil { + return err + } + + now := time.Now() + repo, _, err := r.cli.Repositories.Get(ctx, r.owner, r.name) + if err != nil { + return err + } + p := s.GetOrCreatePointAt(now) + p.StarsCount = repo.GetStargazersCount() + p.ForksCount = repo.GetForksCount() + + s.ShiftWindow(now) + return s.Flush() +} + +type TrafficPoint struct { + Date timeseries.Date `csv:"date (UTC)"` + ViewsCount int `csv:"# views"` + ViewsUniqueCount int `csv:"# unique views"` + ClonesCount int `csv:"# clones"` + ClonesUniqueCount int `csv:"# unique clones"` +} + +func (p *TrafficPoint) Timestamp() time.Time { + return p.Date.Time +} + +var Traffic = ×eries.Descriptor[*TrafficPoint]{ + NewPoint: func(t time.Time) *TrafficPoint { + return &TrafficPoint{Date: timeseries.Date{Time: t}} + }, + Align: timeseries.AlignToISO8601WeekStartDayInUTC, + Retention: timeSeriesRetention, +} + +func (r *repo) loadTrafficStore() (*timeseries.Store[*TrafficPoint], error) { + return timeseries.Load(Traffic, fmt.Sprintf("store/%s/%s/metrics/traffic", r.owner, r.name)) +} + +func (r *repo) UpdateTraffic(ctx context.Context) error { + s, err := r.loadTrafficStore() + if err != nil { + return err + } + + _, lastUpdate := s.Window() + now := time.Now() + + vs, _, err := r.cli.Repositories.ListTrafficViews(ctx, r.owner, r.name, &github.TrafficBreakdownOptions{ + Per: "week", + }) + if err != nil { + return err + } + for _, v := range vs.Views { + t := v.GetTimestamp().Time + if t.Before(lastUpdate) || !t.Before(now) { + continue + } + p := s.GetOrCreatePointAt(t) + p.ViewsCount = v.GetCount() + p.ViewsUniqueCount = v.GetUniques() + } + + cls, _, err := r.cli.Repositories.ListTrafficClones(ctx, r.owner, r.name, &github.TrafficBreakdownOptions{ + Per: "week", + }) + if err != nil { + return err + } + for _, c := range cls.Clones { + t := c.GetTimestamp().Time + if t.Before(lastUpdate) || !t.Before(now) { + continue + } + p := s.GetOrCreatePointAt(t) + p.ClonesCount = c.GetCount() + p.ClonesUniqueCount = c.GetUniques() + } + + s.ShiftWindow(now) + return s.Flush() +} diff --git a/experimental/rules-keeper/proto/ruleset.pb.go b/experimental/rules-keeper/proto/ruleset.pb.go new file mode 100644 index 0000000..731ed63 --- /dev/null +++ b/experimental/rules-keeper/proto/ruleset.pb.go @@ -0,0 +1,1153 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v4.22.0 +// source: ruleset.proto + +package rulesetpb + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type Ruleset struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // github_repo_full_path is the full path to its github repo. eg. + // bazelbuild/bazel-skylib + GithubRepo string `protobuf:"bytes,1,opt,name=github_repo,json=githubRepo,proto3" json:"github_repo,omitempty"` + // maintainers of the ruleset in the form of mailbox format as specified in + // RFC 5322. + Maintainers []string `protobuf:"bytes,2,rep,name=maintainers,proto3" json:"maintainers,omitempty"` + // update_time is the time when this data is updated. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + // license of the project. + License string `protobuf:"bytes,4,opt,name=license,proto3" json:"license,omitempty"` + // tags are versions of this ruleset + Versions []*Version `protobuf:"bytes,5,rep,name=versions,proto3" json:"versions,omitempty"` + // project_health is the stats on if this project is on the right track. + ProjectHealth *ProjectHealth `protobuf:"bytes,6,opt,name=project_health,json=projectHealth,proto3" json:"project_health,omitempty"` + // project_popularity is the stats on how popular this project is. + ProjectPopularity *ProjectPopularity `protobuf:"bytes,7,opt,name=project_popularity,json=projectPopularity,proto3" json:"project_popularity,omitempty"` + // project_activity is the stats on how active this proejct is developed + // and maintained. + ProjectActivity *ProjectActivity `protobuf:"bytes,8,opt,name=project_activity,json=projectActivity,proto3" json:"project_activity,omitempty"` +} + +func (x *Ruleset) Reset() { + *x = Ruleset{} + if protoimpl.UnsafeEnabled { + mi := &file_ruleset_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Ruleset) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Ruleset) ProtoMessage() {} + +func (x *Ruleset) ProtoReflect() protoreflect.Message { + mi := &file_ruleset_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Ruleset.ProtoReflect.Descriptor instead. +func (*Ruleset) Descriptor() ([]byte, []int) { + return file_ruleset_proto_rawDescGZIP(), []int{0} +} + +func (x *Ruleset) GetGithubRepo() string { + if x != nil { + return x.GithubRepo + } + return "" +} + +func (x *Ruleset) GetMaintainers() []string { + if x != nil { + return x.Maintainers + } + return nil +} + +func (x *Ruleset) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +func (x *Ruleset) GetLicense() string { + if x != nil { + return x.License + } + return "" +} + +func (x *Ruleset) GetVersions() []*Version { + if x != nil { + return x.Versions + } + return nil +} + +func (x *Ruleset) GetProjectHealth() *ProjectHealth { + if x != nil { + return x.ProjectHealth + } + return nil +} + +func (x *Ruleset) GetProjectPopularity() *ProjectPopularity { + if x != nil { + return x.ProjectPopularity + } + return nil +} + +func (x *Ruleset) GetProjectActivity() *ProjectActivity { + if x != nil { + return x.ProjectActivity + } + return nil +} + +// Version denotes a version of a ruleset. +type Version struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // ref is a git reference that could be resolved to a commit object, + // normally a tag, ie. a semver starting with v. HEAD stands + Ref string `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"` + // SHA of the commit being tagged. + Sha string `protobuf:"bytes,2,opt,name=sha,proto3" json:"sha,omitempty"` + // description is the content of the README file. + Readme string `protobuf:"bytes,3,opt,name=readme,proto3" json:"readme,omitempty"` + // yanked denotes if this version is yanked. + Yanked bool `protobuf:"varint,5,opt,name=yanked,proto3" json:"yanked,omitempty"` + // release made at this version. + Release *Release `protobuf:"bytes,6,opt,name=release,proto3" json:"release,omitempty"` + // module_file is the parsed MODULE.bazel file. If set, this version is a + // valid bzlmod. + ModuleFile *ModuleFile `protobuf:"bytes,7,opt,name=module_file,json=moduleFile,proto3" json:"module_file,omitempty"` +} + +func (x *Version) Reset() { + *x = Version{} + if protoimpl.UnsafeEnabled { + mi := &file_ruleset_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Version) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Version) ProtoMessage() {} + +func (x *Version) ProtoReflect() protoreflect.Message { + mi := &file_ruleset_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Version.ProtoReflect.Descriptor instead. +func (*Version) Descriptor() ([]byte, []int) { + return file_ruleset_proto_rawDescGZIP(), []int{1} +} + +func (x *Version) GetRef() string { + if x != nil { + return x.Ref + } + return "" +} + +func (x *Version) GetSha() string { + if x != nil { + return x.Sha + } + return "" +} + +func (x *Version) GetReadme() string { + if x != nil { + return x.Readme + } + return "" +} + +func (x *Version) GetYanked() bool { + if x != nil { + return x.Yanked + } + return false +} + +func (x *Version) GetRelease() *Release { + if x != nil { + return x.Release + } + return nil +} + +func (x *Version) GetModuleFile() *ModuleFile { + if x != nil { + return x.ModuleFile + } + return nil +} + +// Release denotes a release of a ruleset. +type Release struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // title of the release. + Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` + // description of the release. + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + // prerelease marks if the release is a preprelease. + Preprelease bool `protobuf:"varint,5,opt,name=preprelease,proto3" json:"preprelease,omitempty"` + // publish_time denotes the time this release is made public. + PublishTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=publish_time,json=publishTime,proto3" json:"publish_time,omitempty"` + // assets of this release. + Assets []*Release_Asset `protobuf:"bytes,7,rep,name=assets,proto3" json:"assets,omitempty"` +} + +func (x *Release) Reset() { + *x = Release{} + if protoimpl.UnsafeEnabled { + mi := &file_ruleset_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Release) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Release) ProtoMessage() {} + +func (x *Release) ProtoReflect() protoreflect.Message { + mi := &file_ruleset_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Release.ProtoReflect.Descriptor instead. +func (*Release) Descriptor() ([]byte, []int) { + return file_ruleset_proto_rawDescGZIP(), []int{2} +} + +func (x *Release) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Release) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Release) GetPreprelease() bool { + if x != nil { + return x.Preprelease + } + return false +} + +func (x *Release) GetPublishTime() *timestamppb.Timestamp { + if x != nil { + return x.PublishTime + } + return nil +} + +func (x *Release) GetAssets() []*Release_Asset { + if x != nil { + return x.Assets + } + return nil +} + +// ModuleFile is the parsed content of MODULE.bazel. +type ModuleFile struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // name of the module. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // version of the module. + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + BazelCompatibility []string `protobuf:"bytes,3,rep,name=bazel_compatibility,json=bazelCompatibility,proto3" json:"bazel_compatibility,omitempty"` + // compatibility level of the module. + CompatibilityLevel int32 `protobuf:"varint,4,opt,name=compatibility_level,json=compatibilityLevel,proto3" json:"compatibility_level,omitempty"` + // dependencies of the module. + Dependencies []*ModuleFile_Dependency `protobuf:"bytes,5,rep,name=dependencies,proto3" json:"dependencies,omitempty"` + // platforms_to_register is the list of platforms to register. + ExecutionPlatformsToRegister []string `protobuf:"bytes,6,rep,name=execution_platforms_to_register,json=executionPlatformsToRegister,proto3" json:"execution_platforms_to_register,omitempty"` + // toolchains_to_register is the list of toolchains to register. + ToolchainsToRegister []string `protobuf:"bytes,7,rep,name=toolchains_to_register,json=toolchainsToRegister,proto3" json:"toolchains_to_register,omitempty"` +} + +func (x *ModuleFile) Reset() { + *x = ModuleFile{} + if protoimpl.UnsafeEnabled { + mi := &file_ruleset_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ModuleFile) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ModuleFile) ProtoMessage() {} + +func (x *ModuleFile) ProtoReflect() protoreflect.Message { + mi := &file_ruleset_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ModuleFile.ProtoReflect.Descriptor instead. +func (*ModuleFile) Descriptor() ([]byte, []int) { + return file_ruleset_proto_rawDescGZIP(), []int{3} +} + +func (x *ModuleFile) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ModuleFile) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *ModuleFile) GetBazelCompatibility() []string { + if x != nil { + return x.BazelCompatibility + } + return nil +} + +func (x *ModuleFile) GetCompatibilityLevel() int32 { + if x != nil { + return x.CompatibilityLevel + } + return 0 +} + +func (x *ModuleFile) GetDependencies() []*ModuleFile_Dependency { + if x != nil { + return x.Dependencies + } + return nil +} + +func (x *ModuleFile) GetExecutionPlatformsToRegister() []string { + if x != nil { + return x.ExecutionPlatformsToRegister + } + return nil +} + +func (x *ModuleFile) GetToolchainsToRegister() []string { + if x != nil { + return x.ToolchainsToRegister + } + return nil +} + +// ProjectPopularity contains stats by measuring the user engagement. +type ProjectPopularity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // update_time is the time when this data is generated. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + // star_count is the number of stars on github as of update_time. + StarCount int32 `protobuf:"varint,2,opt,name=star_count,json=starCount,proto3" json:"star_count,omitempty"` + // fork_count is the number of forks on github as of update_time. + ForkCount int32 `protobuf:"varint,3,opt,name=fork_count,json=forkCount,proto3" json:"fork_count,omitempty"` + // release_download_count_by_week is the number of release assets being + // downloaded aggregated by week. The array order is the oldest week to the + // most recent week (as of update_time). + ReleaseDownloadCountByWeek []int32 `protobuf:"varint,4,rep,packed,name=release_download_count_by_week,json=releaseDownloadCountByWeek,proto3" json:"release_download_count_by_week,omitempty"` + // git_clone_count_by_week is the number of repository being cloned aggregated + // by week. The array order is the oldest week to the most recent week (as of + // update_time). + GitCloneCountByWeek []int32 `protobuf:"varint,5,rep,packed,name=git_clone_count_by_week,json=gitCloneCountByWeek,proto3" json:"git_clone_count_by_week,omitempty"` + // page_view_count_by_week is the number of page views aggregated by week. The + // array order is the oldest week to the most recent week (as of update_time). + PageViewCountByWeek []int32 `protobuf:"varint,6,rep,packed,name=page_view_count_by_week,json=pageViewCountByWeek,proto3" json:"page_view_count_by_week,omitempty"` +} + +func (x *ProjectPopularity) Reset() { + *x = ProjectPopularity{} + if protoimpl.UnsafeEnabled { + mi := &file_ruleset_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProjectPopularity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProjectPopularity) ProtoMessage() {} + +func (x *ProjectPopularity) ProtoReflect() protoreflect.Message { + mi := &file_ruleset_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProjectPopularity.ProtoReflect.Descriptor instead. +func (*ProjectPopularity) Descriptor() ([]byte, []int) { + return file_ruleset_proto_rawDescGZIP(), []int{4} +} + +func (x *ProjectPopularity) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +func (x *ProjectPopularity) GetStarCount() int32 { + if x != nil { + return x.StarCount + } + return 0 +} + +func (x *ProjectPopularity) GetForkCount() int32 { + if x != nil { + return x.ForkCount + } + return 0 +} + +func (x *ProjectPopularity) GetReleaseDownloadCountByWeek() []int32 { + if x != nil { + return x.ReleaseDownloadCountByWeek + } + return nil +} + +func (x *ProjectPopularity) GetGitCloneCountByWeek() []int32 { + if x != nil { + return x.GitCloneCountByWeek + } + return nil +} + +func (x *ProjectPopularity) GetPageViewCountByWeek() []int32 { + if x != nil { + return x.PageViewCountByWeek + } + return nil +} + +type ProjectHealth struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // community_profile_health_percentage is defined as a percentage of how many + // of expected project documents present. See + // https://docs.github.com/en/rest/metrics/community#get-community-profile-metrics + CommunityProfileHealthPercentage int32 `protobuf:"varint,1,opt,name=community_profile_health_percentage,json=communityProfileHealthPercentage,proto3" json:"community_profile_health_percentage,omitempty"` +} + +func (x *ProjectHealth) Reset() { + *x = ProjectHealth{} + if protoimpl.UnsafeEnabled { + mi := &file_ruleset_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProjectHealth) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProjectHealth) ProtoMessage() {} + +func (x *ProjectHealth) ProtoReflect() protoreflect.Message { + mi := &file_ruleset_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProjectHealth.ProtoReflect.Descriptor instead. +func (*ProjectHealth) Descriptor() ([]byte, []int) { + return file_ruleset_proto_rawDescGZIP(), []int{5} +} + +func (x *ProjectHealth) GetCommunityProfileHealthPercentage() int32 { + if x != nil { + return x.CommunityProfileHealthPercentage + } + return 0 +} + +// ProjectActivity contains stats by measuring the contributor engagement. +type ProjectActivity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // open_pr_count is the number of open PRs as of update_time. + OpenPrCount int32 `protobuf:"varint,2,opt,name=open_pr_count,json=openPrCount,proto3" json:"open_pr_count,omitempty"` + // open_issue_count is the number of open issues as of update_time. + OpenIssueCount int32 `protobuf:"varint,3,opt,name=open_issue_count,json=openIssueCount,proto3" json:"open_issue_count,omitempty"` + // commit_count_by_week is the number of commits being submitted aggregated by + // week. The array order is the oldest week to the most recent week (as of + // update_time). + CommitCountByWeek []int32 `protobuf:"varint,4,rep,packed,name=commit_count_by_week,json=commitCountByWeek,proto3" json:"commit_count_by_week,omitempty"` + // pr_open_count_by_week is the number of pr open events aggregated by + // week. The array order is the oldest week to the most recent week (as of + // update_time). + PrOpenCountByWeek []int32 `protobuf:"varint,5,rep,packed,name=pr_open_count_by_week,json=prOpenCountByWeek,proto3" json:"pr_open_count_by_week,omitempty"` + // pr_close_count_by_week is the number of pr close (incl. merge) events + // aggregated by week. The array order is the oldest week to the most recent + // week (as of update_time). + PrCloseCountByWeek []int32 `protobuf:"varint,6,rep,packed,name=pr_close_count_by_week,json=prCloseCountByWeek,proto3" json:"pr_close_count_by_week,omitempty"` + // issue_open_count_by_week is the number of issue open events aggregated by + // week. The array order is the oldest week to the most recent week (as of + // update_time). + IssueOpenCountByWeek []int32 `protobuf:"varint,7,rep,packed,name=issue_open_count_by_week,json=issueOpenCountByWeek,proto3" json:"issue_open_count_by_week,omitempty"` + // issue_close_count_by_week is the number of issue close events aggregated by + // week. The array order is the oldest week to the most recent week (as of + // update_time). + IssueCloseCountByWeek []int32 `protobuf:"varint,8,rep,packed,name=issue_close_count_by_week,json=issueCloseCountByWeek,proto3" json:"issue_close_count_by_week,omitempty"` +} + +func (x *ProjectActivity) Reset() { + *x = ProjectActivity{} + if protoimpl.UnsafeEnabled { + mi := &file_ruleset_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProjectActivity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProjectActivity) ProtoMessage() {} + +func (x *ProjectActivity) ProtoReflect() protoreflect.Message { + mi := &file_ruleset_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProjectActivity.ProtoReflect.Descriptor instead. +func (*ProjectActivity) Descriptor() ([]byte, []int) { + return file_ruleset_proto_rawDescGZIP(), []int{6} +} + +func (x *ProjectActivity) GetOpenPrCount() int32 { + if x != nil { + return x.OpenPrCount + } + return 0 +} + +func (x *ProjectActivity) GetOpenIssueCount() int32 { + if x != nil { + return x.OpenIssueCount + } + return 0 +} + +func (x *ProjectActivity) GetCommitCountByWeek() []int32 { + if x != nil { + return x.CommitCountByWeek + } + return nil +} + +func (x *ProjectActivity) GetPrOpenCountByWeek() []int32 { + if x != nil { + return x.PrOpenCountByWeek + } + return nil +} + +func (x *ProjectActivity) GetPrCloseCountByWeek() []int32 { + if x != nil { + return x.PrCloseCountByWeek + } + return nil +} + +func (x *ProjectActivity) GetIssueOpenCountByWeek() []int32 { + if x != nil { + return x.IssueOpenCountByWeek + } + return nil +} + +func (x *ProjectActivity) GetIssueCloseCountByWeek() []int32 { + if x != nil { + return x.IssueCloseCountByWeek + } + return nil +} + +type Release_Asset struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // name is the name of the asset. eg. xxx.tar + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // url is the url for dowloading the asset. + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` + // download_count is the accumulated number of downloads. + // Output only. + DownloadCountByWeek int32 `protobuf:"varint,3,opt,name=download_count_by_week,json=downloadCountByWeek,proto3" json:"download_count_by_week,omitempty"` +} + +func (x *Release_Asset) Reset() { + *x = Release_Asset{} + if protoimpl.UnsafeEnabled { + mi := &file_ruleset_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Release_Asset) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Release_Asset) ProtoMessage() {} + +func (x *Release_Asset) ProtoReflect() protoreflect.Message { + mi := &file_ruleset_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Release_Asset.ProtoReflect.Descriptor instead. +func (*Release_Asset) Descriptor() ([]byte, []int) { + return file_ruleset_proto_rawDescGZIP(), []int{2, 0} +} + +func (x *Release_Asset) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Release_Asset) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Release_Asset) GetDownloadCountByWeek() int32 { + if x != nil { + return x.DownloadCountByWeek + } + return 0 +} + +// Dependency is a dependency of a module. +type ModuleFile_Dependency struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // name of the dependency. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // version of the dependency. + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + RepoName string `protobuf:"bytes,3,opt,name=repo_name,json=repoName,proto3" json:"repo_name,omitempty"` + DevDependency bool `protobuf:"varint,4,opt,name=dev_dependency,json=devDependency,proto3" json:"dev_dependency,omitempty"` +} + +func (x *ModuleFile_Dependency) Reset() { + *x = ModuleFile_Dependency{} + if protoimpl.UnsafeEnabled { + mi := &file_ruleset_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ModuleFile_Dependency) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ModuleFile_Dependency) ProtoMessage() {} + +func (x *ModuleFile_Dependency) ProtoReflect() protoreflect.Message { + mi := &file_ruleset_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ModuleFile_Dependency.ProtoReflect.Descriptor instead. +func (*ModuleFile_Dependency) Descriptor() ([]byte, []int) { + return file_ruleset_proto_rawDescGZIP(), []int{3, 0} +} + +func (x *ModuleFile_Dependency) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ModuleFile_Dependency) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *ModuleFile_Dependency) GetRepoName() string { + if x != nil { + return x.RepoName + } + return "" +} + +func (x *ModuleFile_Dependency) GetDevDependency() bool { + if x != nil { + return x.DevDependency + } + return false +} + +var File_ruleset_proto protoreflect.FileDescriptor + +var file_ruleset_proto_rawDesc = []byte{ + 0x0a, 0x0d, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x07, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x65, 0x74, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa0, 0x03, 0x0a, 0x07, 0x52, 0x75, + 0x6c, 0x65, 0x73, 0x65, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x5f, + 0x72, 0x65, 0x70, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x69, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, + 0x2c, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x0a, + 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x65, 0x74, 0x2e, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x0d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x49, 0x0a, 0x12, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, + 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x75, 0x6c, 0x65, 0x73, + 0x65, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, + 0x72, 0x69, 0x74, 0x79, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x70, + 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x12, 0x43, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x0f, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x22, 0xbf, 0x01, 0x0a, + 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x68, + 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x68, 0x61, 0x12, 0x16, 0x0a, 0x06, + 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, + 0x61, 0x64, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x79, 0x61, 0x6e, 0x6b, 0x65, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x79, 0x61, 0x6e, 0x6b, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x07, + 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x72, 0x75, 0x6c, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, + 0x07, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x72, 0x75, 0x6c, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x46, 0x69, + 0x6c, 0x65, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x22, 0xb6, + 0x02, 0x0a, 0x07, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x70, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x70, 0x72, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x52, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x06, 0x61, 0x73, 0x73, + 0x65, 0x74, 0x73, 0x1a, 0x62, 0x0a, 0x05, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x72, 0x6c, 0x12, 0x33, 0x0a, 0x16, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x77, 0x65, 0x65, 0x6b, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x13, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x42, 0x79, 0x57, 0x65, 0x65, 0x6b, 0x22, 0xdd, 0x03, 0x0a, 0x0a, 0x4d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x13, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x5f, 0x63, 0x6f, + 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x12, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x12, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x42, 0x0a, 0x0c, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, + 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, + 0x75, 0x6c, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x46, 0x69, 0x6c, + 0x65, 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x0c, 0x64, 0x65, + 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x1f, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x1c, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, + 0x72, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x6f, 0x6f, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x5f, + 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x14, 0x74, 0x6f, 0x6f, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x54, 0x6f, 0x52, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x7e, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x65, 0x6e, + 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x76, 0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, + 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x64, 0x65, 0x76, 0x44, 0x65, 0x70, + 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x22, 0xbe, 0x02, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3b, 0x0a, + 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, + 0x61, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x73, 0x74, 0x61, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x6f, 0x72, + 0x6b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, + 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x1e, 0x72, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x77, 0x65, 0x65, 0x6b, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x1a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, + 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x79, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x34, 0x0a, 0x17, + 0x67, 0x69, 0x74, 0x5f, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x62, 0x79, 0x5f, 0x77, 0x65, 0x65, 0x6b, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x13, 0x67, + 0x69, 0x74, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x79, 0x57, 0x65, + 0x65, 0x6b, 0x12, 0x34, 0x0a, 0x17, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x77, 0x65, 0x65, 0x6b, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x13, 0x70, 0x61, 0x67, 0x65, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x42, 0x79, 0x57, 0x65, 0x65, 0x6b, 0x22, 0x5e, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x4d, 0x0a, 0x23, 0x63, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x68, + 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, + 0x79, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x50, 0x65, + 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x22, 0xe8, 0x02, 0x0a, 0x0f, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0d, + 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x28, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6f, 0x70, 0x65, 0x6e, + 0x49, 0x73, 0x73, 0x75, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x14, 0x63, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x77, 0x65, + 0x65, 0x6b, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x79, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x30, 0x0a, 0x15, 0x70, + 0x72, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x79, 0x5f, + 0x77, 0x65, 0x65, 0x6b, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x11, 0x70, 0x72, 0x4f, 0x70, + 0x65, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x79, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x32, 0x0a, + 0x16, 0x70, 0x72, 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x62, 0x79, 0x5f, 0x77, 0x65, 0x65, 0x6b, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x12, 0x70, + 0x72, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x79, 0x57, 0x65, 0x65, + 0x6b, 0x12, 0x36, 0x0a, 0x18, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x77, 0x65, 0x65, 0x6b, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x14, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x42, 0x79, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x38, 0x0a, 0x19, 0x69, 0x73, 0x73, + 0x75, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, + 0x79, 0x5f, 0x77, 0x65, 0x65, 0x6b, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x15, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x79, 0x57, + 0x65, 0x65, 0x6b, 0x42, 0x56, 0x5a, 0x54, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x62, 0x61, 0x7a, 0x65, 0x6c, 0x2d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x2f, + 0x53, 0x49, 0x47, 0x2d, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x2d, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x73, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x72, + 0x75, 0x6c, 0x65, 0x73, 0x2d, 0x6b, 0x65, 0x65, 0x70, 0x65, 0x72, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x3b, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x65, 0x74, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +} + +var ( + file_ruleset_proto_rawDescOnce sync.Once + file_ruleset_proto_rawDescData = file_ruleset_proto_rawDesc +) + +func file_ruleset_proto_rawDescGZIP() []byte { + file_ruleset_proto_rawDescOnce.Do(func() { + file_ruleset_proto_rawDescData = protoimpl.X.CompressGZIP(file_ruleset_proto_rawDescData) + }) + return file_ruleset_proto_rawDescData +} + +var file_ruleset_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_ruleset_proto_goTypes = []interface{}{ + (*Ruleset)(nil), // 0: ruleset.Ruleset + (*Version)(nil), // 1: ruleset.Version + (*Release)(nil), // 2: ruleset.Release + (*ModuleFile)(nil), // 3: ruleset.ModuleFile + (*ProjectPopularity)(nil), // 4: ruleset.ProjectPopularity + (*ProjectHealth)(nil), // 5: ruleset.ProjectHealth + (*ProjectActivity)(nil), // 6: ruleset.ProjectActivity + (*Release_Asset)(nil), // 7: ruleset.Release.Asset + (*ModuleFile_Dependency)(nil), // 8: ruleset.ModuleFile.Dependency + (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp +} +var file_ruleset_proto_depIdxs = []int32{ + 9, // 0: ruleset.Ruleset.update_time:type_name -> google.protobuf.Timestamp + 1, // 1: ruleset.Ruleset.versions:type_name -> ruleset.Version + 5, // 2: ruleset.Ruleset.project_health:type_name -> ruleset.ProjectHealth + 4, // 3: ruleset.Ruleset.project_popularity:type_name -> ruleset.ProjectPopularity + 6, // 4: ruleset.Ruleset.project_activity:type_name -> ruleset.ProjectActivity + 2, // 5: ruleset.Version.release:type_name -> ruleset.Release + 3, // 6: ruleset.Version.module_file:type_name -> ruleset.ModuleFile + 9, // 7: ruleset.Release.publish_time:type_name -> google.protobuf.Timestamp + 7, // 8: ruleset.Release.assets:type_name -> ruleset.Release.Asset + 8, // 9: ruleset.ModuleFile.dependencies:type_name -> ruleset.ModuleFile.Dependency + 9, // 10: ruleset.ProjectPopularity.update_time:type_name -> google.protobuf.Timestamp + 11, // [11:11] is the sub-list for method output_type + 11, // [11:11] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name +} + +func init() { file_ruleset_proto_init() } +func file_ruleset_proto_init() { + if File_ruleset_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_ruleset_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Ruleset); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ruleset_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Version); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ruleset_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Release); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ruleset_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ModuleFile); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ruleset_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProjectPopularity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ruleset_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProjectHealth); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ruleset_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProjectActivity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ruleset_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Release_Asset); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ruleset_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ModuleFile_Dependency); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_ruleset_proto_rawDesc, + NumEnums: 0, + NumMessages: 9, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_ruleset_proto_goTypes, + DependencyIndexes: file_ruleset_proto_depIdxs, + MessageInfos: file_ruleset_proto_msgTypes, + }.Build() + File_ruleset_proto = out.File + file_ruleset_proto_rawDesc = nil + file_ruleset_proto_goTypes = nil + file_ruleset_proto_depIdxs = nil +} diff --git a/experimental/rules-keeper/proto/ruleset.proto b/experimental/rules-keeper/proto/ruleset.proto new file mode 100644 index 0000000..4cce8dd --- /dev/null +++ b/experimental/rules-keeper/proto/ruleset.proto @@ -0,0 +1,196 @@ +syntax = "proto3"; + +package ruleset; + +import "google/protobuf/timestamp.proto"; + +option go_package = "github.com/bazel-contrib/SIG-rules-authors/experimental/rules-keeper/proto;rulesetpb"; + +message Ruleset { + // github_repo_full_path is the full path to its github repo. eg. + // bazelbuild/bazel-skylib + string github_repo = 1; + + // maintainers of the ruleset in the form of mailbox format as specified in + // RFC 5322. + repeated string maintainers = 2; + + // update_time is the time when this data is updated. + google.protobuf.Timestamp update_time = 3; + + // license of the project. + string license = 4; + + // tags are versions of this ruleset + repeated Version versions = 5; + + // project_health is the stats on if this project is on the right track. + ProjectHealth project_health = 6; + + // project_popularity is the stats on how popular this project is. + ProjectPopularity project_popularity = 7; + + // project_activity is the stats on how active this proejct is developed + // and maintained. + ProjectActivity project_activity = 8; +} + +// Version denotes a version of a ruleset. +message Version { + // ref is a git reference that could be resolved to a commit object, + // normally a tag, ie. a semver starting with v. HEAD stands + string ref = 1; + + // SHA of the commit being tagged. + string sha = 2; + + // description is the content of the README file. + string readme = 3; + + // yanked denotes if this version is yanked. + bool yanked = 5; + + // release made at this version. + Release release = 6; + + // module_file is the parsed MODULE.bazel file. If set, this version is a + // valid bzlmod. + ModuleFile module_file = 7; + + // module_info is the content of this module. + // stardoc.ModuleInfo module_info = 6; +} + +// Release denotes a release of a ruleset. +message Release { + // title of the release. + string title = 3; + + // description of the release. + string description = 4; + + // prerelease marks if the release is a preprelease. + bool preprelease = 5; + + // publish_time denotes the time this release is made public. + google.protobuf.Timestamp publish_time = 6; + + // assets of this release. + repeated Asset assets = 7; + + message Asset { + // name is the name of the asset. eg. xxx.tar + string name = 1; + // url is the url for dowloading the asset. + string url = 2; + // download_count is the accumulated number of downloads. + // Output only. + int32 download_count_by_week = 3; + } +} + +// ModuleFile is the parsed content of MODULE.bazel. +message ModuleFile { + // name of the module. + string name = 1; + + // version of the module. + string version = 2; + + repeated string bazel_compatibility = 3; + + // compatibility level of the module. + int32 compatibility_level = 4; + + // dependencies of the module. + repeated Dependency dependencies = 5; + + // platforms_to_register is the list of platforms to register. + repeated string execution_platforms_to_register = 6; + + // toolchains_to_register is the list of toolchains to register. + repeated string toolchains_to_register = 7; + + // Dependency is a dependency of a module. + message Dependency { + // name of the dependency. + string name = 1; + + // version of the dependency. + string version = 2; + + // repo_name is the name of the external repo representing this dependency. + // This is by default the name of the module. + string repo_name = 3; + + // dev_dependency marks if this dependency is a dev dependency. + bool dev_dependency = 4; + } +} + +// ProjectPopularity contains stats by measuring the user engagement. +message ProjectPopularity { + // update_time is the time when this data is generated. + google.protobuf.Timestamp update_time = 1; + + // star_count is the number of stars on github as of update_time. + int32 star_count = 2; + + // fork_count is the number of forks on github as of update_time. + int32 fork_count = 3; + + // release_download_count_by_week is the number of release assets being + // downloaded aggregated by week. The array order is the oldest week to the + // most recent week (as of update_time). + repeated int32 release_download_count_by_week = 4; + + // git_clone_count_by_week is the number of repository being cloned aggregated + // by week. The array order is the oldest week to the most recent week (as of + // update_time). + repeated int32 git_clone_count_by_week = 5; + + // page_view_count_by_week is the number of page views aggregated by week. The + // array order is the oldest week to the most recent week (as of update_time). + repeated int32 page_view_count_by_week = 6; +} + +message ProjectHealth { + // community_profile_health_percentage is defined as a percentage of how many + // of expected project documents present. See + // https://docs.github.com/en/rest/metrics/community#get-community-profile-metrics + int32 community_profile_health_percentage = 1; +} + +// ProjectActivity contains stats by measuring the contributor engagement. +message ProjectActivity { + // open_pr_count is the number of open PRs as of update_time. + int32 open_pr_count = 2; + + // open_issue_count is the number of open issues as of update_time. + int32 open_issue_count = 3; + + // commit_count_by_week is the number of commits being submitted aggregated by + // week. The array order is the oldest week to the most recent week (as of + // update_time). + repeated int32 commit_count_by_week = 4; + + // pr_open_count_by_week is the number of pr open events aggregated by + // week. The array order is the oldest week to the most recent week (as of + // update_time). + repeated int32 pr_open_count_by_week = 5; + + // pr_close_count_by_week is the number of pr close (incl. merge) events + // aggregated by week. The array order is the oldest week to the most recent + // week (as of update_time). + repeated int32 pr_close_count_by_week = 6; + + // issue_open_count_by_week is the number of issue open events aggregated by + // week. The array order is the oldest week to the most recent week (as of + // update_time). + repeated int32 issue_open_count_by_week = 7; + + // issue_close_count_by_week is the number of issue close events aggregated by + // week. The array order is the oldest week to the most recent week (as of + // update_time). + repeated int32 issue_close_count_by_week = 8; +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/commit_activity.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/commit_activity.csv new file mode 100644 index 0000000..7c8b61d --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/commit_activity.csv @@ -0,0 +1,53 @@ +date (UTC),# commits,# commits by owner +2022-03-07,1,0 +2022-03-14,3,0 +2022-03-21,6,0 +2022-03-28,7,0 +2022-04-04,8,0 +2022-04-11,2,0 +2022-04-18,2,0 +2022-04-25,2,0 +2022-05-02,4,0 +2022-05-09,0,0 +2022-05-16,1,0 +2022-05-23,3,0 +2022-05-30,6,0 +2022-06-06,2,0 +2022-06-13,6,0 +2022-06-20,9,0 +2022-06-27,6,0 +2022-07-04,21,0 +2022-07-11,2,0 +2022-07-18,1,0 +2022-07-25,7,0 +2022-08-01,4,0 +2022-08-08,4,0 +2022-08-15,0,0 +2022-08-22,5,0 +2022-08-29,2,0 +2022-09-05,7,0 +2022-09-12,0,0 +2022-09-19,0,0 +2022-09-26,10,0 +2022-10-03,8,0 +2022-10-10,3,0 +2022-10-17,3,0 +2022-10-24,10,0 +2022-10-31,4,0 +2022-11-07,6,0 +2022-11-14,7,0 +2022-11-21,7,0 +2022-11-28,11,0 +2022-12-05,5,0 +2022-12-12,2,0 +2022-12-19,12,0 +2022-12-26,4,0 +2023-01-02,3,0 +2023-01-09,6,0 +2023-01-16,0,0 +2023-01-23,0,0 +2023-01-30,0,0 +2023-02-06,0,0 +2023-02-13,0,0 +2023-02-20,0,0 +2023-02-27,0,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/commit_activity.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/commit_activity.metadata new file mode 100644 index 0000000..95772a0 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/commit_activity.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213417 + nanos: 921093000 + } + end_time: { + seconds: 1677835817 + nanos: 921093000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/community_health.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/community_health.csv new file mode 100644 index 0000000..fd68413 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/community_health.csv @@ -0,0 +1,2 @@ +time (UTC),community health percentage +2023-03-03 09:31:24,62 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/community_health.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/community_health.metadata new file mode 100644 index 0000000..0962773 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/community_health.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213484 + nanos: 9707000 + } + end_time: { + seconds: 1677835884 + nanos: 9707000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/issue_activity.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/issue_activity.csv new file mode 100644 index 0000000..e590241 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/issue_activity.csv @@ -0,0 +1,194 @@ +date (UTC),# open pr,# close pr,# open issue,# close issue +2022-04-28,1,1,1,0 +2022-04-29,1,1,0,0 +2022-04-30,1,0,0,0 +2022-05-02,1,0,0,0 +2022-05-03,1,2,0,0 +2022-05-05,0,0,1,0 +2022-05-06,2,1,0,0 +2022-05-09,0,0,1,0 +2022-05-11,1,2,0,0 +2022-05-12,2,2,0,0 +2022-05-13,4,2,1,2 +2022-05-16,0,1,0,0 +2022-05-17,2,0,0,0 +2022-05-18,2,5,0,0 +2022-05-19,1,0,1,0 +2022-05-20,0,1,0,0 +2022-05-26,1,0,0,0 +2022-05-27,1,0,0,0 +2022-05-31,2,2,0,0 +2022-06-01,1,2,0,0 +2022-06-02,2,1,2,0 +2022-06-03,5,6,0,0 +2022-06-04,0,1,1,0 +2022-06-05,0,0,0,1 +2022-06-06,1,0,0,1 +2022-06-07,2,3,0,0 +2022-06-08,2,2,0,0 +2022-06-09,1,0,0,0 +2022-06-10,3,2,1,0 +2022-06-12,1,1,1,1 +2022-06-14,1,1,0,0 +2022-06-15,1,1,0,0 +2022-06-16,0,1,0,0 +2022-06-17,3,4,1,0 +2022-06-18,1,1,0,0 +2022-06-20,1,2,0,0 +2022-06-21,0,0,1,0 +2022-06-22,0,0,1,0 +2022-06-23,1,0,0,0 +2022-06-24,0,1,1,0 +2022-06-25,0,0,1,0 +2022-06-26,0,0,1,0 +2022-06-27,0,0,2,0 +2022-06-28,2,2,1,4 +2022-06-30,1,0,0,0 +2022-07-01,0,1,0,0 +2022-07-05,0,0,1,0 +2022-07-06,2,0,1,0 +2022-07-07,3,2,0,1 +2022-07-08,0,0,1,0 +2022-07-09,0,1,0,0 +2022-07-11,7,7,3,2 +2022-07-13,1,1,0,1 +2022-07-14,2,2,0,1 +2022-07-15,2,3,0,1 +2022-07-19,0,0,1,0 +2022-07-20,1,0,2,1 +2022-07-22,0,0,1,0 +2022-07-25,0,1,0,0 +2022-07-27,2,1,1,0 +2022-07-28,2,1,1,0 +2022-07-29,3,3,0,0 +2022-07-30,2,2,0,0 +2022-08-01,2,1,1,0 +2022-08-02,0,2,0,2 +2022-08-03,0,0,1,1 +2022-08-05,6,6,0,0 +2022-08-07,2,2,1,1 +2022-08-08,1,2,1,0 +2022-08-09,0,0,0,2 +2022-08-10,1,1,0,2 +2022-08-14,0,0,1,0 +2022-08-15,0,0,1,0 +2022-08-16,3,1,0,0 +2022-08-17,1,0,0,0 +2022-08-26,1,0,0,0 +2022-08-27,3,4,0,0 +2022-08-28,1,1,0,0 +2022-08-29,1,0,2,0 +2022-08-30,0,0,1,0 +2022-08-31,1,1,0,0 +2022-09-01,2,2,0,0 +2022-09-02,1,1,0,0 +2022-09-08,1,1,0,0 +2022-09-10,1,0,0,0 +2022-09-11,1,0,0,0 +2022-09-13,1,4,0,0 +2022-09-14,1,1,0,0 +2022-09-18,0,0,1,0 +2022-09-22,0,0,2,1 +2022-09-23,1,2,0,0 +2022-09-24,1,0,0,0 +2022-09-27,4,3,0,0 +2022-09-28,0,0,1,0 +2022-09-29,0,0,2,0 +2022-09-30,1,0,0,0 +2022-10-03,2,1,1,1 +2022-10-04,1,3,2,1 +2022-10-05,0,0,1,0 +2022-10-06,0,2,0,0 +2022-10-07,1,0,0,0 +2022-10-11,1,1,1,1 +2022-10-12,5,3,1,3 +2022-10-13,0,4,0,1 +2022-10-14,0,0,0,2 +2022-10-15,0,0,1,0 +2022-10-16,0,0,1,0 +2022-10-17,2,1,0,0 +2022-10-18,0,1,1,2 +2022-10-21,2,1,0,0 +2022-10-22,0,0,1,0 +2022-10-24,1,0,1,1 +2022-10-25,0,0,1,0 +2022-10-26,1,0,2,0 +2022-10-27,4,2,4,0 +2022-10-28,1,2,0,2 +2022-10-29,0,1,0,0 +2022-10-30,1,0,1,0 +2022-10-31,10,11,2,4 +2022-11-01,3,5,0,1 +2022-11-02,2,2,2,0 +2022-11-03,3,0,1,0 +2022-11-04,2,1,2,1 +2022-11-05,1,1,0,0 +2022-11-06,0,1,0,0 +2022-11-07,0,3,1,1 +2022-11-08,2,3,0,0 +2022-11-09,1,0,0,0 +2022-11-11,5,4,0,3 +2022-11-12,0,1,1,1 +2022-11-13,0,1,0,1 +2022-11-14,1,1,0,0 +2022-11-16,2,3,0,0 +2022-11-17,1,1,1,1 +2022-11-18,1,1,0,1 +2022-11-20,1,1,1,0 +2022-11-21,1,0,0,0 +2022-11-22,1,2,0,0 +2022-11-23,0,0,1,0 +2022-11-24,2,2,0,0 +2022-11-28,0,0,1,0 +2022-11-30,3,2,1,1 +2022-12-01,2,0,0,0 +2022-12-02,3,3,0,1 +2022-12-03,1,1,0,0 +2022-12-04,1,1,0,0 +2022-12-05,0,0,1,0 +2022-12-06,0,1,0,0 +2022-12-08,0,0,0,1 +2022-12-09,2,2,1,0 +2022-12-10,0,0,1,0 +2022-12-12,0,0,1,0 +2022-12-14,1,1,0,0 +2022-12-15,0,0,1,1 +2022-12-16,0,0,2,0 +2022-12-19,1,1,1,0 +2022-12-20,1,0,1,0 +2022-12-23,0,0,1,0 +2022-12-31,1,1,0,0 +2023-01-03,0,0,1,0 +2023-01-04,2,2,0,0 +2023-01-07,3,0,0,1 +2023-01-09,0,1,0,0 +2023-01-10,1,1,0,0 +2023-01-16,1,1,0,0 +2023-01-17,0,0,0,1 +2023-01-18,1,1,0,0 +2023-01-19,0,0,1,0 +2023-01-21,0,1,0,0 +2023-01-22,1,0,0,0 +2023-01-24,0,1,1,0 +2023-01-25,0,1,0,1 +2023-01-26,0,0,0,1 +2023-01-29,2,1,1,1 +2023-02-01,2,1,0,0 +2023-02-02,5,6,0,0 +2023-02-04,1,0,0,0 +2023-02-06,0,0,0,1 +2023-02-08,1,1,2,0 +2023-02-09,1,0,0,0 +2023-02-10,1,0,0,0 +2023-02-11,5,6,1,4 +2023-02-12,0,0,1,0 +2023-02-13,0,1,1,3 +2023-02-14,4,1,1,0 +2023-02-18,1,1,0,0 +2023-02-21,0,0,1,0 +2023-02-22,0,0,1,0 +2023-02-23,1,1,0,0 +2023-02-26,0,0,1,0 +2023-02-28,0,0,1,0 +2023-03-01,1,0,0,0 +2023-03-02,0,1,0,1 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/issue_activity.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/issue_activity.metadata new file mode 100644 index 0000000..b5ed48c --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/issue_activity.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213418 + nanos: 325581000 + } + end_time: { + seconds: 1677835818 + nanos: 325581000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/repo_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/repo_stats.csv new file mode 100644 index 0000000..37f9733 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/repo_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# stars,# forks +2023-03-03 09:30:17,46,26 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/repo_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/repo_stats.metadata new file mode 100644 index 0000000..485565d --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/metrics/repo_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213417 + nanos: 352203000 + } + end_time: { + seconds: 1677835817 + nanos: 352203000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/main/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/main/METADATA new file mode 100644 index 0000000..d9f601e --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/main/METADATA @@ -0,0 +1,25 @@ +ref: "main" +sha: "ccdc52e25c226be3786e7df8b95ebab6ef72d390" +readme: "# Bazel rules for TypeScript\n\nThis is the canonical ruleset for using Bazel for TypeScript, based on\n, and recommended for all new projects.\n\nThis is a high-performance alternative to the `@bazel/typescript` npm package from rules_nodejs.\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes most usability bugs with rules_nodejs:\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\nrules_ts is just a part of what Aspect provides:\n\n- _Need help?_ This ruleset has support provided by https://aspect.dev.\n- See our other Bazel rules, especially those built for rules_js, linked from \n\nKnown issues:\n\n- Does not work with `--worker_sandboxing`. See https://github.com/aspect-build/rules_ts/issues/127#issuecomment-1312041592\n- Workers are disabled and not currently supported on Windows hosts. See https://github.com/aspect-build/rules_ts/issues/228.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n\n## Examples\n\nThere are a number of examples in [the examples/ folder](https://github.com/aspect-build/rules_ts/tree/main/examples).\n\nIf you'd like an example added, you can file a [Feature Request](https://github.com/aspect-build/rules_ts/issues/new/choose).\n\n## Usage\n\nSee the API documentation in [the docs/ folder](https://github.com/aspect-build/rules_ts/tree/main/docs).\n\n### From a BUILD file\n\nThe most common use is with the [`ts_project` macro](./docs/rules.md#ts_project) which invokes the\n[`tsc` CLI](https://www.typescriptlang.org/docs/handbook/compiler-options.html) to transform\nsource files like `.ts` files into outputs such as `.js` and `.d.ts` files.\n\nWe encourage you to read about the `transpiler` property which lets you use a faster tool like\nBabel or SWC to produce the `.js` files, so you don't have to wait for type-checking in your fast\ndevelopment loop.\n\n### In a macro\n\nMany organizations set default values, so it's common to write a [macro] to wrap `ts_project`, then\nensure that your developers load your macro rather than loading from `@aspect_rules_ts` directly.\n\n[macro]: https://bazel.build/extending/macros\n\n### BUILD file generation\n\nAspect provides an alpha preview of our TypeScript BUILD file generator as part of the\n[Aspect CLI](https://aspect.build/cli). Run `aspect configure` to create or update BUILD.bazel files\nas you edit TypeScript sources.\n\n### Advanced: custom rules\n\nIf you know how to write Bazel rules, you might find that `ts_project` doesn't do what you want.\n\nOne way to customize it is to peel off one layer of indirection, by calling the `ts_project_rule`\ndirectly. This bypasses our default setting logic, and also the validation program which checks that\nts_project attributes are well-formed.\n\nYou can also write a custom rule from scratch. We expose helper functions from /ts/private in this\nrepo. Be aware that these are not a public API, so you may have to account for breaking changes\nwhich aren't subject to our usual semver policy.\n" +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.3.0" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.3" + dev_dependency: true + } + dependencies: { + name: "aspect_rules_js" + version: "1.19.0" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.27.2" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/main/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/main/metrics/version_stats.csv new file mode 100644 index 0000000..0c988d3 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/main/metrics/version_stats.csv @@ -0,0 +1 @@ +time (UTC),# download diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/main/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/main/metrics/version_stats.metadata new file mode 100644 index 0000000..e69de29 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.1.0/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.1.0/METADATA new file mode 100644 index 0000000..d66c81c --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.1.0/METADATA @@ -0,0 +1,11 @@ +ref: "v0.1.0" +sha: "89670294a055d8da2d492931997db7fd9b80aee6" +readme: "# Bazel rules for ts\n\nHigh-performance alternative to the `@bazel/typescript` npm package, based on\nAspect's rules_js.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n" +release: { + title: "v0.1.0" + description: "WORKSPACE snippet:\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"07e6623b246d2c1d4c4024edb051fc92a824ac5e6029cb19ba639dc6bcd5973b\",\n strip_prefix = \"rules_ts-0.1.0\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v0.1.0.tar.gz\",\n)\n\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"rules_ts_dependencies\")\nrules_ts_dependencies()\n\n```\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/commits/v0.1.0" + preprelease: true + publish_time: { + seconds: 1651009598 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.1.0/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.1.0/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.1.0/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.1.0/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.1.0/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.1.0/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.10.0/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.10.0/METADATA new file mode 100644 index 0000000..d9eb47f --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.10.0/METADATA @@ -0,0 +1,32 @@ +ref: "v0.10.0" +sha: "c8748c3c53f2e8b2326a40a30c757b7ac53cb265" +readme: "# Bazel rules for ts\n\nHigh-performance alternative to the `@bazel/typescript` npm package, based on\nhttps://github.com/aspect-build/rules_js.\n\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\n\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes the usability bugs with rules_nodejs.\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n" +release: { + title: "v0.10.0" + description: "WORKSPACE snippet:\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"57aa473c5b4d300adea8eda9c8306519344c4acfcc86a42530cdf23e35cb63d7\",\n strip_prefix = \"rules_ts-0.10.0\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v0.10.0.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* docs: add example of using 3p npm dep by @alexeagle in https://github.com/aspect-build/rules_ts/pull/69\n* fix: relative path computation handles parent dir by @alexeagle in https://github.com/aspect-build/rules_ts/pull/70\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v0.9.0...v0.10.0" + preprelease: true + publish_time: { + seconds: 1656444815 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.1.1" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.0" + } + dependencies: { + name: "aspect_rules_js" + version: "0.13.0" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.3.1" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.10.0/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.10.0/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.10.0/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.10.0/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.10.0/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.10.0/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.11.0/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.11.0/METADATA new file mode 100644 index 0000000..8b2e6d3 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.11.0/METADATA @@ -0,0 +1,32 @@ +ref: "v0.11.0" +sha: "945cbd90026cb3f493a013a99f91a84572a51e79" +readme: "# Bazel rules for ts\n\nHigh-performance alternative to the `@bazel/typescript` npm package, based on\nhttps://github.com/aspect-build/rules_js.\n\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\n\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes the usability bugs with rules_nodejs.\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n" +release: { + title: "v0.11.0" + description: "WORKSPACE snippet:\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"04373a49e49a97521a9fcf35dbca43360c94a84a51553ffbd754d6778a0b512d\",\n strip_prefix = \"rules_ts-0.11.0\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v0.11.0.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* fix: fix declaration file output with out_dir set by @jbedard in https://github.com/aspect-build/rules_ts/pull/71\n* fix: disable ts worker if custom tsc is provided by @jbedard in https://github.com/aspect-build/rules_ts/pull/78\n* test: add case for types output_group by @thesayyn in https://github.com/aspect-build/rules_ts/pull/83\n* test: add case for declaration_only by @thesayyn in https://github.com/aspect-build/rules_ts/pull/82\n* fix: allow tsc worker read outputs by @thesayyn in https://github.com/aspect-build/rules_ts/pull/81\n* fix: re-enable error when no outputs configured by @alexeagle in https://github.com/aspect-build/rules_ts/pull/84\n* test: add case for declaration_dir, out_dir and root_dir by @thesayyn in https://github.com/aspect-build/rules_ts/pull/87\n* fix: give better error when ts_project should be js_library by @alexeagle in https://github.com/aspect-build/rules_ts/pull/86\n* test: add case for jsx by @thesayyn in https://github.com/aspect-build/rules_ts/pull/89\n* fix: support package.json with type=module by @thesayyn in https://github.com/aspect-build/rules_ts/pull/90\n* perf: minimize the amount fs calls worker makes by @thesayyn in https://github.com/aspect-build/rules_ts/pull/77\n* test: test rootDirs + outDir by @jbedard in https://github.com/aspect-build/rules_ts/pull/74\n* feat: add support for .mts and .cts source files by @jbedard in https://github.com/aspect-build/rules_ts/pull/92\n* chore: format BUILD files with buildifier by @thesayyn in https://github.com/aspect-build/rules_ts/pull/93\n* fix: correctly invalidate failed lookups by @thesayyn in https://github.com/aspect-build/rules_ts/pull/91\n* test: add example of ts_project .d.ts source by @jbedard in https://github.com/aspect-build/rules_ts/pull/98\n* chore: add additional examples and TODOs for issues by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/100\n* chore: update to aspect_bazel_lib 1.8.0 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/104\n* chore: update to aspect_rules_js to latest commit hash by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/105\n* chore: update to aspect_bazel_lib 1.8.1 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/106\n* docs: one more reason why ts_project could produce no output by @thesayyn in https://github.com/aspect-build/rules_ts/pull/107\n* chore: update to aspect_bazel_lib 1.9.1 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/109\n\n## New Contributors\n* @jbedard made their first contribution in https://github.com/aspect-build/rules_ts/pull/71\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v0.10.0...v0.11.0" + preprelease: true + publish_time: { + seconds: 1659154073 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.1.1" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.0" + } + dependencies: { + name: "aspect_rules_js" + version: "0.13.0" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.9.1" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.11.0/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.11.0/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.11.0/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.11.0/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.11.0/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.11.0/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.12.0/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.12.0/METADATA new file mode 100644 index 0000000..7cbc8a2 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.12.0/METADATA @@ -0,0 +1,32 @@ +ref: "v0.12.0" +sha: "74d54bda208695d7e8992520e560166875cfbce7" +readme: "# Bazel rules for ts\n\nHigh-performance alternative to the `@bazel/typescript` npm package, based on\nhttps://github.com/aspect-build/rules_js.\n\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\n\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes the usability bugs with rules_nodejs.\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n" +release: { + title: "v0.12.0" + description: "WORKSPACE snippet:\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"bfaad966d3293595b2b1a44b33a12967ee138e414d6c27b7a2656b43ca19ee51\",\n strip_prefix = \"rules_ts-0.12.0\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v0.12.0.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* chore: update to rules_js 1.0.0-rc.3 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/110\n* chore: update to aspect_bazel_lib_1.9.2 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/112\n* refactor: update to rules_js 1.0.0-rc.4 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/113\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v0.11.0...v0.12.0" + preprelease: true + publish_time: { + seconds: 1659481616 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.1.1" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.0" + } + dependencies: { + name: "aspect_rules_js" + version: "0.14.0" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.9.2" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.12.0/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.12.0/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.12.0/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.12.0/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.12.0/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.12.0/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.2.0/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.2.0/METADATA new file mode 100644 index 0000000..00c96a7 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.2.0/METADATA @@ -0,0 +1,11 @@ +ref: "v0.2.0" +sha: "d4700cb2d173336b5b2466b9b5e773590216c58e" +readme: "# Bazel rules for ts\n\nHigh-performance alternative to the `@bazel/typescript` npm package, based on\nAspect's rules_js.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n" +release: { + title: "v0.2.0" + description: "WORKSPACE snippet:\r\n```starlark\r\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\r\nhttp_archive(\r\n name = \"aspect_rules_ts\",\r\n sha256 = \"c2c3557c8159e98f94dcf8e72d4e479a225bd126be5af22e18e45b5b2c67ef5a\",\r\n strip_prefix = \"rules_ts-0.2.0\",\r\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v0.2.0.tar.gz\",\r\n)\r\n\r\n##############\r\n# rules_ts setup #\r\n##############\r\n# Fetches the rules_ts dependencies.\r\n# If you want to have a different version of some dependency,\r\n# you should fetch it *before* calling this.\r\n# Alternatively, you can skip calling this function, so long as you've\r\n# already fetched all the dependencies.\r\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\r\n\r\nrules_ts_dependencies(ts_version = LATEST_VERSION)\r\n\r\n# Fetch and register node, if you haven't already\r\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\r\n\r\nnodejs_register_toolchains(\r\n name = \"node\",\r\n node_version = DEFAULT_NODE_VERSION,\r\n)\r\n```\r\n\r\n\r\n## What's Changed\r\n* initial commit for gazelle extension by @alexeagle in https://github.com/aspect-build/rules_ts/pull/1\r\n* ci: add e2e test asserting that setup works for users by @alexeagle in https://github.com/aspect-build/rules_ts/pull/3\r\n* feat: make typescript version selection easier by @alexeagle in https://github.com/aspect-build/rules_ts/pull/5\r\n* docs: add docgen for ts repositories by @alexeagle in https://github.com/aspect-build/rules_ts/pull/6\r\n* fix: add mnemonic to validate_options by @thesayyn in https://github.com/aspect-build/rules_ts/pull/9\r\n* Revert \"initial commit for gazelle extension (#1)\" by @alexeagle in https://github.com/aspect-build/rules_ts/pull/11\r\n* cleanup: remove rules_nodejs interop code by @alexeagle in https://github.com/aspect-build/rules_ts/pull/13\r\n* chore: change to LATEST_VERSION matching esbuild,swc,terser by @alexeagle in https://github.com/aspect-build/rules_ts/pull/12\r\n* fix: generated tsconfig should reference paths in bazel-out by @alexeagle in https://github.com/aspect-build/rules_ts/pull/14\r\n* update rules_js by @alexeagle in https://github.com/aspect-build/rules_ts/pull/16\r\n\r\n## New Contributors\r\n* @alexeagle made their first contribution in https://github.com/aspect-build/rules_ts/pull/1\r\n* @thesayyn made their first contribution in https://github.com/aspect-build/rules_ts/pull/9\r\n\r\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v0.1.0...v0.2.0" + preprelease: true + publish_time: { + seconds: 1652501384 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.2.0/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.2.0/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.2.0/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.2.0/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.2.0/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.2.0/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.2.1/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.2.1/METADATA new file mode 100644 index 0000000..8466b1b --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.2.1/METADATA @@ -0,0 +1,11 @@ +ref: "v0.2.1" +sha: "c2824a7882b376a7d53b828b8006f37cffa1fe58" +readme: "# Bazel rules for ts\n\nHigh-performance alternative to the `@bazel/typescript` npm package, based on\nAspect's rules_js.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n" +release: { + title: "v0.2.1" + description: "WORKSPACE snippet:\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"0da8f616f58bd79e8b7b0946f96d4adda8b02d3ec9aca33037cecfef316a1597\",\n strip_prefix = \"rules_ts-0.2.1\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v0.2.1.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* Allow generated files mixed with sources by @alexeagle in https://github.com/aspect-build/rules_ts/pull/17\n* make ts_options_validator output deterministc by @alexeagle in https://github.com/aspect-build/rules_ts/pull/22\n* add example coverage for using 1p/3p deps with types by @alexeagle in https://github.com/aspect-build/rules_ts/pull/21\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v0.2.0...v0.2.1" + preprelease: true + publish_time: { + seconds: 1652910042 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.2.1/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.2.1/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.2.1/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.2.1/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.2.1/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.2.1/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.0/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.0/METADATA new file mode 100644 index 0000000..a003a59 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.0/METADATA @@ -0,0 +1,11 @@ +ref: "v0.3.0" +sha: "cea4cdbbc2a112406e196d56082fd69245ad90c7" +readme: "# Bazel rules for ts\n\nHigh-performance alternative to the `@bazel/typescript` npm package, based on\nhttps://github.com/aspect-build/rules_js.\n\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\n\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes the usability bugs with rules_nodejs.\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n" +release: { + title: "v0.3.0" + description: "WORKSPACE snippet:\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"af82df74c1143581417d3ba61232255e678a3d2f9ce3b523b85386d3e21d810e\",\n strip_prefix = \"rules_ts-0.3.0\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v0.3.0.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* Example with ts_project depending on another ts_project by @jfirebaugh in https://github.com/aspect-build/rules_ts/pull/24\n* fix: set declaration dir to \".\" when it is empty by @thesayyn in https://github.com/aspect-build/rules_ts/pull/25\n* chore: update rules_js by @alexeagle in https://github.com/aspect-build/rules_ts/pull/27\n\n## New Contributors\n* @jfirebaugh made their first contribution in https://github.com/aspect-build/rules_ts/pull/24\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v0.2.1...v0.3.0" + preprelease: true + publish_time: { + seconds: 1654031643 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.0/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.0/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.0/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.0/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.0/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.0/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.1/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.1/METADATA new file mode 100644 index 0000000..a6f71d6 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.1/METADATA @@ -0,0 +1,11 @@ +ref: "v0.3.1" +sha: "7ebab5e44f879498f2432f1e8a9011eee4f56a7e" +readme: "# Bazel rules for ts\n\nHigh-performance alternative to the `@bazel/typescript` npm package, based on\nhttps://github.com/aspect-build/rules_js.\n\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\n\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes the usability bugs with rules_nodejs.\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n" +release: { + title: "v0.3.1" + description: "WORKSPACE snippet:\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"2a9805f83498d63dfac62175740f1c49ec58ca62e7cf93e23c8b50a9cff4f73d\",\n strip_prefix = \"rules_ts-0.3.1\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v0.3.1.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* chore: update to rules_js 0.9.1 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/28\n* refactor: only set tsconfig.json as the default if the file exists by @alexeagle in https://github.com/aspect-build/rules_ts/pull/29\n\n## New Contributors\n* @gregmagolan made their first contribution in https://github.com/aspect-build/rules_ts/pull/28\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v0.3.0...v0.3.1" + preprelease: true + publish_time: { + seconds: 1654174426 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.1/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.1/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.1/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.1/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.1/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.1/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.3/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.3/METADATA new file mode 100644 index 0000000..fcc99e7 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.3/METADATA @@ -0,0 +1,11 @@ +ref: "v0.3.3" +sha: "14367a73141bf4a694bd3a57e6c72b3989fb9c43" +readme: "# Bazel rules for ts\n\nHigh-performance alternative to the `@bazel/typescript` npm package, based on\nhttps://github.com/aspect-build/rules_js.\n\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\n\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes the usability bugs with rules_nodejs.\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n" +release: { + title: "v0.3.3" + description: "WORKSPACE snippet:\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"04b77afa128953fb0efe0105a168dfc233561dee84388251910876123be8ef43\",\n strip_prefix = \"rules_ts-0.3.3\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v0.3.3.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* Add missing ts_project docstring by @alexeagle in https://github.com/aspect-build/rules_ts/pull/33\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v0.3.2...v0.3.3" + preprelease: true + publish_time: { + seconds: 1654214958 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.3/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.3/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.3/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.3/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.3/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.3.3/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.4.0/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.4.0/METADATA new file mode 100644 index 0000000..4548ab0 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.4.0/METADATA @@ -0,0 +1,11 @@ +ref: "v0.4.0" +sha: "da5d96f3ca5e6a766f554f31b58d19b93e6c4d9e" +readme: "# Bazel rules for ts\n\nHigh-performance alternative to the `@bazel/typescript` npm package, based on\nhttps://github.com/aspect-build/rules_js.\n\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\n\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes the usability bugs with rules_nodejs.\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n" +release: { + title: "v0.4.0" + description: "WORKSPACE snippet:\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"8e420a00e7b2fc8bdbb5dbabdbc796cafa277c057054571855260799cc8c63d0\",\n strip_prefix = \"rules_ts-0.4.0\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v0.4.0.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* chore: update to rules_js 0.10.0 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/34\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v0.3.3...v0.4.0" + preprelease: true + publish_time: { + seconds: 1654277686 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.4.0/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.4.0/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.4.0/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.4.0/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.4.0/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.4.0/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.5.0/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.5.0/METADATA new file mode 100644 index 0000000..8e1733c --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.5.0/METADATA @@ -0,0 +1,11 @@ +ref: "v0.5.0" +sha: "b55b8608bcd4255c6b13459dea557e63ef6bf605" +readme: "# Bazel rules for ts\n\nHigh-performance alternative to the `@bazel/typescript` npm package, based on\nhttps://github.com/aspect-build/rules_js.\n\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\n\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes the usability bugs with rules_nodejs.\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n" +release: { + title: "v0.5.0" + description: "WORKSPACE snippet:\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"1f4854ac104881b62d341c19d6150d32ba582351b24a1f0b761c218456057017\",\n strip_prefix = \"rules_ts-0.5.0\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v0.5.0.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* refactor: remove rules_swc dep, point to bazel-examples by @alexeagle in https://github.com/aspect-build/rules_ts/pull/36\n* chore: update to rules_js 0.11.0 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/38\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v0.4.0...v0.5.0" + preprelease: true + publish_time: { + seconds: 1654298167 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.5.0/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.5.0/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.5.0/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.5.0/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.5.0/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.5.0/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.6.0/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.6.0/METADATA new file mode 100644 index 0000000..f60a310 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.6.0/METADATA @@ -0,0 +1,11 @@ +ref: "v0.6.0" +sha: "976434a817b41365a184121f929dbca9e892d501" +readme: "# Bazel rules for ts\n\nHigh-performance alternative to the `@bazel/typescript` npm package, based on\nhttps://github.com/aspect-build/rules_js.\n\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\n\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes the usability bugs with rules_nodejs.\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n" +release: { + title: "v0.6.0" + description: "WORKSPACE snippet:\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"b79eca71668f1d5e318c25a25a5f9a150d351cbfab1ea9e225b0ee7a9f16763d\",\n strip_prefix = \"rules_ts-0.6.0\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v0.6.0.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* feat: add worker support to ts_project by @thesayyn in https://github.com/aspect-build/rules_ts/pull/26\n* fix: tsc tries to read files that is no longer a src by @thesayyn in https://github.com/aspect-build/rules_ts/pull/40\n* fix: use tsconfig, outDir, declarationDir, and rootDir in worker key by @thesayyn in https://github.com/aspect-build/rules_ts/pull/42\n* fix: cache source diagnostics by @thesayyn in https://github.com/aspect-build/rules_ts/pull/43\n* cleanup: remove ts_declaration by @alexeagle in https://github.com/aspect-build/rules_ts/pull/44\n* Configure Renovate by @renovate in https://github.com/aspect-build/rules_ts/pull/45\n* chore: update to rules_js 0.12.1 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/49\n\n## New Contributors\n* @renovate made their first contribution in https://github.com/aspect-build/rules_ts/pull/45\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v0.5.0...v0.6.0" + preprelease: true + publish_time: { + seconds: 1654904637 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.6.0/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.6.0/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.6.0/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.6.0/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.6.0/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.6.0/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.7.0/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.7.0/METADATA new file mode 100644 index 0000000..b26b1ba --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.7.0/METADATA @@ -0,0 +1,11 @@ +ref: "v0.7.0" +sha: "733c5b4c0867317128fb48fdfe548642988df3f0" +readme: "# Bazel rules for ts\n\nHigh-performance alternative to the `@bazel/typescript` npm package, based on\nhttps://github.com/aspect-build/rules_js.\n\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\n\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes the usability bugs with rules_nodejs.\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n" +release: { + title: "v0.7.0" + description: "WORKSPACE snippet:\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"991a5ccad5fd276164ea64c01ae0b67820a5d514fbf37ae3f7ac8701a84b9f5a\",\n strip_prefix = \"rules_ts-0.7.0\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v0.7.0.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* fix: handle option changes and implement default lib cache by @thesayyn in https://github.com/aspect-build/rules_ts/pull/51\n* fix: ts_config rule needs to copy files to bin by @alexeagle in https://github.com/aspect-build/rules_ts/pull/52\n* chore: update to rules_js 0.13.0 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/53\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v0.6.0...v0.7.0" + preprelease: true + publish_time: { + seconds: 1655305003 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.7.0/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.7.0/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.7.0/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.7.0/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.7.0/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.7.0/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.8.0/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.8.0/METADATA new file mode 100644 index 0000000..a1ec16a --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.8.0/METADATA @@ -0,0 +1,32 @@ +ref: "v0.8.0" +sha: "b2182a35731cb1c82b047cfe7d5e2f649d685683" +readme: "# Bazel rules for ts\n\nHigh-performance alternative to the `@bazel/typescript` npm package, based on\nhttps://github.com/aspect-build/rules_js.\n\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\n\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes the usability bugs with rules_nodejs.\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n" +release: { + title: "v0.8.0" + description: "WORKSPACE snippet:\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"4a1afbbdfbdecfa476d1884268ce99a2f88330270022fee329dfe36600619483\",\n strip_prefix = \"rules_ts-0.8.0\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v0.8.0.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* feat: make rules_ts compatible with bzlmod by @kormide in https://github.com/aspect-build/rules_ts/pull/54\n* chore: use skylib paths join instead of custom _join helper by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/55\n* chore(deps): update actions/checkout action to v3 by @renovate in https://github.com/aspect-build/rules_ts/pull/47\n* chore(deps): update actions/cache action to v3 by @renovate in https://github.com/aspect-build/rules_ts/pull/46\n* fix: remove unnecessary additional typescript package copy by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/58\n* docs: --spawn_strategy does not take a mnemonic, use --strategy by @mattem in https://github.com/aspect-build/rules_ts/pull/59\n\n## New Contributors\n* @kormide made their first contribution in https://github.com/aspect-build/rules_ts/pull/54\n* @mattem made their first contribution in https://github.com/aspect-build/rules_ts/pull/59\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v0.7.0...v0.8.0" + preprelease: true + publish_time: { + seconds: 1655788651 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.1.1" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.0" + } + dependencies: { + name: "aspect_rules_js" + version: "0.13.0" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.3.1" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.8.0/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.8.0/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.8.0/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.8.0/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.8.0/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.8.0/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.9.0/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.9.0/METADATA new file mode 100644 index 0000000..3c890c1 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.9.0/METADATA @@ -0,0 +1,32 @@ +ref: "v0.9.0" +sha: "b95cc7e9746a8c3c8eafdd93bfa10d39e348e00d" +readme: "# Bazel rules for ts\n\nHigh-performance alternative to the `@bazel/typescript` npm package, based on\nhttps://github.com/aspect-build/rules_js.\n\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\n\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes the usability bugs with rules_nodejs.\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n" +release: { + title: "v0.9.0" + description: "WORKSPACE snippet:\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"679bfe547296d64a5f8bbd25a4b8acbc6b41336ee38d8fcfaab5eba75cf6670f\",\n strip_prefix = \"rules_ts-0.9.0\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v0.9.0.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* ci: auto-publish to bcr on release by @kormide in https://github.com/aspect-build/rules_ts/pull/62\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v0.8.0...v0.9.0" + preprelease: true + publish_time: { + seconds: 1656390665 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.1.1" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.0" + } + dependencies: { + name: "aspect_rules_js" + version: "0.13.0" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.3.1" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.9.0/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.9.0/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.9.0/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.9.0/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.9.0/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v0.9.0/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc0/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc0/METADATA new file mode 100644 index 0000000..78dc83e --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc0/METADATA @@ -0,0 +1,32 @@ +ref: "v1.0.0-rc0" +sha: "ac234f966e3dfef82baa35e4b2b5fa5bd3c6beed" +readme: "# Bazel rules for ts\n\nHigh-performance alternative to the `@bazel/typescript` npm package, based on\nhttps://github.com/aspect-build/rules_js.\n\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\n\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes the usability bugs with rules_nodejs.\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n" +release: { + title: "v1.0.0-rc0" + description: "WORKSPACE snippet:\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"01a35a9582107fd2ef81795874f57e6ba36bc63d91626c35212651981df6c9d8\",\n strip_prefix = \"rules_ts-1.0.0-rc0\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v1.0.0-rc0.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* chore(deps): update dependency io_bazel_stardoc to v0.5.2 by @renovate in https://github.com/aspect-build/rules_ts/pull/116\n* chore(deps): update dependency bazel_gazelle to v0.26.0 by @renovate in https://github.com/aspect-build/rules_ts/pull/118\n* chore(deps): update dependency rules_nodejs to v5.5.3 by @renovate in https://github.com/aspect-build/rules_ts/pull/117\n* chore(deps): update dependency io_bazel_rules_go to v0.34.0 by @renovate in https://github.com/aspect-build/rules_ts/pull/120\n* chore(deps): update dependency bazel_skylib to v1.2.1 by @renovate in https://github.com/aspect-build/rules_ts/pull/119\n* refactor: make fstree handle watchers by @thesayyn in https://github.com/aspect-build/rules_ts/pull/108\n* fix: add .d.mts/.d.cts in declaration info by @jstuder-gh in https://github.com/aspect-build/rules_ts/pull/122\n* chore: update to rules_js 1.0.0 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/123\n\n## New Contributors\n* @jstuder-gh made their first contribution in https://github.com/aspect-build/rules_ts/pull/122\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v0.12.0...v1.0.0-rc0" + preprelease: true + publish_time: { + seconds: 1659917187 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.1.1" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.0" + } + dependencies: { + name: "aspect_rules_js" + version: "1.0.0" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.9.2" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc0/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc0/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc0/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc0/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc0/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc0/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc1/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc1/METADATA new file mode 100644 index 0000000..e51d7f2 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc1/METADATA @@ -0,0 +1,32 @@ +ref: "v1.0.0-rc1" +sha: "9deae722a7db8b1957fe0acf45fcee38c5687d15" +readme: "# Bazel rules for ts\n\nHigh-performance alternative to the `@bazel/typescript` npm package, based on\nhttps://github.com/aspect-build/rules_js.\n\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\n\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes the usability bugs with rules_nodejs.\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n" +release: { + title: "v1.0.0-rc1" + description: "WORKSPACE snippet:\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"1945d5a356d0ec85359dea411467dec0f98502503a53798ead7f54aef849598b\",\n strip_prefix = \"rules_ts-1.0.0-rc1\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v1.0.0-rc1.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* fix: follow symlinks in getDirectories by @thesayyn in https://github.com/aspect-build/rules_ts/pull/125\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.0.0-rc0...v1.0.0-rc1" + preprelease: true + publish_time: { + seconds: 1659988701 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.1.1" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.0" + } + dependencies: { + name: "aspect_rules_js" + version: "1.0.0" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.9.2" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc1/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc1/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc1/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc1/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc1/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc1/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc2/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc2/METADATA new file mode 100644 index 0000000..e5e40f5 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc2/METADATA @@ -0,0 +1,32 @@ +ref: "v1.0.0-rc2" +sha: "e94bef705f2712b1ec1d42adb0b56d9eef03a6b7" +readme: "# Bazel rules for ts\n\nHigh-performance alternative to the `@bazel/typescript` npm package, based on\nhttps://github.com/aspect-build/rules_js.\n\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\n\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes the usability bugs with rules_nodejs.\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n" +release: { + title: "v1.0.0-rc2" + description: "WORKSPACE snippet:\r\n```starlark\r\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\r\nhttp_archive(\r\n name = \"aspect_rules_ts\",\r\n sha256 = \"b491ff46f8d9167986033552bdd7b39106fac5a1cbc4d5ea44582d3d71557519\",\r\n strip_prefix = \"rules_ts-1.0.0-rc2\",\r\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v1.0.0-rc2.tar.gz\",\r\n)\r\n\r\n##################\r\n# rules_ts setup #\r\n##################\r\n# Fetches the rules_ts dependencies.\r\n# If you want to have a different version of some dependency,\r\n# you should fetch it *before* calling this.\r\n# Alternatively, you can skip calling this function, so long as you've\r\n# already fetched all the dependencies.\r\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\r\n\r\nrules_ts_dependencies(ts_version = LATEST_VERSION)\r\n\r\n# Fetch and register node, if you haven't already\r\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\r\n\r\nnodejs_register_toolchains(\r\n name = \"node\",\r\n node_version = DEFAULT_NODE_VERSION,\r\n)\r\n```\r\n\r\n[rules_js 1.1.0](https://github.com/aspect-build/rules_js/releases/tag/v1.1.0) is required for this release.\r\n\r\n## What's Changed\r\n* fix: ensure extends paths are relative by @alexeagle in https://github.com/aspect-build/rules_ts/pull/126\r\n* chore: update to bazel 5.2.0 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/135\r\n* chore: update to rules_js 1.1.0 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/133\r\n\r\n\r\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.0.0-rc1...v1.0.0-rc2" + preprelease: true + publish_time: { + seconds: 1661576689 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.1.1" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.0" + } + dependencies: { + name: "aspect_rules_js" + version: "1.1.0" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.11.1" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc2/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc2/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc2/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc2/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc2/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc2/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc3/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc3/METADATA new file mode 100644 index 0000000..a4a67e2 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc3/METADATA @@ -0,0 +1,32 @@ +ref: "v1.0.0-rc3" +sha: "9f54ec944c1238ab63d0618bff2af1184f3f5a1d" +readme: "# Bazel rules for ts\n\nHigh-performance alternative to the `@bazel/typescript` npm package, based on\nhttps://github.com/aspect-build/rules_js.\n\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\n\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes the usability bugs with rules_nodejs.\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n" +release: { + title: "v1.0.0-rc3" + description: "WORKSPACE snippet:\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"3eb3171c26eb5d0951d51ae594695397218fb829e3798eea5557814723a1b3da\",\n strip_prefix = \"rules_ts-1.0.0-rc3\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v1.0.0-rc3.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* chore: upgrade to typescript 4.8.2 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/136\n* chore: add CI on RBE by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/137\n* ci: run PR workflow on main repo and not forks by @jbedard in https://github.com/aspect-build/rules_ts/pull/142\n* chore: update to rules_js 1.1.2 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/144\n* chore(deps): update dependency bazel_skylib to v1.3.0 by @renovate in https://github.com/aspect-build/rules_ts/pull/143\n* ci: run on pull_request instead of pull_request_target by @jbedard in https://github.com/aspect-build/rules_ts/pull/145\n* fix: check for dangling symlinks by @thesayyn in https://github.com/aspect-build/rules_ts/pull/146\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.0.0-rc2...v1.0.0-rc3" + preprelease: true + publish_time: { + seconds: 1662862995 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.1.1" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.0" + } + dependencies: { + name: "aspect_rules_js" + version: "1.1.0" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.11.1" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc3/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc3/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc3/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc3/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc3/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc3/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc4/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc4/METADATA new file mode 100644 index 0000000..1e54963 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc4/METADATA @@ -0,0 +1,32 @@ +ref: "v1.0.0-rc4" +sha: "ab68b6bf873c3de66bf323be6c8ba3791b180d6e" +readme: "# Bazel rules for ts\n\nHigh-performance alternative to the `@bazel/typescript` npm package, based on\nhttps://github.com/aspect-build/rules_js.\n\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\n\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes the usability bugs with rules_nodejs.\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n\nPlease note that rules_ts does not work with `--worker_sandboxing`.\n" +release: { + title: "v1.0.0-rc4" + description: "WORKSPACE snippet:\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"743f0e988e4e3f1e25e52c79f9dc3da1ddd77507ae88787ae95b4e70c537872b\",\n strip_prefix = \"rules_ts-1.0.0-rc4\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v1.0.0-rc4.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* fix: add file info to error for `tsc` overreach by @vpanta in https://github.com/aspect-build/rules_ts/pull/129\n* fix: `ts_project` fails if `root_dir` used deep in source tree by @vpanta in https://github.com/aspect-build/rules_ts/pull/130\n* chore(deps): update dependency io_bazel_rules_go to v0.35.0 by @renovate in https://github.com/aspect-build/rules_ts/pull/148\n* chore(deps): update dependency rules_nodejs to v5.5.4 by @renovate in https://github.com/aspect-build/rules_ts/pull/147\n* chore: update to aspect_bazel_lib 1.11.8 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/149\n* chore(deps): remove bazel-integration-testing by @jbedard in https://github.com/aspect-build/rules_ts/pull/153\n* chore(deps): update dependency aspect_bazel_lib to v1.12.0 by @renovate in https://github.com/aspect-build/rules_ts/pull/155\n* chore(deps): update dependency aspect_rules_js to v1.3.1 by @renovate in https://github.com/aspect-build/rules_ts/pull/156\n* docs: mention --worker_sandboxing incompatibility by @tsawada in https://github.com/aspect-build/rules_ts/pull/154\n* chore: update to aspect_bazel_lib 1.12.1 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/164\n* chore(deps): update dependency aspect_rules_js to v1.4.0 by @renovate in https://github.com/aspect-build/rules_ts/pull/165\n* chore: add example --config=debug settings to .bazelrc.common and example debuggle target with sourcemaps back to .ts sources by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/168\n* chore(deps): update dependency rules_nodejs to v5.6.0 by @renovate in https://github.com/aspect-build/rules_ts/pull/157\n* fix: report failedLookups twice by @thesayyn in https://github.com/aspect-build/rules_ts/pull/169\n* test: add path_mapping example by @jbedard in https://github.com/aspect-build/rules_ts/pull/172\n* fix: validate preserveSymlinks tsconfig option is not set by @jbedard in https://github.com/aspect-build/rules_ts/pull/171\n* fix: allow composite projects by @alexeagle in https://github.com/aspect-build/rules_ts/pull/176\n* refactor: TsConfigInfo uses depsets by @alexeagle in https://github.com/aspect-build/rules_ts/pull/178\n* fix: validate tsconfig dictionary values by @jbedard in https://github.com/aspect-build/rules_ts/pull/173\n* Chore/export ts config by @sallustfire in https://github.com/aspect-build/rules_ts/pull/174\n\n## New Contributors\n* @vpanta made their first contribution in https://github.com/aspect-build/rules_ts/pull/129\n* @tsawada made their first contribution in https://github.com/aspect-build/rules_ts/pull/154\n* @sallustfire made their first contribution in https://github.com/aspect-build/rules_ts/pull/174\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.0.0-rc3...v1.0.0-rc4" + preprelease: true + publish_time: { + seconds: 1665712032 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.1.1" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.0" + } + dependencies: { + name: "aspect_rules_js" + version: "1.1.0" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.12.1" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc4/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc4/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc4/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc4/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc4/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc4/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc5/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc5/METADATA new file mode 100644 index 0000000..f9a8f10 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc5/METADATA @@ -0,0 +1,33 @@ +ref: "v1.0.0-rc5" +sha: "1eb401bdf47debf2ed001a53b21822bffb1f79de" +readme: "# Bazel rules for TypeScript\n\nThis is the canonical ruleset for using Bazel for TypeScript, based on\n, and recommended for all new projects.\n\nThis is a high-performance alternative to the `@bazel/typescript` npm package from rules_nodejs.\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes most usability bugs with rules_nodejs:\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\nrules_ts is just a part of what Aspect provides:\n\n- _Need help?_ This ruleset has support provided by https://aspect.dev.\n- See our other Bazel rules, especially those built for rules_js, linked from \n\nKnown issues:\n\n- Does not work with `--worker_sandboxing`.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n\n## Examples\n\nThere are a number of examples in [the examples/ folder](./examples/).\n\nIf you'd like an example added, you can file a Feature Request.\n\n## Usage\n\nSee the API documentation in [the docs/ folder](./docs/).\n\n### From a BUILD file\n\nThe most common use is with the [`ts_project` macro](./docs/rules.md#ts_project) which invokes the\n[`tsc` CLI](https://www.typescriptlang.org/docs/handbook/compiler-options.html) to transform\nsource files like `.ts` files into outputs such as `.js` and `.d.ts` files.\n\nWe encourage you to read about the `transpiler` property which lets you use a faster tool like\nBabel or SWC to produce the `.js` files, so you don't have to wait for type-checking in your fast\ndevelopment loop.\n\n### In a macro\n\nMany organizations set default values, so it's common to write a [macro] to wrap `ts_project`, then\nensure that your developers load your macro rather than loading from `@aspect_rules_ts` directly.\n\n[macro]: https://bazel.build/extending/macros\n\n### BUILD file generation\n\nAspect provides an alpha preview of our TypeScript BUILD file generator as part of the\n[Aspect CLI](https://aspect.build/cli). Run `aspect configure` to create or update BUILD.bazel files\nas you edit TypeScript sources.\n\n### Advanced: custom rules\n\nIf you know how to write Bazel rules, you might find that `ts_project` doesn't do what you want.\n\nOne way to customize it is to peel off one layer of indirection, by calling the `ts_project_rule`\ndirectly. This bypasses our default setting logic, and also the validation program which checks that\nts_project attributes are well-formed.\n\nYou can also write a custom rule from scratch. We expose helper functions from /ts/private in this\nrepo. Be aware that these are not a public API, so you may have to account for breaking changes\nwhich aren't subject to our usual semver policy.\n" +release: { + title: "v1.0.0-rc5" + description: "WORKSPACE snippet:\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"1149d4cf7f210de67e0fc5cd3e8f624de3ee976ac05af4f1484e57a74c12f2dc\",\n strip_prefix = \"rules_ts-1.0.0-rc5\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v1.0.0-rc5.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* fix: prevent worker from running oom by @thesayyn in https://github.com/aspect-build/rules_ts/pull/182\n* fix: prefix host call by @thesayyn in https://github.com/aspect-build/rules_ts/pull/184\n* fix: remove unused validate_options(has_local_deps) by @jbedard in https://github.com/aspect-build/rules_ts/pull/200\n* fix: .tsbuildinfo is not written in subsequent builds by @thesayyn in https://github.com/aspect-build/rules_ts/pull/187\n* chore: account for github actions deprecation by @alexeagle in https://github.com/aspect-build/rules_ts/pull/201\n* fix(ts_lib): omit \".\" segments in path joining by @alexeagle in https://github.com/aspect-build/rules_ts/pull/205\n* fix(docs): introduce tsc_test example by @alexeagle in https://github.com/aspect-build/rules_ts/pull/207\n* chore: rename declaration_only example by @alexeagle in https://github.com/aspect-build/rules_ts/pull/208\n* feat: add ts_project(deps) validation ensuring all deps of declarations by @jbedard in https://github.com/aspect-build/rules_ts/pull/199\n* docs: rename json example to match TS compiler option by @alexeagle in https://github.com/aspect-build/rules_ts/pull/210\n* docs: cleanup declaration_dir example by @alexeagle in https://github.com/aspect-build/rules_ts/pull/209\n* test: add case for filegroup of srcs by @alexeagle in https://github.com/aspect-build/rules_ts/pull/211\n* docs: show example of different module outputs by @alexeagle in https://github.com/aspect-build/rules_ts/pull/212\n* docs: add custom compiler example by @alexeagle in https://github.com/aspect-build/rules_ts/pull/213\n* docs: add root_dir example by @alexeagle in https://github.com/aspect-build/rules_ts/pull/214\n* docs: improve readability: extract transpiler/tsconfig to standalone by @alexeagle in https://github.com/aspect-build/rules_ts/pull/215\n* chore: fixes to doc presentation by @alexeagle in https://github.com/aspect-build/rules_ts/pull/216\n* chore: update to Bazel 6.0.0rc1 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/217\n* fix: fix bzlmod with Bazel 6.0.0rc1 and enable e2e/bzlmod on CI by @alexeagle in https://github.com/aspect-build/rules_ts/pull/197\n* chore: cleanup maybe pattern by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/218\n* fix: support --experimental_allow_unresolved_symlinks flag by @thesayyn in https://github.com/aspect-build/rules_ts/pull/202\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.0.0-rc4...v1.0.0-rc5" + preprelease: true + publish_time: { + seconds: 1667328967 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.3.0" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.3" + dev_dependency: true + } + dependencies: { + name: "aspect_rules_js" + version: "1.6.3" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.15.0" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc5/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc5/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc5/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc5/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc5/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc5/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc6/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc6/METADATA new file mode 100644 index 0000000..673d15b --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc6/METADATA @@ -0,0 +1,33 @@ +ref: "v1.0.0-rc6" +sha: "1d8658dab08c2e966fe29ae41b7c3c4bc4df8dd9" +readme: "# Bazel rules for TypeScript\n\nThis is the canonical ruleset for using Bazel for TypeScript, based on\n, and recommended for all new projects.\n\nThis is a high-performance alternative to the `@bazel/typescript` npm package from rules_nodejs.\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes most usability bugs with rules_nodejs:\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\nrules_ts is just a part of what Aspect provides:\n\n- _Need help?_ This ruleset has support provided by https://aspect.dev.\n- See our other Bazel rules, especially those built for rules_js, linked from \n\nKnown issues:\n\n- Does not work with `--worker_sandboxing`.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n\n## Examples\n\nThere are a number of examples in [the examples/ folder](./examples/).\n\nIf you'd like an example added, you can file a Feature Request.\n\n## Usage\n\nSee the API documentation in [the docs/ folder](./docs/).\n\n### From a BUILD file\n\nThe most common use is with the [`ts_project` macro](./docs/rules.md#ts_project) which invokes the\n[`tsc` CLI](https://www.typescriptlang.org/docs/handbook/compiler-options.html) to transform\nsource files like `.ts` files into outputs such as `.js` and `.d.ts` files.\n\nWe encourage you to read about the `transpiler` property which lets you use a faster tool like\nBabel or SWC to produce the `.js` files, so you don't have to wait for type-checking in your fast\ndevelopment loop.\n\n### In a macro\n\nMany organizations set default values, so it's common to write a [macro] to wrap `ts_project`, then\nensure that your developers load your macro rather than loading from `@aspect_rules_ts` directly.\n\n[macro]: https://bazel.build/extending/macros\n\n### BUILD file generation\n\nAspect provides an alpha preview of our TypeScript BUILD file generator as part of the\n[Aspect CLI](https://aspect.build/cli). Run `aspect configure` to create or update BUILD.bazel files\nas you edit TypeScript sources.\n\n### Advanced: custom rules\n\nIf you know how to write Bazel rules, you might find that `ts_project` doesn't do what you want.\n\nOne way to customize it is to peel off one layer of indirection, by calling the `ts_project_rule`\ndirectly. This bypasses our default setting logic, and also the validation program which checks that\nts_project attributes are well-formed.\n\nYou can also write a custom rule from scratch. We expose helper functions from /ts/private in this\nrepo. Be aware that these are not a public API, so you may have to account for breaking changes\nwhich aren't subject to our usual semver policy.\n" +release: { + title: "v1.0.0-rc6" + description: "## Using [Bzlmod] with Bazel 6:\n\nAdd to your `MODULE.bazel` file:\n\n```starlark\nbazel_dep(name = \"aspect_rules_ts\", version = \"1.0.0-rc6\")\n\nrules_ts_ext = use_extension(\n \"@aspect_rules_ts//ts:extensions.bzl\",\n \"ext\",\n dev_dependency = True,\n)\n\nrules_ts_ext.deps()\n\nuse_repo(rules_ts_ext, \"npm_typescript\")\n\nuse_repo(rules_ts_ext, \"npm_google_protobuf\")\n\nuse_repo(rules_ts_ext, \"npm_at_bazel_worker\")\n```\n\n[Bzlmod]: https://bazel.build/build/bzlmod\n\n## Using WORKSPACE\n\nPaste this snippet into your `WORKSPACE` file:\n\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"1ed2dc702b3d5fcf2b8e6ca4a5dae23fbc8e5570643d2a5cf8f5f09c7c44bc15\",\n strip_prefix = \"rules_ts-1.0.0-rc6\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v1.0.0-rc6.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* chore: update workspace deps to latest by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/221\n* chore: rename VERSIONS to TOOL_VERSIONS (for consistency with other rule sets) add comment about order by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/222\n* chore: updates for bzlmod launch by @alexeagle in https://github.com/aspect-build/rules_ts/pull/229\n* fix: document tsc with more heap by @alexeagle in https://github.com/aspect-build/rules_ts/pull/230\n* docs: add troubleshooting guide by @alexeagle in https://github.com/aspect-build/rules_ts/pull/232\n* fix: update deps and fix worker tests by @thesayyn in https://github.com/aspect-build/rules_ts/pull/226\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.0.0-rc5...v1.0.0-rc6" + preprelease: true + publish_time: { + seconds: 1667851418 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.3.0" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.3" + dev_dependency: true + } + dependencies: { + name: "aspect_rules_js" + version: "1.6.3" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.15.0" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc6/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc6/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc6/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc6/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc6/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc6/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc7/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc7/METADATA new file mode 100644 index 0000000..44cf17e --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc7/METADATA @@ -0,0 +1,33 @@ +ref: "v1.0.0-rc7" +sha: "83139d3d386e5de6a63751c57bbc81a0c7f7b7d8" +readme: "# Bazel rules for TypeScript\n\nThis is the canonical ruleset for using Bazel for TypeScript, based on\n, and recommended for all new projects.\n\nThis is a high-performance alternative to the `@bazel/typescript` npm package from rules_nodejs.\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes most usability bugs with rules_nodejs:\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\nrules_ts is just a part of what Aspect provides:\n\n- _Need help?_ This ruleset has support provided by https://aspect.dev.\n- See our other Bazel rules, especially those built for rules_js, linked from \n\nKnown issues:\n\n- Does not work with `--worker_sandboxing`. See https://github.com/aspect-build/rules_ts/issues/127#issuecomment-1312041592\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n\n## Examples\n\nThere are a number of examples in [the examples/ folder](./examples/).\n\nIf you'd like an example added, you can file a Feature Request.\n\n## Usage\n\nSee the API documentation in [the docs/ folder](./docs/).\n\n### From a BUILD file\n\nThe most common use is with the [`ts_project` macro](./docs/rules.md#ts_project) which invokes the\n[`tsc` CLI](https://www.typescriptlang.org/docs/handbook/compiler-options.html) to transform\nsource files like `.ts` files into outputs such as `.js` and `.d.ts` files.\n\nWe encourage you to read about the `transpiler` property which lets you use a faster tool like\nBabel or SWC to produce the `.js` files, so you don't have to wait for type-checking in your fast\ndevelopment loop.\n\n### In a macro\n\nMany organizations set default values, so it's common to write a [macro] to wrap `ts_project`, then\nensure that your developers load your macro rather than loading from `@aspect_rules_ts` directly.\n\n[macro]: https://bazel.build/extending/macros\n\n### BUILD file generation\n\nAspect provides an alpha preview of our TypeScript BUILD file generator as part of the\n[Aspect CLI](https://aspect.build/cli). Run `aspect configure` to create or update BUILD.bazel files\nas you edit TypeScript sources.\n\n### Advanced: custom rules\n\nIf you know how to write Bazel rules, you might find that `ts_project` doesn't do what you want.\n\nOne way to customize it is to peel off one layer of indirection, by calling the `ts_project_rule`\ndirectly. This bypasses our default setting logic, and also the validation program which checks that\nts_project attributes are well-formed.\n\nYou can also write a custom rule from scratch. We expose helper functions from /ts/private in this\nrepo. Be aware that these are not a public API, so you may have to account for breaking changes\nwhich aren't subject to our usual semver policy.\n" +release: { + title: "v1.0.0-rc7" + description: "## Using [Bzlmod] with Bazel 6:\n\nAdd to your `MODULE.bazel` file:\n\n```starlark\nbazel_dep(name = \"aspect_rules_ts\", version = \"1.0.0-rc7\")\n\nrules_ts_ext = use_extension(\n \"@aspect_rules_ts//ts:extensions.bzl\",\n \"ext\",\n dev_dependency = True,\n)\n\nrules_ts_ext.deps()\n\nuse_repo(rules_ts_ext, \"npm_typescript\")\n\nuse_repo(rules_ts_ext, \"npm_google_protobuf\")\n\nuse_repo(rules_ts_ext, \"npm_at_bazel_worker\")\n```\n\n[Bzlmod]: https://bazel.build/build/bzlmod\n\n## Using WORKSPACE\n\nPaste this snippet into your `WORKSPACE` file:\n\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"555f408bf664e553eb148f22dc2da9e82177413bd08d2d19180340962cf3ff86\",\n strip_prefix = \"rules_ts-1.0.0-rc7\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v1.0.0-rc7.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* chore: update to rules_jasmine 0.2.1 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/234\n* chore: update to rules_js 1.6.8 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/235\n* fix: remove /node_modules/. from ignored paths by @thesayyn in https://github.com/aspect-build/rules_ts/pull/185\n* fix: take project rescaling into consideration by @thesayyn in https://github.com/aspect-build/rules_ts/pull/237\n* docs: clarify why --worker_sandboxing does not work by @thesayyn in https://github.com/aspect-build/rules_ts/pull/241\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.0.0-rc6...v1.0.0-rc7" + preprelease: true + publish_time: { + seconds: 1668274258 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.3.0" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.3" + dev_dependency: true + } + dependencies: { + name: "aspect_rules_js" + version: "1.6.3" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.15.0" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc7/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc7/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc7/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc7/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc7/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc7/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc8/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc8/METADATA new file mode 100644 index 0000000..ba3f540 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc8/METADATA @@ -0,0 +1,33 @@ +ref: "v1.0.0-rc8" +sha: "b424e546e810d405b479eb92634ff95b6aa6644b" +readme: "# Bazel rules for TypeScript\n\nThis is the canonical ruleset for using Bazel for TypeScript, based on\n, and recommended for all new projects.\n\nThis is a high-performance alternative to the `@bazel/typescript` npm package from rules_nodejs.\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes most usability bugs with rules_nodejs:\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\nrules_ts is just a part of what Aspect provides:\n\n- _Need help?_ This ruleset has support provided by https://aspect.dev.\n- See our other Bazel rules, especially those built for rules_js, linked from \n\nKnown issues:\n\n- Does not work with `--worker_sandboxing`. See https://github.com/aspect-build/rules_ts/issues/127#issuecomment-1312041592\n- Workers are disabled and not currently supported on Windows hosts. See https://github.com/aspect-build/rules_ts/issues/228.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n\n## Examples\n\nThere are a number of examples in [the examples/ folder](./examples/).\n\nIf you'd like an example added, you can file a Feature Request.\n\n## Usage\n\nSee the API documentation in [the docs/ folder](./docs/).\n\n### From a BUILD file\n\nThe most common use is with the [`ts_project` macro](./docs/rules.md#ts_project) which invokes the\n[`tsc` CLI](https://www.typescriptlang.org/docs/handbook/compiler-options.html) to transform\nsource files like `.ts` files into outputs such as `.js` and `.d.ts` files.\n\nWe encourage you to read about the `transpiler` property which lets you use a faster tool like\nBabel or SWC to produce the `.js` files, so you don't have to wait for type-checking in your fast\ndevelopment loop.\n\n### In a macro\n\nMany organizations set default values, so it's common to write a [macro] to wrap `ts_project`, then\nensure that your developers load your macro rather than loading from `@aspect_rules_ts` directly.\n\n[macro]: https://bazel.build/extending/macros\n\n### BUILD file generation\n\nAspect provides an alpha preview of our TypeScript BUILD file generator as part of the\n[Aspect CLI](https://aspect.build/cli). Run `aspect configure` to create or update BUILD.bazel files\nas you edit TypeScript sources.\n\n### Advanced: custom rules\n\nIf you know how to write Bazel rules, you might find that `ts_project` doesn't do what you want.\n\nOne way to customize it is to peel off one layer of indirection, by calling the `ts_project_rule`\ndirectly. This bypasses our default setting logic, and also the validation program which checks that\nts_project attributes are well-formed.\n\nYou can also write a custom rule from scratch. We expose helper functions from /ts/private in this\nrepo. Be aware that these are not a public API, so you may have to account for breaking changes\nwhich aren't subject to our usual semver policy.\n" +release: { + title: "v1.0.0-rc8" + description: "## Using [Bzlmod] with Bazel 6:\n\nAdd to your `MODULE.bazel` file:\n\n```starlark\nbazel_dep(name = \"aspect_rules_ts\", version = \"1.0.0-rc8\")\n\nrules_ts_ext = use_extension(\n \"@aspect_rules_ts//ts:extensions.bzl\",\n \"ext\",\n dev_dependency = True,\n)\n\nrules_ts_ext.deps()\n\nuse_repo(rules_ts_ext, \"npm_typescript\")\n\nuse_repo(rules_ts_ext, \"npm_google_protobuf\")\n\nuse_repo(rules_ts_ext, \"npm_at_bazel_worker\")\n```\n\n[Bzlmod]: https://bazel.build/build/bzlmod\n\n## Using WORKSPACE\n\nPaste this snippet into your `WORKSPACE` file:\n\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"8993bfa4e4cae08a2c95df070197a8f3a77f8f186da3031344275254f61e936b\",\n strip_prefix = \"rules_ts-1.0.0-rc8\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v1.0.0-rc8.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* test: assert external tsconfig is usable with workers by @thesayyn in https://github.com/aspect-build/rules_ts/pull/239\n* fix: support non-file transpiler srcs by @jbedard in https://github.com/aspect-build/rules_ts/pull/236\n* chore: cleanup macro that was upstreamed by @alexeagle in https://github.com/aspect-build/rules_ts/pull/243\n* fix: disable workers on Windows due to #228 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/245\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.0.0-rc7...v1.0.0-rc8" + preprelease: true + publish_time: { + seconds: 1668643484 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.3.0" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.3" + dev_dependency: true + } + dependencies: { + name: "aspect_rules_js" + version: "1.6.3" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.15.0" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc8/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc8/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc8/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc8/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc8/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0-rc8/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0/METADATA new file mode 100644 index 0000000..4a52bec --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0/METADATA @@ -0,0 +1,32 @@ +ref: "v1.0.0" +sha: "2e6c468d51361891a664da5d74af2116420a671a" +readme: "# Bazel rules for TypeScript\n\nThis is the canonical ruleset for using Bazel for TypeScript, based on\n, and recommended for all new projects.\n\nThis is a high-performance alternative to the `@bazel/typescript` npm package from rules_nodejs.\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes most usability bugs with rules_nodejs:\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\nrules_ts is just a part of what Aspect provides:\n\n- _Need help?_ This ruleset has support provided by https://aspect.dev.\n- See our other Bazel rules, especially those built for rules_js, linked from \n\nKnown issues:\n\n- Does not work with `--worker_sandboxing`. See https://github.com/aspect-build/rules_ts/issues/127#issuecomment-1312041592\n- Workers are disabled and not currently supported on Windows hosts. See https://github.com/aspect-build/rules_ts/issues/228.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n\n## Examples\n\nThere are a number of examples in [the examples/ folder](./examples/).\n\nIf you'd like an example added, you can file a [Feature Request](https://github.com/aspect-build/rules_ts/issues/new/choose).\n\n## Usage\n\nSee the API documentation in [the docs/ folder](./docs/).\n\n### From a BUILD file\n\nThe most common use is with the [`ts_project` macro](./docs/rules.md#ts_project) which invokes the\n[`tsc` CLI](https://www.typescriptlang.org/docs/handbook/compiler-options.html) to transform\nsource files like `.ts` files into outputs such as `.js` and `.d.ts` files.\n\nWe encourage you to read about the `transpiler` property which lets you use a faster tool like\nBabel or SWC to produce the `.js` files, so you don't have to wait for type-checking in your fast\ndevelopment loop.\n\n### In a macro\n\nMany organizations set default values, so it's common to write a [macro] to wrap `ts_project`, then\nensure that your developers load your macro rather than loading from `@aspect_rules_ts` directly.\n\n[macro]: https://bazel.build/extending/macros\n\n### BUILD file generation\n\nAspect provides an alpha preview of our TypeScript BUILD file generator as part of the\n[Aspect CLI](https://aspect.build/cli). Run `aspect configure` to create or update BUILD.bazel files\nas you edit TypeScript sources.\n\n### Advanced: custom rules\n\nIf you know how to write Bazel rules, you might find that `ts_project` doesn't do what you want.\n\nOne way to customize it is to peel off one layer of indirection, by calling the `ts_project_rule`\ndirectly. This bypasses our default setting logic, and also the validation program which checks that\nts_project attributes are well-formed.\n\nYou can also write a custom rule from scratch. We expose helper functions from /ts/private in this\nrepo. Be aware that these are not a public API, so you may have to account for breaking changes\nwhich aren't subject to our usual semver policy.\n" +release: { + title: "v1.0.0" + description: "## Using [Bzlmod] with Bazel 6:\r\n\r\nAdd to your `MODULE.bazel` file:\r\n\r\n```starlark\r\nbazel_dep(name = \"aspect_rules_ts\", version = \"1.0.0\")\r\n\r\nrules_ts_ext = use_extension(\r\n \"@aspect_rules_ts//ts:extensions.bzl\",\r\n \"ext\",\r\n dev_dependency = True,\r\n)\r\n\r\nrules_ts_ext.deps()\r\n\r\nuse_repo(rules_ts_ext, \"npm_typescript\")\r\n\r\nuse_repo(rules_ts_ext, \"npm_google_protobuf\")\r\n\r\nuse_repo(rules_ts_ext, \"npm_at_bazel_worker\")\r\n```\r\n\r\n[Bzlmod]: https://bazel.build/build/bzlmod\r\n\r\n## Using WORKSPACE\r\n\r\nPaste this snippet into your `WORKSPACE` file:\r\n\r\n```starlark\r\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\r\nhttp_archive(\r\n name = \"aspect_rules_ts\",\r\n sha256 = \"f3f0d0a92b0069f8d1bf6a0e26408bd591a8626166db3f88e8d971ffed8f59ba\",\r\n strip_prefix = \"rules_ts-1.0.0\",\r\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v1.0.0.tar.gz\",\r\n)\r\n\r\n##################\r\n# rules_ts setup #\r\n##################\r\n# Fetches the rules_ts dependencies.\r\n# If you want to have a different version of some dependency,\r\n# you should fetch it *before* calling this.\r\n# Alternatively, you can skip calling this function, so long as you've\r\n# already fetched all the dependencies.\r\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\r\n\r\nrules_ts_dependencies(ts_version = LATEST_VERSION)\r\n\r\n# Fetch and register node, if you haven't already\r\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\r\n\r\nnodejs_register_toolchains(\r\n name = \"node\",\r\n node_version = DEFAULT_NODE_VERSION,\r\n)\r\n```\r\n\r\n\r\n## What's Changed\r\n* chore(deps): update dependency io_bazel_stardoc to v0.5.2 by @renovate in https://github.com/aspect-build/rules_ts/pull/116\r\n* chore(deps): update dependency bazel_gazelle to v0.26.0 by @renovate in https://github.com/aspect-build/rules_ts/pull/118\r\n* chore(deps): update dependency rules_nodejs to v5.5.3 by @renovate in https://github.com/aspect-build/rules_ts/pull/117\r\n* chore(deps): update dependency io_bazel_rules_go to v0.34.0 by @renovate in https://github.com/aspect-build/rules_ts/pull/120\r\n* chore(deps): update dependency bazel_skylib to v1.2.1 by @renovate in https://github.com/aspect-build/rules_ts/pull/119\r\n* refactor: make fstree handle watchers by @thesayyn in https://github.com/aspect-build/rules_ts/pull/108\r\n* fix: add .d.mts/.d.cts in declaration info by @jstuder-gh in https://github.com/aspect-build/rules_ts/pull/122\r\n* chore: update to rules_js 1.0.0 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/123\r\n* fix: follow symlinks in getDirectories by @thesayyn in https://github.com/aspect-build/rules_ts/pull/125\r\n* fix: ensure extends paths are relative by @alexeagle in https://github.com/aspect-build/rules_ts/pull/126\r\n* chore: update to bazel 5.2.0 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/135\r\n* chore: update to rules_js 1.1.0 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/133\r\n* chore: upgrade to typescript 4.8.2 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/136\r\n* chore: add CI on RBE by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/137\r\n* ci: run PR workflow on main repo and not forks by @jbedard in https://github.com/aspect-build/rules_ts/pull/142\r\n* chore: update to rules_js 1.1.2 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/144\r\n* chore(deps): update dependency bazel_skylib to v1.3.0 by @renovate in https://github.com/aspect-build/rules_ts/pull/143\r\n* ci: run on pull_request instead of pull_request_target by @jbedard in https://github.com/aspect-build/rules_ts/pull/145\r\n* fix: check for dangling symlinks by @thesayyn in https://github.com/aspect-build/rules_ts/pull/146\r\n* fix: add file info to error for `tsc` overreach by @vpanta in https://github.com/aspect-build/rules_ts/pull/129\r\n* fix: `ts_project` fails if `root_dir` used deep in source tree by @vpanta in https://github.com/aspect-build/rules_ts/pull/130\r\n* chore(deps): update dependency io_bazel_rules_go to v0.35.0 by @renovate in https://github.com/aspect-build/rules_ts/pull/148\r\n* chore(deps): update dependency rules_nodejs to v5.5.4 by @renovate in https://github.com/aspect-build/rules_ts/pull/147\r\n* chore: update to aspect_bazel_lib 1.11.8 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/149\r\n* chore(deps): remove bazel-integration-testing by @jbedard in https://github.com/aspect-build/rules_ts/pull/153\r\n* chore(deps): update dependency aspect_bazel_lib to v1.12.0 by @renovate in https://github.com/aspect-build/rules_ts/pull/155\r\n* chore(deps): update dependency aspect_rules_js to v1.3.1 by @renovate in https://github.com/aspect-build/rules_ts/pull/156\r\n* docs: mention --worker_sandboxing incompatibility by @tsawada in https://github.com/aspect-build/rules_ts/pull/154\r\n* chore: update to aspect_bazel_lib 1.12.1 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/164\r\n* chore(deps): update dependency aspect_rules_js to v1.4.0 by @renovate in https://github.com/aspect-build/rules_ts/pull/165\r\n* chore: add example --config=debug settings to .bazelrc.common and example debuggle target with sourcemaps back to .ts sources by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/168\r\n* chore(deps): update dependency rules_nodejs to v5.6.0 by @renovate in https://github.com/aspect-build/rules_ts/pull/157\r\n* fix: report failedLookups twice by @thesayyn in https://github.com/aspect-build/rules_ts/pull/169\r\n* test: add path_mapping example by @jbedard in https://github.com/aspect-build/rules_ts/pull/172\r\n* fix: validate preserveSymlinks tsconfig option is not set by @jbedard in https://github.com/aspect-build/rules_ts/pull/171\r\n* fix: allow composite projects by @alexeagle in https://github.com/aspect-build/rules_ts/pull/176\r\n* refactor: TsConfigInfo uses depsets by @alexeagle in https://github.com/aspect-build/rules_ts/pull/178\r\n* fix: validate tsconfig dictionary values by @jbedard in https://github.com/aspect-build/rules_ts/pull/173\r\n* Chore/export ts config by @sallustfire in https://github.com/aspect-build/rules_ts/pull/174\r\n* fix: prevent worker from running oom by @thesayyn in https://github.com/aspect-build/rules_ts/pull/182\r\n* fix: prefix host call by @thesayyn in https://github.com/aspect-build/rules_ts/pull/184\r\n* fix: remove unused validate_options(has_local_deps) by @jbedard in https://github.com/aspect-build/rules_ts/pull/200\r\n* fix: .tsbuildinfo is not written in subsequent builds by @thesayyn in https://github.com/aspect-build/rules_ts/pull/187\r\n* chore: account for github actions deprecation by @alexeagle in https://github.com/aspect-build/rules_ts/pull/201\r\n* fix(ts_lib): omit \".\" segments in path joining by @alexeagle in https://github.com/aspect-build/rules_ts/pull/205\r\n* fix(docs): introduce tsc_test example by @alexeagle in https://github.com/aspect-build/rules_ts/pull/207\r\n* chore: rename declaration_only example by @alexeagle in https://github.com/aspect-build/rules_ts/pull/208\r\n* feat: add ts_project(deps) validation ensuring all deps of declarations by @jbedard in https://github.com/aspect-build/rules_ts/pull/199\r\n* docs: rename json example to match TS compiler option by @alexeagle in https://github.com/aspect-build/rules_ts/pull/210\r\n* docs: cleanup declaration_dir example by @alexeagle in https://github.com/aspect-build/rules_ts/pull/209\r\n* test: add case for filegroup of srcs by @alexeagle in https://github.com/aspect-build/rules_ts/pull/211\r\n* docs: show example of different module outputs by @alexeagle in https://github.com/aspect-build/rules_ts/pull/212\r\n* docs: add custom compiler example by @alexeagle in https://github.com/aspect-build/rules_ts/pull/213\r\n* docs: add root_dir example by @alexeagle in https://github.com/aspect-build/rules_ts/pull/214\r\n* docs: improve readability: extract transpiler/tsconfig to standalone by @alexeagle in https://github.com/aspect-build/rules_ts/pull/215\r\n* chore: fixes to doc presentation by @alexeagle in https://github.com/aspect-build/rules_ts/pull/216\r\n* chore: update to Bazel 6.0.0rc1 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/217\r\n* fix: fix bzlmod with Bazel 6.0.0rc1 and enable e2e/bzlmod on CI by @alexeagle in https://github.com/aspect-build/rules_ts/pull/197\r\n* chore: cleanup maybe pattern by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/218\r\n* fix: support --experimental_allow_unresolved_symlinks flag by @thesayyn in https://github.com/aspect-build/rules_ts/pull/202\r\n* chore: update workspace deps to latest by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/221\r\n* chore: rename VERSIONS to TOOL_VERSIONS (for consistency with other rule sets) add comment about order by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/222\r\n* chore: updates for bzlmod launch by @alexeagle in https://github.com/aspect-build/rules_ts/pull/229\r\n* fix: document tsc with more heap by @alexeagle in https://github.com/aspect-build/rules_ts/pull/230\r\n* docs: add troubleshooting guide by @alexeagle in https://github.com/aspect-build/rules_ts/pull/232\r\n* fix: update deps and fix worker tests by @thesayyn in https://github.com/aspect-build/rules_ts/pull/226\r\n* chore: update to rules_jasmine 0.2.1 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/234\r\n* chore: update to rules_js 1.6.8 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/235\r\n* fix: remove /node_modules/. from ignored paths by @thesayyn in https://github.com/aspect-build/rules_ts/pull/185\r\n* fix: take project rescaling into consideration by @thesayyn in https://github.com/aspect-build/rules_ts/pull/237\r\n* docs: clarify why --worker_sandboxing does not work by @thesayyn in https://github.com/aspect-build/rules_ts/pull/241\r\n* test: assert external tsconfig is usable with workers by @thesayyn in https://github.com/aspect-build/rules_ts/pull/239\r\n* fix: support non-file transpiler srcs by @jbedard in https://github.com/aspect-build/rules_ts/pull/236\r\n* chore: cleanup macro that was upstreamed by @alexeagle in https://github.com/aspect-build/rules_ts/pull/243\r\n* fix: disable workers on Windows due to #228 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/245\r\n\r\n## New Contributors\r\n* @jstuder-gh made their first contribution in https://github.com/aspect-build/rules_ts/pull/122\r\n* @vpanta made their first contribution in https://github.com/aspect-build/rules_ts/pull/129\r\n* @tsawada made their first contribution in https://github.com/aspect-build/rules_ts/pull/154\r\n* @sallustfire made their first contribution in https://github.com/aspect-build/rules_ts/pull/174\r\n\r\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v0.12.0...v1.0.0" + publish_time: { + seconds: 1668643968 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.3.0" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.3" + dev_dependency: true + } + dependencies: { + name: "aspect_rules_js" + version: "1.6.3" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.15.0" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.0/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.1/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.1/METADATA new file mode 100644 index 0000000..8723cce --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.1/METADATA @@ -0,0 +1,32 @@ +ref: "v1.0.1" +sha: "0cfefd4ef1e9251021e3dad0fec668e802840582" +readme: "# Bazel rules for TypeScript\n\nThis is the canonical ruleset for using Bazel for TypeScript, based on\n, and recommended for all new projects.\n\nThis is a high-performance alternative to the `@bazel/typescript` npm package from rules_nodejs.\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes most usability bugs with rules_nodejs:\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\nrules_ts is just a part of what Aspect provides:\n\n- _Need help?_ This ruleset has support provided by https://aspect.dev.\n- See our other Bazel rules, especially those built for rules_js, linked from \n\nKnown issues:\n\n- Does not work with `--worker_sandboxing`. See https://github.com/aspect-build/rules_ts/issues/127#issuecomment-1312041592\n- Workers are disabled and not currently supported on Windows hosts. See https://github.com/aspect-build/rules_ts/issues/228.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n\n## Examples\n\nThere are a number of examples in [the examples/ folder](./examples/).\n\nIf you'd like an example added, you can file a [Feature Request](https://github.com/aspect-build/rules_ts/issues/new/choose).\n\n## Usage\n\nSee the API documentation in [the docs/ folder](./docs/).\n\n### From a BUILD file\n\nThe most common use is with the [`ts_project` macro](./docs/rules.md#ts_project) which invokes the\n[`tsc` CLI](https://www.typescriptlang.org/docs/handbook/compiler-options.html) to transform\nsource files like `.ts` files into outputs such as `.js` and `.d.ts` files.\n\nWe encourage you to read about the `transpiler` property which lets you use a faster tool like\nBabel or SWC to produce the `.js` files, so you don't have to wait for type-checking in your fast\ndevelopment loop.\n\n### In a macro\n\nMany organizations set default values, so it's common to write a [macro] to wrap `ts_project`, then\nensure that your developers load your macro rather than loading from `@aspect_rules_ts` directly.\n\n[macro]: https://bazel.build/extending/macros\n\n### BUILD file generation\n\nAspect provides an alpha preview of our TypeScript BUILD file generator as part of the\n[Aspect CLI](https://aspect.build/cli). Run `aspect configure` to create or update BUILD.bazel files\nas you edit TypeScript sources.\n\n### Advanced: custom rules\n\nIf you know how to write Bazel rules, you might find that `ts_project` doesn't do what you want.\n\nOne way to customize it is to peel off one layer of indirection, by calling the `ts_project_rule`\ndirectly. This bypasses our default setting logic, and also the validation program which checks that\nts_project attributes are well-formed.\n\nYou can also write a custom rule from scratch. We expose helper functions from /ts/private in this\nrepo. Be aware that these are not a public API, so you may have to account for breaking changes\nwhich aren't subject to our usual semver policy.\n" +release: { + title: "v1.0.1" + description: "## Using [Bzlmod] with Bazel 6:\n\nAdd to your `MODULE.bazel` file:\n\n```starlark\nbazel_dep(name = \"aspect_rules_ts\", version = \"1.0.1\")\n\nrules_ts_ext = use_extension(\n \"@aspect_rules_ts//ts:extensions.bzl\",\n \"ext\",\n dev_dependency = True,\n)\n\nrules_ts_ext.deps()\n\nuse_repo(rules_ts_ext, \"npm_typescript\")\n\nuse_repo(rules_ts_ext, \"npm_google_protobuf\")\n\nuse_repo(rules_ts_ext, \"npm_at_bazel_worker\")\n```\n\n[Bzlmod]: https://bazel.build/build/bzlmod\n\n## Using WORKSPACE\n\nPaste this snippet into your `WORKSPACE` file:\n\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"ee352308292e3985b4cbce3e1d643001dd9ba9440ceba79ac73613fd8d6c7470\",\n strip_prefix = \"rules_ts-1.0.1\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v1.0.1.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* chore: update GH actions release yaml by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/246\n* chore: update to rules_js 1.7.0 & aspect_bazel_lib 1.16.3 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/248\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.0.0...v1.0.1" + publish_time: { + seconds: 1668918135 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.3.0" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.3" + dev_dependency: true + } + dependencies: { + name: "aspect_rules_js" + version: "1.7.0" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.16.3" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.1/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.1/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.1/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.1/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.1/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.1/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.2/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.2/METADATA new file mode 100644 index 0000000..77eb23f --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.2/METADATA @@ -0,0 +1,32 @@ +ref: "v1.0.2" +sha: "7eda58b653ecfbc0dde2d3f3453edb82c176feda" +readme: "# Bazel rules for TypeScript\n\nThis is the canonical ruleset for using Bazel for TypeScript, based on\n, and recommended for all new projects.\n\nThis is a high-performance alternative to the `@bazel/typescript` npm package from rules_nodejs.\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes most usability bugs with rules_nodejs:\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\nrules_ts is just a part of what Aspect provides:\n\n- _Need help?_ This ruleset has support provided by https://aspect.dev.\n- See our other Bazel rules, especially those built for rules_js, linked from \n\nKnown issues:\n\n- Does not work with `--worker_sandboxing`. See https://github.com/aspect-build/rules_ts/issues/127#issuecomment-1312041592\n- Workers are disabled and not currently supported on Windows hosts. See https://github.com/aspect-build/rules_ts/issues/228.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n\n## Examples\n\nThere are a number of examples in [the examples/ folder](./examples/).\n\nIf you'd like an example added, you can file a [Feature Request](https://github.com/aspect-build/rules_ts/issues/new/choose).\n\n## Usage\n\nSee the API documentation in [the docs/ folder](./docs/).\n\n### From a BUILD file\n\nThe most common use is with the [`ts_project` macro](./docs/rules.md#ts_project) which invokes the\n[`tsc` CLI](https://www.typescriptlang.org/docs/handbook/compiler-options.html) to transform\nsource files like `.ts` files into outputs such as `.js` and `.d.ts` files.\n\nWe encourage you to read about the `transpiler` property which lets you use a faster tool like\nBabel or SWC to produce the `.js` files, so you don't have to wait for type-checking in your fast\ndevelopment loop.\n\n### In a macro\n\nMany organizations set default values, so it's common to write a [macro] to wrap `ts_project`, then\nensure that your developers load your macro rather than loading from `@aspect_rules_ts` directly.\n\n[macro]: https://bazel.build/extending/macros\n\n### BUILD file generation\n\nAspect provides an alpha preview of our TypeScript BUILD file generator as part of the\n[Aspect CLI](https://aspect.build/cli). Run `aspect configure` to create or update BUILD.bazel files\nas you edit TypeScript sources.\n\n### Advanced: custom rules\n\nIf you know how to write Bazel rules, you might find that `ts_project` doesn't do what you want.\n\nOne way to customize it is to peel off one layer of indirection, by calling the `ts_project_rule`\ndirectly. This bypasses our default setting logic, and also the validation program which checks that\nts_project attributes are well-formed.\n\nYou can also write a custom rule from scratch. We expose helper functions from /ts/private in this\nrepo. Be aware that these are not a public API, so you may have to account for breaking changes\nwhich aren't subject to our usual semver policy.\n" +release: { + title: "v1.0.2" + description: "## Using [Bzlmod] with Bazel 6:\n\nAdd to your `MODULE.bazel` file:\n\n```starlark\nbazel_dep(name = \"aspect_rules_ts\", version = \"1.0.2\")\n\nrules_ts_ext = use_extension(\n \"@aspect_rules_ts//ts:extensions.bzl\",\n \"ext\",\n dev_dependency = True,\n)\n\nrules_ts_ext.deps()\n\nuse_repo(rules_ts_ext, \"npm_typescript\")\n\nuse_repo(rules_ts_ext, \"npm_google_protobuf\")\n\nuse_repo(rules_ts_ext, \"npm_at_bazel_worker\")\n```\n\n[Bzlmod]: https://bazel.build/build/bzlmod\n\n## Using WORKSPACE\n\nPaste this snippet into your `WORKSPACE` file:\n\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"5b501313118b06093497b6429f124b973f99d1eb5a27a1cc372e5d6836360e9d\",\n strip_prefix = \"rules_ts-1.0.2\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v1.0.2.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(ts_version = LATEST_VERSION)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* chore: update to bazel 6.0.0rc2 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/249\n* chore: mirror recent typescript versions by @alexeagle in https://github.com/aspect-build/rules_ts/pull/251\n* ci: fix broken main by @alexeagle in https://github.com/aspect-build/rules_ts/pull/252\n* chore: update to rules_js 1.8.0 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/254\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.0.1...v1.0.2" + publish_time: { + seconds: 1669257034 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.3.0" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.3" + dev_dependency: true + } + dependencies: { + name: "aspect_rules_js" + version: "1.8.0" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.16.3" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.2/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.2/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.2/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.2/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.2/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.2/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.3/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.3/METADATA new file mode 100644 index 0000000..607238b --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.3/METADATA @@ -0,0 +1,32 @@ +ref: "v1.0.3" +sha: "ff935fd6761c2524abbc8c619ebaadc5d8f6f7b2" +readme: "# Bazel rules for TypeScript\n\nThis is the canonical ruleset for using Bazel for TypeScript, based on\n, and recommended for all new projects.\n\nThis is a high-performance alternative to the `@bazel/typescript` npm package from rules_nodejs.\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes most usability bugs with rules_nodejs:\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\nrules_ts is just a part of what Aspect provides:\n\n- _Need help?_ This ruleset has support provided by https://aspect.dev.\n- See our other Bazel rules, especially those built for rules_js, linked from \n\nKnown issues:\n\n- Does not work with `--worker_sandboxing`. See https://github.com/aspect-build/rules_ts/issues/127#issuecomment-1312041592\n- Workers are disabled and not currently supported on Windows hosts. See https://github.com/aspect-build/rules_ts/issues/228.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n\n## Examples\n\nThere are a number of examples in [the examples/ folder](./examples/).\n\nIf you'd like an example added, you can file a [Feature Request](https://github.com/aspect-build/rules_ts/issues/new/choose).\n\n## Usage\n\nSee the API documentation in [the docs/ folder](./docs/).\n\n### From a BUILD file\n\nThe most common use is with the [`ts_project` macro](./docs/rules.md#ts_project) which invokes the\n[`tsc` CLI](https://www.typescriptlang.org/docs/handbook/compiler-options.html) to transform\nsource files like `.ts` files into outputs such as `.js` and `.d.ts` files.\n\nWe encourage you to read about the `transpiler` property which lets you use a faster tool like\nBabel or SWC to produce the `.js` files, so you don't have to wait for type-checking in your fast\ndevelopment loop.\n\n### In a macro\n\nMany organizations set default values, so it's common to write a [macro] to wrap `ts_project`, then\nensure that your developers load your macro rather than loading from `@aspect_rules_ts` directly.\n\n[macro]: https://bazel.build/extending/macros\n\n### BUILD file generation\n\nAspect provides an alpha preview of our TypeScript BUILD file generator as part of the\n[Aspect CLI](https://aspect.build/cli). Run `aspect configure` to create or update BUILD.bazel files\nas you edit TypeScript sources.\n\n### Advanced: custom rules\n\nIf you know how to write Bazel rules, you might find that `ts_project` doesn't do what you want.\n\nOne way to customize it is to peel off one layer of indirection, by calling the `ts_project_rule`\ndirectly. This bypasses our default setting logic, and also the validation program which checks that\nts_project attributes are well-formed.\n\nYou can also write a custom rule from scratch. We expose helper functions from /ts/private in this\nrepo. Be aware that these are not a public API, so you may have to account for breaking changes\nwhich aren't subject to our usual semver policy.\n" +release: { + title: "v1.0.3" + description: "## Using [Bzlmod] with Bazel 6:\n\nAdd to your `MODULE.bazel` file:\n\n```starlark\nbazel_dep(name = \"aspect_rules_ts\", version = \"1.0.3\")\n\nrules_ts_ext = use_extension(\n \"@aspect_rules_ts//ts:extensions.bzl\",\n \"ext\",\n dev_dependency = True,\n)\n\nrules_ts_ext.deps()\n\nuse_repo(rules_ts_ext, \"npm_typescript\")\n\nuse_repo(rules_ts_ext, \"npm_google_protobuf\")\n\nuse_repo(rules_ts_ext, \"npm_at_bazel_worker\")\n```\n\n[Bzlmod]: https://bazel.build/build/bzlmod\n\n## Using WORKSPACE\n\nPaste this snippet into your `WORKSPACE` file:\n\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"e731efead7d7ab34eb346e5081245083f75536d89f1686519a40247e8175469c\",\n strip_prefix = \"rules_ts-1.0.3\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v1.0.3.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(\n # This keeps the TypeScript version in-sync with the editor, which is typically best.\n ts_version_from = \"//:package.json\",\n\n # Alternatively, you could pick a specific version, or use\n # load(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\")\n # ts_version = LATEST_VERSION\n)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* chore: bump example package.json deps by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/255\n* doc: update snippet to suggest ts_version_from by @alexeagle in https://github.com/aspect-build/rules_ts/pull/258\n* chore: update to Bazel 6.0.0rc3 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/260\n* chore: cleanup transpiler_test_suite test by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/263\n* fix: fix cascading rebuilds by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/261\n* chore: bump to Bazel 6.0.0rc4 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/265\n* chore: update to aspect_bazel_lib 1.8.0 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/266\n* chore: use Aspect CLI 5.0.2 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/267\n* fix: report changes in deleted, created, changed order by @thesayyn in https://github.com/aspect-build/rules_ts/pull/259\n* chore: update to rules_js 1.11.0 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/269\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.0.2...v1.0.3" + publish_time: { + seconds: 1670550503 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.3.0" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.3" + dev_dependency: true + } + dependencies: { + name: "aspect_rules_js" + version: "1.11.0" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.18.0" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.3/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.3/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.3/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.3/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.3/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.3/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.4/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.4/METADATA new file mode 100644 index 0000000..b620841 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.4/METADATA @@ -0,0 +1,32 @@ +ref: "v1.0.4" +sha: "824ec8364a63d50d2be59d6ae0b8763ff764e4e5" +readme: "# Bazel rules for TypeScript\n\nThis is the canonical ruleset for using Bazel for TypeScript, based on\n, and recommended for all new projects.\n\nThis is a high-performance alternative to the `@bazel/typescript` npm package from rules_nodejs.\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes most usability bugs with rules_nodejs:\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\nrules_ts is just a part of what Aspect provides:\n\n- _Need help?_ This ruleset has support provided by https://aspect.dev.\n- See our other Bazel rules, especially those built for rules_js, linked from \n\nKnown issues:\n\n- Does not work with `--worker_sandboxing`. See https://github.com/aspect-build/rules_ts/issues/127#issuecomment-1312041592\n- Workers are disabled and not currently supported on Windows hosts. See https://github.com/aspect-build/rules_ts/issues/228.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n\n## Examples\n\nThere are a number of examples in [the examples/ folder](./examples/).\n\nIf you'd like an example added, you can file a [Feature Request](https://github.com/aspect-build/rules_ts/issues/new/choose).\n\n## Usage\n\nSee the API documentation in [the docs/ folder](./docs/).\n\n### From a BUILD file\n\nThe most common use is with the [`ts_project` macro](./docs/rules.md#ts_project) which invokes the\n[`tsc` CLI](https://www.typescriptlang.org/docs/handbook/compiler-options.html) to transform\nsource files like `.ts` files into outputs such as `.js` and `.d.ts` files.\n\nWe encourage you to read about the `transpiler` property which lets you use a faster tool like\nBabel or SWC to produce the `.js` files, so you don't have to wait for type-checking in your fast\ndevelopment loop.\n\n### In a macro\n\nMany organizations set default values, so it's common to write a [macro] to wrap `ts_project`, then\nensure that your developers load your macro rather than loading from `@aspect_rules_ts` directly.\n\n[macro]: https://bazel.build/extending/macros\n\n### BUILD file generation\n\nAspect provides an alpha preview of our TypeScript BUILD file generator as part of the\n[Aspect CLI](https://aspect.build/cli). Run `aspect configure` to create or update BUILD.bazel files\nas you edit TypeScript sources.\n\n### Advanced: custom rules\n\nIf you know how to write Bazel rules, you might find that `ts_project` doesn't do what you want.\n\nOne way to customize it is to peel off one layer of indirection, by calling the `ts_project_rule`\ndirectly. This bypasses our default setting logic, and also the validation program which checks that\nts_project attributes are well-formed.\n\nYou can also write a custom rule from scratch. We expose helper functions from /ts/private in this\nrepo. Be aware that these are not a public API, so you may have to account for breaking changes\nwhich aren't subject to our usual semver policy.\n" +release: { + title: "v1.0.4" + description: "## Using [Bzlmod] with Bazel 6:\n\nAdd to your `MODULE.bazel` file:\n\n```starlark\nbazel_dep(name = \"aspect_rules_ts\", version = \"1.0.4\")\n\nrules_ts_ext = use_extension(\n \"@aspect_rules_ts//ts:extensions.bzl\",\n \"ext\",\n dev_dependency = True,\n)\n\nrules_ts_ext.deps()\n\nuse_repo(rules_ts_ext, \"npm_typescript\")\n\nuse_repo(rules_ts_ext, \"npm_google_protobuf\")\n\nuse_repo(rules_ts_ext, \"npm_at_bazel_worker\")\n```\n\n[Bzlmod]: https://bazel.build/build/bzlmod\n\n## Using WORKSPACE\n\nPaste this snippet into your `WORKSPACE` file:\n\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"e81f37c4fe014fc83229e619360d51bfd6cb8ac405a7e8018b4a362efa79d000\",\n strip_prefix = \"rules_ts-1.0.4\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v1.0.4.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(\n # This keeps the TypeScript version in-sync with the editor, which is typically best.\n ts_version_from = \"//:package.json\",\n\n # Alternatively, you could pick a specific version, or use\n # load(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\")\n # ts_version = LATEST_VERSION\n)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* chore: update to rules_js 1.11.1 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/270\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.0.3...v1.0.4" + publish_time: { + seconds: 1670606766 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.3.0" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.3" + dev_dependency: true + } + dependencies: { + name: "aspect_rules_js" + version: "1.11.1" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.18.0" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.4/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.4/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.4/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.4/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.4/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.4/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.5/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.5/METADATA new file mode 100644 index 0000000..8f4bf64 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.5/METADATA @@ -0,0 +1,32 @@ +ref: "v1.0.5" +sha: "007d1ab8f168879cad4ba6b741e8c6def20aa262" +readme: "# Bazel rules for TypeScript\n\nThis is the canonical ruleset for using Bazel for TypeScript, based on\n, and recommended for all new projects.\n\nThis is a high-performance alternative to the `@bazel/typescript` npm package from rules_nodejs.\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes most usability bugs with rules_nodejs:\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\nrules_ts is just a part of what Aspect provides:\n\n- _Need help?_ This ruleset has support provided by https://aspect.dev.\n- See our other Bazel rules, especially those built for rules_js, linked from \n\nKnown issues:\n\n- Does not work with `--worker_sandboxing`. See https://github.com/aspect-build/rules_ts/issues/127#issuecomment-1312041592\n- Workers are disabled and not currently supported on Windows hosts. See https://github.com/aspect-build/rules_ts/issues/228.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n\n## Examples\n\nThere are a number of examples in [the examples/ folder](https://github.com/aspect-build/rules_ts/tree/main/examples).\n\nIf you'd like an example added, you can file a [Feature Request](https://github.com/aspect-build/rules_ts/issues/new/choose).\n\n## Usage\n\nSee the API documentation in [the docs/ folder](https://github.com/aspect-build/rules_ts/tree/main/docs).\n\n### From a BUILD file\n\nThe most common use is with the [`ts_project` macro](./docs/rules.md#ts_project) which invokes the\n[`tsc` CLI](https://www.typescriptlang.org/docs/handbook/compiler-options.html) to transform\nsource files like `.ts` files into outputs such as `.js` and `.d.ts` files.\n\nWe encourage you to read about the `transpiler` property which lets you use a faster tool like\nBabel or SWC to produce the `.js` files, so you don't have to wait for type-checking in your fast\ndevelopment loop.\n\n### In a macro\n\nMany organizations set default values, so it's common to write a [macro] to wrap `ts_project`, then\nensure that your developers load your macro rather than loading from `@aspect_rules_ts` directly.\n\n[macro]: https://bazel.build/extending/macros\n\n### BUILD file generation\n\nAspect provides an alpha preview of our TypeScript BUILD file generator as part of the\n[Aspect CLI](https://aspect.build/cli). Run `aspect configure` to create or update BUILD.bazel files\nas you edit TypeScript sources.\n\n### Advanced: custom rules\n\nIf you know how to write Bazel rules, you might find that `ts_project` doesn't do what you want.\n\nOne way to customize it is to peel off one layer of indirection, by calling the `ts_project_rule`\ndirectly. This bypasses our default setting logic, and also the validation program which checks that\nts_project attributes are well-formed.\n\nYou can also write a custom rule from scratch. We expose helper functions from /ts/private in this\nrepo. Be aware that these are not a public API, so you may have to account for breaking changes\nwhich aren't subject to our usual semver policy.\n" +release: { + title: "v1.0.5" + description: "## Using [Bzlmod] with Bazel 6:\n\nAdd to your `MODULE.bazel` file:\n\n```starlark\nbazel_dep(name = \"aspect_rules_ts\", version = \"1.0.5\")\n\nrules_ts_ext = use_extension(\n \"@aspect_rules_ts//ts:extensions.bzl\",\n \"ext\",\n dev_dependency = True,\n)\n\nrules_ts_ext.deps()\n\nuse_repo(rules_ts_ext, \"npm_typescript\")\n\nuse_repo(rules_ts_ext, \"npm_google_protobuf\")\n\nuse_repo(rules_ts_ext, \"npm_at_bazel_worker\")\n```\n\n[Bzlmod]: https://bazel.build/build/bzlmod\n\n## Using WORKSPACE\n\nPaste this snippet into your `WORKSPACE` file:\n\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"6406905c5f7c5ca6dedcca5dacbffbf32bb2a5deb77f50da73e7195b2b7e8cbc\",\n strip_prefix = \"rules_ts-1.0.5\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v1.0.5.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(\n # This keeps the TypeScript version in-sync with the editor, which is typically best.\n ts_version_from = \"//:package.json\",\n\n # Alternatively, you could pick a specific version, or use\n # load(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\")\n # ts_version = LATEST_VERSION\n)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n```\n\n\n## What's Changed\n* Document persistent workers in troubleshooting by @alexeagle in https://github.com/aspect-build/rules_ts/pull/274\n* chore: update tool versions to include TS 4.9.4 by @jstuder-gh in https://github.com/aspect-build/rules_ts/pull/277\n* chore: fixup links for new docsite by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/283\n* chore: update to Bazel 6.0.0 and Aspect CLI 5.1.1 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/285\n* chore: update to aspect_rules_js 1.13.0 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/286\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.0.4...v1.0.5" + publish_time: { + seconds: 1672819858 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.3.0" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.3" + dev_dependency: true + } + dependencies: { + name: "aspect_rules_js" + version: "1.13.0" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.19.0" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.5/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.5/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.5/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.5/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.5/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.0.5/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.1.0/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.1.0/METADATA new file mode 100644 index 0000000..6d4d830 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.1.0/METADATA @@ -0,0 +1,32 @@ +ref: "v1.1.0" +sha: "ec1e17506853bf9dce6674460e85bccad39fee16" +readme: "# Bazel rules for TypeScript\n\nThis is the canonical ruleset for using Bazel for TypeScript, based on\n, and recommended for all new projects.\n\nThis is a high-performance alternative to the `@bazel/typescript` npm package from rules_nodejs.\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes most usability bugs with rules_nodejs:\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\nrules_ts is just a part of what Aspect provides:\n\n- _Need help?_ This ruleset has support provided by https://aspect.dev.\n- See our other Bazel rules, especially those built for rules_js, linked from \n\nKnown issues:\n\n- Does not work with `--worker_sandboxing`. See https://github.com/aspect-build/rules_ts/issues/127#issuecomment-1312041592\n- Workers are disabled and not currently supported on Windows hosts. See https://github.com/aspect-build/rules_ts/issues/228.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n\n## Examples\n\nThere are a number of examples in [the examples/ folder](https://github.com/aspect-build/rules_ts/tree/main/examples).\n\nIf you'd like an example added, you can file a [Feature Request](https://github.com/aspect-build/rules_ts/issues/new/choose).\n\n## Usage\n\nSee the API documentation in [the docs/ folder](https://github.com/aspect-build/rules_ts/tree/main/docs).\n\n### From a BUILD file\n\nThe most common use is with the [`ts_project` macro](./docs/rules.md#ts_project) which invokes the\n[`tsc` CLI](https://www.typescriptlang.org/docs/handbook/compiler-options.html) to transform\nsource files like `.ts` files into outputs such as `.js` and `.d.ts` files.\n\nWe encourage you to read about the `transpiler` property which lets you use a faster tool like\nBabel or SWC to produce the `.js` files, so you don't have to wait for type-checking in your fast\ndevelopment loop.\n\n### In a macro\n\nMany organizations set default values, so it's common to write a [macro] to wrap `ts_project`, then\nensure that your developers load your macro rather than loading from `@aspect_rules_ts` directly.\n\n[macro]: https://bazel.build/extending/macros\n\n### BUILD file generation\n\nAspect provides an alpha preview of our TypeScript BUILD file generator as part of the\n[Aspect CLI](https://aspect.build/cli). Run `aspect configure` to create or update BUILD.bazel files\nas you edit TypeScript sources.\n\n### Advanced: custom rules\n\nIf you know how to write Bazel rules, you might find that `ts_project` doesn't do what you want.\n\nOne way to customize it is to peel off one layer of indirection, by calling the `ts_project_rule`\ndirectly. This bypasses our default setting logic, and also the validation program which checks that\nts_project attributes are well-formed.\n\nYou can also write a custom rule from scratch. We expose helper functions from /ts/private in this\nrepo. Be aware that these are not a public API, so you may have to account for breaking changes\nwhich aren't subject to our usual semver policy.\n" +release: { + title: "v1.1.0" + description: "## Using [Bzlmod] with Bazel 6:\n\nAdd to your `MODULE.bazel` file:\n\n```starlark\nbazel_dep(name = \"aspect_rules_ts\", version = \"1.1.0\")\n\nrules_ts_ext = use_extension(\n \"@aspect_rules_ts//ts:extensions.bzl\",\n \"ext\",\n dev_dependency = True,\n)\n\nrules_ts_ext.deps()\n\nuse_repo(rules_ts_ext, \"npm_typescript\")\n\nuse_repo(rules_ts_ext, \"npm_google_protobuf\")\n\nuse_repo(rules_ts_ext, \"npm_at_bazel_worker\")\n```\n\n[Bzlmod]: https://bazel.build/build/bzlmod\n\n## Using WORKSPACE\n\nPaste this snippet into your `WORKSPACE` file:\n\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"617cc11d2ae4fe64218323da1c3776e7d25f9f45d88c1addda675d7ad736f683\",\n strip_prefix = \"rules_ts-1.1.0\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v1.1.0.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(\n # This keeps the TypeScript version in-sync with the editor, which is typically best.\n ts_version_from = \"//:package.json\",\n\n # Alternatively, you could pick a specific version, or use\n # load(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\")\n # ts_version = LATEST_VERSION\n)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n\n# Register aspect_bazel_lib toolchains;\n# If you use npm_translate_lock or npm_import from aspect_rules_js you can omit this block.\nload(\"@aspect_bazel_lib//lib:repositories.bzl\", \"register_copy_directory_toolchains\", \"register_copy_to_directory_toolchains\")\n\nregister_copy_directory_toolchains()\n\nregister_copy_to_directory_toolchains()\n```\n\n\n## What's Changed\n* chore: update bcr homepage by @alexeagle in https://github.com/aspect-build/rules_ts/pull/288\n* feat: assets attribute for ts_project by @alexeagle in https://github.com/aspect-build/rules_ts/pull/290\n* chore: update to Aspect CLI 5.1.2 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/291\n* chore: update to rules_js 1.15.1 and aspect_bazel_lib 1.23.3 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/292\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.0.5...v1.1.0" + publish_time: { + seconds: 1674158416 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.3.0" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.3" + dev_dependency: true + } + dependencies: { + name: "aspect_rules_js" + version: "1.15.1" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.23.3" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.1.0/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.1.0/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.1.0/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.1.0/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.1.0/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.1.0/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.0/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.0/METADATA new file mode 100644 index 0000000..c6b82d5 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.0/METADATA @@ -0,0 +1,32 @@ +ref: "v1.2.0" +sha: "ad69d9358f47fba10ae46b3e9d4661ec14aef5a3" +readme: "# Bazel rules for TypeScript\n\nThis is the canonical ruleset for using Bazel for TypeScript, based on\n, and recommended for all new projects.\n\nThis is a high-performance alternative to the `@bazel/typescript` npm package from rules_nodejs.\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes most usability bugs with rules_nodejs:\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\nrules_ts is just a part of what Aspect provides:\n\n- _Need help?_ This ruleset has support provided by https://aspect.dev.\n- See our other Bazel rules, especially those built for rules_js, linked from \n\nKnown issues:\n\n- Does not work with `--worker_sandboxing`. See https://github.com/aspect-build/rules_ts/issues/127#issuecomment-1312041592\n- Workers are disabled and not currently supported on Windows hosts. See https://github.com/aspect-build/rules_ts/issues/228.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n\n## Examples\n\nThere are a number of examples in [the examples/ folder](https://github.com/aspect-build/rules_ts/tree/main/examples).\n\nIf you'd like an example added, you can file a [Feature Request](https://github.com/aspect-build/rules_ts/issues/new/choose).\n\n## Usage\n\nSee the API documentation in [the docs/ folder](https://github.com/aspect-build/rules_ts/tree/main/docs).\n\n### From a BUILD file\n\nThe most common use is with the [`ts_project` macro](./docs/rules.md#ts_project) which invokes the\n[`tsc` CLI](https://www.typescriptlang.org/docs/handbook/compiler-options.html) to transform\nsource files like `.ts` files into outputs such as `.js` and `.d.ts` files.\n\nWe encourage you to read about the `transpiler` property which lets you use a faster tool like\nBabel or SWC to produce the `.js` files, so you don't have to wait for type-checking in your fast\ndevelopment loop.\n\n### In a macro\n\nMany organizations set default values, so it's common to write a [macro] to wrap `ts_project`, then\nensure that your developers load your macro rather than loading from `@aspect_rules_ts` directly.\n\n[macro]: https://bazel.build/extending/macros\n\n### BUILD file generation\n\nAspect provides an alpha preview of our TypeScript BUILD file generator as part of the\n[Aspect CLI](https://aspect.build/cli). Run `aspect configure` to create or update BUILD.bazel files\nas you edit TypeScript sources.\n\n### Advanced: custom rules\n\nIf you know how to write Bazel rules, you might find that `ts_project` doesn't do what you want.\n\nOne way to customize it is to peel off one layer of indirection, by calling the `ts_project_rule`\ndirectly. This bypasses our default setting logic, and also the validation program which checks that\nts_project attributes are well-formed.\n\nYou can also write a custom rule from scratch. We expose helper functions from /ts/private in this\nrepo. Be aware that these are not a public API, so you may have to account for breaking changes\nwhich aren't subject to our usual semver policy.\n" +release: { + title: "v1.2.0" + description: "## Using [Bzlmod] with Bazel 6:\r\n\r\nAdd to your `MODULE.bazel` file:\r\n\r\n```starlark\r\nbazel_dep(name = \"aspect_rules_ts\", version = \"1.2.0\")\r\n\r\nrules_ts_ext = use_extension(\r\n \"@aspect_rules_ts//ts:extensions.bzl\",\r\n \"ext\",\r\n dev_dependency = True,\r\n)\r\n\r\nrules_ts_ext.deps()\r\n\r\nuse_repo(rules_ts_ext, \"npm_typescript\")\r\n```\r\n\r\n[Bzlmod]: https://bazel.build/build/bzlmod\r\n\r\n## Using WORKSPACE\r\n\r\nPaste this snippet into your `WORKSPACE` file:\r\n\r\n```starlark\r\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\r\nhttp_archive(\r\n name = \"aspect_rules_ts\",\r\n sha256 = \"acb20a4e41295d07441fa940c8da9fd02f8637391fd74a14300586a3ee244d59\",\r\n strip_prefix = \"rules_ts-1.2.0\",\r\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v1.2.0.tar.gz\",\r\n)\r\n\r\n##################\r\n# rules_ts setup #\r\n##################\r\n# Fetches the rules_ts dependencies.\r\n# If you want to have a different version of some dependency,\r\n# you should fetch it *before* calling this.\r\n# Alternatively, you can skip calling this function, so long as you've\r\n# already fetched all the dependencies.\r\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"rules_ts_dependencies\")\r\n\r\nrules_ts_dependencies(\r\n # This keeps the TypeScript version in-sync with the editor, which is typically best.\r\n ts_version_from = \"//:package.json\",\r\n\r\n # Alternatively, you could pick a specific version, or use\r\n # load(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\")\r\n # ts_version = LATEST_VERSION\r\n)\r\n\r\n# Fetch and register node, if you haven't already\r\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\r\n\r\nnodejs_register_toolchains(\r\n name = \"node\",\r\n node_version = DEFAULT_NODE_VERSION,\r\n)\r\n\r\n# Register aspect_bazel_lib toolchains;\r\n# If you use npm_translate_lock or npm_import from aspect_rules_js you can omit this block.\r\nload(\"@aspect_bazel_lib//lib:repositories.bzl\", \"register_copy_directory_toolchains\", \"register_copy_to_directory_toolchains\")\r\n\r\nregister_copy_directory_toolchains()\r\n\r\nregister_copy_to_directory_toolchains()\r\n```\r\n\r\n\r\n## What's Changed\r\n* docs: verbose mode by @alexeagle in https://github.com/aspect-build/rules_ts/pull/287\r\n* refactor: improve worker correctness and add observability by @thesayyn in https://github.com/aspect-build/rules_ts/pull/264\r\n\r\n\r\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.1.0...v1.2.0" + publish_time: { + seconds: 1674679226 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.3.0" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.3" + dev_dependency: true + } + dependencies: { + name: "aspect_rules_js" + version: "1.15.1" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.23.3" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.0/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.0/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.0/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.0/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.0/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.0/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.1/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.1/METADATA new file mode 100644 index 0000000..053af90 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.1/METADATA @@ -0,0 +1,32 @@ +ref: "v1.2.1" +sha: "30543cd109d2d12bc733d2551d2ad62749d1c6b7" +readme: "# Bazel rules for TypeScript\n\nThis is the canonical ruleset for using Bazel for TypeScript, based on\n, and recommended for all new projects.\n\nThis is a high-performance alternative to the `@bazel/typescript` npm package from rules_nodejs.\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes most usability bugs with rules_nodejs:\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\nrules_ts is just a part of what Aspect provides:\n\n- _Need help?_ This ruleset has support provided by https://aspect.dev.\n- See our other Bazel rules, especially those built for rules_js, linked from \n\nKnown issues:\n\n- Does not work with `--worker_sandboxing`. See https://github.com/aspect-build/rules_ts/issues/127#issuecomment-1312041592\n- Workers are disabled and not currently supported on Windows hosts. See https://github.com/aspect-build/rules_ts/issues/228.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n\n## Examples\n\nThere are a number of examples in [the examples/ folder](https://github.com/aspect-build/rules_ts/tree/main/examples).\n\nIf you'd like an example added, you can file a [Feature Request](https://github.com/aspect-build/rules_ts/issues/new/choose).\n\n## Usage\n\nSee the API documentation in [the docs/ folder](https://github.com/aspect-build/rules_ts/tree/main/docs).\n\n### From a BUILD file\n\nThe most common use is with the [`ts_project` macro](./docs/rules.md#ts_project) which invokes the\n[`tsc` CLI](https://www.typescriptlang.org/docs/handbook/compiler-options.html) to transform\nsource files like `.ts` files into outputs such as `.js` and `.d.ts` files.\n\nWe encourage you to read about the `transpiler` property which lets you use a faster tool like\nBabel or SWC to produce the `.js` files, so you don't have to wait for type-checking in your fast\ndevelopment loop.\n\n### In a macro\n\nMany organizations set default values, so it's common to write a [macro] to wrap `ts_project`, then\nensure that your developers load your macro rather than loading from `@aspect_rules_ts` directly.\n\n[macro]: https://bazel.build/extending/macros\n\n### BUILD file generation\n\nAspect provides an alpha preview of our TypeScript BUILD file generator as part of the\n[Aspect CLI](https://aspect.build/cli). Run `aspect configure` to create or update BUILD.bazel files\nas you edit TypeScript sources.\n\n### Advanced: custom rules\n\nIf you know how to write Bazel rules, you might find that `ts_project` doesn't do what you want.\n\nOne way to customize it is to peel off one layer of indirection, by calling the `ts_project_rule`\ndirectly. This bypasses our default setting logic, and also the validation program which checks that\nts_project attributes are well-formed.\n\nYou can also write a custom rule from scratch. We expose helper functions from /ts/private in this\nrepo. Be aware that these are not a public API, so you may have to account for breaking changes\nwhich aren't subject to our usual semver policy.\n" +release: { + title: "v1.2.1" + description: "## Using [Bzlmod] with Bazel 6:\n\nAdd to your `MODULE.bazel` file:\n\n```starlark\nbazel_dep(name = \"aspect_rules_ts\", version = \"1.2.1\")\n\nrules_ts_ext = use_extension(\n \"@aspect_rules_ts//ts:extensions.bzl\",\n \"ext\",\n dev_dependency = True,\n)\n\nrules_ts_ext.deps()\n\nuse_repo(rules_ts_ext, \"npm_typescript\")\n```\n\n[Bzlmod]: https://bazel.build/build/bzlmod\n\n## Using WORKSPACE\n\nPaste this snippet into your `WORKSPACE` file:\n\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"94f7a43a3b40b3dd6ea7562363512524e1d50802da0ab469a12895a9dfcfad96\",\n strip_prefix = \"rules_ts-1.2.1\",\n url = \"https://github.com/aspect-build/rules_ts/archive/refs/tags/v1.2.1.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(\n # This keeps the TypeScript version in-sync with the editor, which is typically best.\n ts_version_from = \"//:package.json\",\n\n # Alternatively, you could pick a specific version, or use\n # load(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\")\n # ts_version = LATEST_VERSION\n)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n\n# Register aspect_bazel_lib toolchains;\n# If you use npm_translate_lock or npm_import from aspect_rules_js you can omit this block.\nload(\"@aspect_bazel_lib//lib:repositories.bzl\", \"register_copy_directory_toolchains\", \"register_copy_to_directory_toolchains\")\n\nregister_copy_directory_toolchains()\n\nregister_copy_to_directory_toolchains()\n```\n\n\n## What's Changed\n* chore: fixup bzlmod release snippet by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/297\n* fix: transitive dependency type checking with transpiler by @jbedard in https://github.com/aspect-build/rules_ts/pull/299\n* fix: include assets when using ts_project with transpiler by @jbedard in https://github.com/aspect-build/rules_ts/pull/300\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.2.0...v1.2.1" + publish_time: { + seconds: 1675296256 + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.3.0" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.3" + dev_dependency: true + } + dependencies: { + name: "aspect_rules_js" + version: "1.15.1" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.23.3" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.1/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.1/metrics/version_stats.csv new file mode 100644 index 0000000..54c8791 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.1/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,0 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.1/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.1/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.1/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.2/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.2/METADATA new file mode 100644 index 0000000..9065bcd --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.2/METADATA @@ -0,0 +1,36 @@ +ref: "v1.2.2" +sha: "866b9a1bdf26888660f7893d53aedaef11a7b21a" +readme: "# Bazel rules for TypeScript\n\nThis is the canonical ruleset for using Bazel for TypeScript, based on\n, and recommended for all new projects.\n\nThis is a high-performance alternative to the `@bazel/typescript` npm package from rules_nodejs.\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes most usability bugs with rules_nodejs:\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\nrules_ts is just a part of what Aspect provides:\n\n- _Need help?_ This ruleset has support provided by https://aspect.dev.\n- See our other Bazel rules, especially those built for rules_js, linked from \n\nKnown issues:\n\n- Does not work with `--worker_sandboxing`. See https://github.com/aspect-build/rules_ts/issues/127#issuecomment-1312041592\n- Workers are disabled and not currently supported on Windows hosts. See https://github.com/aspect-build/rules_ts/issues/228.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n\n## Examples\n\nThere are a number of examples in [the examples/ folder](https://github.com/aspect-build/rules_ts/tree/main/examples).\n\nIf you'd like an example added, you can file a [Feature Request](https://github.com/aspect-build/rules_ts/issues/new/choose).\n\n## Usage\n\nSee the API documentation in [the docs/ folder](https://github.com/aspect-build/rules_ts/tree/main/docs).\n\n### From a BUILD file\n\nThe most common use is with the [`ts_project` macro](./docs/rules.md#ts_project) which invokes the\n[`tsc` CLI](https://www.typescriptlang.org/docs/handbook/compiler-options.html) to transform\nsource files like `.ts` files into outputs such as `.js` and `.d.ts` files.\n\nWe encourage you to read about the `transpiler` property which lets you use a faster tool like\nBabel or SWC to produce the `.js` files, so you don't have to wait for type-checking in your fast\ndevelopment loop.\n\n### In a macro\n\nMany organizations set default values, so it's common to write a [macro] to wrap `ts_project`, then\nensure that your developers load your macro rather than loading from `@aspect_rules_ts` directly.\n\n[macro]: https://bazel.build/extending/macros\n\n### BUILD file generation\n\nAspect provides an alpha preview of our TypeScript BUILD file generator as part of the\n[Aspect CLI](https://aspect.build/cli). Run `aspect configure` to create or update BUILD.bazel files\nas you edit TypeScript sources.\n\n### Advanced: custom rules\n\nIf you know how to write Bazel rules, you might find that `ts_project` doesn't do what you want.\n\nOne way to customize it is to peel off one layer of indirection, by calling the `ts_project_rule`\ndirectly. This bypasses our default setting logic, and also the validation program which checks that\nts_project attributes are well-formed.\n\nYou can also write a custom rule from scratch. We expose helper functions from /ts/private in this\nrepo. Be aware that these are not a public API, so you may have to account for breaking changes\nwhich aren't subject to our usual semver policy.\n" +release: { + title: "v1.2.2" + description: "## Using WORKSPACE\r\n\r\nPaste this snippet into your `WORKSPACE` file:\r\n\r\n```starlark\r\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\r\nhttp_archive(\r\n name = \"aspect_rules_ts\",\r\n sha256 = \"b02f64b151caf866787ec9615340fa5de0a7857392b8aeb0fc6473d9076a21f6\",\r\n strip_prefix = \"rules_ts-1.2.2\",\r\n url = \"https://github.com/aspect-build/rules_ts/releases/download/v1.2.2/rules_ts-v1.2.2.tar.gz\",\r\n)\r\n\r\n##################\r\n# rules_ts setup #\r\n##################\r\n# Fetches the rules_ts dependencies.\r\n# If you want to have a different version of some dependency,\r\n# you should fetch it *before* calling this.\r\n# Alternatively, you can skip calling this function, so long as you've\r\n# already fetched all the dependencies.\r\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"rules_ts_dependencies\")\r\n\r\nrules_ts_dependencies(\r\n # This keeps the TypeScript version in-sync with the editor, which is typically best.\r\n ts_version_from = \"//:package.json\",\r\n\r\n # Alternatively, you could pick a specific version, or use\r\n # load(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\")\r\n # ts_version = LATEST_VERSION\r\n)\r\n\r\n# Fetch and register node, if you haven't already\r\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\r\n\r\nnodejs_register_toolchains(\r\n name = \"node\",\r\n node_version = DEFAULT_NODE_VERSION,\r\n)\r\n\r\n# Register aspect_bazel_lib toolchains;\r\n# If you use npm_translate_lock or npm_import from aspect_rules_js you can omit this block.\r\nload(\"@aspect_bazel_lib//lib:repositories.bzl\", \"register_copy_directory_toolchains\", \"register_copy_to_directory_toolchains\")\r\n\r\nregister_copy_directory_toolchains()\r\n\r\nregister_copy_to_directory_toolchains()\r\n```\r\n\r\n\r\n## What's Changed\r\n* chore: Add the macOS runner to the matrix strategy by @realtimetodie in https://github.com/aspect-build/rules_ts/pull/298\r\n* chore: don't test RBE on macos on CI by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/301\r\n* release: publish release artifact by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/302\r\n* chore: update to rules_js 1.17.0 and aspect_bazel_lib 1.24.2 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/303\r\n\r\n## New Contributors\r\n* @realtimetodie made their first contribution in https://github.com/aspect-build/rules_ts/pull/298\r\n\r\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.2.1...v1.2.2" + publish_time: { + seconds: 1675320137 + } + assets: { + name: "rules_ts-v1.2.2.tar.gz" + url: "https://github.com/aspect-build/rules_ts/releases/download/v1.2.2/rules_ts-v1.2.2.tar.gz" + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.3.0" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.3" + dev_dependency: true + } + dependencies: { + name: "aspect_rules_js" + version: "1.17.0" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.24.2" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.2/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.2/metrics/version_stats.csv new file mode 100644 index 0000000..ccdc367 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.2/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,176 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.2/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.2/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.2/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.3/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.3/METADATA new file mode 100644 index 0000000..a837c3f --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.3/METADATA @@ -0,0 +1,36 @@ +ref: "v1.2.3" +sha: "b00866e6102b1afb5ae760ecb994e05417720d63" +readme: "# Bazel rules for TypeScript\n\nThis is the canonical ruleset for using Bazel for TypeScript, based on\n, and recommended for all new projects.\n\nThis is a high-performance alternative to the `@bazel/typescript` npm package from rules_nodejs.\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes most usability bugs with rules_nodejs:\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\nrules_ts is just a part of what Aspect provides:\n\n- _Need help?_ This ruleset has support provided by https://aspect.dev.\n- See our other Bazel rules, especially those built for rules_js, linked from \n\nKnown issues:\n\n- Does not work with `--worker_sandboxing`. See https://github.com/aspect-build/rules_ts/issues/127#issuecomment-1312041592\n- Workers are disabled and not currently supported on Windows hosts. See https://github.com/aspect-build/rules_ts/issues/228.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n\n## Examples\n\nThere are a number of examples in [the examples/ folder](https://github.com/aspect-build/rules_ts/tree/main/examples).\n\nIf you'd like an example added, you can file a [Feature Request](https://github.com/aspect-build/rules_ts/issues/new/choose).\n\n## Usage\n\nSee the API documentation in [the docs/ folder](https://github.com/aspect-build/rules_ts/tree/main/docs).\n\n### From a BUILD file\n\nThe most common use is with the [`ts_project` macro](./docs/rules.md#ts_project) which invokes the\n[`tsc` CLI](https://www.typescriptlang.org/docs/handbook/compiler-options.html) to transform\nsource files like `.ts` files into outputs such as `.js` and `.d.ts` files.\n\nWe encourage you to read about the `transpiler` property which lets you use a faster tool like\nBabel or SWC to produce the `.js` files, so you don't have to wait for type-checking in your fast\ndevelopment loop.\n\n### In a macro\n\nMany organizations set default values, so it's common to write a [macro] to wrap `ts_project`, then\nensure that your developers load your macro rather than loading from `@aspect_rules_ts` directly.\n\n[macro]: https://bazel.build/extending/macros\n\n### BUILD file generation\n\nAspect provides an alpha preview of our TypeScript BUILD file generator as part of the\n[Aspect CLI](https://aspect.build/cli). Run `aspect configure` to create or update BUILD.bazel files\nas you edit TypeScript sources.\n\n### Advanced: custom rules\n\nIf you know how to write Bazel rules, you might find that `ts_project` doesn't do what you want.\n\nOne way to customize it is to peel off one layer of indirection, by calling the `ts_project_rule`\ndirectly. This bypasses our default setting logic, and also the validation program which checks that\nts_project attributes are well-formed.\n\nYou can also write a custom rule from scratch. We expose helper functions from /ts/private in this\nrepo. Be aware that these are not a public API, so you may have to account for breaking changes\nwhich aren't subject to our usual semver policy.\n" +release: { + title: "v1.2.3" + description: "## Using [Bzlmod] with Bazel 6:\n\nAdd to your `MODULE.bazel` file:\n\n```starlark\nbazel_dep(name = \"aspect_rules_ts\", version = \"1.2.3\")\n\nrules_ts_ext = use_extension(\n \"@aspect_rules_ts//ts:extensions.bzl\",\n \"ext\",\n dev_dependency = True,\n)\n\nrules_ts_ext.deps()\n\nuse_repo(rules_ts_ext, \"npm_typescript\")\n```\n\n[Bzlmod]: https://bazel.build/build/bzlmod\n\n## Using WORKSPACE\n\nPaste this snippet into your `WORKSPACE` file:\n\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"6c216bb53ab8c475c1ea2a64ab99334b67aa8d49a5dae42c2f064443ce1d6c0e\",\n strip_prefix = \"rules_ts-1.2.3\",\n url = \"https://github.com/aspect-build/rules_ts/releases/download/v1.2.3/rules_ts-v1.2.3.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(\n # This keeps the TypeScript version in-sync with the editor, which is typically best.\n ts_version_from = \"//:package.json\",\n\n # Alternatively, you could pick a specific version, or use\n # load(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\")\n # ts_version = LATEST_VERSION\n)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n\n# Register aspect_bazel_lib toolchains;\n# If you use npm_translate_lock or npm_import from aspect_rules_js you can omit this block.\nload(\"@aspect_bazel_lib//lib:repositories.bzl\", \"register_copy_directory_toolchains\", \"register_copy_to_directory_toolchains\")\n\nregister_copy_directory_toolchains()\n\nregister_copy_to_directory_toolchains()\n```\n\n\n## What's Changed\n* chore: upload release artifact on release by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/305\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.2.2...v1.2.3" + publish_time: { + seconds: 1675362674 + } + assets: { + name: "rules_ts-v1.2.3.tar.gz" + url: "https://github.com/aspect-build/rules_ts/releases/download/v1.2.3/rules_ts-v1.2.3.tar.gz" + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.3.0" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.3" + dev_dependency: true + } + dependencies: { + name: "aspect_rules_js" + version: "1.17.0" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.24.2" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.3/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.3/metrics/version_stats.csv new file mode 100644 index 0000000..5f97aa6 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.3/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,9106 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.3/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.3/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.3/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.4/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.4/METADATA new file mode 100644 index 0000000..f15158a --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.4/METADATA @@ -0,0 +1,36 @@ +ref: "v1.2.4" +sha: "84491ed2c5d201ac239a5f9b749132e7c4a3af38" +readme: "# Bazel rules for TypeScript\n\nThis is the canonical ruleset for using Bazel for TypeScript, based on\n, and recommended for all new projects.\n\nThis is a high-performance alternative to the `@bazel/typescript` npm package from rules_nodejs.\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes most usability bugs with rules_nodejs:\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\nrules_ts is just a part of what Aspect provides:\n\n- _Need help?_ This ruleset has support provided by https://aspect.dev.\n- See our other Bazel rules, especially those built for rules_js, linked from \n\nKnown issues:\n\n- Does not work with `--worker_sandboxing`. See https://github.com/aspect-build/rules_ts/issues/127#issuecomment-1312041592\n- Workers are disabled and not currently supported on Windows hosts. See https://github.com/aspect-build/rules_ts/issues/228.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n\n## Examples\n\nThere are a number of examples in [the examples/ folder](https://github.com/aspect-build/rules_ts/tree/main/examples).\n\nIf you'd like an example added, you can file a [Feature Request](https://github.com/aspect-build/rules_ts/issues/new/choose).\n\n## Usage\n\nSee the API documentation in [the docs/ folder](https://github.com/aspect-build/rules_ts/tree/main/docs).\n\n### From a BUILD file\n\nThe most common use is with the [`ts_project` macro](./docs/rules.md#ts_project) which invokes the\n[`tsc` CLI](https://www.typescriptlang.org/docs/handbook/compiler-options.html) to transform\nsource files like `.ts` files into outputs such as `.js` and `.d.ts` files.\n\nWe encourage you to read about the `transpiler` property which lets you use a faster tool like\nBabel or SWC to produce the `.js` files, so you don't have to wait for type-checking in your fast\ndevelopment loop.\n\n### In a macro\n\nMany organizations set default values, so it's common to write a [macro] to wrap `ts_project`, then\nensure that your developers load your macro rather than loading from `@aspect_rules_ts` directly.\n\n[macro]: https://bazel.build/extending/macros\n\n### BUILD file generation\n\nAspect provides an alpha preview of our TypeScript BUILD file generator as part of the\n[Aspect CLI](https://aspect.build/cli). Run `aspect configure` to create or update BUILD.bazel files\nas you edit TypeScript sources.\n\n### Advanced: custom rules\n\nIf you know how to write Bazel rules, you might find that `ts_project` doesn't do what you want.\n\nOne way to customize it is to peel off one layer of indirection, by calling the `ts_project_rule`\ndirectly. This bypasses our default setting logic, and also the validation program which checks that\nts_project attributes are well-formed.\n\nYou can also write a custom rule from scratch. We expose helper functions from /ts/private in this\nrepo. Be aware that these are not a public API, so you may have to account for breaking changes\nwhich aren't subject to our usual semver policy.\n" +release: { + title: "v1.2.4" + description: "## Using [Bzlmod] with Bazel 6:\n\nAdd to your `MODULE.bazel` file:\n\n```starlark\nbazel_dep(name = \"aspect_rules_ts\", version = \"1.2.4\")\n\nrules_ts_ext = use_extension(\n \"@aspect_rules_ts//ts:extensions.bzl\",\n \"ext\",\n dev_dependency = True,\n)\n\nrules_ts_ext.deps()\n\nuse_repo(rules_ts_ext, \"npm_typescript\")\n```\n\n[Bzlmod]: https://bazel.build/build/bzlmod\n\n## Using WORKSPACE\n\nPaste this snippet into your `WORKSPACE` file:\n\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"7d964d57c6e9a54b0ce20f27e5ea84e5b42b6db2148ab7eb18d7110a082380de\",\n strip_prefix = \"rules_ts-1.2.4\",\n url = \"https://github.com/aspect-build/rules_ts/releases/download/v1.2.4/rules_ts-v1.2.4.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(\n # This keeps the TypeScript version in-sync with the editor, which is typically best.\n ts_version_from = \"//:package.json\",\n\n # Alternatively, you could pick a specific version, or use\n # load(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\")\n # ts_version = LATEST_VERSION\n)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n\n# Register aspect_bazel_lib toolchains;\n# If you use npm_translate_lock or npm_import from aspect_rules_js you can omit this block.\nload(\"@aspect_bazel_lib//lib:repositories.bzl\", \"register_copy_directory_toolchains\", \"register_copy_to_directory_toolchains\")\n\nregister_copy_directory_toolchains()\n\nregister_copy_to_directory_toolchains()\n```\n\n\n## What's Changed\n* chore: add typescript 4.9.5 to versions by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/307\n\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.2.3...v1.2.4" + publish_time: { + seconds: 1675832109 + } + assets: { + name: "rules_ts-v1.2.4.tar.gz" + url: "https://github.com/aspect-build/rules_ts/releases/download/v1.2.4/rules_ts-v1.2.4.tar.gz" + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.3.0" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.3" + dev_dependency: true + } + dependencies: { + name: "aspect_rules_js" + version: "1.17.0" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.24.2" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.4/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.4/metrics/version_stats.csv new file mode 100644 index 0000000..601742d --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.4/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,13344 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.4/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.4/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.2.4/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.3.0/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.3.0/METADATA new file mode 100644 index 0000000..d0f00d7 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.3.0/METADATA @@ -0,0 +1,36 @@ +ref: "v1.3.0" +sha: "5ea2d011369bf371d2431871bd178d6893766392" +readme: "# Bazel rules for TypeScript\n\nThis is the canonical ruleset for using Bazel for TypeScript, based on\n, and recommended for all new projects.\n\nThis is a high-performance alternative to the `@bazel/typescript` npm package from rules_nodejs.\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes most usability bugs with rules_nodejs:\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\nrules_ts is just a part of what Aspect provides:\n\n- _Need help?_ This ruleset has support provided by https://aspect.dev.\n- See our other Bazel rules, especially those built for rules_js, linked from \n\nKnown issues:\n\n- Does not work with `--worker_sandboxing`. See https://github.com/aspect-build/rules_ts/issues/127#issuecomment-1312041592\n- Workers are disabled and not currently supported on Windows hosts. See https://github.com/aspect-build/rules_ts/issues/228.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n\n## Examples\n\nThere are a number of examples in [the examples/ folder](https://github.com/aspect-build/rules_ts/tree/main/examples).\n\nIf you'd like an example added, you can file a [Feature Request](https://github.com/aspect-build/rules_ts/issues/new/choose).\n\n## Usage\n\nSee the API documentation in [the docs/ folder](https://github.com/aspect-build/rules_ts/tree/main/docs).\n\n### From a BUILD file\n\nThe most common use is with the [`ts_project` macro](./docs/rules.md#ts_project) which invokes the\n[`tsc` CLI](https://www.typescriptlang.org/docs/handbook/compiler-options.html) to transform\nsource files like `.ts` files into outputs such as `.js` and `.d.ts` files.\n\nWe encourage you to read about the `transpiler` property which lets you use a faster tool like\nBabel or SWC to produce the `.js` files, so you don't have to wait for type-checking in your fast\ndevelopment loop.\n\n### In a macro\n\nMany organizations set default values, so it's common to write a [macro] to wrap `ts_project`, then\nensure that your developers load your macro rather than loading from `@aspect_rules_ts` directly.\n\n[macro]: https://bazel.build/extending/macros\n\n### BUILD file generation\n\nAspect provides an alpha preview of our TypeScript BUILD file generator as part of the\n[Aspect CLI](https://aspect.build/cli). Run `aspect configure` to create or update BUILD.bazel files\nas you edit TypeScript sources.\n\n### Advanced: custom rules\n\nIf you know how to write Bazel rules, you might find that `ts_project` doesn't do what you want.\n\nOne way to customize it is to peel off one layer of indirection, by calling the `ts_project_rule`\ndirectly. This bypasses our default setting logic, and also the validation program which checks that\nts_project attributes are well-formed.\n\nYou can also write a custom rule from scratch. We expose helper functions from /ts/private in this\nrepo. Be aware that these are not a public API, so you may have to account for breaking changes\nwhich aren't subject to our usual semver policy.\n" +release: { + title: "v1.3.0" + description: "⚠️ This release requires a minimum rules_js version of [v1.19.0](https://github.com/aspect-build/rules_js/releases/tag/v1.19.0).\r\n\r\n## Using [Bzlmod] with Bazel 6:\r\n\r\nAdd to your `MODULE.bazel` file:\r\n\r\n```starlark\r\nbazel_dep(name = \"aspect_rules_ts\", version = \"1.3.0\")\r\n\r\nrules_ts_ext = use_extension(\r\n \"@aspect_rules_ts//ts:extensions.bzl\",\r\n \"ext\",\r\n dev_dependency = True,\r\n)\r\n\r\nrules_ts_ext.deps()\r\n\r\nuse_repo(rules_ts_ext, \"npm_typescript\")\r\n```\r\n\r\n[Bzlmod]: https://bazel.build/build/bzlmod\r\n\r\n## Using WORKSPACE\r\n\r\nPaste this snippet into your `WORKSPACE` file:\r\n\r\n```starlark\r\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\r\nhttp_archive(\r\n name = \"aspect_rules_ts\",\r\n sha256 = \"db77d904284d21121ae63dbaaadfd8c75ff6d21ad229f92038b415c1ad5019cc\",\r\n strip_prefix = \"rules_ts-1.3.0\",\r\n url = \"https://github.com/aspect-build/rules_ts/releases/download/v1.3.0/rules_ts-v1.3.0.tar.gz\",\r\n)\r\n\r\n##################\r\n# rules_ts setup #\r\n##################\r\n# Fetches the rules_ts dependencies.\r\n# If you want to have a different version of some dependency,\r\n# you should fetch it *before* calling this.\r\n# Alternatively, you can skip calling this function, so long as you've\r\n# already fetched all the dependencies.\r\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"rules_ts_dependencies\")\r\n\r\nrules_ts_dependencies(\r\n # This keeps the TypeScript version in-sync with the editor, which is typically best.\r\n ts_version_from = \"//:package.json\",\r\n\r\n # Alternatively, you could pick a specific version, or use\r\n # load(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\")\r\n # ts_version = LATEST_VERSION\r\n)\r\n\r\n# Fetch and register node, if you haven't already\r\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\r\n\r\nnodejs_register_toolchains(\r\n name = \"node\",\r\n node_version = DEFAULT_NODE_VERSION,\r\n)\r\n\r\n# Register aspect_bazel_lib toolchains;\r\n# If you use npm_translate_lock or npm_import from aspect_rules_js you can omit this block.\r\nload(\"@aspect_bazel_lib//lib:repositories.bzl\", \"register_copy_directory_toolchains\", \"register_copy_to_directory_toolchains\")\r\n\r\nregister_copy_directory_toolchains()\r\n\r\nregister_copy_to_directory_toolchains()\r\n```\r\n\r\n\r\n## What's Changed\r\n* chore: update to rules_js 1.19.0 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/312\r\n* chore: remove non-existant pnpm workspaces in e2e/worker by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/314\r\n* feat: propagate non-dev npm dependencies in ts_project deps to direct dependencies of downstream linked npm_package targets by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/313\r\n* feat: add JsInfo provider to ts_config rule by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/315\r\n* fix: include declarations in files of generated tsconfig by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/316\r\n* fix: ts_project external workspace builds by @dgp1130 in https://github.com/aspect-build/rules_ts/pull/310\r\n\r\n## New Contributors\r\n* @dgp1130 made their first contribution in https://github.com/aspect-build/rules_ts/pull/310\r\n\r\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.2.4...v1.3.0" + publish_time: { + seconds: 1676160172 + } + assets: { + name: "rules_ts-v1.3.0.tar.gz" + url: "https://github.com/aspect-build/rules_ts/releases/download/v1.3.0/rules_ts-v1.3.0.tar.gz" + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.3.0" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.3" + dev_dependency: true + } + dependencies: { + name: "aspect_rules_js" + version: "1.19.0" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.24.2" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.3.0/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.3.0/metrics/version_stats.csv new file mode 100644 index 0000000..69b2ef9 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.3.0/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,19389 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.3.0/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.3.0/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.3.0/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.3.1/METADATA b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.3.1/METADATA new file mode 100644 index 0000000..6c9309d --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.3.1/METADATA @@ -0,0 +1,36 @@ +ref: "v1.3.1" +sha: "ccdc52e25c226be3786e7df8b95ebab6ef72d390" +readme: "# Bazel rules for TypeScript\n\nThis is the canonical ruleset for using Bazel for TypeScript, based on\n, and recommended for all new projects.\n\nThis is a high-performance alternative to the `@bazel/typescript` npm package from rules_nodejs.\nThe `ts_project` rule here is identical to the one in rules_nodejs, making it easy to migrate.\nSince rules_js always runs tools from the bazel-out tree, rules_ts naturally fixes most usability bugs with rules_nodejs:\n\n- Freely mix generated `*.ts` and `tsconfig.json` files in the bazel-out tree with source files\n- Fixes the need for any `rootDirs` settings in `tsconfig.json` as reported in https://github.com/microsoft/TypeScript/issues/37378\n- \"worker mode\" for `ts_project` now shares workers across all targets, rather than requiring one worker pool per target\n\nrules_ts is just a part of what Aspect provides:\n\n- _Need help?_ This ruleset has support provided by https://aspect.dev.\n- See our other Bazel rules, especially those built for rules_js, linked from \n\nKnown issues:\n\n- Does not work with `--worker_sandboxing`. See https://github.com/aspect-build/rules_ts/issues/127#issuecomment-1312041592\n- Workers are disabled and not currently supported on Windows hosts. See https://github.com/aspect-build/rules_ts/issues/228.\n\n## Installation\n\nFrom the release you wish to use:\n\ncopy the WORKSPACE snippet into your `WORKSPACE` file.\n\n## Examples\n\nThere are a number of examples in [the examples/ folder](https://github.com/aspect-build/rules_ts/tree/main/examples).\n\nIf you'd like an example added, you can file a [Feature Request](https://github.com/aspect-build/rules_ts/issues/new/choose).\n\n## Usage\n\nSee the API documentation in [the docs/ folder](https://github.com/aspect-build/rules_ts/tree/main/docs).\n\n### From a BUILD file\n\nThe most common use is with the [`ts_project` macro](./docs/rules.md#ts_project) which invokes the\n[`tsc` CLI](https://www.typescriptlang.org/docs/handbook/compiler-options.html) to transform\nsource files like `.ts` files into outputs such as `.js` and `.d.ts` files.\n\nWe encourage you to read about the `transpiler` property which lets you use a faster tool like\nBabel or SWC to produce the `.js` files, so you don't have to wait for type-checking in your fast\ndevelopment loop.\n\n### In a macro\n\nMany organizations set default values, so it's common to write a [macro] to wrap `ts_project`, then\nensure that your developers load your macro rather than loading from `@aspect_rules_ts` directly.\n\n[macro]: https://bazel.build/extending/macros\n\n### BUILD file generation\n\nAspect provides an alpha preview of our TypeScript BUILD file generator as part of the\n[Aspect CLI](https://aspect.build/cli). Run `aspect configure` to create or update BUILD.bazel files\nas you edit TypeScript sources.\n\n### Advanced: custom rules\n\nIf you know how to write Bazel rules, you might find that `ts_project` doesn't do what you want.\n\nOne way to customize it is to peel off one layer of indirection, by calling the `ts_project_rule`\ndirectly. This bypasses our default setting logic, and also the validation program which checks that\nts_project attributes are well-formed.\n\nYou can also write a custom rule from scratch. We expose helper functions from /ts/private in this\nrepo. Be aware that these are not a public API, so you may have to account for breaking changes\nwhich aren't subject to our usual semver policy.\n" +release: { + title: "v1.3.1" + description: "## Using [Bzlmod] with Bazel 6:\n\nAdd to your `MODULE.bazel` file:\n\n```starlark\nbazel_dep(name = \"aspect_rules_ts\", version = \"1.3.1\")\n\nrules_ts_ext = use_extension(\n \"@aspect_rules_ts//ts:extensions.bzl\",\n \"ext\",\n dev_dependency = True,\n)\n\nrules_ts_ext.deps()\n\nuse_repo(rules_ts_ext, \"npm_typescript\")\n```\n\n[Bzlmod]: https://bazel.build/build/bzlmod\n\n## Using WORKSPACE\n\nPaste this snippet into your `WORKSPACE` file:\n\n```starlark\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nhttp_archive(\n name = \"aspect_rules_ts\",\n sha256 = \"02480b6a1cd12516edf364e678412e9da10445fe3f1070c014ac75e922c969ea\",\n strip_prefix = \"rules_ts-1.3.1\",\n url = \"https://github.com/aspect-build/rules_ts/releases/download/v1.3.1/rules_ts-v1.3.1.tar.gz\",\n)\n\n##################\n# rules_ts setup #\n##################\n# Fetches the rules_ts dependencies.\n# If you want to have a different version of some dependency,\n# you should fetch it *before* calling this.\n# Alternatively, you can skip calling this function, so long as you've\n# already fetched all the dependencies.\nload(\"@aspect_rules_ts//ts:repositories.bzl\", \"rules_ts_dependencies\")\n\nrules_ts_dependencies(\n # This keeps the TypeScript version in-sync with the editor, which is typically best.\n ts_version_from = \"//:package.json\",\n\n # Alternatively, you could pick a specific version, or use\n # load(\"@aspect_rules_ts//ts:repositories.bzl\", \"LATEST_VERSION\")\n # ts_version = LATEST_VERSION\n)\n\n# Fetch and register node, if you haven't already\nload(\"@rules_nodejs//nodejs:repositories.bzl\", \"DEFAULT_NODE_VERSION\", \"nodejs_register_toolchains\")\n\nnodejs_register_toolchains(\n name = \"node\",\n node_version = DEFAULT_NODE_VERSION,\n)\n\n# Register aspect_bazel_lib toolchains;\n# If you use npm_translate_lock or npm_import from aspect_rules_js you can omit this block.\nload(\"@aspect_bazel_lib//lib:repositories.bzl\", \"register_copy_directory_toolchains\", \"register_copy_to_directory_toolchains\")\n\nregister_copy_directory_toolchains()\n\nregister_copy_to_directory_toolchains()\n```\n\n\n## What's Changed\n* docs: fix typo by @mgred in https://github.com/aspect-build/rules_ts/pull/324\n* chore: update to aspect_bazel_lib 1.27.2 by @gregmagolan in https://github.com/aspect-build/rules_ts/pull/327\n* fix: source maps generated incorrectly by @thesayyn in https://github.com/aspect-build/rules_ts/pull/323\n\n## New Contributors\n* @mgred made their first contribution in https://github.com/aspect-build/rules_ts/pull/324\n\n**Full Changelog**: https://github.com/aspect-build/rules_ts/compare/v1.3.0...v1.3.1" + publish_time: { + seconds: 1677770507 + } + assets: { + name: "rules_ts-v1.3.1.tar.gz" + url: "https://github.com/aspect-build/rules_ts/releases/download/v1.3.1/rules_ts-v1.3.1.tar.gz" + } +} +module_file: { + name: "aspect_rules_ts" + version: "0.0.0" + compatibility_level: 1 + dependencies: { + name: "bazel_skylib" + version: "1.3.0" + } + dependencies: { + name: "rules_nodejs" + version: "5.5.3" + dev_dependency: true + } + dependencies: { + name: "aspect_rules_js" + version: "1.19.0" + } + dependencies: { + name: "aspect_bazel_lib" + version: "1.27.2" + } +} diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.3.1/metrics/version_stats.csv b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.3.1/metrics/version_stats.csv new file mode 100644 index 0000000..baf2ac2 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.3.1/metrics/version_stats.csv @@ -0,0 +1,2 @@ +time (UTC),# download +2023-03-03 09:30:16,44 diff --git a/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.3.1/metrics/version_stats.metadata b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.3.1/metrics/version_stats.metadata new file mode 100644 index 0000000..9bed688 --- /dev/null +++ b/experimental/rules-keeper/store/aspect-build/rules_ts/versions/v1.3.1/metrics/version_stats.metadata @@ -0,0 +1,10 @@ +window: { + start_time: { + seconds: 1646213416 + nanos: 84457000 + } + end_time: { + seconds: 1677835816 + nanos: 84457000 + } +} diff --git a/experimental/rules-keeper/timeseries/proto/timeseries.pb.go b/experimental/rules-keeper/timeseries/proto/timeseries.pb.go new file mode 100644 index 0000000..d17315f --- /dev/null +++ b/experimental/rules-keeper/timeseries/proto/timeseries.pb.go @@ -0,0 +1,178 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v4.22.0 +// source: timeseries.proto + +package timeseriespb + +import ( + interval "google.golang.org/genproto/googleapis/type/interval" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Metadata stores metadata about a timeseries. +type Metadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // update_time is the time when the timeseries was last updated. + // + // Deprecated: Do not use. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + // window is the time window for the timeseries. Points outside of this + // will be ignored. + Window *interval.Interval `protobuf:"bytes,2,opt,name=window,proto3" json:"window,omitempty"` +} + +func (x *Metadata) Reset() { + *x = Metadata{} + if protoimpl.UnsafeEnabled { + mi := &file_timeseries_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Metadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Metadata) ProtoMessage() {} + +func (x *Metadata) ProtoReflect() protoreflect.Message { + mi := &file_timeseries_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Metadata.ProtoReflect.Descriptor instead. +func (*Metadata) Descriptor() ([]byte, []int) { + return file_timeseries_proto_rawDescGZIP(), []int{0} +} + +// Deprecated: Do not use. +func (x *Metadata) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +func (x *Metadata) GetWindow() *interval.Interval { + if x != nil { + return x.Window + } + return nil +} + +var File_timeseries_proto protoreflect.FileDescriptor + +var file_timeseries_proto_rawDesc = []byte{ + 0x0a, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x12, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x74, 0x79, 0x70, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x7a, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x3f, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x2d, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x42, + 0x64, 0x5a, 0x62, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x61, + 0x7a, 0x65, 0x6c, 0x2d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x2f, 0x53, 0x49, 0x47, 0x2d, + 0x72, 0x75, 0x6c, 0x65, 0x73, 0x2d, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, 0x2f, 0x65, 0x78, + 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x72, 0x75, 0x6c, 0x65, 0x73, + 0x2d, 0x6b, 0x65, 0x65, 0x70, 0x65, 0x72, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, + 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, + 0x69, 0x65, 0x73, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_timeseries_proto_rawDescOnce sync.Once + file_timeseries_proto_rawDescData = file_timeseries_proto_rawDesc +) + +func file_timeseries_proto_rawDescGZIP() []byte { + file_timeseries_proto_rawDescOnce.Do(func() { + file_timeseries_proto_rawDescData = protoimpl.X.CompressGZIP(file_timeseries_proto_rawDescData) + }) + return file_timeseries_proto_rawDescData +} + +var file_timeseries_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_timeseries_proto_goTypes = []interface{}{ + (*Metadata)(nil), // 0: ruleset.timeseries.Metadata + (*timestamppb.Timestamp)(nil), // 1: google.protobuf.Timestamp + (*interval.Interval)(nil), // 2: google.type.Interval +} +var file_timeseries_proto_depIdxs = []int32{ + 1, // 0: ruleset.timeseries.Metadata.update_time:type_name -> google.protobuf.Timestamp + 2, // 1: ruleset.timeseries.Metadata.window:type_name -> google.type.Interval + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_timeseries_proto_init() } +func file_timeseries_proto_init() { + if File_timeseries_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_timeseries_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Metadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_timeseries_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_timeseries_proto_goTypes, + DependencyIndexes: file_timeseries_proto_depIdxs, + MessageInfos: file_timeseries_proto_msgTypes, + }.Build() + File_timeseries_proto = out.File + file_timeseries_proto_rawDesc = nil + file_timeseries_proto_goTypes = nil + file_timeseries_proto_depIdxs = nil +} diff --git a/experimental/rules-keeper/timeseries/proto/timeseries.proto b/experimental/rules-keeper/timeseries/proto/timeseries.proto new file mode 100644 index 0000000..fc3b60e --- /dev/null +++ b/experimental/rules-keeper/timeseries/proto/timeseries.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; + +package ruleset.timeseries; + +import "google/protobuf/timestamp.proto"; +import "google/type/interval.proto"; + +option go_package = "github.com/bazel-contrib/SIG-rules-authors/experimental/rules-keeper/timeseries/proto;timeseriespb"; + +// Metadata stores metadata about a timeseries. +message Metadata { + // update_time is the time when the timeseries was last updated. + google.protobuf.Timestamp update_time = 1 [ deprecated = true ]; + + // window is the time window for the timeseries. Points outside of this + // will be ignored. + google.type.Interval window = 2; +} diff --git a/experimental/rules-keeper/timeseries/timeseries.go b/experimental/rules-keeper/timeseries/timeseries.go new file mode 100644 index 0000000..50f81ae --- /dev/null +++ b/experimental/rules-keeper/timeseries/timeseries.go @@ -0,0 +1,205 @@ +package timeseries + +import ( + "os" + "path/filepath" + "sort" + "time" + + "github.com/gocarina/gocsv" + intervalpb "google.golang.org/genproto/googleapis/type/interval" + "google.golang.org/protobuf/encoding/prototext" + "google.golang.org/protobuf/types/known/timestamppb" + + pb "github.com/bazel-contrib/SIG-rules-authors/experimental/rules-keeper/timeseries/proto" +) + +// Point is a point in a time series. The struct that implements this interface +// should be a valid CSV row that gocsv can marshal/unmarshal. +type Point interface { + Timestamp() time.Time +} + +// AlignFunc aligns a timestamp to a given time unit. +type AlignFunc func(time.Time) time.Time + +// Descriptor describes a time series. +type Descriptor[P Point] struct { + // Align aligns a timestamp to a given time unit. + Align AlignFunc + // NewPoint creates a new point for a given timestamp. + NewPoint func(time.Time) P + // Retention is the maximum age of a point in the time series. + Retention time.Duration +} + +// Store is a time series store. Points in the store are distinguised by their +// timestamp, which is saying the point doesn't have labels. To store timeseries +// with labels, use multiple stores. +type Store[P Point] struct { + name string + desc *Descriptor[P] + metadata pb.Metadata + idx map[int64]P + points []P +} + +// Load loads a time series from disk. +func Load[P Point](desc *Descriptor[P], name string) (*Store[P], error) { + ts := &Store[P]{ + name: name, + desc: desc, + idx: make(map[int64]P), + } + b, err := os.ReadFile(ts.name + ".csv") + if err != nil && !os.IsNotExist(err) { + return nil, err + } + if len(b) > 0 { + if err := gocsv.UnmarshalBytes(b, &ts.points); err != nil { + return nil, err + } + for _, p := range ts.points { + // This assumes all timestamps are already aligned. + ts.idx[p.Timestamp().Unix()] = p + } + } + b, err = os.ReadFile(ts.name + ".metadata") + if err != nil && !os.IsNotExist(err) { + return nil, err + } + if err := prototext.Unmarshal(b, &ts.metadata); err != nil { + return nil, err + } + return ts, nil +} + +// Flush writes the time series to disk. +func (ts *Store[P]) Flush() error { + sort.Slice(ts.points, func(i, j int) bool { + return ts.points[i].Timestamp().Before(ts.points[j].Timestamp()) + }) + if err := os.MkdirAll(filepath.Dir(ts.name), 0755); err != nil { + return err + } + b, err := gocsv.MarshalBytes(ts.points) + if err != nil { + return err + } + if err := os.WriteFile(ts.name+".csv", b, 0644); err != nil { + return err + } + b, err = prototext.MarshalOptions{Multiline: true}.Marshal(&ts.metadata) + if err != nil { + return err + } + return os.WriteFile(ts.name+".metadata", b, 0644) +} + +// Window returns the start and end time of the time series window. +func (ts *Store[P]) Window() (start, end time.Time) { + if ts.metadata.Window == nil { + return time.Time{}, time.Now().Add(-ts.desc.Retention) + } + return ts.metadata.Window.StartTime.AsTime(), ts.metadata.Window.EndTime.AsTime() +} + +// ShiftWindow shifts the time series window to the given end time. +func (ts *Store[P]) ShiftWindow(end time.Time) { + start := end.Add(-ts.desc.Retention) + ts.metadata.Window = &intervalpb.Interval{ + StartTime: timestamppb.New(start), + EndTime: timestamppb.New(end), + } + ts.removeStatePoints(start) +} + +// removeStalePoints removes points that are before notBefore. +func (ts *Store[P]) removeStatePoints(start time.Time) { + for len(ts.points) > 0 { + t := ts.points[0].Timestamp() + if !t.Before(start) { + break + } + ts.points = ts.points[1:] + delete(ts.idx, t.Unix()) + } +} + +// GetOrCreatePointAt returns the point at the given timestamp, creating it if +// it doesn't exist. +func (ts *Store[P]) GetOrCreatePointAt(t time.Time) P { + t = ts.desc.Align(t) + p, ok := ts.idx[t.Unix()] + if !ok { + p = ts.desc.NewPoint(t) + ts.idx[t.Unix()] = p + ts.points = append(ts.points, p) + } + return p +} + +// Date is a time that represents an UTC date that is suitable for CSV +// marshalling. +// +// N.B. It would be nice to add Timestamp method to this, and make any struct +// that embeds it conform to Point interface. But gocsv doesn't support +// embedding. +type Date struct{ time.Time } + +func (t *Date) MarshalCSV() (string, error) { + return t.Time.UTC().Format(time.DateOnly), nil +} + +func (t *Date) UnmarshalCSV(s string) (err error) { + t.Time, err = time.ParseInLocation(time.DateOnly, s, time.UTC) + return +} + +// Date is a time that represents an UTC date with time at second precision that +// is suitable for CSV marshalling. +// +// N.B. See comments for Date. +type DateTime struct{ time.Time } + +func (t *DateTime) MarshalCSV() (string, error) { + return t.Time.UTC().Format(time.DateTime), nil +} + +func (t *DateTime) UnmarshalCSV(s string) (err error) { + t.Time, err = time.ParseInLocation(time.DateTime, s, time.UTC) + return +} + +// AlignToDayInUTC aligns a timestamp to the start of the day. +func AlignToDayInUTC(t time.Time) time.Time { + y, m, d := t.UTC().Date() + return time.Date(y, m, d, 0, 0, 0, 0, time.UTC) +} + +// AlignToISO8601WeekStartDayInUTC aligns a timestamp to the start of the week +// by the definition of ISO 8601. +func AlignToISO8601WeekStartDayInUTC(t time.Time) time.Time { + // A UTC week starts on monday. + t = t.UTC() + wd := int(t.Weekday() - time.Monday) + if wd < 0 { // Sunday + wd += 7 + } + t = t.AddDate(0, 0, -wd) + y, m, d := t.Date() + return time.Date(y, m, d, 0, 0, 0, 0, time.UTC) +} + +// AlignToSecond aligns a timestamp to the start of the second. +func AlignToSecond(t time.Time) time.Time { + return t.Truncate(time.Second) +} + +// AlignToDuration returns a AlignFunc that aligns a timestamp to a given +// duration. See Time.Truncate for details. +func AlignToDuration(d time.Duration) AlignFunc { + return func(t time.Time) time.Time { + return t.Truncate(d) + } +} diff --git a/experimental/rules-keeper/versions.go b/experimental/rules-keeper/versions.go new file mode 100644 index 0000000..365bacb --- /dev/null +++ b/experimental/rules-keeper/versions.go @@ -0,0 +1,198 @@ +package main + +import ( + "context" + "fmt" + "io" + "net/http" + "os" + "time" + + "github.com/bazel-contrib/SIG-rules-authors/experimental/rules-keeper/timeseries" + + "github.com/golang/glog" + "github.com/google/go-github/v50/github" + "google.golang.org/protobuf/encoding/prototext" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/timestamppb" + + pb "github.com/bazel-contrib/SIG-rules-authors/experimental/rules-keeper/proto" +) + +func (r *repo) UpdateVersions(ctx context.Context) error { + glog.Infof("Updating versions for %s/%s", r.owner, r.name) + + m := make(map[string]*VersionStore) + + repo, _, err := r.cli.Repositories.Get(ctx, r.owner, r.name) + if err != nil { + return err + } + vs, err := r.loadVersionStore(ctx, repo.GetDefaultBranch()) + if err != nil { + return err + } + v, err := r.getVersion(ctx, repo.GetDefaultBranch()) + if err != nil { + return err + } + vs.Version.Reset() + proto.Merge(&vs.Version, v) + vs.Flush() + + for it := r.ListTags(ctx); ; { + tag, err := it.Next() + if err == io.EOF { + break + } + if err != nil { + return err + } + vs, err := r.loadVersionStore(ctx, tag.GetName()) + if err != nil { + return err + } + v, err := r.getVersion(ctx, tag.GetName()) + if err != nil { + return err + } + vs.Version.Reset() + proto.Merge(&vs.Version, v) + m[tag.GetName()] = vs + } + + now := time.Now() + for it := r.ListReleases(ctx); ; { + rel, err := it.Next() + if err == io.EOF { + break + } + if err != nil { + return err + } + v, ok := m[rel.GetTagName()] + if !ok { + return fmt.Errorf("release %s attaches to an unknown tag %s", rel.GetName(), rel.GetTagName()) + } + as := make([]*pb.Release_Asset, 0, len(rel.Assets)) + dlc := 0 + for _, a := range rel.Assets { + if !releaseContentType[a.GetContentType()] { + continue + } + as = append(as, &pb.Release_Asset{ + Name: a.GetName(), + Url: a.GetBrowserDownloadURL(), + }) + dlc += a.GetDownloadCount() + } + v.Release = &pb.Release{ + Title: rel.GetName(), + Description: rel.GetBody(), + Preprelease: rel.GetPrerelease(), + PublishTime: timestamppb.New(rel.GetPublishedAt().Time), + Assets: as, + } + v.stats.GetOrCreatePointAt(now).DowloadCount += dlc + v.stats.ShiftWindow(now) + if err := v.Flush(); err != nil { + return err + } + } + + return nil +} + +type VersionStore struct { + name string + pb.Version + stats *timeseries.Store[*VersionStatsPoint] +} + +func (r *repo) loadVersionStore(ctx context.Context, tag string) (*VersionStore, error) { + name := fmt.Sprintf("store/%s/%s/versions/%s", r.owner, r.name, tag) + b, err := os.ReadFile(name + "/METADATA") + if err != nil && !os.IsNotExist(err) { + return nil, err + } + s := &VersionStore{ + name: name, + } + if err := prototext.Unmarshal(b, &s.Version); err != nil { + return nil, err + } + if s.stats, err = timeseries.Load(VersionStats, fmt.Sprintf("%s/metrics/version_stats", name)); err != nil { + return nil, err + } + return s, nil +} + +func (s *VersionStore) Flush() error { + if err := os.MkdirAll(s.name, 0755); err != nil { + return err + } + b, err := prototext.MarshalOptions{Multiline: true}.Marshal(&s.Version) + if err != nil { + return err + } + if err := os.WriteFile(s.name+"/METADATA", b, 0644); err != nil { + return err + } + return s.stats.Flush() +} + +func (r *repo) getVersion(ctx context.Context, ref string) (*pb.Version, error) { + c, _, err := r.cli.Repositories.GetCommit(ctx, r.owner, r.name, ref, &github.ListOptions{}) + if err != nil { + return nil, err + } + readme, err := r.GetReadme(ctx, ref) + if err != nil && !isNotFound(err) { + return nil, err + } + m, err := r.getModuleFile(ctx, ref) + if err != nil { + return nil, err + } + return &pb.Version{ + Ref: ref, + Sha: c.GetSHA(), + Readme: readme, + ModuleFile: m, + }, nil +} + +func (r *repo) getModuleFile(ctx context.Context, ref string) (*pb.ModuleFile, error) { + c, err := r.GetContent(ctx, ref, "MODULE.bazel") + if err != nil { + if isNotFound(err) { + return nil, nil + } + return nil, err + } + return parseModuleFile("MODULE.bazel", c) +} + +type VersionStatsPoint struct { + Time timeseries.DateTime `csv:"time (UTC)"` + DowloadCount int `csv:"# download"` +} + +func (p *VersionStatsPoint) Timestamp() time.Time { + return p.Time.Time +} + +var VersionStats = ×eries.Descriptor[*VersionStatsPoint]{ + NewPoint: func(t time.Time) *VersionStatsPoint { + return &VersionStatsPoint{Time: timeseries.DateTime{Time: t}} + }, + Align: timeseries.AlignToSecond, + Retention: timeSeriesRetention, +} + +func isNotFound(err error) bool { + if err, ok := err.(*github.ErrorResponse); ok && err.Response.StatusCode == http.StatusNotFound { + return true + } + return false +} diff --git a/experimental/rules-keeper/versions_module_file.go b/experimental/rules-keeper/versions_module_file.go new file mode 100644 index 0000000..78090be --- /dev/null +++ b/experimental/rules-keeper/versions_module_file.go @@ -0,0 +1,122 @@ +package main + +import ( + "fmt" + + "go.starlark.net/starlark" + + pb "github.com/bazel-contrib/SIG-rules-authors/experimental/rules-keeper/proto" +) + +// parseModuleFile parses a module file. +// +// The filename and src parameters are as for syntax.Parse: filename is the name +// of the file to execute, and the name that appears in error messages; src is +// an optional source of bytes to use instead of filename. +func parseModuleFile(filename string, src any) (*pb.ModuleFile, error) { + var mf pb.ModuleFile + predeclared := starlark.StringDict{ + "module": starlark.NewBuiltin("module", func(_ *starlark.Thread, b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { + var ( + ignored starlark.Value + bazelCompatibility, platforms, toolchains *starlark.List + ) + if err := starlark.UnpackArgs(b.Name(), args, kwargs, + "name?", &mf.Name, + "repo_name", &ignored, + "version?", &mf.Version, + "compatibility_level?", &mf.CompatibilityLevel, + "bazel_compatibility?", &bazelCompatibility, + "execution_platforms_to_register?", &platforms, + "toolchains_to_register?", &toolchains, + ); err != nil { + return nil, err + } + if bazelCompatibility != nil { + mf.BazelCompatibility = appendList(mf.BazelCompatibility, bazelCompatibility) + } + if platforms != nil { + mf.ExecutionPlatformsToRegister = appendList(mf.ExecutionPlatformsToRegister, platforms) + } + if toolchains != nil { + mf.ToolchainsToRegister = appendList(mf.ToolchainsToRegister, toolchains) + } + return starlark.None, nil + }), + "bazel_dep": starlark.NewBuiltin("bazel_dep", func(_ *starlark.Thread, b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { + var ( + ignored starlark.Value + dep pb.ModuleFile_Dependency + ) + if err := starlark.UnpackArgs(b.Name(), args, kwargs, + "name", &dep.Name, + "version?", &dep.Version, + "repo_name?", &ignored, + "dev_dependency?", &dep.DevDependency, + ); err != nil { + return nil, err + } + mf.Dependencies = append(mf.Dependencies, &dep) + return starlark.None, nil + }), + "register_execution_platforms": starlark.NewBuiltin("register_execution_platforms", func(_ *starlark.Thread, b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { + mf.ExecutionPlatformsToRegister = appendList(mf.ExecutionPlatformsToRegister, starlark.NewList(args)) + return starlark.None, nil + }), + "register_toolchains": starlark.NewBuiltin("register_toolchains", func(_ *starlark.Thread, b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { + mf.ToolchainsToRegister = appendList(mf.ToolchainsToRegister, starlark.NewList(args)) + return starlark.None, nil + }), + "use_extension": starlark.NewBuiltin("use_extension", func(_ *starlark.Thread, b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { + return noopExtension{}, nil + }), + "archive_override": starlark.NewBuiltin("archive_override", noop), + "git_override": starlark.NewBuiltin("git_override", noop), + "local_path_override": starlark.NewBuiltin("local_path_override", noop), + "multiple_version_override": starlark.NewBuiltin("multiple_version_override", noop), + "single_version_override": starlark.NewBuiltin("single_version_override", noop), + "use_repo": starlark.NewBuiltin("use_repo", noop), + } + + thread := &starlark.Thread{ + Name: "module", + Print: func(_ *starlark.Thread, msg string) {}, + } + _, err := starlark.ExecFile(thread, filename, src, predeclared) + if err != nil { + return nil, err + } + return &mf, nil +} + +func appendList(s []string, l *starlark.List) []string { + for it := l.Iterate(); ; { + var v starlark.Value + if !it.Next(&v) { + break + } + t, ok := starlark.AsString(v) + if ok { + s = append(s, t) + } + } + return s +} + +func noop(_ *starlark.Thread, b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { + return starlark.None, nil +} + +type noopExtension struct{} + +var _ starlark.HasAttrs = noopExtension{} + +func (noopExtension) Attr(name string) (starlark.Value, error) { + return starlark.NewBuiltin(name, noop), nil +} +func (noopExtension) AttrNames() []string { return nil } +func (noopExtension) String() string { return "{}" } +func (noopExtension) Freeze() {} +func (noopExtension) Type() string { return "proxy" } +func (noopExtension) Truth() starlark.Bool { return starlark.True } +func (noopExtension) Hash() (uint32, error) { return 0, fmt.Errorf("unhashable type: proxy") }