@verdaccio/loaders 6.0.0-6-next.26 → 6.0.0-6-next.28

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 CHANGED
@@ -1,5 +1,18 @@
1
1
  # @verdaccio/loaders
2
2
 
3
+ ## 6.0.0-6-next.28
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [65f88b82]
8
+ - @verdaccio/logger@6.0.0-6-next.27
9
+
10
+ ## 6.0.0-6-next.27
11
+
12
+ ### Patch Changes
13
+
14
+ - @verdaccio/logger@6.0.0-6-next.26
15
+
3
16
  ## 6.0.0-6-next.26
4
17
 
5
18
  ### Patch Changes
@@ -75,7 +75,9 @@ async function asyncLoadPlugin(pluginConfigs = {}, params, sanityCheck, prefix =
75
75
  await isDirectory(pluginsPath);
76
76
  const pluginDir = pluginsPath;
77
77
  const externalFilePlugin = (0, _path.resolve)(pluginDir, `${prefix}-${pluginId}`);
78
- let plugin = (0, _utils.tryLoad)(externalFilePlugin);
78
+ let plugin = (0, _utils.tryLoad)(externalFilePlugin, (a, b) => {
79
+ _logger.logger.error(a, b);
80
+ });
79
81
  if (plugin && (0, _utils.isValid)(plugin)) {
80
82
  plugin = executePlugin(plugin, pluginConfigs[pluginId], params);
81
83
  if (!sanityCheck(plugin)) {
@@ -100,7 +102,9 @@ async function asyncLoadPlugin(pluginConfigs = {}, params, sanityCheck, prefix =
100
102
  debug('is scoped plugin %s', isScoped);
101
103
  const pluginName = isScoped ? pluginId : `${prefix}-${pluginId}`;
102
104
  debug('plugin pkg name %s', pluginName);
103
- let plugin = (0, _utils.tryLoad)(pluginName);
105
+ let plugin = (0, _utils.tryLoad)(pluginName, (a, b) => {
106
+ _logger.logger.error(a, b);
107
+ });
104
108
  if (plugin && (0, _utils.isValid)(plugin)) {
105
109
  plugin = executePlugin(plugin, pluginConfigs[pluginId], params);
106
110
  if (!sanityCheck(plugin)) {
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-async-loader.js","names":["debug","buildDebug","lstat","fs","promises","require","isDirectory","pathFolder","stat","asyncLoadPlugin","pluginConfigs","params","sanityCheck","prefix","pluginsIds","Object","keys","config","plugins","pluginId","pluginsPath","isAbsolute","config_path","configPath","logger","error","resolve","join","dirname","path","pluginDir","externalFilePlugin","plugin","tryLoad","isValid","executePlugin","content","push","err","warn","message","isScoped","startsWith","includes","pluginName","length","pluginConfig","isES6","default"],"sources":["../src/plugin-async-loader.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport fs from 'fs';\nimport { dirname, isAbsolute, join, resolve } from 'path';\n\nimport { pluginUtils } from '@verdaccio/core';\nimport { logger } from '@verdaccio/logger';\nimport { Config, Logger } from '@verdaccio/types';\n\nimport { PluginType, isES6, isValid, tryLoad } from './utils';\n\nconst debug = buildDebug('verdaccio:plugin:loader:async');\n\nconst { lstat } = fs.promises ? fs.promises : require('fs/promises');\n\nasync function isDirectory(pathFolder: string) {\n const stat = await lstat(pathFolder);\n return stat.isDirectory();\n}\n\nexport type Params = { config: Config; logger: Logger };\n\n// type Plugins<T> =\n// | pluginUtils.Auth<T>\n// | pluginUtils.Storage<T>\n// | pluginUtils.ExpressMiddleware<T, unknown, unknown>;\n\n/**\n * The plugin loader find recursively plugins, if one plugin fails is ignored and report the error to the logger.\n *\n * The loader follows the order:\n * - If the at the `config.yaml` file the `plugins: ./plugins` is defined\n * - If is absolute will use the provided path\n * - If is relative, will use the base path of the config file. eg: /root/config.yaml the plugins folder should be\n * hosted at /root/plugins\n * - The next step is find at the node_modules or global based on the `require` native algorithm.\n * - If the package is scoped eg: @scope/foo, try to load the package `@scope/foo`\n * - If the package is not scoped, will use the default prefix: verdaccio-foo.\n * - If a custom prefix is provided, the verdaccio- is replaced by the config.server.pluginPrefix.\n *\n * The `sanityCheck` is the validation for the required methods to load the plugin, if the validation fails the plugin won't be loaded.\n * The `params` is an object that contains the global configuration and the logger.\n *\n * @param {*} pluginConfigs the custom plugin section\n * @param {*} params a set of params to initialize the plugin\n * @param {*} sanityCheck callback that check the shape that should fulfill the plugin\n * @param {*} prefix by default is verdaccio but can be override with config.server.pluginPrefix\n * @return {Array} list of plugins\n */\nexport async function asyncLoadPlugin<T extends pluginUtils.Plugin<T>>(\n pluginConfigs: any = {},\n params: Params,\n sanityCheck: (plugin: PluginType<T>) => boolean,\n prefix: string = 'verdaccio'\n): Promise<PluginType<T>[]> {\n const pluginsIds = Object.keys(pluginConfigs);\n const { config } = params;\n let plugins: PluginType<T>[] = [];\n for (let pluginId of pluginsIds) {\n debug('plugin %s', pluginId);\n if (typeof config.plugins === 'string') {\n let pluginsPath = config.plugins;\n debug('plugin path %s', pluginsPath);\n if (!isAbsolute(pluginsPath)) {\n if (typeof config.config_path === 'string' && !config.configPath) {\n logger.error(\n 'configPath is missing and the legacy config.config_path is not available for loading plugins'\n );\n }\n\n if (!config.configPath) {\n logger.error('config path property is required for loading plugins');\n continue;\n }\n pluginsPath = resolve(join(dirname(config.configPath), pluginsPath));\n }\n\n logger.debug({ path: pluginsPath }, 'plugins folder defined, loading plugins from @{path} ');\n // throws if is nto a directory\n try {\n await isDirectory(pluginsPath);\n const pluginDir = pluginsPath;\n const externalFilePlugin = resolve(pluginDir, `${prefix}-${pluginId}`);\n let plugin = tryLoad<T>(externalFilePlugin);\n if (plugin && isValid(plugin)) {\n plugin = executePlugin(plugin, pluginConfigs[pluginId], params);\n if (!sanityCheck(plugin)) {\n logger.error(\n { content: externalFilePlugin },\n \"@{content} doesn't look like a valid plugin\"\n );\n continue;\n }\n plugins.push(plugin);\n continue;\n }\n } catch (err: any) {\n logger.warn(\n { err: err.message, pluginsPath, pluginId },\n '@{err} on loading plugins at @{pluginsPath} for @{pluginId}'\n );\n }\n }\n\n if (typeof pluginId === 'string') {\n const isScoped: boolean = pluginId.startsWith('@') && pluginId.includes('/');\n debug('is scoped plugin %s', isScoped);\n const pluginName = isScoped ? pluginId : `${prefix}-${pluginId}`;\n debug('plugin pkg name %s', pluginName);\n let plugin = tryLoad<T>(pluginName);\n if (plugin && isValid(plugin)) {\n plugin = executePlugin(plugin, pluginConfigs[pluginId], params);\n if (!sanityCheck(plugin)) {\n logger.error({ content: pluginName }, \"@{content} doesn't look like a valid plugin\");\n continue;\n }\n plugins.push(plugin);\n continue;\n } else {\n logger.error(\n { pluginName },\n 'package not found, try to install @{pluginName} with a package manager'\n );\n continue;\n }\n }\n }\n debug('plugin found %s', plugins.length);\n return plugins;\n}\n\nexport function executePlugin<T>(\n plugin: PluginType<T>,\n pluginConfig: unknown,\n params: Params\n): PluginType<T> {\n if (isES6(plugin)) {\n debug('plugin is ES6');\n // @ts-expect-error no relevant for the code\n // eslint-disable-next-line new-cap\n return new plugin.default(pluginConfig, params) as Plugin;\n } else {\n debug('plugin is commonJS');\n // @ts-expect-error improve this type\n return plugin(pluginConfig, params) as PluginType<T>;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"plugin-async-loader.js","names":["debug","buildDebug","lstat","fs","promises","require","isDirectory","pathFolder","stat","asyncLoadPlugin","pluginConfigs","params","sanityCheck","prefix","pluginsIds","Object","keys","config","plugins","pluginId","pluginsPath","isAbsolute","config_path","configPath","logger","error","resolve","join","dirname","path","pluginDir","externalFilePlugin","plugin","tryLoad","a","b","isValid","executePlugin","content","push","err","warn","message","isScoped","startsWith","includes","pluginName","length","pluginConfig","isES6","default"],"sources":["../src/plugin-async-loader.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport fs from 'fs';\nimport { dirname, isAbsolute, join, resolve } from 'path';\n\nimport { pluginUtils } from '@verdaccio/core';\nimport { logger } from '@verdaccio/logger';\nimport { Config, Logger } from '@verdaccio/types';\n\nimport { PluginType, isES6, isValid, tryLoad } from './utils';\n\nconst debug = buildDebug('verdaccio:plugin:loader:async');\n\nconst { lstat } = fs.promises ? fs.promises : require('fs/promises');\n\nasync function isDirectory(pathFolder: string) {\n const stat = await lstat(pathFolder);\n return stat.isDirectory();\n}\n\nexport type Params = { config: Config; logger: Logger };\n\n// type Plugins<T> =\n// | pluginUtils.Auth<T>\n// | pluginUtils.Storage<T>\n// | pluginUtils.ExpressMiddleware<T, unknown, unknown>;\n\n/**\n * The plugin loader find recursively plugins, if one plugin fails is ignored and report the error to the logger.\n *\n * The loader follows the order:\n * - If the at the `config.yaml` file the `plugins: ./plugins` is defined\n * - If is absolute will use the provided path\n * - If is relative, will use the base path of the config file. eg: /root/config.yaml the plugins folder should be\n * hosted at /root/plugins\n * - The next step is find at the node_modules or global based on the `require` native algorithm.\n * - If the package is scoped eg: @scope/foo, try to load the package `@scope/foo`\n * - If the package is not scoped, will use the default prefix: verdaccio-foo.\n * - If a custom prefix is provided, the verdaccio- is replaced by the config.server.pluginPrefix.\n *\n * The `sanityCheck` is the validation for the required methods to load the plugin, if the validation fails the plugin won't be loaded.\n * The `params` is an object that contains the global configuration and the logger.\n *\n * @param {*} pluginConfigs the custom plugin section\n * @param {*} params a set of params to initialize the plugin\n * @param {*} sanityCheck callback that check the shape that should fulfill the plugin\n * @param {*} prefix by default is verdaccio but can be override with config.server.pluginPrefix\n * @return {Array} list of plugins\n */\nexport async function asyncLoadPlugin<T extends pluginUtils.Plugin<T>>(\n pluginConfigs: any = {},\n params: Params,\n sanityCheck: (plugin: PluginType<T>) => boolean,\n prefix: string = 'verdaccio'\n): Promise<PluginType<T>[]> {\n const pluginsIds = Object.keys(pluginConfigs);\n const { config } = params;\n let plugins: PluginType<T>[] = [];\n for (let pluginId of pluginsIds) {\n debug('plugin %s', pluginId);\n if (typeof config.plugins === 'string') {\n let pluginsPath = config.plugins;\n debug('plugin path %s', pluginsPath);\n if (!isAbsolute(pluginsPath)) {\n if (typeof config.config_path === 'string' && !config.configPath) {\n logger.error(\n 'configPath is missing and the legacy config.config_path is not available for loading plugins'\n );\n }\n\n if (!config.configPath) {\n logger.error('config path property is required for loading plugins');\n continue;\n }\n pluginsPath = resolve(join(dirname(config.configPath), pluginsPath));\n }\n\n logger.debug({ path: pluginsPath }, 'plugins folder defined, loading plugins from @{path} ');\n // throws if is nto a directory\n try {\n await isDirectory(pluginsPath);\n const pluginDir = pluginsPath;\n const externalFilePlugin = resolve(pluginDir, `${prefix}-${pluginId}`);\n let plugin = tryLoad<T>(externalFilePlugin, (a: any, b: any) => {\n logger.error(a, b);\n });\n if (plugin && isValid(plugin)) {\n plugin = executePlugin(plugin, pluginConfigs[pluginId], params);\n if (!sanityCheck(plugin)) {\n logger.error(\n { content: externalFilePlugin },\n \"@{content} doesn't look like a valid plugin\"\n );\n continue;\n }\n plugins.push(plugin);\n continue;\n }\n } catch (err: any) {\n logger.warn(\n { err: err.message, pluginsPath, pluginId },\n '@{err} on loading plugins at @{pluginsPath} for @{pluginId}'\n );\n }\n }\n\n if (typeof pluginId === 'string') {\n const isScoped: boolean = pluginId.startsWith('@') && pluginId.includes('/');\n debug('is scoped plugin %s', isScoped);\n const pluginName = isScoped ? pluginId : `${prefix}-${pluginId}`;\n debug('plugin pkg name %s', pluginName);\n let plugin = tryLoad<T>(pluginName, (a: any, b: any) => {\n logger.error(a, b);\n });\n if (plugin && isValid(plugin)) {\n plugin = executePlugin(plugin, pluginConfigs[pluginId], params);\n if (!sanityCheck(plugin)) {\n logger.error({ content: pluginName }, \"@{content} doesn't look like a valid plugin\");\n continue;\n }\n plugins.push(plugin);\n continue;\n } else {\n logger.error(\n { pluginName },\n 'package not found, try to install @{pluginName} with a package manager'\n );\n continue;\n }\n }\n }\n debug('plugin found %s', plugins.length);\n return plugins;\n}\n\nexport function executePlugin<T>(\n plugin: PluginType<T>,\n pluginConfig: unknown,\n params: Params\n): PluginType<T> {\n if (isES6(plugin)) {\n debug('plugin is ES6');\n // @ts-expect-error no relevant for the code\n // eslint-disable-next-line new-cap\n return new plugin.default(pluginConfig, params) as Plugin;\n } else {\n debug('plugin is commonJS');\n // @ts-expect-error improve this type\n return plugin(pluginConfig, params) as PluginType<T>;\n }\n}\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AAGA;AAGA;AAA8D;AAE9D,MAAMA,KAAK,GAAG,IAAAC,cAAU,EAAC,+BAA+B,CAAC;AAEzD,MAAM;EAAEC;AAAM,CAAC,GAAGC,WAAE,CAACC,QAAQ,GAAGD,WAAE,CAACC,QAAQ,GAAGC,OAAO,CAAC,aAAa,CAAC;AAEpE,eAAeC,WAAW,CAACC,UAAkB,EAAE;EAC7C,MAAMC,IAAI,GAAG,MAAMN,KAAK,CAACK,UAAU,CAAC;EACpC,OAAOC,IAAI,CAACF,WAAW,EAAE;AAC3B;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeG,eAAe,CACnCC,aAAkB,GAAG,CAAC,CAAC,EACvBC,MAAc,EACdC,WAA+C,EAC/CC,MAAc,GAAG,WAAW,EACF;EAC1B,MAAMC,UAAU,GAAGC,MAAM,CAACC,IAAI,CAACN,aAAa,CAAC;EAC7C,MAAM;IAAEO;EAAO,CAAC,GAAGN,MAAM;EACzB,IAAIO,OAAwB,GAAG,EAAE;EACjC,KAAK,IAAIC,QAAQ,IAAIL,UAAU,EAAE;IAC/Bd,KAAK,CAAC,WAAW,EAAEmB,QAAQ,CAAC;IAC5B,IAAI,OAAOF,MAAM,CAACC,OAAO,KAAK,QAAQ,EAAE;MACtC,IAAIE,WAAW,GAAGH,MAAM,CAACC,OAAO;MAChClB,KAAK,CAAC,gBAAgB,EAAEoB,WAAW,CAAC;MACpC,IAAI,CAAC,IAAAC,gBAAU,EAACD,WAAW,CAAC,EAAE;QAC5B,IAAI,OAAOH,MAAM,CAACK,WAAW,KAAK,QAAQ,IAAI,CAACL,MAAM,CAACM,UAAU,EAAE;UAChEC,cAAM,CAACC,KAAK,CACV,8FAA8F,CAC/F;QACH;QAEA,IAAI,CAACR,MAAM,CAACM,UAAU,EAAE;UACtBC,cAAM,CAACC,KAAK,CAAC,sDAAsD,CAAC;UACpE;QACF;QACAL,WAAW,GAAG,IAAAM,aAAO,EAAC,IAAAC,UAAI,EAAC,IAAAC,aAAO,EAACX,MAAM,CAACM,UAAU,CAAC,EAAEH,WAAW,CAAC,CAAC;MACtE;MAEAI,cAAM,CAACxB,KAAK,CAAC;QAAE6B,IAAI,EAAET;MAAY,CAAC,EAAE,uDAAuD,CAAC;MAC5F;MACA,IAAI;QACF,MAAMd,WAAW,CAACc,WAAW,CAAC;QAC9B,MAAMU,SAAS,GAAGV,WAAW;QAC7B,MAAMW,kBAAkB,GAAG,IAAAL,aAAO,EAACI,SAAS,EAAG,GAAEjB,MAAO,IAAGM,QAAS,EAAC,CAAC;QACtE,IAAIa,MAAM,GAAG,IAAAC,cAAO,EAAIF,kBAAkB,EAAE,CAACG,CAAM,EAAEC,CAAM,KAAK;UAC9DX,cAAM,CAACC,KAAK,CAACS,CAAC,EAAEC,CAAC,CAAC;QACpB,CAAC,CAAC;QACF,IAAIH,MAAM,IAAI,IAAAI,cAAO,EAACJ,MAAM,CAAC,EAAE;UAC7BA,MAAM,GAAGK,aAAa,CAACL,MAAM,EAAEtB,aAAa,CAACS,QAAQ,CAAC,EAAER,MAAM,CAAC;UAC/D,IAAI,CAACC,WAAW,CAACoB,MAAM,CAAC,EAAE;YACxBR,cAAM,CAACC,KAAK,CACV;cAAEa,OAAO,EAAEP;YAAmB,CAAC,EAC/B,6CAA6C,CAC9C;YACD;UACF;UACAb,OAAO,CAACqB,IAAI,CAACP,MAAM,CAAC;UACpB;QACF;MACF,CAAC,CAAC,OAAOQ,GAAQ,EAAE;QACjBhB,cAAM,CAACiB,IAAI,CACT;UAAED,GAAG,EAAEA,GAAG,CAACE,OAAO;UAAEtB,WAAW;UAAED;QAAS,CAAC,EAC3C,6DAA6D,CAC9D;MACH;IACF;IAEA,IAAI,OAAOA,QAAQ,KAAK,QAAQ,EAAE;MAChC,MAAMwB,QAAiB,GAAGxB,QAAQ,CAACyB,UAAU,CAAC,GAAG,CAAC,IAAIzB,QAAQ,CAAC0B,QAAQ,CAAC,GAAG,CAAC;MAC5E7C,KAAK,CAAC,qBAAqB,EAAE2C,QAAQ,CAAC;MACtC,MAAMG,UAAU,GAAGH,QAAQ,GAAGxB,QAAQ,GAAI,GAAEN,MAAO,IAAGM,QAAS,EAAC;MAChEnB,KAAK,CAAC,oBAAoB,EAAE8C,UAAU,CAAC;MACvC,IAAId,MAAM,GAAG,IAAAC,cAAO,EAAIa,UAAU,EAAE,CAACZ,CAAM,EAAEC,CAAM,KAAK;QACtDX,cAAM,CAACC,KAAK,CAACS,CAAC,EAAEC,CAAC,CAAC;MACpB,CAAC,CAAC;MACF,IAAIH,MAAM,IAAI,IAAAI,cAAO,EAACJ,MAAM,CAAC,EAAE;QAC7BA,MAAM,GAAGK,aAAa,CAACL,MAAM,EAAEtB,aAAa,CAACS,QAAQ,CAAC,EAAER,MAAM,CAAC;QAC/D,IAAI,CAACC,WAAW,CAACoB,MAAM,CAAC,EAAE;UACxBR,cAAM,CAACC,KAAK,CAAC;YAAEa,OAAO,EAAEQ;UAAW,CAAC,EAAE,6CAA6C,CAAC;UACpF;QACF;QACA5B,OAAO,CAACqB,IAAI,CAACP,MAAM,CAAC;QACpB;MACF,CAAC,MAAM;QACLR,cAAM,CAACC,KAAK,CACV;UAAEqB;QAAW,CAAC,EACd,wEAAwE,CACzE;QACD;MACF;IACF;EACF;EACA9C,KAAK,CAAC,iBAAiB,EAAEkB,OAAO,CAAC6B,MAAM,CAAC;EACxC,OAAO7B,OAAO;AAChB;AAEO,SAASmB,aAAa,CAC3BL,MAAqB,EACrBgB,YAAqB,EACrBrC,MAAc,EACC;EACf,IAAI,IAAAsC,YAAK,EAACjB,MAAM,CAAC,EAAE;IACjBhC,KAAK,CAAC,eAAe,CAAC;IACtB;IACA;IACA,OAAO,IAAIgC,MAAM,CAACkB,OAAO,CAACF,YAAY,EAAErC,MAAM,CAAC;EACjD,CAAC,MAAM;IACLX,KAAK,CAAC,oBAAoB,CAAC;IAC3B;IACA,OAAOgC,MAAM,CAACgB,YAAY,EAAErC,MAAM,CAAC;EACrC;AACF"}
package/build/utils.d.ts CHANGED
@@ -7,4 +7,4 @@ export declare function isES6<T>(plugin: PluginType<T>): boolean;
7
7
  * @param {*} path the module's path
8
8
  * @return {Object}
9
9
  */
10
- export declare function tryLoad<T>(path: string): PluginType<T> | null;
10
+ export declare function tryLoad<T>(path: string, onError: any): PluginType<T> | null;
package/build/utils.js CHANGED
@@ -8,7 +8,6 @@ exports.isValid = isValid;
8
8
  exports.tryLoad = tryLoad;
9
9
  var _debug = _interopRequireDefault(require("debug"));
10
10
  var _lodash = _interopRequireDefault(require("lodash"));
11
- var _logger = require("@verdaccio/logger");
12
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
12
  const debug = (0, _debug.default)('verdaccio:plugin:loader:utils');
14
13
  const MODULE_NOT_FOUND = 'MODULE_NOT_FOUND';
@@ -25,7 +24,7 @@ function isES6(plugin) {
25
24
  * @param {*} path the module's path
26
25
  * @return {Object}
27
26
  */
28
- function tryLoad(path) {
27
+ function tryLoad(path, onError) {
29
28
  try {
30
29
  debug('loading plugin %s', path);
31
30
  return require(path);
@@ -34,7 +33,7 @@ function tryLoad(path) {
34
33
  debug('plugin %s not found', path);
35
34
  return null;
36
35
  }
37
- _logger.logger.error({
36
+ onError({
38
37
  err: err.msg
39
38
  }, 'error loading plugin @{err}');
40
39
  throw err;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["debug","buildDebug","MODULE_NOT_FOUND","isValid","plugin","_","isFunction","default","isES6","Object","keys","includes","tryLoad","path","require","err","code","logger","error","msg"],"sources":["../src/utils.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport _ from 'lodash';\n\nimport { pluginUtils } from '@verdaccio/core';\nimport { logger } from '@verdaccio/logger';\n\nconst debug = buildDebug('verdaccio:plugin:loader:utils');\nconst MODULE_NOT_FOUND = 'MODULE_NOT_FOUND';\n\nexport type PluginType<T> = T extends pluginUtils.Plugin<T> ? T : never;\n\nexport function isValid<T>(plugin: PluginType<T>): boolean {\n // @ts-expect-error default not relevant\n return _.isFunction(plugin) || _.isFunction(plugin.default);\n}\n\nexport function isES6<T>(plugin: PluginType<T>): boolean {\n return Object.keys(plugin).includes('default');\n}\n\n/**\n * Requires a module.\n * @param {*} path the module's path\n * @return {Object}\n */\nexport function tryLoad<T>(path: string): PluginType<T> | null {\n try {\n debug('loading plugin %s', path);\n return require(path) as PluginType<T>;\n } catch (err: any) {\n if (err.code === MODULE_NOT_FOUND) {\n debug('plugin %s not found', path);\n return null;\n }\n logger.error({ err: err.msg }, 'error loading plugin @{err}');\n throw err;\n }\n}\n"],"mappings":";;;;;;;;AAAA;AACA;AAGA;AAA2C;AAE3C,MAAMA,KAAK,GAAG,IAAAC,cAAU,EAAC,+BAA+B,CAAC;AACzD,MAAMC,gBAAgB,GAAG,kBAAkB;AAIpC,SAASC,OAAO,CAAIC,MAAqB,EAAW;EACzD;EACA,OAAOC,eAAC,CAACC,UAAU,CAACF,MAAM,CAAC,IAAIC,eAAC,CAACC,UAAU,CAACF,MAAM,CAACG,OAAO,CAAC;AAC7D;AAEO,SAASC,KAAK,CAAIJ,MAAqB,EAAW;EACvD,OAAOK,MAAM,CAACC,IAAI,CAACN,MAAM,CAAC,CAACO,QAAQ,CAAC,SAAS,CAAC;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,OAAO,CAAIC,IAAY,EAAwB;EAC7D,IAAI;IACFb,KAAK,CAAC,mBAAmB,EAAEa,IAAI,CAAC;IAChC,OAAOC,OAAO,CAACD,IAAI,CAAC;EACtB,CAAC,CAAC,OAAOE,GAAQ,EAAE;IACjB,IAAIA,GAAG,CAACC,IAAI,KAAKd,gBAAgB,EAAE;MACjCF,KAAK,CAAC,qBAAqB,EAAEa,IAAI,CAAC;MAClC,OAAO,IAAI;IACb;IACAI,cAAM,CAACC,KAAK,CAAC;MAAEH,GAAG,EAAEA,GAAG,CAACI;IAAI,CAAC,EAAE,6BAA6B,CAAC;IAC7D,MAAMJ,GAAG;EACX;AACF"}
1
+ {"version":3,"file":"utils.js","names":["debug","buildDebug","MODULE_NOT_FOUND","isValid","plugin","_","isFunction","default","isES6","Object","keys","includes","tryLoad","path","onError","require","err","code","msg"],"sources":["../src/utils.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport _ from 'lodash';\n\nimport { pluginUtils } from '@verdaccio/core';\n\nconst debug = buildDebug('verdaccio:plugin:loader:utils');\nconst MODULE_NOT_FOUND = 'MODULE_NOT_FOUND';\n\nexport type PluginType<T> = T extends pluginUtils.Plugin<T> ? T : never;\n\nexport function isValid<T>(plugin: PluginType<T>): boolean {\n // @ts-expect-error default not relevant\n return _.isFunction(plugin) || _.isFunction(plugin.default);\n}\n\nexport function isES6<T>(plugin: PluginType<T>): boolean {\n return Object.keys(plugin).includes('default');\n}\n\n/**\n * Requires a module.\n * @param {*} path the module's path\n * @return {Object}\n */\nexport function tryLoad<T>(path: string, onError: any): PluginType<T> | null {\n try {\n debug('loading plugin %s', path);\n return require(path) as PluginType<T>;\n } catch (err: any) {\n if (err.code === MODULE_NOT_FOUND) {\n debug('plugin %s not found', path);\n return null;\n }\n onError({ err: err.msg }, 'error loading plugin @{err}');\n throw err;\n }\n}\n"],"mappings":";;;;;;;;AAAA;AACA;AAAuB;AAIvB,MAAMA,KAAK,GAAG,IAAAC,cAAU,EAAC,+BAA+B,CAAC;AACzD,MAAMC,gBAAgB,GAAG,kBAAkB;AAIpC,SAASC,OAAO,CAAIC,MAAqB,EAAW;EACzD;EACA,OAAOC,eAAC,CAACC,UAAU,CAACF,MAAM,CAAC,IAAIC,eAAC,CAACC,UAAU,CAACF,MAAM,CAACG,OAAO,CAAC;AAC7D;AAEO,SAASC,KAAK,CAAIJ,MAAqB,EAAW;EACvD,OAAOK,MAAM,CAACC,IAAI,CAACN,MAAM,CAAC,CAACO,QAAQ,CAAC,SAAS,CAAC;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,OAAO,CAAIC,IAAY,EAAEC,OAAY,EAAwB;EAC3E,IAAI;IACFd,KAAK,CAAC,mBAAmB,EAAEa,IAAI,CAAC;IAChC,OAAOE,OAAO,CAACF,IAAI,CAAC;EACtB,CAAC,CAAC,OAAOG,GAAQ,EAAE;IACjB,IAAIA,GAAG,CAACC,IAAI,KAAKf,gBAAgB,EAAE;MACjCF,KAAK,CAAC,qBAAqB,EAAEa,IAAI,CAAC;MAClC,OAAO,IAAI;IACb;IACAC,OAAO,CAAC;MAAEE,GAAG,EAAEA,GAAG,CAACE;IAAI,CAAC,EAAE,6BAA6B,CAAC;IACxD,MAAMF,GAAG;EACX;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdaccio/loaders",
3
- "version": "6.0.0-6-next.26",
3
+ "version": "6.0.0-6-next.28",
4
4
  "description": "loaders logic",
5
5
  "main": "./build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -13,16 +13,16 @@
13
13
  "url": "https://github.com/verdaccio/verdaccio"
14
14
  },
15
15
  "dependencies": {
16
- "@verdaccio/logger": "6.0.0-6-next.25",
16
+ "@verdaccio/logger": "6.0.0-6-next.27",
17
17
  "debug": "4.3.4",
18
18
  "lodash": "4.17.21"
19
19
  },
20
20
  "devDependencies": {
21
- "@verdaccio/core": "6.0.0-6-next.57",
22
- "@verdaccio/config": "6.0.0-6-next.57",
21
+ "@verdaccio/core": "6.0.0-6-next.59",
22
+ "@verdaccio/config": "6.0.0-6-next.59",
23
23
  "@verdaccio/types": "11.0.0-6-next.19",
24
24
  "@verdaccio-scope/verdaccio-auth-foo": "0.0.2",
25
- "verdaccio-auth-memory": "11.0.0-6-next.22",
25
+ "verdaccio-auth-memory": "11.0.0-6-next.24",
26
26
  "customprefix-auth": "1.0.0-6-next.0"
27
27
  },
28
28
  "homepage": "https://verdaccio.org",
@@ -80,7 +80,9 @@ export async function asyncLoadPlugin<T extends pluginUtils.Plugin<T>>(
80
80
  await isDirectory(pluginsPath);
81
81
  const pluginDir = pluginsPath;
82
82
  const externalFilePlugin = resolve(pluginDir, `${prefix}-${pluginId}`);
83
- let plugin = tryLoad<T>(externalFilePlugin);
83
+ let plugin = tryLoad<T>(externalFilePlugin, (a: any, b: any) => {
84
+ logger.error(a, b);
85
+ });
84
86
  if (plugin && isValid(plugin)) {
85
87
  plugin = executePlugin(plugin, pluginConfigs[pluginId], params);
86
88
  if (!sanityCheck(plugin)) {
@@ -106,7 +108,9 @@ export async function asyncLoadPlugin<T extends pluginUtils.Plugin<T>>(
106
108
  debug('is scoped plugin %s', isScoped);
107
109
  const pluginName = isScoped ? pluginId : `${prefix}-${pluginId}`;
108
110
  debug('plugin pkg name %s', pluginName);
109
- let plugin = tryLoad<T>(pluginName);
111
+ let plugin = tryLoad<T>(pluginName, (a: any, b: any) => {
112
+ logger.error(a, b);
113
+ });
110
114
  if (plugin && isValid(plugin)) {
111
115
  plugin = executePlugin(plugin, pluginConfigs[pluginId], params);
112
116
  if (!sanityCheck(plugin)) {
package/src/utils.ts CHANGED
@@ -2,7 +2,6 @@ import buildDebug from 'debug';
2
2
  import _ from 'lodash';
3
3
 
4
4
  import { pluginUtils } from '@verdaccio/core';
5
- import { logger } from '@verdaccio/logger';
6
5
 
7
6
  const debug = buildDebug('verdaccio:plugin:loader:utils');
8
7
  const MODULE_NOT_FOUND = 'MODULE_NOT_FOUND';
@@ -23,7 +22,7 @@ export function isES6<T>(plugin: PluginType<T>): boolean {
23
22
  * @param {*} path the module's path
24
23
  * @return {Object}
25
24
  */
26
- export function tryLoad<T>(path: string): PluginType<T> | null {
25
+ export function tryLoad<T>(path: string, onError: any): PluginType<T> | null {
27
26
  try {
28
27
  debug('loading plugin %s', path);
29
28
  return require(path) as PluginType<T>;
@@ -32,7 +31,7 @@ export function tryLoad<T>(path: string): PluginType<T> | null {
32
31
  debug('plugin %s not found', path);
33
32
  return null;
34
33
  }
35
- logger.error({ err: err.msg }, 'error loading plugin @{err}');
34
+ onError({ err: err.msg }, 'error loading plugin @{err}');
36
35
  throw err;
37
36
  }
38
37
  }
package/tsconfig.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "path": "../core/core"
16
16
  },
17
17
  {
18
- "path": "../logger"
18
+ "path": "../logger/logger"
19
19
  }
20
20
  ]
21
21
  }