pnpm 10.34.0 → 10.34.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/node_modules/.modules.yaml +57 -57
  2. package/dist/node_modules/.pnpm/lock.yaml +16 -14
  3. package/dist/node_modules/.pnpm-workspace-state-v1.json +3 -1
  4. package/dist/node_modules/semver/classes/range.js +2 -2
  5. package/dist/node_modules/semver/classes/semver.js +19 -2
  6. package/dist/node_modules/semver/package.json +2 -2
  7. package/dist/node_modules/tar/dist/commonjs/header.d.ts.map +1 -1
  8. package/dist/node_modules/tar/dist/commonjs/header.js +51 -16
  9. package/dist/node_modules/tar/dist/commonjs/header.js.map +1 -1
  10. package/dist/node_modules/tar/dist/commonjs/index.min.js +3 -3
  11. package/dist/node_modules/tar/dist/commonjs/index.min.js.map +3 -3
  12. package/dist/node_modules/tar/dist/commonjs/pack.d.ts.map +1 -1
  13. package/dist/node_modules/tar/dist/commonjs/pack.js +4 -5
  14. package/dist/node_modules/tar/dist/commonjs/pack.js.map +1 -1
  15. package/dist/node_modules/tar/dist/commonjs/types.d.ts.map +1 -1
  16. package/dist/node_modules/tar/dist/commonjs/types.js +21 -1
  17. package/dist/node_modules/tar/dist/commonjs/types.js.map +1 -1
  18. package/dist/node_modules/tar/dist/esm/header.d.ts.map +1 -1
  19. package/dist/node_modules/tar/dist/esm/header.js +51 -16
  20. package/dist/node_modules/tar/dist/esm/header.js.map +1 -1
  21. package/dist/node_modules/tar/dist/esm/index.min.js +3 -3
  22. package/dist/node_modules/tar/dist/esm/index.min.js.map +3 -3
  23. package/dist/node_modules/tar/dist/esm/pack.d.ts.map +1 -1
  24. package/dist/node_modules/tar/dist/esm/pack.js +4 -5
  25. package/dist/node_modules/tar/dist/esm/pack.js.map +1 -1
  26. package/dist/node_modules/tar/dist/esm/types.d.ts.map +1 -1
  27. package/dist/node_modules/tar/dist/esm/types.js +20 -0
  28. package/dist/node_modules/tar/dist/esm/types.js.map +1 -1
  29. package/dist/node_modules/tar/package.json +11 -10
  30. package/dist/node_modules/tinyglobby/dist/index.cjs +19 -18
  31. package/dist/node_modules/tinyglobby/dist/index.d.cts +1 -1
  32. package/dist/node_modules/tinyglobby/dist/index.d.mts +1 -1
  33. package/dist/node_modules/tinyglobby/dist/index.mjs +9 -8
  34. package/dist/node_modules/tinyglobby/package.json +9 -12
  35. package/dist/pnpm.cjs +11055 -756
  36. package/package.json +1 -1
@@ -19,36 +19,45 @@
19
19
  "nopt@8.1.0": [
20
20
  "node_modules/nopt"
21
21
  ],
