@verdaccio/store 9.0.0-next-9.5 → 9.0.0-next-9.6
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/README.md +10 -10
- package/build/filter-pipeline.d.ts +12 -0
- package/build/filter-pipeline.js +39 -0
- package/build/filter-pipeline.js.map +1 -0
- package/build/filter-pipeline.mjs +36 -0
- package/build/filter-pipeline.mjs.map +1 -0
- package/build/index.d.ts +2 -0
- package/build/index.js +3 -0
- package/build/index.mjs +2 -1
- package/build/storage.d.ts +2 -2
- package/build/storage.js +21 -36
- package/build/storage.js.map +1 -1
- package/build/storage.mjs +22 -37
- package/build/storage.mjs.map +1 -1
- package/package.json +12 -12
package/README.md
CHANGED
|
@@ -29,16 +29,16 @@ If you want to report a security vulnerability, please follow the steps which we
|
|
|
29
29
|
|
|
30
30
|
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio/contribute)]
|
|
31
31
|
|
|
32
|
-
[](https://opencollective.com/verdaccio/sponsor/0/website)
|
|
33
|
+
[](https://opencollective.com/verdaccio/sponsor/1/website)
|
|
34
|
+
[](https://opencollective.com/verdaccio/sponsor/2/website)
|
|
35
|
+
[](https://opencollective.com/verdaccio/sponsor/3/website)
|
|
36
|
+
[](https://opencollective.com/verdaccio/sponsor/4/website)
|
|
37
|
+
[](https://opencollective.com/verdaccio/sponsor/5/website)
|
|
38
|
+
[](https://opencollective.com/verdaccio/sponsor/6/website)
|
|
39
|
+
[](https://opencollective.com/verdaccio/sponsor/7/website)
|
|
40
|
+
[](https://opencollective.com/verdaccio/sponsor/8/website)
|
|
41
|
+
[](https://opencollective.com/verdaccio/sponsor/9/website)
|
|
42
42
|
|
|
43
43
|
## Open Collective Backers
|
|
44
44
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { pluginUtils } from '@verdaccio/core';
|
|
2
|
+
import { Config, Logger, Manifest } from '@verdaccio/types';
|
|
3
|
+
export type Filters = pluginUtils.ManifestFilter<Config>[];
|
|
4
|
+
/**
|
|
5
|
+
* Apply all loaded filter plugins to a manifest in sequence.
|
|
6
|
+
* Each filter receives the output of the previous one.
|
|
7
|
+
*/
|
|
8
|
+
export declare function applyManifestFilters(manifest: Manifest, filters: pluginUtils.ManifestFilter<unknown>[], logger: Logger): Promise<[Manifest, any[]]>;
|
|
9
|
+
/**
|
|
10
|
+
* Load filter plugins using the same loader Verdaccio uses at startup.
|
|
11
|
+
*/
|
|
12
|
+
export declare function loadFilterPlugins(config: Config, logger: Logger): Promise<Filters>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
const require_runtime = require("./_virtual/_rolldown/runtime.js");
|
|
2
|
+
let debug = require("debug");
|
|
3
|
+
debug = require_runtime.__toESM(debug);
|
|
4
|
+
let _verdaccio_core = require("@verdaccio/core");
|
|
5
|
+
let _verdaccio_loaders = require("@verdaccio/loaders");
|
|
6
|
+
//#region src/filter-pipeline.ts
|
|
7
|
+
var debug$1 = (0, debug.default)("verdaccio:filter-pipeline");
|
|
8
|
+
/**
|
|
9
|
+
* Apply all loaded filter plugins to a manifest in sequence.
|
|
10
|
+
* Each filter receives the output of the previous one.
|
|
11
|
+
*/
|
|
12
|
+
async function applyManifestFilters(manifest, filters, logger) {
|
|
13
|
+
if (!filters || filters.length === 0) return [manifest, []];
|
|
14
|
+
const filterPluginErrors = [];
|
|
15
|
+
let filteredManifest = { ...manifest };
|
|
16
|
+
for (const filter of filters) try {
|
|
17
|
+
filteredManifest = await filter.filter_metadata(filteredManifest);
|
|
18
|
+
} catch (err) {
|
|
19
|
+
logger.error({ err }, "filter has failed: @{err.message}");
|
|
20
|
+
filterPluginErrors.push(err);
|
|
21
|
+
}
|
|
22
|
+
return [filteredManifest, filterPluginErrors];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Load filter plugins using the same loader Verdaccio uses at startup.
|
|
26
|
+
*/
|
|
27
|
+
async function loadFilterPlugins(config, logger) {
|
|
28
|
+
const filters = await (0, _verdaccio_loaders.asyncLoadPlugin)(config.filters, {
|
|
29
|
+
config,
|
|
30
|
+
logger
|
|
31
|
+
}, _verdaccio_core.pluginUtils.filterSanityCheck, false, config.server?.pluginPrefix ?? _verdaccio_core.PLUGIN_PREFIX, _verdaccio_core.PLUGIN_CATEGORY.FILTER);
|
|
32
|
+
debug$1("filters available %o", filters.length);
|
|
33
|
+
return filters;
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
exports.applyManifestFilters = applyManifestFilters;
|
|
37
|
+
exports.loadFilterPlugins = loadFilterPlugins;
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=filter-pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-pipeline.js","names":[],"sources":["../src/filter-pipeline.ts"],"sourcesContent":["import buildDebug from 'debug';\n\nimport type { pluginUtils } from '@verdaccio/core';\nimport { PLUGIN_CATEGORY, PLUGIN_PREFIX, pluginUtils as pluginSanity } from '@verdaccio/core';\nimport { asyncLoadPlugin } from '@verdaccio/loaders';\nimport type { Config, Logger, Manifest } from '@verdaccio/types';\n\nconst debug = buildDebug('verdaccio:filter-pipeline');\n\nexport type Filters = pluginUtils.ManifestFilter<Config>[];\n\n/**\n * Apply all loaded filter plugins to a manifest in sequence.\n * Each filter receives the output of the previous one.\n */\nexport async function applyManifestFilters(\n manifest: Manifest,\n filters: pluginUtils.ManifestFilter<unknown>[],\n logger: Logger\n): Promise<[Manifest, any[]]> {\n if (!filters || filters.length === 0) {\n return [manifest, []];\n }\n\n const filterPluginErrors: any[] = [];\n let filteredManifest = { ...manifest };\n for (const filter of filters) {\n try {\n filteredManifest = await filter.filter_metadata(filteredManifest);\n } catch (err: any) {\n logger.error({ err }, 'filter has failed: @{err.message}');\n filterPluginErrors.push(err);\n }\n }\n return [filteredManifest, filterPluginErrors];\n}\n\n/**\n * Load filter plugins using the same loader Verdaccio uses at startup.\n */\nexport async function loadFilterPlugins(config: Config, logger: Logger): Promise<Filters> {\n const filters = await asyncLoadPlugin<pluginUtils.ManifestFilter<unknown>>(\n config.filters,\n {\n config,\n logger,\n },\n pluginSanity.filterSanityCheck,\n false,\n config.server?.pluginPrefix ?? PLUGIN_PREFIX,\n PLUGIN_CATEGORY.FILTER\n );\n debug('filters available %o', filters.length);\n return filters;\n}\n"],"mappings":";;;;;;AAOA,IAAM,WAAA,GAAA,MAAA,SAAmB,4BAA4B;;;;;AAQrD,eAAsB,qBACpB,UACA,SACA,QAC4B;AAC5B,KAAI,CAAC,WAAW,QAAQ,WAAW,EACjC,QAAO,CAAC,UAAU,EAAE,CAAC;CAGvB,MAAM,qBAA4B,EAAE;CACpC,IAAI,mBAAmB,EAAE,GAAG,UAAU;AACtC,MAAK,MAAM,UAAU,QACnB,KAAI;AACF,qBAAmB,MAAM,OAAO,gBAAgB,iBAAiB;UAC1D,KAAU;AACjB,SAAO,MAAM,EAAE,KAAK,EAAE,oCAAoC;AAC1D,qBAAmB,KAAK,IAAI;;AAGhC,QAAO,CAAC,kBAAkB,mBAAmB;;;;;AAM/C,eAAsB,kBAAkB,QAAgB,QAAkC;CACxF,MAAM,UAAU,OAAA,GAAA,mBAAA,iBACd,OAAO,SACP;EACE;EACA;EACD,EACD,gBAAA,YAAa,mBACb,OACA,OAAO,QAAQ,gBAAgB,gBAAA,eAC/B,gBAAA,gBAAgB,OACjB;AACD,SAAM,wBAAwB,QAAQ,OAAO;AAC7C,QAAO"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import buildDebug from "debug";
|
|
2
|
+
import { PLUGIN_CATEGORY, PLUGIN_PREFIX, pluginUtils } from "@verdaccio/core";
|
|
3
|
+
import { asyncLoadPlugin } from "@verdaccio/loaders";
|
|
4
|
+
//#region src/filter-pipeline.ts
|
|
5
|
+
var debug = buildDebug("verdaccio:filter-pipeline");
|
|
6
|
+
/**
|
|
7
|
+
* Apply all loaded filter plugins to a manifest in sequence.
|
|
8
|
+
* Each filter receives the output of the previous one.
|
|
9
|
+
*/
|
|
10
|
+
async function applyManifestFilters(manifest, filters, logger) {
|
|
11
|
+
if (!filters || filters.length === 0) return [manifest, []];
|
|
12
|
+
const filterPluginErrors = [];
|
|
13
|
+
let filteredManifest = { ...manifest };
|
|
14
|
+
for (const filter of filters) try {
|
|
15
|
+
filteredManifest = await filter.filter_metadata(filteredManifest);
|
|
16
|
+
} catch (err) {
|
|
17
|
+
logger.error({ err }, "filter has failed: @{err.message}");
|
|
18
|
+
filterPluginErrors.push(err);
|
|
19
|
+
}
|
|
20
|
+
return [filteredManifest, filterPluginErrors];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Load filter plugins using the same loader Verdaccio uses at startup.
|
|
24
|
+
*/
|
|
25
|
+
async function loadFilterPlugins(config, logger) {
|
|
26
|
+
const filters = await asyncLoadPlugin(config.filters, {
|
|
27
|
+
config,
|
|
28
|
+
logger
|
|
29
|
+
}, pluginUtils.filterSanityCheck, false, config.server?.pluginPrefix ?? PLUGIN_PREFIX, PLUGIN_CATEGORY.FILTER);
|
|
30
|
+
debug("filters available %o", filters.length);
|
|
31
|
+
return filters;
|
|
32
|
+
}
|
|
33
|
+
//#endregion
|
|
34
|
+
export { applyManifestFilters, loadFilterPlugins };
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=filter-pipeline.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-pipeline.mjs","names":[],"sources":["../src/filter-pipeline.ts"],"sourcesContent":["import buildDebug from 'debug';\n\nimport type { pluginUtils } from '@verdaccio/core';\nimport { PLUGIN_CATEGORY, PLUGIN_PREFIX, pluginUtils as pluginSanity } from '@verdaccio/core';\nimport { asyncLoadPlugin } from '@verdaccio/loaders';\nimport type { Config, Logger, Manifest } from '@verdaccio/types';\n\nconst debug = buildDebug('verdaccio:filter-pipeline');\n\nexport type Filters = pluginUtils.ManifestFilter<Config>[];\n\n/**\n * Apply all loaded filter plugins to a manifest in sequence.\n * Each filter receives the output of the previous one.\n */\nexport async function applyManifestFilters(\n manifest: Manifest,\n filters: pluginUtils.ManifestFilter<unknown>[],\n logger: Logger\n): Promise<[Manifest, any[]]> {\n if (!filters || filters.length === 0) {\n return [manifest, []];\n }\n\n const filterPluginErrors: any[] = [];\n let filteredManifest = { ...manifest };\n for (const filter of filters) {\n try {\n filteredManifest = await filter.filter_metadata(filteredManifest);\n } catch (err: any) {\n logger.error({ err }, 'filter has failed: @{err.message}');\n filterPluginErrors.push(err);\n }\n }\n return [filteredManifest, filterPluginErrors];\n}\n\n/**\n * Load filter plugins using the same loader Verdaccio uses at startup.\n */\nexport async function loadFilterPlugins(config: Config, logger: Logger): Promise<Filters> {\n const filters = await asyncLoadPlugin<pluginUtils.ManifestFilter<unknown>>(\n config.filters,\n {\n config,\n logger,\n },\n pluginSanity.filterSanityCheck,\n false,\n config.server?.pluginPrefix ?? PLUGIN_PREFIX,\n PLUGIN_CATEGORY.FILTER\n );\n debug('filters available %o', filters.length);\n return filters;\n}\n"],"mappings":";;;;AAOA,IAAM,QAAQ,WAAW,4BAA4B;;;;;AAQrD,eAAsB,qBACpB,UACA,SACA,QAC4B;AAC5B,KAAI,CAAC,WAAW,QAAQ,WAAW,EACjC,QAAO,CAAC,UAAU,EAAE,CAAC;CAGvB,MAAM,qBAA4B,EAAE;CACpC,IAAI,mBAAmB,EAAE,GAAG,UAAU;AACtC,MAAK,MAAM,UAAU,QACnB,KAAI;AACF,qBAAmB,MAAM,OAAO,gBAAgB,iBAAiB;UAC1D,KAAU;AACjB,SAAO,MAAM,EAAE,KAAK,EAAE,oCAAoC;AAC1D,qBAAmB,KAAK,IAAI;;AAGhC,QAAO,CAAC,kBAAkB,mBAAmB;;;;;AAM/C,eAAsB,kBAAkB,QAAgB,QAAkC;CACxF,MAAM,UAAU,MAAM,gBACpB,OAAO,SACP;EACE;EACA;EACD,EACD,YAAa,mBACb,OACA,OAAO,QAAQ,gBAAgB,eAC/B,gBAAgB,OACjB;AACD,OAAM,wBAAwB,QAAQ,OAAO;AAC7C,QAAO"}
|
package/build/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { Storage } from './storage';
|
|
2
|
+
export { applyManifestFilters, loadFilterPlugins } from './filter-pipeline';
|
|
3
|
+
export type { Filters } from './filter-pipeline';
|
|
2
4
|
export * from './lib/storage-utils';
|
|
3
5
|
export * from './lib/versions-utils';
|
|
4
6
|
export * from './lib/star-utils';
|
package/build/index.js
CHANGED
|
@@ -2,6 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
+
const require_filter_pipeline = require("./filter-pipeline.js");
|
|
5
6
|
const require_star_utils = require("./lib/star-utils.js");
|
|
6
7
|
const require_versions_utils = require("./lib/versions-utils.js");
|
|
7
8
|
const require_storage_utils = require("./lib/storage-utils.js");
|
|
@@ -9,6 +10,7 @@ const require_storage = require("./storage.js");
|
|
|
9
10
|
exports.STORAGE = require_storage_utils.STORAGE;
|
|
10
11
|
exports.Storage = require_storage.Storage;
|
|
11
12
|
exports.WHITELIST = require_storage_utils.WHITELIST;
|
|
13
|
+
exports.applyManifestFilters = require_filter_pipeline.applyManifestFilters;
|
|
12
14
|
exports.checkPackageRemote = require_storage_utils.checkPackageRemote;
|
|
13
15
|
exports.cleanUpLinksRef = require_storage_utils.cleanUpLinksRef;
|
|
14
16
|
exports.cleanUpReadme = require_storage_utils.cleanUpReadme;
|
|
@@ -22,6 +24,7 @@ exports.isExecutingStarCommand = require_star_utils.isExecutingStarCommand;
|
|
|
22
24
|
exports.isNewerVersion = require_versions_utils.isNewerVersion;
|
|
23
25
|
exports.isPublishablePackage = require_star_utils.isPublishablePackage;
|
|
24
26
|
exports.isStarManifest = require_star_utils.isStarManifest;
|
|
27
|
+
exports.loadFilterPlugins = require_filter_pipeline.loadFilterPlugins;
|
|
25
28
|
exports.mapManifestToSearchPackageBody = require_storage_utils.mapManifestToSearchPackageBody;
|
|
26
29
|
exports.mergeUplinkTimeIntoLocal = require_storage_utils.mergeUplinkTimeIntoLocal;
|
|
27
30
|
exports.mergeUplinkTimeIntoLocalNext = require_storage_utils.mergeUplinkTimeIntoLocalNext;
|
package/build/index.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { applyManifestFilters, loadFilterPlugins } from "./filter-pipeline.mjs";
|
|
1
2
|
import { isExecutingStarCommand, isPublishablePackage, isStarManifest } from "./lib/star-utils.mjs";
|
|
2
3
|
import { getVersion, isNewerVersion, removeLowerVersions, sortVersionsAndFilterInvalid, tagVersion, tagVersionNext } from "./lib/versions-utils.mjs";
|
|
3
4
|
import { STORAGE, WHITELIST, checkPackageRemote, cleanUpLinksRef, cleanUpReadme, generatePackageTemplate, generateRevision, getLatestReadme, hasDeprecatedVersions, isDeprecatedManifest, mapManifestToSearchPackageBody, mergeUplinkTimeIntoLocal, mergeUplinkTimeIntoLocalNext, mergeVersions, normalizeContributors, normalizeDistTags, normalizePackage, prepareSearchPackage, updateUpLinkMetadata } from "./lib/storage-utils.mjs";
|
|
4
5
|
import { Storage } from "./storage.mjs";
|
|
5
|
-
export { STORAGE, Storage, WHITELIST, checkPackageRemote, cleanUpLinksRef, cleanUpReadme, generatePackageTemplate, generateRevision, getLatestReadme, getVersion, hasDeprecatedVersions, isDeprecatedManifest, isExecutingStarCommand, isNewerVersion, isPublishablePackage, isStarManifest, mapManifestToSearchPackageBody, mergeUplinkTimeIntoLocal, mergeUplinkTimeIntoLocalNext, mergeVersions, normalizeContributors, normalizeDistTags, normalizePackage, prepareSearchPackage, removeLowerVersions, sortVersionsAndFilterInvalid, tagVersion, tagVersionNext, updateUpLinkMetadata };
|
|
6
|
+
export { STORAGE, Storage, WHITELIST, applyManifestFilters, checkPackageRemote, cleanUpLinksRef, cleanUpReadme, generatePackageTemplate, generateRevision, getLatestReadme, getVersion, hasDeprecatedVersions, isDeprecatedManifest, isExecutingStarCommand, isNewerVersion, isPublishablePackage, isStarManifest, loadFilterPlugins, mapManifestToSearchPackageBody, mergeUplinkTimeIntoLocal, mergeUplinkTimeIntoLocalNext, mergeVersions, normalizeContributors, normalizeDistTags, normalizePackage, prepareSearchPackage, removeLowerVersions, sortVersionsAndFilterInvalid, tagVersion, tagVersionNext, updateUpLinkMetadata };
|
package/build/storage.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { PassThrough, Readable } from 'node:stream';
|
|
2
|
-
import {
|
|
2
|
+
import { searchUtils } from '@verdaccio/core';
|
|
3
3
|
import { ISyncUplinksOptions, ProxyInstanceList, ProxySearchParams } from '@verdaccio/proxy';
|
|
4
4
|
import { AbbreviatedManifest, Config, Logger, Manifest, MergeTags, Token, TokenFilter, UnPublishManifest, Version } from '@verdaccio/types';
|
|
5
5
|
import { UpdateManifestOptions } from '.';
|
|
6
|
+
import { Filters } from './filter-pipeline';
|
|
6
7
|
import { LocalStorage } from './local-storage';
|
|
7
8
|
import { IGetPackageOptionsNext, OwnerManifestBody, StarManifestBody } from './type';
|
|
8
|
-
export type Filters = pluginUtils.ManifestFilter<Config>[];
|
|
9
9
|
export declare const noSuchFile = "ENOENT";
|
|
10
10
|
export declare const resourceNotAvailable = "EAGAIN";
|
|
11
11
|
export declare const PROTO_NAME = "__proto__";
|
package/build/storage.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const require_runtime = require("./_virtual/_rolldown/runtime.js");
|
|
2
|
+
const require_filter_pipeline = require("./filter-pipeline.js");
|
|
2
3
|
const require_star_utils = require("./lib/star-utils.js");
|
|
3
4
|
const require_versions_utils = require("./lib/versions-utils.js");
|
|
4
5
|
const require_storage_utils = require("./lib/storage-utils.js");
|
|
@@ -17,7 +18,6 @@ let node_url = require("node:url");
|
|
|
17
18
|
node_url = require_runtime.__toESM(node_url);
|
|
18
19
|
let _verdaccio_config = require("@verdaccio/config");
|
|
19
20
|
let _verdaccio_core = require("@verdaccio/core");
|
|
20
|
-
let _verdaccio_loaders = require("@verdaccio/loaders");
|
|
21
21
|
let _verdaccio_proxy = require("@verdaccio/proxy");
|
|
22
22
|
let _verdaccio_search = require("@verdaccio/search");
|
|
23
23
|
_verdaccio_search = require_runtime.__toESM(_verdaccio_search);
|
|
@@ -163,6 +163,7 @@ var Storage = class {
|
|
|
163
163
|
let cachedManifest = null;
|
|
164
164
|
try {
|
|
165
165
|
cachedManifest = await this.getPackageLocalMetadata(name);
|
|
166
|
+
[cachedManifest] = await this.applyFilters(cachedManifest);
|
|
166
167
|
} catch (err) {
|
|
167
168
|
debug$1("error on get package local metadata %o", err);
|
|
168
169
|
}
|
|
@@ -382,12 +383,12 @@ var Storage = class {
|
|
|
382
383
|
for (const pkg of database) {
|
|
383
384
|
debug$1("get local database %o", pkg);
|
|
384
385
|
const manifest = await this.getPackageLocalMetadata(pkg);
|
|
385
|
-
const
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
version
|
|
389
|
-
version.
|
|
390
|
-
version.
|
|
386
|
+
const [filteredManifest] = await this.applyFilters(manifest);
|
|
387
|
+
const latest = filteredManifest[_verdaccio_core.DIST_TAGS].latest;
|
|
388
|
+
if (latest && filteredManifest.versions[latest]) {
|
|
389
|
+
const version = filteredManifest.versions[latest];
|
|
390
|
+
version.time = filteredManifest.time[latest];
|
|
391
|
+
version.users = filteredManifest.users;
|
|
391
392
|
packages.push(version);
|
|
392
393
|
} else this.logger.warn({ package: pkg }, "package @{package} does not have a \"latest\" tag?");
|
|
393
394
|
}
|
|
@@ -419,13 +420,7 @@ var Storage = class {
|
|
|
419
420
|
await this.localStorage.getSecret(config);
|
|
420
421
|
debug$1("local storage secret initialized");
|
|
421
422
|
} else debug$1("storage has been already initialized");
|
|
422
|
-
if (!this.filters)
|
|
423
|
-
this.filters = await (0, _verdaccio_loaders.asyncLoadPlugin)(this.config.filters, {
|
|
424
|
-
config: this.config,
|
|
425
|
-
logger: this.logger
|
|
426
|
-
}, _verdaccio_core.pluginUtils.filterSanityCheck, false, this.config.server?.pluginPrefix ?? _verdaccio_core.PLUGIN_PREFIX, _verdaccio_core.PLUGIN_CATEGORY.FILTER);
|
|
427
|
-
debug$1("filters available %o", this.filters.length);
|
|
428
|
-
}
|
|
423
|
+
if (!this.filters) this.filters = await require_filter_pipeline.loadFilterPlugins(this.config, this.logger);
|
|
429
424
|
}
|
|
430
425
|
/**
|
|
431
426
|
* Retrieve a wrapper that provide access to the package location.
|
|
@@ -470,8 +465,9 @@ var Storage = class {
|
|
|
470
465
|
try {
|
|
471
466
|
for (const searchItem of items) {
|
|
472
467
|
const manifest = await this.getPackageLocalMetadata(searchItem.package.name);
|
|
473
|
-
|
|
474
|
-
|
|
468
|
+
const [filteredManifest] = await this.applyFilters(manifest);
|
|
469
|
+
if (lodash.default.isEmpty(filteredManifest?.versions) === false) {
|
|
470
|
+
const searchPackage = require_storage_utils.mapManifestToSearchPackageBody(filteredManifest, searchItem);
|
|
475
471
|
debug$1("search local stream found %o", searchPackage.name);
|
|
476
472
|
const searchPackageItem = {
|
|
477
473
|
package: searchPackage,
|
|
@@ -1082,7 +1078,10 @@ var Storage = class {
|
|
|
1082
1078
|
remoteAddress: options.requestOptions.remoteAddress
|
|
1083
1079
|
});
|
|
1084
1080
|
if (!remoteManifest && lodash.default.isNull(data)) throw _verdaccio_core.errorUtils.getNotFound(`${_verdaccio_core.API_ERROR.NOT_PACKAGE_UPLINK}: ${name}`);
|
|
1085
|
-
else if (!remoteManifest && !lodash.default.isNull(data))
|
|
1081
|
+
else if (!remoteManifest && !lodash.default.isNull(data)) {
|
|
1082
|
+
const [filteredData, filtersErrors] = await this.applyFilters(data);
|
|
1083
|
+
return [filteredData, [...upLinksErrors, ...filtersErrors]];
|
|
1084
|
+
}
|
|
1086
1085
|
const normalizedPkg = Object.assign({}, remoteManifest, {
|
|
1087
1086
|
...require_storage_utils.normalizeDistTags(require_storage_utils.cleanUpLinksRef(remoteManifest, options.keepUpLinkData)),
|
|
1088
1087
|
_attachments: {}
|
|
@@ -1126,7 +1125,8 @@ var Storage = class {
|
|
|
1126
1125
|
}
|
|
1127
1126
|
if (upLinks.length === 0) {
|
|
1128
1127
|
debug$1("no uplinks found for %o, upstream update aborted", name);
|
|
1129
|
-
return [
|
|
1128
|
+
if (lodash.default.isNil(localManifest)) return [null, []];
|
|
1129
|
+
return await this.applyFilters(localManifest);
|
|
1130
1130
|
}
|
|
1131
1131
|
const uplinksErrors = [];
|
|
1132
1132
|
for (const uplink of upLinks) try {
|
|
@@ -1145,16 +1145,10 @@ var Storage = class {
|
|
|
1145
1145
|
if (found && syncManifest !== null) {
|
|
1146
1146
|
const updatedCacheManifest = await this.updateVersionsNext(name, syncManifest);
|
|
1147
1147
|
const [filteredManifest, filtersErrors] = await this.applyFilters(updatedCacheManifest);
|
|
1148
|
-
return [
|
|
1149
|
-
...updatedCacheManifest,
|
|
1150
|
-
...filteredManifest
|
|
1151
|
-
}, [...uplinksErrors, ...filtersErrors]];
|
|
1148
|
+
return [filteredManifest, [...uplinksErrors, ...filtersErrors]];
|
|
1152
1149
|
} else if (found && lodash.default.isNil(localManifest) === false) {
|
|
1153
1150
|
const [filteredManifest, filtersErrors] = await this.applyFilters(localManifest);
|
|
1154
|
-
return [
|
|
1155
|
-
...localManifest,
|
|
1156
|
-
...filteredManifest
|
|
1157
|
-
}, [...uplinksErrors, ...filtersErrors]];
|
|
1151
|
+
return [filteredManifest, [...uplinksErrors, ...filtersErrors]];
|
|
1158
1152
|
} else {
|
|
1159
1153
|
debug$1("uplinks sync failed with %o errors", uplinksErrors.length);
|
|
1160
1154
|
for (const err of uplinksErrors) {
|
|
@@ -1219,16 +1213,7 @@ var Storage = class {
|
|
|
1219
1213
|
* @returns
|
|
1220
1214
|
*/
|
|
1221
1215
|
async applyFilters(manifest) {
|
|
1222
|
-
|
|
1223
|
-
const filterPluginErrors = [];
|
|
1224
|
-
let filteredManifest = { ...manifest };
|
|
1225
|
-
for (const filter of this.filters) try {
|
|
1226
|
-
filteredManifest = await filter.filter_metadata(manifest);
|
|
1227
|
-
} catch (err) {
|
|
1228
|
-
this.logger.error({ err }, "filter has failed: @{err.message}");
|
|
1229
|
-
filterPluginErrors.push(err);
|
|
1230
|
-
}
|
|
1231
|
-
return [filteredManifest, filterPluginErrors];
|
|
1216
|
+
return require_filter_pipeline.applyManifestFilters(manifest, this.filters ?? [], this.logger);
|
|
1232
1217
|
}
|
|
1233
1218
|
_createNewPackage(name) {
|
|
1234
1219
|
return require_storage_utils.normalizePackage(require_storage_utils.generatePackageTemplate(name));
|