Skip to content

Commit 6fd0e7a

Browse files
authored
Remove zoneId and unsafe x-npmrc header (#1235)
1 parent fd9793c commit 6fd0e7a

6 files changed

Lines changed: 19 additions & 67 deletions

File tree

server/build.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ func (ctx *BuildContext) Path() string {
9494
}
9595

9696
func (ctx *BuildContext) Exists() (meta *BuildMeta, ok bool, err error) {
97-
key := ctx.npmrc.zoneId + ":" + ctx.Path()
97+
key := ctx.Path()
9898
meta, err = withLRUCache(key, func() (*BuildMeta, error) {
9999
metadata, err := ctx.db.Get(key)
100100
if err != nil {
@@ -163,7 +163,7 @@ func (ctx *BuildContext) Build() (meta *BuildMeta, err error) {
163163
}
164164

165165
// save the build result to the storage
166-
key := ctx.npmrc.zoneId + ":" + ctx.Path()
166+
key := ctx.Path()
167167
err = ctx.db.Put(key, encodeBuildMeta(meta))
168168
if err != nil {
169169
ctx.logger.Errorf("db.put(%s): %v", key, err)

server/build_resolver.go

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1080,7 +1080,7 @@ func (ctx *BuildContext) getImportPath(esm EsmPath, buildArgsPrefix string, exte
10801080
}
10811081

10821082
func (ctx *BuildContext) getSavepath() string {
1083-
return normalizeSavePath(ctx.npmrc.zoneId, path.Join("modules", ctx.Path()))
1083+
return normalizeSavePath(path.Join("modules", ctx.Path()))
10841084
}
10851085

10861086
func (ctx *BuildContext) getBuildArgsPrefix(isDts bool) string {
@@ -1304,27 +1304,21 @@ func normalizeEntryPath(path string) string {
13041304
return "." + utils.NormalizePathname(path)
13051305
}
13061306

1307-
func normalizeSavePath(zoneId string, pathname string) string {
1307+
func normalizeSavePath(pathname string) string {
13081308
if strings.HasPrefix(pathname, "modules/transform/") || strings.HasPrefix(pathname, "modules/x/") {
1309-
if zoneId != "" {
1310-
return zoneId + "/" + pathname
1311-
}
13121309
return pathname
13131310
}
1314-
segs := strings.Split(pathname, "/")
1315-
for i, seg := range segs {
1311+
segments := strings.Split(pathname, "/")
1312+
for i, seg := range segments {
13161313
if strings.HasPrefix(seg, "X-") && len(seg) > 42 {
13171314
h := sha1.New()
13181315
h.Write([]byte(seg))
1319-
segs[i] = "x-" + hex.EncodeToString(h.Sum(nil))
1316+
segments[i] = "x-" + hex.EncodeToString(h.Sum(nil))
13201317
} else if strings.HasPrefix(seg, "*") {
1321-
segs[i] = seg[1:] + "/ea"
1318+
segments[i] = seg[1:] + "/ea"
13221319
}
13231320
}
1324-
if zoneId != "" {
1325-
return zoneId + "/" + strings.Join(segs, "/")
1326-
}
1327-
return strings.Join(segs, "/")
1321+
return strings.Join(segments, "/")
13281322
}
13291323

13301324
// normalizeImportSpecifier normalizes the given specifier.

server/dts_transform.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func transformDTS(ctx *BuildContext, dts string, buildArgsPrefix string, marker
4040
}
4141
marker.Add(dtsPath)
4242

43-
savePath := normalizeSavePath(ctx.npmrc.zoneId, path.Join("types", dtsPath))
43+
savePath := normalizeSavePath(path.Join("types", dtsPath))
4444
// check if the dts file has been transformed
4545
_, err = ctx.storage.Stat(savePath)
4646
if err == nil || err != storage.ErrNotFound {

server/legacy_router.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ func legacyESM(ctx *rex.Context, buildStorage storage.Storage, buildVersionPrefi
178178
}
179179
isStatic = hasTargetSegment
180180
}
181-
savePath := "legacy/" + normalizeSavePath("", ctx.R.URL.Path[1:])
181+
savePath := "legacy/" + normalizeSavePath(ctx.R.URL.Path[1:])
182182
if (buildVersionPrefix != "" && isStatic) || endsWith(pathname, ".d.ts", ".d.mts") {
183183
f, fi, e := buildStorage.Get(savePath)
184184
if e != nil && e != storage.ErrNotFound {

server/npmrc.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ type NpmRegistry struct {
4949
type NpmRC struct {
5050
NpmRegistry
5151
ScopedRegistries map[string]NpmRegistry `json:"scopedRegistries"`
52-
zoneId string
5352
}
5453

5554
func DefaultNpmRC() *NpmRC {
@@ -110,9 +109,6 @@ func NewNpmRcFromJSON(jsonData []byte) (npmrc *NpmRC, err error) {
110109
}
111110

112111
func (rc *NpmRC) StoreDir() string {
113-
if rc.zoneId != "" {
114-
return path.Join(config.WorkDir, "npm-"+rc.zoneId)
115-
}
116112
return path.Join(config.WorkDir, "npm")
117113
}
118114

server/router.go

Lines changed: 8 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ func esmRouter(db Database, esmStorage storage.Storage, logger *log.Logger) rex.
6666
startTime = time.Now()
6767
globalETag = fmt.Sprintf(`W/"%s"`, VERSION)
6868
buildQueue = NewBuildQueue(int(config.BuildConcurrency))
69+
npmrc = DefaultNpmRC()
6970
)
7071

7172
return func(ctx *rex.Context) any {
@@ -111,12 +112,7 @@ func esmRouter(db Database, esmStorage storage.Storage, logger *log.Logger) rex.
111112
h.Write([]byte(options.SourceMap))
112113
fmt.Fprintf(h, "%v", options.Minify)
113114
hash := hex.EncodeToString(h.Sum(nil))
114-
115-
zoneId := ctx.R.Header.Get("X-Zone-Id")
116-
if zoneId != "" && !valid.IsDomain(zoneId) {
117-
zoneId = ""
118-
}
119-
savePath := normalizeSavePath(zoneId, fmt.Sprintf("modules/transform/%s.mjs", hash))
115+
savePath := normalizeSavePath(fmt.Sprintf("modules/transform/%s.mjs", hash))
120116

121117
// if previous build exists, return it directly
122118
if file, _, err := esmStorage.Get(savePath); err == nil {
@@ -413,11 +409,7 @@ func esmRouter(db Database, esmStorage storage.Storage, logger *log.Logger) rex.
413409
if len(hash) != 40 || !valid.IsHexString(hash) {
414410
return rex.Status(404, "Not Found")
415411
}
416-
zoneId := ctx.R.Header.Get("X-Zone-Id")
417-
if zoneId != "" && !valid.IsDomain(zoneId) {
418-
zoneId = ""
419-
}
420-
savePath := normalizeSavePath(zoneId, fmt.Sprintf("modules/transform/%s.%s", hash, ext))
412+
savePath := normalizeSavePath(fmt.Sprintf("modules/transform/%s.%s", hash, ext))
421413
f, fi, err := esmStorage.Get(savePath)
422414
if err != nil {
423415
return rex.Status(500, err.Error())
@@ -483,36 +475,6 @@ func esmRouter(db Database, esmStorage storage.Storage, logger *log.Logger) rex.
483475
return data
484476
}
485477

486-
var npmrc *NpmRC
487-
if v := ctx.R.Header.Get("X-Npmrc"); v != "" {
488-
rc, err := NewNpmRcFromJSON([]byte(v))
489-
if err != nil {
490-
return rex.Status(400, "Invalid Npmrc Header")
491-
}
492-
npmrc = rc
493-
} else {
494-
npmrc = DefaultNpmRC()
495-
}
496-
497-
zoneId := ctx.R.Header.Get("X-Zone-Id")
498-
if zoneId != "" {
499-
var scopeName string
500-
if pkgName := toPackageName(pathname[1:]); strings.HasPrefix(pkgName, "@") {
501-
scopeName = pkgName[:strings.Index(pkgName, "/")]
502-
}
503-
if scopeName != "" {
504-
reg, ok := npmrc.ScopedRegistries[scopeName]
505-
if !ok || (reg.Registry == jsrRegistry && reg.Token == "" && (reg.User == "" || reg.Password == "")) {
506-
zoneId = ""
507-
}
508-
} else if npmrc.Registry == npmRegistry && npmrc.Token == "" && (npmrc.User == "" || npmrc.Password == "") {
509-
zoneId = ""
510-
}
511-
}
512-
if zoneId != "" && valid.IsDomain(zoneId) {
513-
npmrc.zoneId = zoneId
514-
}
515-
516478
if strings.HasPrefix(pathname, "/http://") || strings.HasPrefix(pathname, "/https://") {
517479
query := ctx.Query()
518480
modUrl, err := url.Parse(pathname[1:])
@@ -565,7 +527,7 @@ func esmRouter(db Database, esmStorage storage.Storage, logger *log.Logger) rex.
565527
h.Write([]byte(ctxParam))
566528
h.Write([]byte(target))
567529
h.Write([]byte(v))
568-
savePath := normalizeSavePath(npmrc.zoneId, path.Join("modules/x", hex.EncodeToString(h.Sum(nil))+".css"))
530+
savePath := normalizeSavePath(path.Join("modules/x", hex.EncodeToString(h.Sum(nil))+".css"))
569531
r, fi, err := esmStorage.Get(savePath)
570532
if err != nil && err != storage.ErrNotFound {
571533
return rex.Status(500, err.Error())
@@ -715,7 +677,7 @@ func esmRouter(db Database, esmStorage storage.Storage, logger *log.Logger) rex.
715677
h.Write([]byte(im))
716678
h.Write([]byte(target))
717679
h.Write([]byte(v))
718-
savePath := normalizeSavePath(npmrc.zoneId, path.Join("modules/x", hex.EncodeToString(h.Sum(nil))+".mjs"))
680+
savePath := normalizeSavePath(path.Join("modules/x", hex.EncodeToString(h.Sum(nil))+".mjs"))
719681
content, fi, err := esmStorage.Get(savePath)
720682
if err != nil && err != storage.ErrNotFound {
721683
return rex.Status(500, err.Error())
@@ -1237,7 +1199,7 @@ func esmRouter(db Database, esmStorage storage.Storage, logger *log.Logger) rex.
12371199
} else {
12381200
savePath = path.Join("modules", pathname)
12391201
}
1240-
savePath = normalizeSavePath(npmrc.zoneId, savePath)
1202+
savePath = normalizeSavePath(savePath)
12411203
f, stat, err := esmStorage.Get(savePath)
12421204
if err != nil {
12431205
if err != storage.ErrNotFound {
@@ -1466,7 +1428,7 @@ func esmRouter(db Database, esmStorage storage.Storage, logger *log.Logger) rex.
14661428
if a := encodeBuildArgs(buildArgs, true); a != "" {
14671429
args = "X-" + a
14681430
}
1469-
savePath := normalizeSavePath(npmrc.zoneId, path.Join(fmt.Sprintf(
1431+
savePath := normalizeSavePath(path.Join(fmt.Sprintf(
14701432
"types/%s/%s",
14711433
esm.Name(),
14721434
args,
@@ -1685,7 +1647,7 @@ func esmRouter(db Database, esmStorage storage.Storage, logger *log.Logger) rex.
16851647
// seem the build file is non-exist in the storage
16861648
// let's remove the build meta from the database and clear the cache
16871649
// then re-build the module
1688-
key := npmrc.zoneId + ":" + build.Path()
1650+
key := build.Path()
16891651
db.Delete(key)
16901652
cacheLRU.Remove(key)
16911653
return rex.Status(500, "Storage error, please try again")

0 commit comments

Comments
 (0)