22
- "tar@7.5.15": [
23
- "node_modules/tar"
24
- ],
25
- "tinyglobby@0.2.16": [
26
- "node_modules/tinyglobby"
22
+ "exponential-backoff@3.1.3": [
23
+ "node_modules/exponential-backoff"
27
24
  ],
28
25
  "which@5.0.0": [
29
26
  "node_modules/which"
30
27
  ],
28
+ "tinyglobby@0.2.17": [
29
+ "node_modules/tinyglobby"
30
+ ],
31
31
  "env-paths@2.2.1": [
32
32
  "node_modules/env-paths"
33
33
  ],
34
- "exponential-backoff@3.1.3": [
35
- "node_modules/exponential-backoff"
36
- ],
37
34
  "proc-log@5.0.0": [
38
35
  "node_modules/proc-log"
39
36
  ],
40
- "graceful-fs@4.2.11": [
41
- "node_modules/graceful-fs"
37
+ "tar@7.5.16": [
38
+ "node_modules/tar"
42
39
  ],
43
- "semver@7.8.1": [
40
+ "semver@7.8.3": [
44
41
  "node_modules/semver"
45
42
  ],
46
43
  "make-fetch-happen@14.0.3": [
47
44
  "node_modules/make-fetch-happen"
48
45
  ],
46
+ "graceful-fs@4.2.11": [
47
+ "node_modules/graceful-fs"
48
+ ],
49
49
  "abbrev@3.0.1": [
50
50
  "node_modules/abbrev"
51
51
  ],
52
+ "isexe@3.1.1": [
53
+ "node_modules/isexe"
54
+ ],
55
+ "fdir@6.5.0(picomatch@4.0.4)": [
56
+ "node_modules/fdir"
57
+ ],
58
+ "picomatch@4.0.4": [
59
+ "node_modules/picomatch"
60
+ ],
52
61
  "chownr@3.0.0": [
53
62
  "node_modules/chownr"
54
63
  ],
@@ -64,20 +73,14 @@
64
73
  "minipass@7.1.3": [
65
74
  "node_modules/minipass"
66
75
  ],
67
- "picomatch@4.0.4": [
68
- "node_modules/picomatch"
69
- ],
70
- "fdir@6.5.0(picomatch@4.0.4)": [
71
- "node_modules/fdir"
72
- ],
73
- "isexe@3.1.1": [
74
- "node_modules/isexe"
75
- ],
76
76
  "ssri@12.0.0": [
77
77
  "node_modules/ssri"
78
78
  ],
79
- "cacache@19.0.1": [
80
- "node_modules/cacache"
79
+ "negotiator@1.0.0": [
80
+ "node_modules/negotiator"
81
+ ],
82
+ "promise-retry@2.0.1": [
83
+ "node_modules/promise-retry"
81
84
  ],
82
85
  "minipass@3.3.6": [
83
86
  "node_modules/minipass-flush/node_modules/minipass",
@@ -89,11 +92,8 @@
89
92
  "node_modules/minipass-pipeline/node_modules/yallist",
90
93
  "node_modules/minipass-sized/node_modules/yallist"
91
94
  ],
92
- "promise-retry@2.0.1": [
93
- "node_modules/promise-retry"
94
- ],
95
- "negotiator@1.0.0": [
96
- "node_modules/negotiator"
95
+ "cacache@19.0.1": [
96
+ "node_modules/cacache"
97
97
  ],
98
98
  "http-cache-semantics@4.2.0": [
99
99
  "node_modules/http-cache-semantics"
@@ -104,42 +104,42 @@
104
104
  "minipass-fetch@4.0.1": [
105
105
  "node_modules/minipass-fetch"
106
106
  ],
107
+ "retry@0.12.0": [
108
+ "node_modules/retry"
109
+ ],
110
+ "err-code@2.0.3": [
111
+ "node_modules/err-code"
112
+ ],
107
113
  "minipass-collect@2.0.1": [
108
114
  "node_modules/minipass-collect"
109
115
  ],
110
116
  "p-map@7.0.4": [
111
117
  "node_modules/p-map"
112
118
  ],
113
- "unique-filename@4.0.0": [
114
- "node_modules/unique-filename"
115
- ],
116
- "@npmcli/fs@4.0.0": [
117
- "node_modules/@npmcli/fs"
118
- ],
119
119
  "fs-minipass@3.0.3": [
120
120
  "node_modules/fs-minipass"
121
121
  ],
122
+ "unique-filename@4.0.0": [
123
+ "node_modules/unique-filename"
124
+ ],
122
125
  "lru-cache@10.4.3": [
123
126
  "node_modules/lru-cache"
124
127
  ],
128
+ "@npmcli/fs@4.0.0": [
129
+ "node_modules/@npmcli/fs"
130
+ ],
125
131
  "glob@10.5.0": [
126
132
  "node_modules/glob"
127
133
  ],
128
- "retry@0.12.0": [
129
- "node_modules/retry"
130
- ],
131
- "err-code@2.0.3": [
132
- "node_modules/err-code"
133
- ],
134
- "socks-proxy-agent@8.0.5": [
135
- "node_modules/socks-proxy-agent"
136
- ],
137
134
  "agent-base@7.1.4": [
138
135
  "node_modules/agent-base"
139
136
  ],
140
137
  "http-proxy-agent@7.0.2": [
141
138
  "node_modules/http-proxy-agent"
142
139
  ],
140
+ "socks-proxy-agent@8.0.5": [
141
+ "node_modules/socks-proxy-agent"
142
+ ],
143
143
  "https-proxy-agent@7.0.6": [
144
144
  "node_modules/https-proxy-agent"
145
145
  ],
@@ -149,18 +149,18 @@
149
149
  "unique-slug@5.0.0": [
150
150
  "node_modules/unique-slug"
151
151
  ],
152
- "foreground-child@3.3.1": [
153
- "node_modules/foreground-child"
154
- ],
155
152
  "package-json-from-dist@1.0.1": [
156
153
  "node_modules/package-json-from-dist"
157
154
  ],
158
- "path-scurry@1.11.1": [
159
- "node_modules/path-scurry"
155
+ "foreground-child@3.3.1": [
156
+ "node_modules/foreground-child"
160
157
  ],
161
158
  "jackspeak@3.4.3": [
162
159
  "node_modules/jackspeak"
163
160
  ],
161
+ "path-scurry@1.11.1": [
162
+ "node_modules/path-scurry"
163
+ ],
164
164
  "minimatch@9.0.9": [
165
165
  "node_modules/minimatch"
166
166
  ],
@@ -176,15 +176,15 @@
176
176
  "imurmurhash@0.1.4": [
177
177
  "node_modules/imurmurhash"
178
178
  ],
179
+ "signal-exit@4.1.0": [
180
+ "node_modules/signal-exit"
181
+ ],
179
182
  "which@2.0.2": [
180
183
  "node_modules/cross-spawn/node_modules/which"
181
184
  ],
182
185
  "isexe@2.0.0": [
183
186
  "node_modules/cross-spawn/node_modules/isexe"
184
187
  ],
185
- "signal-exit@4.1.0": [
186
- "node_modules/signal-exit"
187
- ],
188
188
  "@isaacs/cliui@8.0.2": [
189
189
  "node_modules/@isaacs/cliui"
190
190
  ],
@@ -197,21 +197,21 @@
197
197
  "ms@2.1.3": [
198
198
  "node_modules/ms"
199
199
  ],
200
- "ip-address@10.2.0": [
201
- "node_modules/ip-address"
202
- ],
203
200
  "smart-buffer@4.2.0": [
204
201
  "node_modules/smart-buffer"
205
202
  ],
203
+ "ip-address@10.2.0": [
204
+ "node_modules/ip-address"
205
+ ],
206
206
  "safer-buffer@2.1.2": [
207
207
  "node_modules/safer-buffer"
208
208
  ],
209
- "shebang-command@2.0.0": [
210
- "node_modules/shebang-command"
211
- ],
212
209
  "path-key@3.1.1": [
213
210
  "node_modules/path-key"
214
211
  ],
212
+ "shebang-command@2.0.0": [
213
+ "node_modules/shebang-command"
214
+ ],
215
215
  "strip-ansi@7.2.0": [
216
216
  "node_modules/strip-ansi"
217
217
  ],
@@ -289,7 +289,7 @@
289
289
  "packageManager": "pnpm@10.33.1",
290
290
  "pendingBuilds": [],
291
291
  "publicHoistPattern": [],
292
- "prunedAt": "Wed, 27 May 2026 14:56:27 GMT",
292
+ "prunedAt": "Wed, 10 Jun 2026 13:59:47 GMT",
293
293
  "registries": {
294
294
  "default": "https://registry.npmjs.org/",
295
295
  "@jsr": "https://npm.jsr.io/"
@@ -42,6 +42,8 @@ overrides:
42
42
  semver@<7.5.2: ^7.7.4
43
43
  send@<0.19.0: ^0.19.0
44
44
  serve-static@<1.16.0: ^1.16.0
45
+ shell-quote@<1.8.4: '>=1.8.4'
46
+ shell-quote: 1.8.4
45
47
  socks@2: ^2.8.1
46
48
  tar@<=7.5.10: '>=7.5.11'
47
49
  tmp@<0.2.6: '>=0.2.6'
@@ -319,8 +321,8 @@ packages:
319
321
  safer-buffer@2.1.2:
320
322
  resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
321
323
 
322
- semver@7.8.1:
323
- resolution: {integrity: sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==}
324
+ semver@7.8.3:
325
+ resolution: {integrity: sha512-wnilbGyMxzbY7dNOl7jpKbLSjcfeweJWU5j4+u5qW+6/wuGD9KzIGOyZnQVSBM9E7DtWaaH3CyHkppYrKYoxwg==}
324
326
  engines: {node: '>=10'}
325
327
  hasBin: true
326
328
 
@@ -368,12 +370,12 @@ packages:
368
370
  resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==}
369
371
  engines: {node: '>=12'}
370
372
 
371
- tar@7.5.15:
372
- resolution: {integrity: sha512-dzGK0boVlC4W5QFuQN1EFSl3bIDYsk7Tj40U6eIBnK2k/8ml7TZ5agbI5j5+qnoVcAA+rNtBml8SEiLxZpNqRQ==}
373
+ tar@7.5.16:
374
+ resolution: {integrity: sha512-56adEpPMouktRlBLXiaYFFzZ/3+JXa8P9n7WbR+ibIjtviN55mEaOkiysCnPnWm+7kkui1Dn8J9l+g6zV8731w==}
373
375
  engines: {node: '>=18'}
374
376
 
375
- tinyglobby@0.2.16:
376
- resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==}
377
+ tinyglobby@0.2.17:
378
+ resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
377
379
  engines: {node: '>=12.0.0'}
378
380
 
379
381
  unique-filename@4.0.0:
@@ -442,7 +444,7 @@ snapshots:
442
444
 
443
445
  '@npmcli/fs@4.0.0':
444
446
  dependencies:
445
- semver: 7.8.1
447
+ semver: 7.8.3
446
448
  optional: true
447
449
 
448
450
  '@pkgjs/parseargs@0.11.0':
@@ -488,7 +490,7 @@ snapshots:
488
490
  minipass-pipeline: 1.2.4
489
491
  p-map: 7.0.4
490
492
  ssri: 12.0.0
491
- tar: 7.5.15
493
+ tar: 7.5.16
492
494
  unique-filename: 4.0.0
493
495
  optional: true
494
496
 
@@ -694,9 +696,9 @@ snapshots:
694
696
  make-fetch-happen: 14.0.3
695
697
  nopt: 8.1.0
696
698
  proc-log: 5.0.0
697
- semver: 7.8.1
698
- tar: 7.5.15
699
- tinyglobby: 0.2.16
699
+ semver: 7.8.3
700
+ tar: 7.5.16
701
+ tinyglobby: 0.2.17
700
702
  which: 5.0.0
701
703
  transitivePeerDependencies:
702
704
  - supports-color
@@ -740,7 +742,7 @@ snapshots:
740
742
  safer-buffer@2.1.2:
741
743
  optional: true
742
744
 
743
- semver@7.8.1:
745
+ semver@7.8.3:
744
746
  optional: true
745
747
 
746
748
  shebang-command@2.0.0:
@@ -801,7 +803,7 @@ snapshots:
801
803
  ansi-regex: 6.2.2
802
804
  optional: true
803
805
 
804
- tar@7.5.15:
806
+ tar@7.5.16:
805
807
  dependencies:
806
808
  '@isaacs/fs-minipass': 4.0.1
807
809
  chownr: 3.0.0
@@ -810,7 +812,7 @@ snapshots:
810
812
  yallist: 5.0.0
811
813
  optional: true
812
814
 
813
- tinyglobby@0.2.16:
815
+ tinyglobby@0.2.17:
814
816
  dependencies:
815
817
  fdir: 6.5.0(picomatch@4.0.4)
816
818
  picomatch: 4.0.4
@@ -1,5 +1,5 @@
1
1
  {
2
- "lastValidatedTimestamp": 1779893787941,
2
+ "lastValidatedTimestamp": 1781099987600,
3
3
  "projects": {},
4
4
  "pnpmfiles": [],
5
5
  "settings": {
@@ -56,6 +56,8 @@
56
56
  "semver@<7.5.2": "^7.7.4",
57
57
  "send@<0.19.0": "^0.19.0",
58
58
  "serve-static@<1.16.0": "^1.16.0",
59
+ "shell-quote@<1.8.4": ">=1.8.4",
60
+ "shell-quote": "1.8.4",
59
61
  "socks@2": "^2.8.1",
60
62
  "tar@<=7.5.10": ">=7.5.11",
61
63
  "tmp@<0.2.6": ">=0.2.6",
@@ -373,10 +373,10 @@ const replaceCaret = (comp, options) => {
373
373
  if (M === '0') {
374
374
  if (m === '0') {
375
375
  ret = `>=${M}.${m}.${p
376
- }${z} <${M}.${m}.${+p + 1}-0`
376
+ } <${M}.${m}.${+p + 1}-0`
377
377
  } else {
378
378
  ret = `>=${M}.${m}.${p
379
- }${z} <${M}.${+m + 1}.0-0`
379
+ } <${M}.${+m + 1}.0-0`
380
380
  }
381
381
  } else {
382
382
  ret = `>=${M}.${m}.${p
@@ -6,6 +6,22 @@ const { safeRe: re, t } = require('../internal/re')
6
6
 
7
7
  const parseOptions = require('../internal/parse-options')
8
8
  const { compareIdentifiers } = require('../internal/identifiers')
9
+
10
+ const isPrereleaseIdentifier = (prerelease, identifier) => {
11
+ const identifiers = identifier.split('.')
12
+ if (identifiers.length > prerelease.length) {
13
+ return false
14
+ }
15
+
16
+ for (let i = 0; i < identifiers.length; i++) {
17
+ if (compareIdentifiers(prerelease[i], identifiers[i]) !== 0) {
18
+ return false
19
+ }
20
+ }
21
+
22
+ return true
23
+ }
24
+
9
25
  class SemVer {
10
26
  constructor (version, options) {
11
27
  options = parseOptions(options)
@@ -309,8 +325,9 @@ class SemVer {
309
325
  if (identifierBase === false) {
310
326
  prerelease = [identifier]
311
327
  }
312
- if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
313
- if (isNaN(this.prerelease[1])) {
328
+ if (isPrereleaseIdentifier(this.prerelease, identifier)) {
329
+ const prereleaseBase = this.prerelease[identifier.split('.').length]
330
+ if (isNaN(prereleaseBase)) {
314
331
  this.prerelease = prerelease
315
332
  }
316
333
  } else {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "semver",
3
- "version": "7.8.1",
3
+ "version": "7.8.3",
4
4
  "description": "The semantic version parser used by npm.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -14,7 +14,7 @@
14
14
  "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\""
15
15
  },
16
16
  "devDependencies": {
17
- "@npmcli/eslint-config": "^6.0.0",
17
+ "@npmcli/eslint-config": "^7.0.0",
18
18
  "@npmcli/template-oss": "5.0.0",
19
19
  "benchmark": "^2.1.4",
20
20
  "tap": "^16.0.0"
@@ -1 +1 @@
1
- {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../src/header.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAG9D,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,aAAa,GAAG,aAAa,CAAA;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,KAAK,CAAC,EAAE,IAAI,CAAA;IAIZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,qBAAa,MAAO,YAAW,UAAU;;IACvC,UAAU,EAAE,OAAO,CAAQ;IAC3B,OAAO,EAAE,OAAO,CAAQ;IACxB,SAAS,EAAE,OAAO,CAAQ;IAE1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAI;IAClB,MAAM,EAAE,MAAM,CAAI;IAClB,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,KAAK,CAAC,EAAE,IAAI,CAAA;IAEZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;gBAGd,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,EAC1B,GAAG,GAAE,MAAU,EACf,EAAE,CAAC,EAAE,UAAU,EACf,GAAG,CAAC,EAAE,UAAU;IASlB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,UAAU;IAwGlE,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,MAAU;IAiEpC,IAAI,IAAI,IAAI,aAAa,CAKxB;IAED,IAAI,OAAO,IAAI,aAAa,GAAG,aAAa,CAE3C;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa,GAAG,aAAa,EAS3D;CACF"}
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../src/header.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAG9D,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,aAAa,GAAG,aAAa,CAAA;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,KAAK,CAAC,EAAE,IAAI,CAAA;IAIZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,qBAAa,MAAO,YAAW,UAAU;;IACvC,UAAU,EAAE,OAAO,CAAQ;IAC3B,OAAO,EAAE,OAAO,CAAQ;IACxB,SAAS,EAAE,OAAO,CAAQ;IAE1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAI;IAClB,MAAM,EAAE,MAAM,CAAI;IAClB,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,KAAK,CAAC,EAAE,IAAI,CAAA;IAEZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;gBAGd,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,EAC1B,GAAG,GAAE,MAAU,EACf,EAAE,CAAC,EAAE,UAAU,EACf,GAAG,CAAC,EAAE,UAAU;IASlB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,UAAU;IA4IlE,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,MAAU;IAiEpC,IAAI,IAAI,IAAI,aAAa,CAKxB;IAED,IAAI,OAAO,IAAI,aAAa,GAAG,aAAa,CAE3C;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa,GAAG,aAAa,EAS3D;CACF"}
@@ -78,22 +78,45 @@ class Header {
78
78
  if (!buf || !(buf.length >= off + 512)) {
79
79
  throw new Error('need 512 bytes for header');
80
80
  }
81
- this.path = ex?.path ?? decString(buf, off, 100);
82
- this.mode = ex?.mode ?? gex?.mode ?? decNumber(buf, off + 100, 8);
83
- this.uid = ex?.uid ?? gex?.uid ?? decNumber(buf, off + 108, 8);
84
- this.gid = ex?.gid ?? gex?.gid ?? decNumber(buf, off + 116, 8);
85
- this.size = ex?.size ?? gex?.size ?? decNumber(buf, off + 124, 12);
86
- this.mtime = ex?.mtime ?? gex?.mtime ?? decDate(buf, off + 136, 12);
81
+ // Decode the typeflag (independent of any pending PAX/GNU extended header)
82
+ // up front so we can tell whether THIS block is itself an intermediary
83
+ // extension header (PAX `x`/`g`, GNU long-name `L`, GNU long-link `K`).
84
+ // Per POSIX pax, a PAX extended header describes the *next file entry*, not
85
+ // the extension headers that may sit between it and that file. Applying the
86
+ // pending PAX overrides (notably `size`) to an intervening `L`/`K`/`x`/`g`
87
+ // header desynchronizes the stream relative to other tar implementations
88
+ // and enables tar interpretation-conflict / file-smuggling attacks.
89
+ const t = decString(buf, off + 156, 1);
90
+ const isNormalFS = types.normalFsTypes.has(t);
91
+ const exForFields = isNormalFS ? ex : undefined;
92
+ const gexForFields = isNormalFS ? gex : undefined;
93
+ this.path = exForFields?.path ?? decString(buf, off, 100);
94
+ this.mode =
95
+ exForFields?.mode ??
96
+ gexForFields?.mode ??
97
+ decNumber(buf, off + 100, 8);
98
+ this.uid =
99
+ exForFields?.uid ?? gexForFields?.uid ?? decNumber(buf, off + 108, 8);
100
+ this.gid =
101
+ exForFields?.gid ?? gexForFields?.gid ?? decNumber(buf, off + 116, 8);
102
+ this.size =
103
+ exForFields?.size ??
104
+ gexForFields?.size ??
105
+ decNumber(buf, off + 124, 12);
106
+ this.mtime =
107
+ exForFields?.mtime ??
108
+ gexForFields?.mtime ??
109
+ decDate(buf, off + 136, 12);
87
110
  this.cksum = decNumber(buf, off + 148, 12);
88
111
  // if we have extended or global extended headers, apply them now
89
112
  // See https://github.com/npm/node-tar/pull/187
90
- // Apply global before local, so it overrides
91
- if (gex)
92
- this.#slurp(gex, true);
93
- if (ex)
94
- this.#slurp(ex);
113
+ // Apply global before local, so it overrides. Never slurp the pending
114
+ // extended-header fields onto an intermediary extension header.
115
+ if (gexForFields)
116
+ this.#slurp(gexForFields, true);
117
+ if (exForFields)
118
+ this.#slurp(exForFields);
95
119
  // old tar versions marked dirs as a file with a trailing /
96
- const t = decString(buf, off + 156, 1);
97
120
  if (types.isCode(t)) {
98
121
  this.#type = t || '0';
99
122
  }
@@ -111,12 +134,24 @@ class Header {
111
134
  this.linkpath = decString(buf, off + 157, 100);
112
135
  if (buf.subarray(off + 257, off + 265).toString() === 'ustar\u000000') {
113
136
  /* c8 ignore start */
114
- this.uname = ex?.uname ?? gex?.uname ?? decString(buf, off + 265, 32);
115
- this.gname = ex?.gname ?? gex?.gname ?? decString(buf, off + 297, 32);
137
+ this.uname =
138
+ exForFields?.uname ??
139
+ gexForFields?.uname ??
140
+ decString(buf, off + 265, 32);
141
+ this.gname =
142
+ exForFields?.gname ??
143
+ gexForFields?.gname ??
144
+ decString(buf, off + 297, 32);
116
145
  this.devmaj =
117
- ex?.devmaj ?? gex?.devmaj ?? decNumber(buf, off + 329, 8) ?? 0;
146
+ exForFields?.devmaj ??
147
+ gexForFields?.devmaj ??
148
+ decNumber(buf, off + 329, 8) ??
149
+ 0;
118
150
  this.devmin =
119
- ex?.devmin ?? gex?.devmin ?? decNumber(buf, off + 337, 8) ?? 0;
151
+ exForFields?.devmin ??
152
+ gexForFields?.devmin ??
153
+ decNumber(buf, off + 337, 8) ??
154
+ 0;
120
155
  /* c8 ignore stop */
121
156
  if (buf[off + 475] !== 0) {
122
157
  // definitely a prefix, definitely >130 chars.
@@ -1 +1 @@
1
- {"version":3,"file":"header.js","sourceRoot":"","sources":["../../src/header.ts"],"names":[],"mappings":"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","sourcesContent":["// parse a 512-byte header block to a data object, or vice-versa\n// encode returns `true` if a pax extended header is needed, because\n// the data could not be faithfully encoded in a simple header.\n// (Also, check header.needPax to see if it needs a pax header.)\n\nimport { posix as pathModule } from 'node:path'\nimport * as large from './large-numbers.js'\nimport type { EntryTypeCode, EntryTypeName } from './types.js'\nimport * as types from './types.js'\n\nexport type HeaderData = {\n path?: string\n mode?: number\n uid?: number\n gid?: number\n size?: number\n cksum?: number\n type?: EntryTypeName | 'Unsupported'\n linkpath?: string\n uname?: string\n gname?: string\n devmaj?: number\n devmin?: number\n atime?: Date\n ctime?: Date\n mtime?: Date\n\n // fields that are common in extended PAX headers, but not in the\n // \"standard\" tar header block\n charset?: string\n comment?: string\n dev?: number\n ino?: number\n nlink?: number\n}\n\nexport class Header implements HeaderData {\n cksumValid: boolean = false\n needPax: boolean = false\n nullBlock: boolean = false\n\n block?: Buffer\n path?: string\n mode?: number\n uid?: number\n gid?: number\n size?: number\n cksum?: number\n #type: EntryTypeCode | 'Unsupported' = 'Unsupported'\n linkpath?: string\n uname?: string\n gname?: string\n devmaj: number = 0\n devmin: number = 0\n atime?: Date\n ctime?: Date\n mtime?: Date\n\n charset?: string\n comment?: string\n\n constructor(\n data?: Buffer | HeaderData,\n off: number = 0,\n ex?: HeaderData,\n gex?: HeaderData,\n ) {\n if (Buffer.isBuffer(data)) {\n this.decode(data, off || 0, ex, gex)\n } else if (data) {\n this.#slurp(data)\n }\n }\n\n decode(buf: Buffer, off: number, ex?: HeaderData, gex?: HeaderData) {\n if (!off) {\n off = 0\n }\n\n if (!buf || !(buf.length >= off + 512)) {\n throw new Error('need 512 bytes for header')\n }\n\n this.path = ex?.path ?? decString(buf, off, 100)\n this.mode = ex?.mode ?? gex?.mode ?? decNumber(buf, off + 100, 8)\n this.uid = ex?.uid ?? gex?.uid ?? decNumber(buf, off + 108, 8)\n this.gid = ex?.gid ?? gex?.gid ?? decNumber(buf, off + 116, 8)\n this.size = ex?.size ?? gex?.size ?? decNumber(buf, off + 124, 12)\n this.mtime = ex?.mtime ?? gex?.mtime ?? decDate(buf, off + 136, 12)\n this.cksum = decNumber(buf, off + 148, 12)\n\n // if we have extended or global extended headers, apply them now\n // See https://github.com/npm/node-tar/pull/187\n // Apply global before local, so it overrides\n if (gex) this.#slurp(gex, true)\n if (ex) this.#slurp(ex)\n\n // old tar versions marked dirs as a file with a trailing /\n const t = decString(buf, off + 156, 1)\n if (types.isCode(t)) {\n this.#type = t || '0'\n }\n if (this.#type === '0' && this.path.slice(-1) === '/') {\n this.#type = '5'\n }\n\n // tar implementations sometimes incorrectly put the stat(dir).size\n // as the size in the tarball, even though Directory entries are\n // not able to have any body at all. In the very rare chance that\n // it actually DOES have a body, we weren't going to do anything with\n // it anyway, and it'll just be a warning about an invalid header.\n if (this.#type === '5') {\n this.size = 0\n }\n\n this.linkpath = decString(buf, off + 157, 100)\n if (\n buf.subarray(off + 257, off + 265).toString() === 'ustar\\u000000'\n ) {\n /* c8 ignore start */\n this.uname = ex?.uname ?? gex?.uname ?? decString(buf, off + 265, 32)\n this.gname = ex?.gname ?? gex?.gname ?? decString(buf, off + 297, 32)\n this.devmaj =\n ex?.devmaj ?? gex?.devmaj ?? decNumber(buf, off + 329, 8) ?? 0\n this.devmin =\n ex?.devmin ?? gex?.devmin ?? decNumber(buf, off + 337, 8) ?? 0\n /* c8 ignore stop */\n if (buf[off + 475] !== 0) {\n // definitely a prefix, definitely >130 chars.\n const prefix = decString(buf, off + 345, 155)\n this.path = prefix + '/' + this.path\n } else {\n const prefix = decString(buf, off + 345, 130)\n if (prefix) {\n this.path = prefix + '/' + this.path\n }\n /* c8 ignore start */\n this.atime = ex?.atime ?? gex?.atime ?? decDate(buf, off + 476, 12)\n this.ctime = ex?.ctime ?? gex?.ctime ?? decDate(buf, off + 488, 12)\n /* c8 ignore stop */\n }\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++) {\n sum += buf[i] as number\n }\n\n for (let i = off + 156; i < off + 512; i++) {\n sum += buf[i] as number\n }\n\n this.cksumValid = sum === this.cksum\n if (this.cksum === undefined && sum === 8 * 0x20) {\n this.nullBlock = true\n }\n }\n\n #slurp(ex: HeaderData, gex: boolean = false) {\n Object.assign(\n this,\n Object.fromEntries(\n Object.entries(ex).filter(([k, v]) => {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird. Also, any\n // null/undefined values are ignored.\n return !(\n v === null ||\n v === undefined ||\n (k === 'path' && gex) ||\n (k === 'linkpath' && gex) ||\n k === 'global'\n )\n }),\n ),\n )\n }\n\n encode(buf?: Buffer, off: number = 0) {\n if (!buf) {\n buf = this.block = Buffer.alloc(512)\n }\n\n if (this.#type === 'Unsupported') {\n this.#type = '0'\n }\n\n if (!(buf.length >= off + 512)) {\n throw new Error('need 512 bytes for header')\n }\n\n const prefixSize = this.ctime || this.atime ? 130 : 155\n const split = splitPrefix(this.path || '', prefixSize)\n const path = split[0]\n const prefix = split[1]\n this.needPax = !!split[2]\n\n this.needPax = encString(buf, off, 100, path) || this.needPax\n this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax\n this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax\n this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax\n this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax\n this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax\n buf[off + 156] = Number(this.#type.codePointAt(0))\n this.needPax =\n encString(buf, off + 157, 100, this.linkpath) || this.needPax\n buf.write('ustar\\u000000', off + 257, 8)\n this.needPax =\n encString(buf, off + 265, 32, this.uname) || this.needPax\n this.needPax =\n encString(buf, off + 297, 32, this.gname) || this.needPax\n this.needPax =\n encNumber(buf, off + 329, 8, this.devmaj) || this.needPax\n this.needPax =\n encNumber(buf, off + 337, 8, this.devmin) || this.needPax\n this.needPax =\n encString(buf, off + 345, prefixSize, prefix) || this.needPax\n if (buf[off + 475] !== 0) {\n this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax\n } else {\n this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax\n this.needPax =\n encDate(buf, off + 476, 12, this.atime) || this.needPax\n this.needPax =\n encDate(buf, off + 488, 12, this.ctime) || this.needPax\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++) {\n sum += buf[i] as number\n }\n\n for (let i = off + 156; i < off + 512; i++) {\n sum += buf[i] as number\n }\n\n this.cksum = sum\n encNumber(buf, off + 148, 8, this.cksum)\n this.cksumValid = true\n\n return this.needPax\n }\n\n get type(): EntryTypeName {\n return (\n this.#type === 'Unsupported' ?\n this.#type\n : types.name.get(this.#type)) as EntryTypeName\n }\n\n get typeKey(): EntryTypeCode | 'Unsupported' {\n return this.#type\n }\n\n set type(type: EntryTypeCode | EntryTypeName | 'Unsupported') {\n const c = String(types.code.get(type as EntryTypeName))\n if (types.isCode(c) || c === 'Unsupported') {\n this.#type = c\n } else if (types.isCode(type)) {\n this.#type = type\n } else {\n throw new TypeError('invalid entry type: ' + type)\n }\n }\n}\n\nconst splitPrefix = (\n p: string,\n prefixSize: number,\n): [string, string, boolean] => {\n const pathSize = 100\n let pp = p\n let prefix = ''\n let ret: undefined | [string, string, boolean] = undefined\n const root = pathModule.parse(p).root || '.'\n\n if (Buffer.byteLength(pp) < pathSize) {\n ret = [pp, prefix, false]\n } else {\n // first set prefix to the dir, and path to the base\n prefix = pathModule.dirname(pp)\n pp = pathModule.basename(pp)\n\n do {\n if (\n Buffer.byteLength(pp) <= pathSize &&\n Buffer.byteLength(prefix) <= prefixSize\n ) {\n // both fit!\n ret = [pp, prefix, false]\n } else if (\n Buffer.byteLength(pp) > pathSize &&\n Buffer.byteLength(prefix) <= prefixSize\n ) {\n // prefix fits in prefix, but path doesn't fit in path\n ret = [pp.slice(0, pathSize - 1), prefix, true]\n } else {\n // make path take a bit from prefix\n pp = pathModule.join(pathModule.basename(prefix), pp)\n prefix = pathModule.dirname(prefix)\n }\n } while (prefix !== root && ret === undefined)\n\n // at this point, found no resolution, just truncate\n if (!ret) {\n ret = [p.slice(0, pathSize - 1), '', true]\n }\n }\n return ret\n}\n\nconst decString = (buf: Buffer, off: number, size: number) =>\n buf\n .subarray(off, off + size)\n .toString('utf8')\n .replace(/\\0.*/, '')\n\nconst decDate = (buf: Buffer, off: number, size: number) =>\n numToDate(decNumber(buf, off, size))\n\nconst numToDate = (num?: number) =>\n num === undefined ? undefined : new Date(num * 1000)\n\nconst decNumber = (buf: Buffer, off: number, size: number) =>\n Number(buf[off]) & 0x80 ?\n large.parse(buf.subarray(off, off + size))\n : decSmallNumber(buf, off, size)\n\nconst nanUndef = (value: number) => (isNaN(value) ? undefined : value)\n\nconst decSmallNumber = (buf: Buffer, off: number, size: number) =>\n nanUndef(\n parseInt(\n buf\n .subarray(off, off + size)\n .toString('utf8')\n .replace(/\\0.*$/, '')\n .trim(),\n 8,\n ),\n )\n\n// the maximum encodable as a null-terminated octal, by field size\nconst MAXNUM = {\n 12: 0o77777777777,\n 8: 0o7777777,\n}\n\nconst encNumber = (\n buf: Buffer,\n off: number,\n size: 12 | 8,\n num?: number,\n) =>\n num === undefined ? false\n : num > MAXNUM[size] || num < 0 ?\n (large.encode(num, buf.subarray(off, off + size)), true)\n : (encSmallNumber(buf, off, size, num), false)\n\nconst encSmallNumber = (\n buf: Buffer,\n off: number,\n size: number,\n num: number,\n) => buf.write(octalString(num, size), off, size, 'ascii')\n\nconst octalString = (num: number, size: number) =>\n padOctal(Math.floor(num).toString(8), size)\n\nconst padOctal = (str: string, size: number) =>\n (str.length === size - 1 ?\n str\n : new Array(size - str.length - 1).join('0') + str + ' ') + '\\0'\n\nconst encDate = (buf: Buffer, off: number, size: 8 | 12, date?: Date) =>\n date === undefined ? false : (\n encNumber(buf, off, size, date.getTime() / 1000)\n )\n\n// enough to fill the longest string we've got\nconst NULLS = new Array(156).join('\\0')\n// pad with nulls, return true if it's longer or non-ascii\nconst encString = (\n buf: Buffer,\n off: number,\n size: number,\n str?: string,\n) =>\n str === undefined ? false : (\n (buf.write(str + NULLS, off, size, 'utf8'),\n str.length !== Buffer.byteLength(str) || str.length > size)\n )\n"]}
1
+ {"version":3,"file":"header.js","sourceRoot":"","sources":["../../src/header.ts"],"names":[],"mappings":"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","sourcesContent":["// parse a 512-byte header block to a data object, or vice-versa\n// encode returns `true` if a pax extended header is needed, because\n// the data could not be faithfully encoded in a simple header.\n// (Also, check header.needPax to see if it needs a pax header.)\n\nimport { posix as pathModule } from 'node:path'\nimport * as large from './large-numbers.js'\nimport type { EntryTypeCode, EntryTypeName } from './types.js'\nimport * as types from './types.js'\n\nexport type HeaderData = {\n path?: string\n mode?: number\n uid?: number\n gid?: number\n size?: number\n cksum?: number\n type?: EntryTypeName | 'Unsupported'\n linkpath?: string\n uname?: string\n gname?: string\n devmaj?: number\n devmin?: number\n atime?: Date\n ctime?: Date\n mtime?: Date\n\n // fields that are common in extended PAX headers, but not in the\n // \"standard\" tar header block\n charset?: string\n comment?: string\n dev?: number\n ino?: number\n nlink?: number\n}\n\nexport class Header implements HeaderData {\n cksumValid: boolean = false\n needPax: boolean = false\n nullBlock: boolean = false\n\n block?: Buffer\n path?: string\n mode?: number\n uid?: number\n gid?: number\n size?: number\n cksum?: number\n #type: EntryTypeCode | 'Unsupported' = 'Unsupported'\n linkpath?: string\n uname?: string\n gname?: string\n devmaj: number = 0\n devmin: number = 0\n atime?: Date\n ctime?: Date\n mtime?: Date\n\n charset?: string\n comment?: string\n\n constructor(\n data?: Buffer | HeaderData,\n off: number = 0,\n ex?: HeaderData,\n gex?: HeaderData,\n ) {\n if (Buffer.isBuffer(data)) {\n this.decode(data, off || 0, ex, gex)\n } else if (data) {\n this.#slurp(data)\n }\n }\n\n decode(buf: Buffer, off: number, ex?: HeaderData, gex?: HeaderData) {\n if (!off) {\n off = 0\n }\n\n if (!buf || !(buf.length >= off + 512)) {\n throw new Error('need 512 bytes for header')\n }\n\n // Decode the typeflag (independent of any pending PAX/GNU extended header)\n // up front so we can tell whether THIS block is itself an intermediary\n // extension header (PAX `x`/`g`, GNU long-name `L`, GNU long-link `K`).\n // Per POSIX pax, a PAX extended header describes the *next file entry*, not\n // the extension headers that may sit between it and that file. Applying the\n // pending PAX overrides (notably `size`) to an intervening `L`/`K`/`x`/`g`\n // header desynchronizes the stream relative to other tar implementations\n // and enables tar interpretation-conflict / file-smuggling attacks.\n const t = decString(buf, off + 156, 1)\n const isNormalFS = types.normalFsTypes.has(t as EntryTypeCode)\n const exForFields = isNormalFS ? ex : undefined\n const gexForFields = isNormalFS ? gex : undefined\n\n this.path = exForFields?.path ?? decString(buf, off, 100)\n this.mode =\n exForFields?.mode ??\n gexForFields?.mode ??\n decNumber(buf, off + 100, 8)\n this.uid =\n exForFields?.uid ?? gexForFields?.uid ?? decNumber(buf, off + 108, 8)\n this.gid =\n exForFields?.gid ?? gexForFields?.gid ?? decNumber(buf, off + 116, 8)\n this.size =\n exForFields?.size ??\n gexForFields?.size ??\n decNumber(buf, off + 124, 12)\n this.mtime =\n exForFields?.mtime ??\n gexForFields?.mtime ??\n decDate(buf, off + 136, 12)\n this.cksum = decNumber(buf, off + 148, 12)\n\n // if we have extended or global extended headers, apply them now\n // See https://github.com/npm/node-tar/pull/187\n // Apply global before local, so it overrides. Never slurp the pending\n // extended-header fields onto an intermediary extension header.\n if (gexForFields) this.#slurp(gexForFields, true)\n if (exForFields) this.#slurp(exForFields)\n\n // old tar versions marked dirs as a file with a trailing /\n if (types.isCode(t)) {\n this.#type = t || '0'\n }\n if (this.#type === '0' && this.path.slice(-1) === '/') {\n this.#type = '5'\n }\n\n // tar implementations sometimes incorrectly put the stat(dir).size\n // as the size in the tarball, even though Directory entries are\n // not able to have any body at all. In the very rare chance that\n // it actually DOES have a body, we weren't going to do anything with\n // it anyway, and it'll just be a warning about an invalid header.\n if (this.#type === '5') {\n this.size = 0\n }\n\n this.linkpath = decString(buf, off + 157, 100)\n if (\n buf.subarray(off + 257, off + 265).toString() === 'ustar\\u000000'\n ) {\n /* c8 ignore start */\n this.uname =\n exForFields?.uname ??\n gexForFields?.uname ??\n decString(buf, off + 265, 32)\n this.gname =\n exForFields?.gname ??\n gexForFields?.gname ??\n decString(buf, off + 297, 32)\n this.devmaj =\n exForFields?.devmaj ??\n gexForFields?.devmaj ??\n decNumber(buf, off + 329, 8) ??\n 0\n this.devmin =\n exForFields?.devmin ??\n gexForFields?.devmin ??\n decNumber(buf, off + 337, 8) ??\n 0\n /* c8 ignore stop */\n if (buf[off + 475] !== 0) {\n // definitely a prefix, definitely >130 chars.\n const prefix = decString(buf, off + 345, 155)\n this.path = prefix + '/' + this.path\n } else {\n const prefix = decString(buf, off + 345, 130)\n if (prefix) {\n this.path = prefix + '/' + this.path\n }\n /* c8 ignore start */\n this.atime = ex?.atime ?? gex?.atime ?? decDate(buf, off + 476, 12)\n this.ctime = ex?.ctime ?? gex?.ctime ?? decDate(buf, off + 488, 12)\n /* c8 ignore stop */\n }\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++) {\n sum += buf[i] as number\n }\n\n for (let i = off + 156; i < off + 512; i++) {\n sum += buf[i] as number\n }\n\n this.cksumValid = sum === this.cksum\n if (this.cksum === undefined && sum === 8 * 0x20) {\n this.nullBlock = true\n }\n }\n\n #slurp(ex: HeaderData, gex: boolean = false) {\n Object.assign(\n this,\n Object.fromEntries(\n Object.entries(ex).filter(([k, v]) => {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird. Also, any\n // null/undefined values are ignored.\n return !(\n v === null ||\n v === undefined ||\n (k === 'path' && gex) ||\n (k === 'linkpath' && gex) ||\n k === 'global'\n )\n }),\n ),\n )\n }\n\n encode(buf?: Buffer, off: number = 0) {\n if (!buf) {\n buf = this.block = Buffer.alloc(512)\n }\n\n if (this.#type === 'Unsupported') {\n this.#type = '0'\n }\n\n if (!(buf.length >= off + 512)) {\n throw new Error('need 512 bytes for header')\n }\n\n const prefixSize = this.ctime || this.atime ? 130 : 155\n const split = splitPrefix(this.path || '', prefixSize)\n const path = split[0]\n const prefix = split[1]\n this.needPax = !!split[2]\n\n this.needPax = encString(buf, off, 100, path) || this.needPax\n this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax\n this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax\n this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax\n this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax\n this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax\n buf[off + 156] = Number(this.#type.codePointAt(0))\n this.needPax =\n encString(buf, off + 157, 100, this.linkpath) || this.needPax\n buf.write('ustar\\u000000', off + 257, 8)\n this.needPax =\n encString(buf, off + 265, 32, this.uname) || this.needPax\n this.needPax =\n encString(buf, off + 297, 32, this.gname) || this.needPax\n this.needPax =\n encNumber(buf, off + 329, 8, this.devmaj) || this.needPax\n this.needPax =\n encNumber(buf, off + 337, 8, this.devmin) || this.needPax\n this.needPax =\n encString(buf, off + 345, prefixSize, prefix) || this.needPax\n if (buf[off + 475] !== 0) {\n this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax\n } else {\n this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax\n this.needPax =\n encDate(buf, off + 476, 12, this.atime) || this.needPax\n this.needPax =\n encDate(buf, off + 488, 12, this.ctime) || this.needPax\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++) {\n sum += buf[i] as number\n }\n\n for (let i = off + 156; i < off + 512; i++) {\n sum += buf[i] as number\n }\n\n this.cksum = sum\n encNumber(buf, off + 148, 8, this.cksum)\n this.cksumValid = true\n\n return this.needPax\n }\n\n get type(): EntryTypeName {\n return (\n this.#type === 'Unsupported' ?\n this.#type\n : types.name.get(this.#type)) as EntryTypeName\n }\n\n get typeKey(): EntryTypeCode | 'Unsupported' {\n return this.#type\n }\n\n set type(type: EntryTypeCode | EntryTypeName | 'Unsupported') {\n const c = String(types.code.get(type as EntryTypeName))\n if (types.isCode(c) || c === 'Unsupported') {\n this.#type = c\n } else if (types.isCode(type)) {\n this.#type = type\n } else {\n throw new TypeError('invalid entry type: ' + type)\n }\n }\n}\n\nconst splitPrefix = (\n p: string,\n prefixSize: number,\n): [string, string, boolean] => {\n const pathSize = 100\n let pp = p\n let prefix = ''\n let ret: undefined | [string, string, boolean] = undefined\n const root = pathModule.parse(p).root || '.'\n\n if (Buffer.byteLength(pp) < pathSize) {\n ret = [pp, prefix, false]\n } else {\n // first set prefix to the dir, and path to the base\n prefix = pathModule.dirname(pp)\n pp = pathModule.basename(pp)\n\n do {\n if (\n Buffer.byteLength(pp) <= pathSize &&\n Buffer.byteLength(prefix) <= prefixSize\n ) {\n // both fit!\n ret = [pp, prefix, false]\n } else if (\n Buffer.byteLength(pp) > pathSize &&\n Buffer.byteLength(prefix) <= prefixSize\n ) {\n // prefix fits in prefix, but path doesn't fit in path\n ret = [pp.slice(0, pathSize - 1), prefix, true]\n } else {\n // make path take a bit from prefix\n pp = pathModule.join(pathModule.basename(prefix), pp)\n prefix = pathModule.dirname(prefix)\n }\n } while (prefix !== root && ret === undefined)\n\n // at this point, found no resolution, just truncate\n if (!ret) {\n ret = [p.slice(0, pathSize - 1), '', true]\n }\n }\n return ret\n}\n\nconst decString = (buf: Buffer, off: number, size: number) =>\n buf\n .subarray(off, off + size)\n .toString('utf8')\n .replace(/\\0.*/, '')\n\nconst decDate = (buf: Buffer, off: number, size: number) =>\n numToDate(decNumber(buf, off, size))\n\nconst numToDate = (num?: number) =>\n num === undefined ? undefined : new Date(num * 1000)\n\nconst decNumber = (buf: Buffer, off: number, size: number) =>\n Number(buf[off]) & 0x80 ?\n large.parse(buf.subarray(off, off + size))\n : decSmallNumber(buf, off, size)\n\nconst nanUndef = (value: number) => (isNaN(value) ? undefined : value)\n\nconst decSmallNumber = (buf: Buffer, off: number, size: number) =>\n nanUndef(\n parseInt(\n buf\n .subarray(off, off + size)\n .toString('utf8')\n .replace(/\\0.*$/, '')\n .trim(),\n 8,\n ),\n )\n\n// the maximum encodable as a null-terminated octal, by field size\nconst MAXNUM = {\n 12: 0o77777777777,\n 8: 0o7777777,\n}\n\nconst encNumber = (\n buf: Buffer,\n off: number,\n size: 12 | 8,\n num?: number,\n) =>\n num === undefined ? false\n : num > MAXNUM[size] || num < 0 ?\n (large.encode(num, buf.subarray(off, off + size)), true)\n : (encSmallNumber(buf, off, size, num), false)\n\nconst encSmallNumber = (\n buf: Buffer,\n off: number,\n size: number,\n num: number,\n) => buf.write(octalString(num, size), off, size, 'ascii')\n\nconst octalString = (num: number, size: number) =>\n padOctal(Math.floor(num).toString(8), size)\n\nconst padOctal = (str: string, size: number) =>\n (str.length === size - 1 ?\n str\n : new Array(size - str.length - 1).join('0') + str + ' ') + '\\0'\n\nconst encDate = (buf: Buffer, off: number, size: 8 | 12, date?: Date) =>\n date === undefined ? false : (\n encNumber(buf, off, size, date.getTime() / 1000)\n )\n\n// enough to fill the longest string we've got\nconst NULLS = new Array(156).join('\\0')\n// pad with nulls, return true if it's longer or non-ascii\nconst encString = (\n buf: Buffer,\n off: number,\n size: number,\n str?: string,\n) =>\n str === undefined ? false : (\n (buf.write(str + NULLS, off, size, 'utf8'),\n str.length !== Buffer.byteLength(str) || str.length > size)\n )\n"]}