@verdaccio/tarball 12.0.0-next.6 → 13.0.0-next-8.0
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.
- package/CHANGELOG.md +174 -0
- package/build/convertDistRemoteToLocalTarballUrls.js +1 -1
- package/build/convertDistRemoteToLocalTarballUrls.js.map +1 -1
- package/build/getLocalRegistryTarballUri.js +2 -2
- package/build/getLocalRegistryTarballUri.js.map +1 -1
- package/build/getTarballDetails.d.ts +6 -0
- package/build/getTarballDetails.js +32 -0
- package/build/getTarballDetails.js.map +1 -0
- package/build/index.d.ts +1 -0
- package/build/index.js +13 -0
- package/build/index.js.map +1 -1
- package/package.json +12 -10
- package/src/getTarballDetails.ts +34 -0
- package/src/index.ts +1 -0
- package/tests/assets/tarball.tar +0 -0
- package/tests/assets/tarball.tgz +0 -0
- package/tests/convertDistRemoteToLocalTarballUrls.spec.ts +1 -0
- package/tests/getLocalRegistryTarballUri.spec.ts +2 -0
- package/tests/getTarballDetails.spec.ts +34 -0
- package/jest.config.js +0 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,179 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 13.0.0-next-8.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- chore: move v7 next to v8 next
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies
|
|
12
|
+
- @verdaccio/core@8.0.0-next-8.0
|
|
13
|
+
- @verdaccio/url@13.0.0-next-8.0
|
|
14
|
+
- @verdaccio/utils@7.0.1-next-8.0
|
|
15
|
+
|
|
16
|
+
## 12.0.0
|
|
17
|
+
|
|
18
|
+
### Major Changes
|
|
19
|
+
|
|
20
|
+
- 47f61c6: feat!: bump to v7
|
|
21
|
+
- e7ebccb: update major dependencies, remove old nodejs support
|
|
22
|
+
|
|
23
|
+
### Minor Changes
|
|
24
|
+
|
|
25
|
+
- daceb6d: restore legacy support
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- 5bfab62: feat: add tarball details for published packages
|
|
30
|
+
- e14b064: - Fixes polynomial regular expression when determining the file name of tarball
|
|
31
|
+
- Add tests for extracting tarball name
|
|
32
|
+
- 7400830: revert #4600
|
|
33
|
+
- 253cc13: feat: add tarball details for published packages
|
|
34
|
+
- Updated dependencies [47f61c6]
|
|
35
|
+
- Updated dependencies [6e764e3]
|
|
36
|
+
- Updated dependencies [b0946b2]
|
|
37
|
+
- Updated dependencies [ccc7bd1]
|
|
38
|
+
- Updated dependencies [daceb6d]
|
|
39
|
+
- Updated dependencies [e7ebccb]
|
|
40
|
+
- Updated dependencies [f047cc8]
|
|
41
|
+
- Updated dependencies [38b1e82]
|
|
42
|
+
- Updated dependencies [7c9f3cf]
|
|
43
|
+
- Updated dependencies [bd8703e]
|
|
44
|
+
- @verdaccio/core@7.0.0
|
|
45
|
+
- @verdaccio/url@12.0.0
|
|
46
|
+
- @verdaccio/utils@7.0.0
|
|
47
|
+
|
|
48
|
+
## 12.0.0-next-8.21
|
|
49
|
+
|
|
50
|
+
### Patch Changes
|
|
51
|
+
|
|
52
|
+
- Updated dependencies [7c9f3cf]
|
|
53
|
+
- @verdaccio/core@7.0.0-next-8.21
|
|
54
|
+
- @verdaccio/url@12.0.0-next-8.21
|
|
55
|
+
- @verdaccio/utils@7.0.0-next-8.21
|
|
56
|
+
|
|
57
|
+
## 12.0.0-next-7.20
|
|
58
|
+
|
|
59
|
+
### Patch Changes
|
|
60
|
+
|
|
61
|
+
- Updated dependencies [ccc7bd1]
|
|
62
|
+
- @verdaccio/url@12.0.0-next-7.20
|
|
63
|
+
- @verdaccio/core@7.0.0-next-7.20
|
|
64
|
+
- @verdaccio/utils@7.0.0-next-7.20
|
|
65
|
+
|
|
66
|
+
## 12.0.0-next-7.19
|
|
67
|
+
|
|
68
|
+
### Patch Changes
|
|
69
|
+
|
|
70
|
+
- @verdaccio/core@7.0.0-next-7.19
|
|
71
|
+
- @verdaccio/url@12.0.0-next-7.19
|
|
72
|
+
- @verdaccio/utils@7.0.0-next-7.19
|
|
73
|
+
|
|
74
|
+
## 12.0.0-next-7.18
|
|
75
|
+
|
|
76
|
+
### Patch Changes
|
|
77
|
+
|
|
78
|
+
- @verdaccio/core@7.0.0-next-7.18
|
|
79
|
+
- @verdaccio/url@12.0.0-next-7.18
|
|
80
|
+
- @verdaccio/utils@7.0.0-next-7.18
|
|
81
|
+
|
|
82
|
+
## 12.0.0-next-7.17
|
|
83
|
+
|
|
84
|
+
### Patch Changes
|
|
85
|
+
|
|
86
|
+
- Updated dependencies [6e764e3]
|
|
87
|
+
- @verdaccio/core@7.0.0-next-7.17
|
|
88
|
+
- @verdaccio/url@12.0.0-next-7.17
|
|
89
|
+
- @verdaccio/utils@7.0.0-next-7.17
|
|
90
|
+
|
|
91
|
+
## 12.0.0-next-7.16
|
|
92
|
+
|
|
93
|
+
### Patch Changes
|
|
94
|
+
|
|
95
|
+
- 5bfab62: feat: add tarball details for published packages
|
|
96
|
+
- Updated dependencies [38b1e82]
|
|
97
|
+
- @verdaccio/url@12.0.0-next-7.16
|
|
98
|
+
- @verdaccio/core@7.0.0-next-7.16
|
|
99
|
+
- @verdaccio/utils@7.0.0-next-7.16
|
|
100
|
+
|
|
101
|
+
## 12.0.0-next-7.15
|
|
102
|
+
|
|
103
|
+
### Patch Changes
|
|
104
|
+
|
|
105
|
+
- 7400830: revert #4600
|
|
106
|
+
- Updated dependencies [bd8703e]
|
|
107
|
+
- @verdaccio/core@7.0.0-next-7.15
|
|
108
|
+
- @verdaccio/url@12.0.0-next-7.15
|
|
109
|
+
- @verdaccio/utils@7.0.0-next-7.15
|
|
110
|
+
|
|
111
|
+
## 12.0.0-next-7.14
|
|
112
|
+
|
|
113
|
+
### Patch Changes
|
|
114
|
+
|
|
115
|
+
- 253cc13: feat: add tarball details for published packages
|
|
116
|
+
- Updated dependencies [b0946b2]
|
|
117
|
+
- @verdaccio/url@12.0.0-next-7.14
|
|
118
|
+
- @verdaccio/core@7.0.0-next-7.14
|
|
119
|
+
- @verdaccio/utils@7.0.0-next-7.14
|
|
120
|
+
|
|
121
|
+
## 12.0.0-next-7.13
|
|
122
|
+
|
|
123
|
+
### Patch Changes
|
|
124
|
+
|
|
125
|
+
- @verdaccio/core@7.0.0-next-7.13
|
|
126
|
+
- @verdaccio/url@12.0.0-next-7.13
|
|
127
|
+
- @verdaccio/utils@7.0.0-next-7.13
|
|
128
|
+
|
|
129
|
+
## 12.0.0-next-7.12
|
|
130
|
+
|
|
131
|
+
### Patch Changes
|
|
132
|
+
|
|
133
|
+
- @verdaccio/core@7.0.0-next-7.12
|
|
134
|
+
- @verdaccio/url@12.0.0-next-7.12
|
|
135
|
+
- @verdaccio/utils@7.0.0-next-7.12
|
|
136
|
+
|
|
137
|
+
## 12.0.0-next-7.11
|
|
138
|
+
|
|
139
|
+
### Patch Changes
|
|
140
|
+
|
|
141
|
+
- @verdaccio/core@7.0.0-next-7.11
|
|
142
|
+
- @verdaccio/url@12.0.0-next-7.11
|
|
143
|
+
- @verdaccio/utils@7.0.0-next-7.11
|
|
144
|
+
|
|
145
|
+
## 12.0.0-next-7.10
|
|
146
|
+
|
|
147
|
+
### Patch Changes
|
|
148
|
+
|
|
149
|
+
- @verdaccio/core@7.0.0-next-7.10
|
|
150
|
+
- @verdaccio/url@12.0.0-next-7.10
|
|
151
|
+
- @verdaccio/utils@7.0.0-next-7.10
|
|
152
|
+
|
|
153
|
+
## 12.0.0-next-7.9
|
|
154
|
+
|
|
155
|
+
### Patch Changes
|
|
156
|
+
|
|
157
|
+
- @verdaccio/core@7.0.0-next-7.9
|
|
158
|
+
- @verdaccio/url@12.0.0-next-7.9
|
|
159
|
+
- @verdaccio/utils@7.0.0-next-7.9
|
|
160
|
+
|
|
161
|
+
## 12.0.0-next-7.8
|
|
162
|
+
|
|
163
|
+
### Patch Changes
|
|
164
|
+
|
|
165
|
+
- @verdaccio/core@7.0.0-next-7.8
|
|
166
|
+
- @verdaccio/url@12.0.0-next-7.8
|
|
167
|
+
- @verdaccio/utils@7.0.0-next-7.8
|
|
168
|
+
|
|
169
|
+
## 12.0.0-next-7.7
|
|
170
|
+
|
|
171
|
+
### Patch Changes
|
|
172
|
+
|
|
173
|
+
- @verdaccio/core@7.0.0-next-7.7
|
|
174
|
+
- @verdaccio/url@12.0.0-next-7.7
|
|
175
|
+
- @verdaccio/utils@7.0.0-next-7.7
|
|
176
|
+
|
|
3
177
|
## 12.0.0-next.6
|
|
4
178
|
|
|
5
179
|
### Patch Changes
|
|
@@ -7,7 +7,7 @@ exports.convertDistRemoteToLocalTarballUrls = convertDistRemoteToLocalTarballUrl
|
|
|
7
7
|
exports.convertDistVersionToLocalTarballsUrl = convertDistVersionToLocalTarballsUrl;
|
|
8
8
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
9
|
var _getLocalRegistryTarballUri = require("./getLocalRegistryTarballUri");
|
|
10
|
-
function _interopRequireDefault(
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
/**
|
|
12
12
|
* Iterate a packages's versions and filter each original tarball url.
|
|
13
13
|
* @param {*} pkg
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertDistRemoteToLocalTarballUrls.js","names":["_lodash","_interopRequireDefault","require","_getLocalRegistryTarballUri","
|
|
1
|
+
{"version":3,"file":"convertDistRemoteToLocalTarballUrls.js","names":["_lodash","_interopRequireDefault","require","_getLocalRegistryTarballUri","e","__esModule","default","convertDistRemoteToLocalTarballUrls","pkg","request","urlPrefix","name","versions","convertedPkg","convertedVersions","ver","Object","prototype","hasOwnProperty","call","version","convertDistVersionToLocalTarballsUrl","distName","dist","_","isNull","tarball","getLocalRegistryTarballUri"],"sources":["../src/convertDistRemoteToLocalTarballUrls.ts"],"sourcesContent":["import _ from 'lodash';\n\nimport { Package, Version } from '@verdaccio/types';\nimport { RequestOptions } from '@verdaccio/url';\n\nimport { getLocalRegistryTarballUri } from './getLocalRegistryTarballUri';\n\n/**\n * Iterate a packages's versions and filter each original tarball url.\n * @param {*} pkg\n * @param {*} req\n * @param {*} config\n * @return {String} a filtered package\n */\nexport function convertDistRemoteToLocalTarballUrls(\n pkg: Package,\n request: RequestOptions,\n urlPrefix: string | void\n): Package {\n const { name, versions } = pkg;\n const convertedPkg = { ...pkg };\n const convertedVersions = versions;\n for (const ver in pkg.versions) {\n if (Object.prototype.hasOwnProperty.call(pkg.versions, ver)) {\n const version = versions[ver];\n convertedVersions[ver] = convertDistVersionToLocalTarballsUrl(\n name,\n version,\n request,\n urlPrefix\n );\n }\n }\n\n return {\n ...convertedPkg,\n versions: convertedVersions,\n };\n}\n\n/**\n * Convert single Version disst tarball\n * @param name\n * @param version\n * @param request\n * @param urlPrefix\n * @returns\n */\nexport function convertDistVersionToLocalTarballsUrl(name, version: Version, request, urlPrefix) {\n const distName = version.dist;\n\n if (_.isNull(distName) === false && _.isNull(distName.tarball) === false) {\n return {\n ...version,\n dist: {\n ...distName,\n tarball: getLocalRegistryTarballUri(distName.tarball, name, request, urlPrefix),\n },\n };\n }\n\n return version;\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,2BAAA,GAAAD,OAAA;AAA0E,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE1E;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,mCAAmCA,CACjDC,GAAY,EACZC,OAAuB,EACvBC,SAAwB,EACf;EACT,MAAM;IAAEC,IAAI;IAAEC;EAAS,CAAC,GAAGJ,GAAG;EAC9B,MAAMK,YAAY,GAAG;IAAE,GAAGL;EAAI,CAAC;EAC/B,MAAMM,iBAAiB,GAAGF,QAAQ;EAClC,KAAK,MAAMG,GAAG,IAAIP,GAAG,CAACI,QAAQ,EAAE;IAC9B,IAAII,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACX,GAAG,CAACI,QAAQ,EAAEG,GAAG,CAAC,EAAE;MAC3D,MAAMK,OAAO,GAAGR,QAAQ,CAACG,GAAG,CAAC;MAC7BD,iBAAiB,CAACC,GAAG,CAAC,GAAGM,oCAAoC,CAC3DV,IAAI,EACJS,OAAO,EACPX,OAAO,EACPC,SACF,CAAC;IACH;EACF;EAEA,OAAO;IACL,GAAGG,YAAY;IACfD,QAAQ,EAAEE;EACZ,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASO,oCAAoCA,CAACV,IAAI,EAAES,OAAgB,EAAEX,OAAO,EAAEC,SAAS,EAAE;EAC/F,MAAMY,QAAQ,GAAGF,OAAO,CAACG,IAAI;EAE7B,IAAIC,eAAC,CAACC,MAAM,CAACH,QAAQ,CAAC,KAAK,KAAK,IAAIE,eAAC,CAACC,MAAM,CAACH,QAAQ,CAACI,OAAO,CAAC,KAAK,KAAK,EAAE;IACxE,OAAO;MACL,GAAGN,OAAO;MACVG,IAAI,EAAE;QACJ,GAAGD,QAAQ;QACXI,OAAO,EAAE,IAAAC,sDAA0B,EAACL,QAAQ,CAACI,OAAO,EAAEf,IAAI,EAAEF,OAAO,EAAEC,SAAS;MAChF;IACF,CAAC;EACH;EAEA,OAAOU,OAAO;AAChB","ignoreList":[]}
|
|
@@ -8,7 +8,7 @@ exports.getLocalRegistryTarballUri = getLocalRegistryTarballUri;
|
|
|
8
8
|
var _debug = _interopRequireDefault(require("debug"));
|
|
9
9
|
var _url = _interopRequireDefault(require("url"));
|
|
10
10
|
var _url2 = require("@verdaccio/url");
|
|
11
|
-
function _interopRequireDefault(
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
12
|
const debug = (0, _debug.default)('verdaccio:core:url');
|
|
13
13
|
function extractTarballFromUrl(url) {
|
|
14
14
|
// @ts-ignore
|
|
@@ -21,7 +21,7 @@ function extractTarballFromUrl(url) {
|
|
|
21
21
|
*/
|
|
22
22
|
function getLocalRegistryTarballUri(uri, pkgName, requestOptions, urlPrefix) {
|
|
23
23
|
var _requestOptions$heade;
|
|
24
|
-
const currentHost = requestOptions === null || requestOptions === void 0
|
|
24
|
+
const currentHost = requestOptions === null || requestOptions === void 0 || (_requestOptions$heade = requestOptions.headers) === null || _requestOptions$heade === void 0 ? void 0 : _requestOptions$heade.host;
|
|
25
25
|
if (!currentHost) {
|
|
26
26
|
return uri;
|
|
27
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getLocalRegistryTarballUri.js","names":["_debug","_interopRequireDefault","require","_url","_url2","
|
|
1
|
+
{"version":3,"file":"getLocalRegistryTarballUri.js","names":["_debug","_interopRequireDefault","require","_url","_url2","e","__esModule","default","debug","buildDebug","extractTarballFromUrl","url","URL","parse","pathname","replace","getLocalRegistryTarballUri","uri","pkgName","requestOptions","urlPrefix","_requestOptions$heade","currentHost","headers","host","tarballName","domainRegistry","getPublicUrl"],"sources":["../src/getLocalRegistryTarballUri.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport URL from 'url';\n\nimport { RequestOptions } from '@verdaccio/url';\nimport { getPublicUrl } from '@verdaccio/url';\n\nconst debug = buildDebug('verdaccio:core:url');\n\nexport function extractTarballFromUrl(url: string): string {\n // @ts-ignore\n return URL.parse(url).pathname.replace(/^.*\\//, '');\n}\n/**\n * Filter a tarball url.\n * @param {*} uri\n * @return {String} a parsed url\n */\nexport function getLocalRegistryTarballUri(\n uri: string,\n pkgName: string,\n requestOptions: RequestOptions,\n urlPrefix: string | void\n): string {\n const currentHost = requestOptions?.headers?.host;\n\n if (!currentHost) {\n return uri;\n }\n const tarballName = extractTarballFromUrl(uri);\n debug('tarball name %o', tarballName);\n // header only set with proxy that setup with HTTPS\n const domainRegistry = getPublicUrl(urlPrefix || '', requestOptions);\n\n return `${domainRegistry}${pkgName}/-/${tarballName}`;\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAF,sBAAA,CAAAC,OAAA;AAGA,IAAAE,KAAA,GAAAF,OAAA;AAA8C,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE9C,MAAMG,KAAK,GAAG,IAAAC,cAAU,EAAC,oBAAoB,CAAC;AAEvC,SAASC,qBAAqBA,CAACC,GAAW,EAAU;EACzD;EACA,OAAOC,YAAG,CAACC,KAAK,CAACF,GAAG,CAAC,CAACG,QAAQ,CAACC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;AACrD;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,0BAA0BA,CACxCC,GAAW,EACXC,OAAe,EACfC,cAA8B,EAC9BC,SAAwB,EAChB;EAAA,IAAAC,qBAAA;EACR,MAAMC,WAAW,GAAGH,cAAc,aAAdA,cAAc,gBAAAE,qBAAA,GAAdF,cAAc,CAAEI,OAAO,cAAAF,qBAAA,uBAAvBA,qBAAA,CAAyBG,IAAI;EAEjD,IAAI,CAACF,WAAW,EAAE;IAChB,OAAOL,GAAG;EACZ;EACA,MAAMQ,WAAW,GAAGf,qBAAqB,CAACO,GAAG,CAAC;EAC9CT,KAAK,CAAC,iBAAiB,EAAEiB,WAAW,CAAC;EACrC;EACA,MAAMC,cAAc,GAAG,IAAAC,kBAAY,EAACP,SAAS,IAAI,EAAE,EAAED,cAAc,CAAC;EAEpE,OAAO,GAAGO,cAAc,GAAGR,OAAO,MAAMO,WAAW,EAAE;AACvD","ignoreList":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getTarballDetails = getTarballDetails;
|
|
7
|
+
var _gunzipMaybe = _interopRequireDefault(require("gunzip-maybe"));
|
|
8
|
+
var _stream = require("stream");
|
|
9
|
+
var tarStream = _interopRequireWildcard(require("tar-stream"));
|
|
10
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
11
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
async function getTarballDetails(buffer) {
|
|
14
|
+
let fileCount = 0;
|
|
15
|
+
let unpackedSize = 0;
|
|
16
|
+
const readable = _stream.Readable.from(buffer);
|
|
17
|
+
const unpack = tarStream.extract();
|
|
18
|
+
return new Promise((resolve, reject) => {
|
|
19
|
+
readable.pipe((0, _gunzipMaybe.default)()).pipe(unpack).on('entry', (header, stream, next) => {
|
|
20
|
+
fileCount++;
|
|
21
|
+
unpackedSize += Number(header.size);
|
|
22
|
+
stream.resume(); // important to ensure that "entry" events keep firing
|
|
23
|
+
next();
|
|
24
|
+
}).on('finish', () => {
|
|
25
|
+
resolve({
|
|
26
|
+
fileCount,
|
|
27
|
+
unpackedSize
|
|
28
|
+
});
|
|
29
|
+
}).on('error', reject);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=getTarballDetails.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTarballDetails.js","names":["_gunzipMaybe","_interopRequireDefault","require","_stream","tarStream","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","getTarballDetails","buffer","fileCount","unpackedSize","readable","Readable","from","unpack","extract","Promise","resolve","reject","pipe","gunzipMaybe","on","header","stream","next","Number","size","resume"],"sources":["../src/getTarballDetails.ts"],"sourcesContent":["import gunzipMaybe from 'gunzip-maybe';\nimport { Readable } from 'stream';\nimport * as tarStream from 'tar-stream';\n\nexport type TarballDetails = {\n fileCount: number;\n unpackedSize: number; // in bytes\n};\n\nexport async function getTarballDetails(buffer: Buffer): Promise<TarballDetails> {\n let fileCount = 0;\n let unpackedSize = 0;\n const readable = Readable.from(buffer);\n const unpack = tarStream.extract();\n\n return new Promise((resolve, reject) => {\n readable\n .pipe(gunzipMaybe())\n .pipe(unpack)\n .on('entry', (header, stream, next) => {\n fileCount++;\n unpackedSize += Number(header.size);\n stream.resume(); // important to ensure that \"entry\" events keep firing\n next();\n })\n .on('finish', () => {\n resolve({\n fileCount,\n unpackedSize,\n });\n })\n .on('error', reject);\n });\n}\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAC,uBAAA,CAAAH,OAAA;AAAwC,SAAAI,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAF,wBAAAE,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAd,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAI,UAAA,GAAAJ,CAAA,KAAAK,OAAA,EAAAL,CAAA;AAOjC,eAAemB,iBAAiBA,CAACC,MAAc,EAA2B;EAC/E,IAAIC,SAAS,GAAG,CAAC;EACjB,IAAIC,YAAY,GAAG,CAAC;EACpB,MAAMC,QAAQ,GAAGC,gBAAQ,CAACC,IAAI,CAACL,MAAM,CAAC;EACtC,MAAMM,MAAM,GAAG7B,SAAS,CAAC8B,OAAO,CAAC,CAAC;EAElC,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;IACtCP,QAAQ,CACLQ,IAAI,CAAC,IAAAC,oBAAW,EAAC,CAAC,CAAC,CACnBD,IAAI,CAACL,MAAM,CAAC,CACZO,EAAE,CAAC,OAAO,EAAE,CAACC,MAAM,EAAEC,MAAM,EAAEC,IAAI,KAAK;MACrCf,SAAS,EAAE;MACXC,YAAY,IAAIe,MAAM,CAACH,MAAM,CAACI,IAAI,CAAC;MACnCH,MAAM,CAACI,MAAM,CAAC,CAAC,CAAC,CAAC;MACjBH,IAAI,CAAC,CAAC;IACR,CAAC,CAAC,CACDH,EAAE,CAAC,QAAQ,EAAE,MAAM;MAClBJ,OAAO,CAAC;QACNR,SAAS;QACTC;MACF,CAAC,CAAC;IACJ,CAAC,CAAC,CACDW,EAAE,CAAC,OAAO,EAAEH,MAAM,CAAC;EACxB,CAAC,CAAC;AACJ","ignoreList":[]}
|
package/build/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RequestOptions } from '@verdaccio/url';
|
|
2
2
|
export { convertDistRemoteToLocalTarballUrls, convertDistVersionToLocalTarballsUrl, } from './convertDistRemoteToLocalTarballUrls';
|
|
3
3
|
export { extractTarballFromUrl, getLocalRegistryTarballUri } from './getLocalRegistryTarballUri';
|
|
4
|
+
export { getTarballDetails, TarballDetails } from './getTarballDetails';
|
|
4
5
|
export { RequestOptions };
|
package/build/index.js
CHANGED
|
@@ -9,6 +9,12 @@ Object.defineProperty(exports, "RequestOptions", {
|
|
|
9
9
|
return _url.RequestOptions;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
+
Object.defineProperty(exports, "TarballDetails", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _getTarballDetails.TarballDetails;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
12
18
|
Object.defineProperty(exports, "convertDistRemoteToLocalTarballUrls", {
|
|
13
19
|
enumerable: true,
|
|
14
20
|
get: function () {
|
|
@@ -33,7 +39,14 @@ Object.defineProperty(exports, "getLocalRegistryTarballUri", {
|
|
|
33
39
|
return _getLocalRegistryTarballUri.getLocalRegistryTarballUri;
|
|
34
40
|
}
|
|
35
41
|
});
|
|
42
|
+
Object.defineProperty(exports, "getTarballDetails", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function () {
|
|
45
|
+
return _getTarballDetails.getTarballDetails;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
36
48
|
var _url = require("@verdaccio/url");
|
|
37
49
|
var _convertDistRemoteToLocalTarballUrls = require("./convertDistRemoteToLocalTarballUrls");
|
|
38
50
|
var _getLocalRegistryTarballUri = require("./getLocalRegistryTarballUri");
|
|
51
|
+
var _getTarballDetails = require("./getTarballDetails");
|
|
39
52
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_url","require","_convertDistRemoteToLocalTarballUrls","_getLocalRegistryTarballUri"],"sources":["../src/index.ts"],"sourcesContent":["import { RequestOptions } from '@verdaccio/url';\n\nexport {\n convertDistRemoteToLocalTarballUrls,\n convertDistVersionToLocalTarballsUrl,\n} from './convertDistRemoteToLocalTarballUrls';\nexport { extractTarballFromUrl, getLocalRegistryTarballUri } from './getLocalRegistryTarballUri';\n\nexport { RequestOptions };\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_url","require","_convertDistRemoteToLocalTarballUrls","_getLocalRegistryTarballUri","_getTarballDetails"],"sources":["../src/index.ts"],"sourcesContent":["import { RequestOptions } from '@verdaccio/url';\n\nexport {\n convertDistRemoteToLocalTarballUrls,\n convertDistVersionToLocalTarballsUrl,\n} from './convertDistRemoteToLocalTarballUrls';\nexport { extractTarballFromUrl, getLocalRegistryTarballUri } from './getLocalRegistryTarballUri';\nexport { getTarballDetails, TarballDetails } from './getTarballDetails';\n\nexport { RequestOptions };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AAEA,IAAAC,oCAAA,GAAAD,OAAA;AAIA,IAAAE,2BAAA,GAAAF,OAAA;AACA,IAAAG,kBAAA,GAAAH,OAAA","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@verdaccio/tarball",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "13.0.0-next-8.0",
|
|
4
4
|
"description": "tarball utilities resolver",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"private",
|
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
"license": "MIT",
|
|
20
20
|
"homepage": "https://verdaccio.org",
|
|
21
21
|
"engines": {
|
|
22
|
-
"node": ">=
|
|
22
|
+
"node": ">=14"
|
|
23
23
|
},
|
|
24
24
|
"repository": {
|
|
25
25
|
"type": "https",
|
|
26
26
|
"url": "https://github.com/verdaccio/verdaccio",
|
|
27
|
-
"directory": "packages/core/
|
|
27
|
+
"directory": "packages/core/tarball"
|
|
28
28
|
},
|
|
29
29
|
"bugs": {
|
|
30
30
|
"url": "https://github.com/verdaccio/verdaccio/issues"
|
|
@@ -33,14 +33,16 @@
|
|
|
33
33
|
"access": "public"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"
|
|
37
|
-
"@verdaccio/
|
|
38
|
-
"@verdaccio/
|
|
39
|
-
"
|
|
40
|
-
"
|
|
36
|
+
"@verdaccio/core": "8.0.0-next-8.0",
|
|
37
|
+
"@verdaccio/url": "13.0.0-next-8.0",
|
|
38
|
+
"@verdaccio/utils": "7.0.1-next-8.0",
|
|
39
|
+
"debug": "4.3.7",
|
|
40
|
+
"gunzip-maybe": "^1.4.2",
|
|
41
|
+
"lodash": "4.17.21",
|
|
42
|
+
"tar-stream": "^3.1.7"
|
|
41
43
|
},
|
|
42
44
|
"devDependencies": {
|
|
43
|
-
"@verdaccio/types": "
|
|
45
|
+
"@verdaccio/types": "13.0.0-next-8.0",
|
|
44
46
|
"node-mocks-http": "1.14.1"
|
|
45
47
|
},
|
|
46
48
|
"funding": {
|
|
@@ -49,7 +51,7 @@
|
|
|
49
51
|
},
|
|
50
52
|
"scripts": {
|
|
51
53
|
"clean": "rimraf ./build",
|
|
52
|
-
"test": "
|
|
54
|
+
"test": "vitest run",
|
|
53
55
|
"type-check": "tsc --noEmit -p tsconfig.build.json",
|
|
54
56
|
"build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json",
|
|
55
57
|
"build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps",
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import gunzipMaybe from 'gunzip-maybe';
|
|
2
|
+
import { Readable } from 'stream';
|
|
3
|
+
import * as tarStream from 'tar-stream';
|
|
4
|
+
|
|
5
|
+
export type TarballDetails = {
|
|
6
|
+
fileCount: number;
|
|
7
|
+
unpackedSize: number; // in bytes
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export async function getTarballDetails(buffer: Buffer): Promise<TarballDetails> {
|
|
11
|
+
let fileCount = 0;
|
|
12
|
+
let unpackedSize = 0;
|
|
13
|
+
const readable = Readable.from(buffer);
|
|
14
|
+
const unpack = tarStream.extract();
|
|
15
|
+
|
|
16
|
+
return new Promise((resolve, reject) => {
|
|
17
|
+
readable
|
|
18
|
+
.pipe(gunzipMaybe())
|
|
19
|
+
.pipe(unpack)
|
|
20
|
+
.on('entry', (header, stream, next) => {
|
|
21
|
+
fileCount++;
|
|
22
|
+
unpackedSize += Number(header.size);
|
|
23
|
+
stream.resume(); // important to ensure that "entry" events keep firing
|
|
24
|
+
next();
|
|
25
|
+
})
|
|
26
|
+
.on('finish', () => {
|
|
27
|
+
resolve({
|
|
28
|
+
fileCount,
|
|
29
|
+
unpackedSize,
|
|
30
|
+
});
|
|
31
|
+
})
|
|
32
|
+
.on('error', reject);
|
|
33
|
+
});
|
|
34
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -5,5 +5,6 @@ export {
|
|
|
5
5
|
convertDistVersionToLocalTarballsUrl,
|
|
6
6
|
} from './convertDistRemoteToLocalTarballUrls';
|
|
7
7
|
export { extractTarballFromUrl, getLocalRegistryTarballUri } from './getLocalRegistryTarballUri';
|
|
8
|
+
export { getTarballDetails, TarballDetails } from './getTarballDetails';
|
|
8
9
|
|
|
9
10
|
export { RequestOptions };
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { describe, expect, test } from 'vitest';
|
|
4
|
+
|
|
5
|
+
import { getTarballDetails } from '../src/getTarballDetails.ts';
|
|
6
|
+
|
|
7
|
+
const getFilePath = (filename: string): string => {
|
|
8
|
+
return path.resolve(__dirname, `assets/${filename}`);
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const getFileBuffer = async (filename: string): Promise<Buffer> => {
|
|
12
|
+
return fs.promises.readFile(getFilePath(filename));
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
describe('getTarballDetails', () => {
|
|
16
|
+
test('should return stats of tarball (gzipped)', async () => {
|
|
17
|
+
const buffer = await getFileBuffer('tarball.tgz');
|
|
18
|
+
const details = await getTarballDetails(buffer);
|
|
19
|
+
expect(details.fileCount).toBe(2);
|
|
20
|
+
expect(details.unpackedSize).toBe(1280);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test('should return stats of tarball (uncompressed)', async () => {
|
|
24
|
+
const buffer = await getFileBuffer('tarball.tar');
|
|
25
|
+
const details = await getTarballDetails(buffer);
|
|
26
|
+
expect(details.fileCount).toBe(2);
|
|
27
|
+
expect(details.unpackedSize).toBe(1280);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
test('should throw an error if the buffer is corrupt', async () => {
|
|
31
|
+
const corruptBuffer = Buffer.from('this is not a tarball');
|
|
32
|
+
await expect(getTarballDetails(corruptBuffer)).rejects.toThrow();
|
|
33
|
+
});
|
|
34
|
+
});
|
package/jest.config.js
DELETED