@kubb/core 5.0.0-alpha.7 → 5.0.0-alpha.70
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 +3 -2
- package/dist/PluginDriver-BXibeQk-.cjs +1036 -0
- package/dist/PluginDriver-BXibeQk-.cjs.map +1 -0
- package/dist/PluginDriver-DV3p2Hky.js +945 -0
- package/dist/PluginDriver-DV3p2Hky.js.map +1 -0
- package/dist/index.cjs +730 -1773
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +289 -240
- package/dist/index.js +717 -1741
- package/dist/index.js.map +1 -1
- package/dist/mocks.cjs +139 -0
- package/dist/mocks.cjs.map +1 -0
- package/dist/mocks.d.ts +74 -0
- package/dist/mocks.js +134 -0
- package/dist/mocks.js.map +1 -0
- package/dist/types-DWtkW2RX.d.ts +1915 -0
- package/package.json +51 -57
- package/src/FileManager.ts +115 -0
- package/src/FileProcessor.ts +86 -0
- package/src/Kubb.ts +205 -130
- package/src/PluginDriver.ts +326 -565
- package/src/constants.ts +20 -47
- package/src/createAdapter.ts +25 -0
- package/src/createKubb.ts +546 -0
- package/src/createRenderer.ts +57 -0
- package/src/createStorage.ts +58 -0
- package/src/defineGenerator.ts +88 -100
- package/src/defineLogger.ts +13 -3
- package/src/defineMiddleware.ts +64 -0
- package/src/defineParser.ts +45 -0
- package/src/definePlugin.ts +78 -7
- package/src/defineResolver.ts +521 -0
- package/src/devtools.ts +14 -14
- package/src/index.ts +13 -16
- package/src/mocks.ts +172 -0
- package/src/renderNode.ts +35 -0
- package/src/storages/fsStorage.ts +43 -13
- package/src/storages/memoryStorage.ts +6 -4
- package/src/types.ts +752 -226
- package/src/utils/diagnostics.ts +4 -1
- package/src/utils/isInputPath.ts +10 -0
- package/src/utils/packageJSON.ts +99 -0
- package/dist/PluginDriver-Dma9KhLK.d.ts +0 -1056
- package/dist/chunk-ByKO4r7w.cjs +0 -38
- package/dist/hooks.cjs +0 -102
- package/dist/hooks.cjs.map +0 -1
- package/dist/hooks.d.ts +0 -75
- package/dist/hooks.js +0 -97
- package/dist/hooks.js.map +0 -1
- package/src/PackageManager.ts +0 -180
- package/src/build.ts +0 -419
- package/src/config.ts +0 -56
- package/src/defineAdapter.ts +0 -22
- package/src/defineStorage.ts +0 -56
- package/src/errors.ts +0 -1
- package/src/hooks/index.ts +0 -4
- package/src/hooks/useKubb.ts +0 -138
- package/src/hooks/useMode.ts +0 -11
- package/src/hooks/usePlugin.ts +0 -11
- package/src/hooks/usePluginDriver.ts +0 -11
- package/src/utils/FunctionParams.ts +0 -155
- package/src/utils/TreeNode.ts +0 -215
- package/src/utils/executeStrategies.ts +0 -81
- package/src/utils/formatters.ts +0 -56
- package/src/utils/getBarrelFiles.ts +0 -141
- package/src/utils/getConfigs.ts +0 -30
- package/src/utils/getPlugins.ts +0 -23
- package/src/utils/linters.ts +0 -25
- package/src/utils/resolveOptions.ts +0 -93
package/dist/chunk-ByKO4r7w.cjs
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
//#region \0rolldown/runtime.js
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __name = (target, value) => __defProp(target, "name", {
|
|
5
|
-
value,
|
|
6
|
-
configurable: true
|
|
7
|
-
});
|
|
8
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
9
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
10
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
11
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
14
|
-
key = keys[i];
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
16
|
-
get: ((k) => from[k]).bind(null, key),
|
|
17
|
-
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
return to;
|
|
21
|
-
};
|
|
22
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
23
|
-
value: mod,
|
|
24
|
-
enumerable: true
|
|
25
|
-
}) : target, mod));
|
|
26
|
-
//#endregion
|
|
27
|
-
Object.defineProperty(exports, "__name", {
|
|
28
|
-
enumerable: true,
|
|
29
|
-
get: function() {
|
|
30
|
-
return __name;
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
Object.defineProperty(exports, "__toESM", {
|
|
34
|
-
enumerable: true,
|
|
35
|
-
get: function() {
|
|
36
|
-
return __toESM;
|
|
37
|
-
}
|
|
38
|
-
});
|
package/dist/hooks.cjs
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_chunk = require("./chunk-ByKO4r7w.cjs");
|
|
3
|
-
let node_path = require("node:path");
|
|
4
|
-
node_path = require_chunk.__toESM(node_path);
|
|
5
|
-
let _kubb_react_fabric = require("@kubb/react-fabric");
|
|
6
|
-
//#region src/hooks/useKubb.ts
|
|
7
|
-
/**
|
|
8
|
-
* Generates the default "Generated by Kubb" banner from node metadata.
|
|
9
|
-
*/
|
|
10
|
-
function buildDefaultBanner({ title, description, version, config }) {
|
|
11
|
-
try {
|
|
12
|
-
let source = "";
|
|
13
|
-
if (Array.isArray(config.input)) {
|
|
14
|
-
const first = config.input[0];
|
|
15
|
-
if (first && "path" in first) source = node_path.default.basename(first.path);
|
|
16
|
-
} else if ("path" in config.input) source = node_path.default.basename(config.input.path);
|
|
17
|
-
else if ("data" in config.input) source = "text content";
|
|
18
|
-
let banner = "/**\n* Generated by Kubb (https://kubb.dev/).\n* Do not edit manually.\n";
|
|
19
|
-
if (config.output.defaultBanner === "simple") {
|
|
20
|
-
banner += "*/\n";
|
|
21
|
-
return banner;
|
|
22
|
-
}
|
|
23
|
-
if (source) banner += `* Source: ${source}\n`;
|
|
24
|
-
if (title) banner += `* Title: ${title}\n`;
|
|
25
|
-
if (description) {
|
|
26
|
-
const formattedDescription = description.replace(/\n/gm, "\n* ");
|
|
27
|
-
banner += `* Description: ${formattedDescription}\n`;
|
|
28
|
-
}
|
|
29
|
-
if (version) banner += `* OpenAPI spec version: ${version}\n`;
|
|
30
|
-
banner += "*/\n";
|
|
31
|
-
return banner;
|
|
32
|
-
} catch (_error) {
|
|
33
|
-
return "/**\n* Generated by Kubb (https://kubb.dev/).\n* Do not edit manually.\n*/";
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
function useKubb() {
|
|
37
|
-
const { meta } = (0, _kubb_react_fabric.useFabric)();
|
|
38
|
-
const config = meta.driver.config;
|
|
39
|
-
const defaultPluginName = meta.plugin.name;
|
|
40
|
-
const output = meta.plugin.options?.output;
|
|
41
|
-
return {
|
|
42
|
-
plugin: meta.plugin,
|
|
43
|
-
mode: meta.mode,
|
|
44
|
-
config,
|
|
45
|
-
getPluginByName: (pluginName = defaultPluginName) => meta.driver.getPluginByName.call(meta.driver, pluginName),
|
|
46
|
-
getFile: ({ pluginName = defaultPluginName, ...rest }) => meta.driver.getFile.call(meta.driver, {
|
|
47
|
-
pluginName,
|
|
48
|
-
...rest
|
|
49
|
-
}),
|
|
50
|
-
resolveName: ({ pluginName = defaultPluginName, ...rest }) => meta.driver.resolveName.call(meta.driver, {
|
|
51
|
-
pluginName,
|
|
52
|
-
...rest
|
|
53
|
-
}),
|
|
54
|
-
resolvePath: ({ pluginName = defaultPluginName, ...rest }) => meta.driver.resolvePath.call(meta.driver, {
|
|
55
|
-
pluginName,
|
|
56
|
-
...rest
|
|
57
|
-
}),
|
|
58
|
-
resolveBanner: (node) => {
|
|
59
|
-
if (typeof output?.banner === "function") return output.banner(node);
|
|
60
|
-
if (typeof output?.banner === "string") return output.banner;
|
|
61
|
-
return buildDefaultBanner({ config });
|
|
62
|
-
},
|
|
63
|
-
resolveFooter: (node) => {
|
|
64
|
-
if (typeof output?.footer === "function") return output.footer(node);
|
|
65
|
-
if (typeof output?.footer === "string") return output.footer;
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
//#endregion
|
|
70
|
-
//#region src/hooks/useMode.ts
|
|
71
|
-
/**
|
|
72
|
-
* @deprecated use `useKubb` instead
|
|
73
|
-
*/
|
|
74
|
-
function useMode() {
|
|
75
|
-
const { meta } = (0, _kubb_react_fabric.useFabric)();
|
|
76
|
-
return meta.mode;
|
|
77
|
-
}
|
|
78
|
-
//#endregion
|
|
79
|
-
//#region src/hooks/usePlugin.ts
|
|
80
|
-
/**
|
|
81
|
-
* @deprecated use useKubb instead
|
|
82
|
-
*/
|
|
83
|
-
function usePlugin() {
|
|
84
|
-
const { meta } = (0, _kubb_react_fabric.useFabric)();
|
|
85
|
-
return meta.plugin;
|
|
86
|
-
}
|
|
87
|
-
//#endregion
|
|
88
|
-
//#region src/hooks/usePluginDriver.ts
|
|
89
|
-
/**
|
|
90
|
-
* @deprecated use `useKubb` instead
|
|
91
|
-
*/
|
|
92
|
-
function usePluginDriver() {
|
|
93
|
-
const { meta } = (0, _kubb_react_fabric.useFabric)();
|
|
94
|
-
return meta.driver;
|
|
95
|
-
}
|
|
96
|
-
//#endregion
|
|
97
|
-
exports.useKubb = useKubb;
|
|
98
|
-
exports.useMode = useMode;
|
|
99
|
-
exports.usePlugin = usePlugin;
|
|
100
|
-
exports.usePluginDriver = usePluginDriver;
|
|
101
|
-
|
|
102
|
-
//# sourceMappingURL=hooks.cjs.map
|
package/dist/hooks.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.cjs","names":["path"],"sources":["../src/hooks/useKubb.ts","../src/hooks/useMode.ts","../src/hooks/usePlugin.ts","../src/hooks/usePluginDriver.ts"],"sourcesContent":["import path from 'node:path'\nimport type { RootNode } from '@kubb/ast/types'\nimport type { KubbFile } from '@kubb/fabric-core/types'\nimport { useFabric } from '@kubb/react-fabric'\nimport type { GetFileOptions, PluginDriver } from '../PluginDriver.ts'\nimport type { Config, Plugin, PluginFactoryOptions, ResolveNameParams, ResolvePathParams } from '../types.ts'\n\ntype ResolvePathOptions = {\n pluginName?: string\n group?: {\n tag?: string\n path?: string\n }\n type?: ResolveNameParams['type']\n}\n\ntype UseKubbReturn<TOptions extends PluginFactoryOptions = PluginFactoryOptions> = {\n plugin: Plugin<TOptions>\n mode: KubbFile.Mode\n config: Config\n /**\n * Returns the plugin whose `name` matches `pluginName`, defaulting to the current plugin.\n */\n getPluginByName: (pluginName?: string) => Plugin | undefined\n /**\n * Resolves a file reference, defaulting `pluginName` to the current plugin.\n */\n getFile: (params: Omit<GetFileOptions<ResolvePathOptions>, 'pluginName'> & { pluginName?: string }) => KubbFile.File<{ pluginName: string }>\n /**\n * Resolves a name, defaulting `pluginName` to the current plugin.\n */\n resolveName: (params: Omit<ResolveNameParams, 'pluginName'> & { pluginName?: string }) => string\n /**\n * Resolves a path, defaulting `pluginName` to the current plugin.\n */\n resolvePath: <TPathOptions = object>(params: Omit<ResolvePathParams<TPathOptions>, 'pluginName'> & { pluginName?: string }) => KubbFile.Path\n /**\n * Resolves the banner for the given node using the plugin's `output.banner` option.\n * Returns a string when `output.banner` is a string or a function, `undefined` otherwise.\n */\n resolveBanner: (node: RootNode) => string | undefined\n /**\n * Resolves the footer for the given node using the plugin's `output.footer` option.\n * Returns a string when `output.footer` is a string or a function, `undefined` otherwise.\n */\n resolveFooter: (node: RootNode) => string | undefined\n}\n\n/**\n * Generates the default \"Generated by Kubb\" banner from node metadata.\n */\nfunction buildDefaultBanner({ title, description, version, config }: { title?: string; description?: string; version?: string; config: Config }): string {\n try {\n let source = ''\n if (Array.isArray(config.input)) {\n const first = config.input[0]\n if (first && 'path' in first) {\n source = path.basename(first.path)\n }\n } else if ('path' in config.input) {\n source = path.basename(config.input.path)\n } else if ('data' in config.input) {\n source = 'text content'\n }\n\n let banner = '/**\\n* Generated by Kubb (https://kubb.dev/).\\n* Do not edit manually.\\n'\n\n if (config.output.defaultBanner === 'simple') {\n banner += '*/\\n'\n return banner\n }\n\n if (source) {\n banner += `* Source: ${source}\\n`\n }\n\n if (title) {\n banner += `* Title: ${title}\\n`\n }\n\n if (description) {\n const formattedDescription = description.replace(/\\n/gm, '\\n* ')\n banner += `* Description: ${formattedDescription}\\n`\n }\n\n if (version) {\n banner += `* OpenAPI spec version: ${version}\\n`\n }\n\n banner += '*/\\n'\n return banner\n } catch (_error) {\n return '/**\\n* Generated by Kubb (https://kubb.dev/).\\n* Do not edit manually.\\n*/'\n }\n}\n\nexport function useKubb<TOptions extends PluginFactoryOptions = PluginFactoryOptions>(): UseKubbReturn<TOptions> {\n const { meta } = useFabric<{\n plugin: Plugin<TOptions>\n mode: KubbFile.Mode\n driver: PluginDriver\n }>()\n\n const config = meta.driver.config\n const defaultPluginName = meta.plugin.name\n\n const output = (\n meta.plugin.options as { output?: { banner?: string | ((node: RootNode) => string); footer?: string | ((node: RootNode) => string) } } | undefined\n )?.output\n\n return {\n plugin: meta.plugin as Plugin<TOptions>,\n mode: meta.mode,\n config,\n getPluginByName: (pluginName = defaultPluginName) => meta.driver.getPluginByName.call(meta.driver, pluginName),\n getFile: ({ pluginName = defaultPluginName, ...rest }) => meta.driver.getFile.call(meta.driver, { pluginName, ...rest }),\n resolveName: ({ pluginName = defaultPluginName, ...rest }) => meta.driver.resolveName.call(meta.driver, { pluginName, ...rest }),\n resolvePath: ({ pluginName = defaultPluginName, ...rest }) => meta.driver.resolvePath.call(meta.driver, { pluginName, ...rest }),\n resolveBanner: (node: RootNode) => {\n if (typeof output?.banner === 'function') {\n return output.banner(node)\n }\n if (typeof output?.banner === 'string') {\n return output.banner\n }\n return buildDefaultBanner({ config })\n },\n resolveFooter: (node: RootNode) => {\n if (typeof output?.footer === 'function') {\n return output.footer(node)\n }\n if (typeof output?.footer === 'string') {\n return output.footer\n }\n return undefined\n },\n }\n}\n","import type { KubbFile } from '@kubb/fabric-core/types'\nimport { useFabric } from '@kubb/react-fabric'\n\n/**\n * @deprecated use `useKubb` instead\n */\nexport function useMode(): KubbFile.Mode {\n const { meta } = useFabric<{ mode: KubbFile.Mode }>()\n\n return meta.mode\n}\n","import { useFabric } from '@kubb/react-fabric'\nimport type { Plugin, PluginFactoryOptions } from '../types.ts'\n\n/**\n * @deprecated use useKubb instead\n */\nexport function usePlugin<TOptions extends PluginFactoryOptions = PluginFactoryOptions>(): Plugin<TOptions> {\n const { meta } = useFabric<{ plugin: Plugin<TOptions> }>()\n\n return meta.plugin\n}\n","import { useFabric } from '@kubb/react-fabric'\nimport type { PluginDriver } from '../PluginDriver.ts'\n\n/**\n * @deprecated use `useKubb` instead\n */\nexport function usePluginDriver(): PluginDriver {\n const { meta } = useFabric<{ driver: PluginDriver }>()\n\n return meta.driver\n}\n"],"mappings":";;;;;;;;;AAmDA,SAAS,mBAAmB,EAAE,OAAO,aAAa,SAAS,UAA8F;AACvJ,KAAI;EACF,IAAI,SAAS;AACb,MAAI,MAAM,QAAQ,OAAO,MAAM,EAAE;GAC/B,MAAM,QAAQ,OAAO,MAAM;AAC3B,OAAI,SAAS,UAAU,MACrB,UAASA,UAAAA,QAAK,SAAS,MAAM,KAAK;aAE3B,UAAU,OAAO,MAC1B,UAASA,UAAAA,QAAK,SAAS,OAAO,MAAM,KAAK;WAChC,UAAU,OAAO,MAC1B,UAAS;EAGX,IAAI,SAAS;AAEb,MAAI,OAAO,OAAO,kBAAkB,UAAU;AAC5C,aAAU;AACV,UAAO;;AAGT,MAAI,OACF,WAAU,aAAa,OAAO;AAGhC,MAAI,MACF,WAAU,YAAY,MAAM;AAG9B,MAAI,aAAa;GACf,MAAM,uBAAuB,YAAY,QAAQ,QAAQ,OAAO;AAChE,aAAU,kBAAkB,qBAAqB;;AAGnD,MAAI,QACF,WAAU,2BAA2B,QAAQ;AAG/C,YAAU;AACV,SAAO;UACA,QAAQ;AACf,SAAO;;;AAIX,SAAgB,UAAiG;CAC/G,MAAM,EAAE,UAAA,GAAA,mBAAA,YAIJ;CAEJ,MAAM,SAAS,KAAK,OAAO;CAC3B,MAAM,oBAAoB,KAAK,OAAO;CAEtC,MAAM,SACJ,KAAK,OAAO,SACX;AAEH,QAAO;EACL,QAAQ,KAAK;EACb,MAAM,KAAK;EACX;EACA,kBAAkB,aAAa,sBAAsB,KAAK,OAAO,gBAAgB,KAAK,KAAK,QAAQ,WAAW;EAC9G,UAAU,EAAE,aAAa,mBAAmB,GAAG,WAAW,KAAK,OAAO,QAAQ,KAAK,KAAK,QAAQ;GAAE;GAAY,GAAG;GAAM,CAAC;EACxH,cAAc,EAAE,aAAa,mBAAmB,GAAG,WAAW,KAAK,OAAO,YAAY,KAAK,KAAK,QAAQ;GAAE;GAAY,GAAG;GAAM,CAAC;EAChI,cAAc,EAAE,aAAa,mBAAmB,GAAG,WAAW,KAAK,OAAO,YAAY,KAAK,KAAK,QAAQ;GAAE;GAAY,GAAG;GAAM,CAAC;EAChI,gBAAgB,SAAmB;AACjC,OAAI,OAAO,QAAQ,WAAW,WAC5B,QAAO,OAAO,OAAO,KAAK;AAE5B,OAAI,OAAO,QAAQ,WAAW,SAC5B,QAAO,OAAO;AAEhB,UAAO,mBAAmB,EAAE,QAAQ,CAAC;;EAEvC,gBAAgB,SAAmB;AACjC,OAAI,OAAO,QAAQ,WAAW,WAC5B,QAAO,OAAO,OAAO,KAAK;AAE5B,OAAI,OAAO,QAAQ,WAAW,SAC5B,QAAO,OAAO;;EAInB;;;;;;;AClIH,SAAgB,UAAyB;CACvC,MAAM,EAAE,UAAA,GAAA,mBAAA,YAA6C;AAErD,QAAO,KAAK;;;;;;;ACHd,SAAgB,YAA4F;CAC1G,MAAM,EAAE,UAAA,GAAA,mBAAA,YAAkD;AAE1D,QAAO,KAAK;;;;;;;ACHd,SAAgB,kBAAgC;CAC9C,MAAM,EAAE,UAAA,GAAA,mBAAA,YAA8C;AAEtD,QAAO,KAAK"}
|
package/dist/hooks.d.ts
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { t as __name } from "./chunk--u3MIqq1.js";
|
|
2
|
-
import { D as ResolveNameParams, O as ResolvePathParams, b as PluginFactoryOptions, c as Config, n as PluginDriver, t as GetFileOptions, v as Plugin } from "./PluginDriver-Dma9KhLK.js";
|
|
3
|
-
import { RootNode } from "@kubb/ast/types";
|
|
4
|
-
import { KubbFile } from "@kubb/fabric-core/types";
|
|
5
|
-
|
|
6
|
-
//#region src/hooks/useKubb.d.ts
|
|
7
|
-
type ResolvePathOptions = {
|
|
8
|
-
pluginName?: string;
|
|
9
|
-
group?: {
|
|
10
|
-
tag?: string;
|
|
11
|
-
path?: string;
|
|
12
|
-
};
|
|
13
|
-
type?: ResolveNameParams['type'];
|
|
14
|
-
};
|
|
15
|
-
type UseKubbReturn<TOptions extends PluginFactoryOptions = PluginFactoryOptions> = {
|
|
16
|
-
plugin: Plugin<TOptions>;
|
|
17
|
-
mode: KubbFile.Mode;
|
|
18
|
-
config: Config;
|
|
19
|
-
/**
|
|
20
|
-
* Returns the plugin whose `name` matches `pluginName`, defaulting to the current plugin.
|
|
21
|
-
*/
|
|
22
|
-
getPluginByName: (pluginName?: string) => Plugin | undefined;
|
|
23
|
-
/**
|
|
24
|
-
* Resolves a file reference, defaulting `pluginName` to the current plugin.
|
|
25
|
-
*/
|
|
26
|
-
getFile: (params: Omit<GetFileOptions<ResolvePathOptions>, 'pluginName'> & {
|
|
27
|
-
pluginName?: string;
|
|
28
|
-
}) => KubbFile.File<{
|
|
29
|
-
pluginName: string;
|
|
30
|
-
}>;
|
|
31
|
-
/**
|
|
32
|
-
* Resolves a name, defaulting `pluginName` to the current plugin.
|
|
33
|
-
*/
|
|
34
|
-
resolveName: (params: Omit<ResolveNameParams, 'pluginName'> & {
|
|
35
|
-
pluginName?: string;
|
|
36
|
-
}) => string;
|
|
37
|
-
/**
|
|
38
|
-
* Resolves a path, defaulting `pluginName` to the current plugin.
|
|
39
|
-
*/
|
|
40
|
-
resolvePath: <TPathOptions = object>(params: Omit<ResolvePathParams<TPathOptions>, 'pluginName'> & {
|
|
41
|
-
pluginName?: string;
|
|
42
|
-
}) => KubbFile.Path;
|
|
43
|
-
/**
|
|
44
|
-
* Resolves the banner for the given node using the plugin's `output.banner` option.
|
|
45
|
-
* Returns a string when `output.banner` is a string or a function, `undefined` otherwise.
|
|
46
|
-
*/
|
|
47
|
-
resolveBanner: (node: RootNode) => string | undefined;
|
|
48
|
-
/**
|
|
49
|
-
* Resolves the footer for the given node using the plugin's `output.footer` option.
|
|
50
|
-
* Returns a string when `output.footer` is a string or a function, `undefined` otherwise.
|
|
51
|
-
*/
|
|
52
|
-
resolveFooter: (node: RootNode) => string | undefined;
|
|
53
|
-
};
|
|
54
|
-
declare function useKubb<TOptions extends PluginFactoryOptions = PluginFactoryOptions>(): UseKubbReturn<TOptions>;
|
|
55
|
-
//#endregion
|
|
56
|
-
//#region src/hooks/useMode.d.ts
|
|
57
|
-
/**
|
|
58
|
-
* @deprecated use `useKubb` instead
|
|
59
|
-
*/
|
|
60
|
-
declare function useMode(): KubbFile.Mode;
|
|
61
|
-
//#endregion
|
|
62
|
-
//#region src/hooks/usePlugin.d.ts
|
|
63
|
-
/**
|
|
64
|
-
* @deprecated use useKubb instead
|
|
65
|
-
*/
|
|
66
|
-
declare function usePlugin<TOptions extends PluginFactoryOptions = PluginFactoryOptions>(): Plugin<TOptions>;
|
|
67
|
-
//#endregion
|
|
68
|
-
//#region src/hooks/usePluginDriver.d.ts
|
|
69
|
-
/**
|
|
70
|
-
* @deprecated use `useKubb` instead
|
|
71
|
-
*/
|
|
72
|
-
declare function usePluginDriver(): PluginDriver;
|
|
73
|
-
//#endregion
|
|
74
|
-
export { useKubb, useMode, usePlugin, usePluginDriver };
|
|
75
|
-
//# sourceMappingURL=hooks.d.ts.map
|
package/dist/hooks.js
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import "./chunk--u3MIqq1.js";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { useFabric } from "@kubb/react-fabric";
|
|
4
|
-
//#region src/hooks/useKubb.ts
|
|
5
|
-
/**
|
|
6
|
-
* Generates the default "Generated by Kubb" banner from node metadata.
|
|
7
|
-
*/
|
|
8
|
-
function buildDefaultBanner({ title, description, version, config }) {
|
|
9
|
-
try {
|
|
10
|
-
let source = "";
|
|
11
|
-
if (Array.isArray(config.input)) {
|
|
12
|
-
const first = config.input[0];
|
|
13
|
-
if (first && "path" in first) source = path.basename(first.path);
|
|
14
|
-
} else if ("path" in config.input) source = path.basename(config.input.path);
|
|
15
|
-
else if ("data" in config.input) source = "text content";
|
|
16
|
-
let banner = "/**\n* Generated by Kubb (https://kubb.dev/).\n* Do not edit manually.\n";
|
|
17
|
-
if (config.output.defaultBanner === "simple") {
|
|
18
|
-
banner += "*/\n";
|
|
19
|
-
return banner;
|
|
20
|
-
}
|
|
21
|
-
if (source) banner += `* Source: ${source}\n`;
|
|
22
|
-
if (title) banner += `* Title: ${title}\n`;
|
|
23
|
-
if (description) {
|
|
24
|
-
const formattedDescription = description.replace(/\n/gm, "\n* ");
|
|
25
|
-
banner += `* Description: ${formattedDescription}\n`;
|
|
26
|
-
}
|
|
27
|
-
if (version) banner += `* OpenAPI spec version: ${version}\n`;
|
|
28
|
-
banner += "*/\n";
|
|
29
|
-
return banner;
|
|
30
|
-
} catch (_error) {
|
|
31
|
-
return "/**\n* Generated by Kubb (https://kubb.dev/).\n* Do not edit manually.\n*/";
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
function useKubb() {
|
|
35
|
-
const { meta } = useFabric();
|
|
36
|
-
const config = meta.driver.config;
|
|
37
|
-
const defaultPluginName = meta.plugin.name;
|
|
38
|
-
const output = meta.plugin.options?.output;
|
|
39
|
-
return {
|
|
40
|
-
plugin: meta.plugin,
|
|
41
|
-
mode: meta.mode,
|
|
42
|
-
config,
|
|
43
|
-
getPluginByName: (pluginName = defaultPluginName) => meta.driver.getPluginByName.call(meta.driver, pluginName),
|
|
44
|
-
getFile: ({ pluginName = defaultPluginName, ...rest }) => meta.driver.getFile.call(meta.driver, {
|
|
45
|
-
pluginName,
|
|
46
|
-
...rest
|
|
47
|
-
}),
|
|
48
|
-
resolveName: ({ pluginName = defaultPluginName, ...rest }) => meta.driver.resolveName.call(meta.driver, {
|
|
49
|
-
pluginName,
|
|
50
|
-
...rest
|
|
51
|
-
}),
|
|
52
|
-
resolvePath: ({ pluginName = defaultPluginName, ...rest }) => meta.driver.resolvePath.call(meta.driver, {
|
|
53
|
-
pluginName,
|
|
54
|
-
...rest
|
|
55
|
-
}),
|
|
56
|
-
resolveBanner: (node) => {
|
|
57
|
-
if (typeof output?.banner === "function") return output.banner(node);
|
|
58
|
-
if (typeof output?.banner === "string") return output.banner;
|
|
59
|
-
return buildDefaultBanner({ config });
|
|
60
|
-
},
|
|
61
|
-
resolveFooter: (node) => {
|
|
62
|
-
if (typeof output?.footer === "function") return output.footer(node);
|
|
63
|
-
if (typeof output?.footer === "string") return output.footer;
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
//#endregion
|
|
68
|
-
//#region src/hooks/useMode.ts
|
|
69
|
-
/**
|
|
70
|
-
* @deprecated use `useKubb` instead
|
|
71
|
-
*/
|
|
72
|
-
function useMode() {
|
|
73
|
-
const { meta } = useFabric();
|
|
74
|
-
return meta.mode;
|
|
75
|
-
}
|
|
76
|
-
//#endregion
|
|
77
|
-
//#region src/hooks/usePlugin.ts
|
|
78
|
-
/**
|
|
79
|
-
* @deprecated use useKubb instead
|
|
80
|
-
*/
|
|
81
|
-
function usePlugin() {
|
|
82
|
-
const { meta } = useFabric();
|
|
83
|
-
return meta.plugin;
|
|
84
|
-
}
|
|
85
|
-
//#endregion
|
|
86
|
-
//#region src/hooks/usePluginDriver.ts
|
|
87
|
-
/**
|
|
88
|
-
* @deprecated use `useKubb` instead
|
|
89
|
-
*/
|
|
90
|
-
function usePluginDriver() {
|
|
91
|
-
const { meta } = useFabric();
|
|
92
|
-
return meta.driver;
|
|
93
|
-
}
|
|
94
|
-
//#endregion
|
|
95
|
-
export { useKubb, useMode, usePlugin, usePluginDriver };
|
|
96
|
-
|
|
97
|
-
//# sourceMappingURL=hooks.js.map
|
package/dist/hooks.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","names":[],"sources":["../src/hooks/useKubb.ts","../src/hooks/useMode.ts","../src/hooks/usePlugin.ts","../src/hooks/usePluginDriver.ts"],"sourcesContent":["import path from 'node:path'\nimport type { RootNode } from '@kubb/ast/types'\nimport type { KubbFile } from '@kubb/fabric-core/types'\nimport { useFabric } from '@kubb/react-fabric'\nimport type { GetFileOptions, PluginDriver } from '../PluginDriver.ts'\nimport type { Config, Plugin, PluginFactoryOptions, ResolveNameParams, ResolvePathParams } from '../types.ts'\n\ntype ResolvePathOptions = {\n pluginName?: string\n group?: {\n tag?: string\n path?: string\n }\n type?: ResolveNameParams['type']\n}\n\ntype UseKubbReturn<TOptions extends PluginFactoryOptions = PluginFactoryOptions> = {\n plugin: Plugin<TOptions>\n mode: KubbFile.Mode\n config: Config\n /**\n * Returns the plugin whose `name` matches `pluginName`, defaulting to the current plugin.\n */\n getPluginByName: (pluginName?: string) => Plugin | undefined\n /**\n * Resolves a file reference, defaulting `pluginName` to the current plugin.\n */\n getFile: (params: Omit<GetFileOptions<ResolvePathOptions>, 'pluginName'> & { pluginName?: string }) => KubbFile.File<{ pluginName: string }>\n /**\n * Resolves a name, defaulting `pluginName` to the current plugin.\n */\n resolveName: (params: Omit<ResolveNameParams, 'pluginName'> & { pluginName?: string }) => string\n /**\n * Resolves a path, defaulting `pluginName` to the current plugin.\n */\n resolvePath: <TPathOptions = object>(params: Omit<ResolvePathParams<TPathOptions>, 'pluginName'> & { pluginName?: string }) => KubbFile.Path\n /**\n * Resolves the banner for the given node using the plugin's `output.banner` option.\n * Returns a string when `output.banner` is a string or a function, `undefined` otherwise.\n */\n resolveBanner: (node: RootNode) => string | undefined\n /**\n * Resolves the footer for the given node using the plugin's `output.footer` option.\n * Returns a string when `output.footer` is a string or a function, `undefined` otherwise.\n */\n resolveFooter: (node: RootNode) => string | undefined\n}\n\n/**\n * Generates the default \"Generated by Kubb\" banner from node metadata.\n */\nfunction buildDefaultBanner({ title, description, version, config }: { title?: string; description?: string; version?: string; config: Config }): string {\n try {\n let source = ''\n if (Array.isArray(config.input)) {\n const first = config.input[0]\n if (first && 'path' in first) {\n source = path.basename(first.path)\n }\n } else if ('path' in config.input) {\n source = path.basename(config.input.path)\n } else if ('data' in config.input) {\n source = 'text content'\n }\n\n let banner = '/**\\n* Generated by Kubb (https://kubb.dev/).\\n* Do not edit manually.\\n'\n\n if (config.output.defaultBanner === 'simple') {\n banner += '*/\\n'\n return banner\n }\n\n if (source) {\n banner += `* Source: ${source}\\n`\n }\n\n if (title) {\n banner += `* Title: ${title}\\n`\n }\n\n if (description) {\n const formattedDescription = description.replace(/\\n/gm, '\\n* ')\n banner += `* Description: ${formattedDescription}\\n`\n }\n\n if (version) {\n banner += `* OpenAPI spec version: ${version}\\n`\n }\n\n banner += '*/\\n'\n return banner\n } catch (_error) {\n return '/**\\n* Generated by Kubb (https://kubb.dev/).\\n* Do not edit manually.\\n*/'\n }\n}\n\nexport function useKubb<TOptions extends PluginFactoryOptions = PluginFactoryOptions>(): UseKubbReturn<TOptions> {\n const { meta } = useFabric<{\n plugin: Plugin<TOptions>\n mode: KubbFile.Mode\n driver: PluginDriver\n }>()\n\n const config = meta.driver.config\n const defaultPluginName = meta.plugin.name\n\n const output = (\n meta.plugin.options as { output?: { banner?: string | ((node: RootNode) => string); footer?: string | ((node: RootNode) => string) } } | undefined\n )?.output\n\n return {\n plugin: meta.plugin as Plugin<TOptions>,\n mode: meta.mode,\n config,\n getPluginByName: (pluginName = defaultPluginName) => meta.driver.getPluginByName.call(meta.driver, pluginName),\n getFile: ({ pluginName = defaultPluginName, ...rest }) => meta.driver.getFile.call(meta.driver, { pluginName, ...rest }),\n resolveName: ({ pluginName = defaultPluginName, ...rest }) => meta.driver.resolveName.call(meta.driver, { pluginName, ...rest }),\n resolvePath: ({ pluginName = defaultPluginName, ...rest }) => meta.driver.resolvePath.call(meta.driver, { pluginName, ...rest }),\n resolveBanner: (node: RootNode) => {\n if (typeof output?.banner === 'function') {\n return output.banner(node)\n }\n if (typeof output?.banner === 'string') {\n return output.banner\n }\n return buildDefaultBanner({ config })\n },\n resolveFooter: (node: RootNode) => {\n if (typeof output?.footer === 'function') {\n return output.footer(node)\n }\n if (typeof output?.footer === 'string') {\n return output.footer\n }\n return undefined\n },\n }\n}\n","import type { KubbFile } from '@kubb/fabric-core/types'\nimport { useFabric } from '@kubb/react-fabric'\n\n/**\n * @deprecated use `useKubb` instead\n */\nexport function useMode(): KubbFile.Mode {\n const { meta } = useFabric<{ mode: KubbFile.Mode }>()\n\n return meta.mode\n}\n","import { useFabric } from '@kubb/react-fabric'\nimport type { Plugin, PluginFactoryOptions } from '../types.ts'\n\n/**\n * @deprecated use useKubb instead\n */\nexport function usePlugin<TOptions extends PluginFactoryOptions = PluginFactoryOptions>(): Plugin<TOptions> {\n const { meta } = useFabric<{ plugin: Plugin<TOptions> }>()\n\n return meta.plugin\n}\n","import { useFabric } from '@kubb/react-fabric'\nimport type { PluginDriver } from '../PluginDriver.ts'\n\n/**\n * @deprecated use `useKubb` instead\n */\nexport function usePluginDriver(): PluginDriver {\n const { meta } = useFabric<{ driver: PluginDriver }>()\n\n return meta.driver\n}\n"],"mappings":";;;;;;;AAmDA,SAAS,mBAAmB,EAAE,OAAO,aAAa,SAAS,UAA8F;AACvJ,KAAI;EACF,IAAI,SAAS;AACb,MAAI,MAAM,QAAQ,OAAO,MAAM,EAAE;GAC/B,MAAM,QAAQ,OAAO,MAAM;AAC3B,OAAI,SAAS,UAAU,MACrB,UAAS,KAAK,SAAS,MAAM,KAAK;aAE3B,UAAU,OAAO,MAC1B,UAAS,KAAK,SAAS,OAAO,MAAM,KAAK;WAChC,UAAU,OAAO,MAC1B,UAAS;EAGX,IAAI,SAAS;AAEb,MAAI,OAAO,OAAO,kBAAkB,UAAU;AAC5C,aAAU;AACV,UAAO;;AAGT,MAAI,OACF,WAAU,aAAa,OAAO;AAGhC,MAAI,MACF,WAAU,YAAY,MAAM;AAG9B,MAAI,aAAa;GACf,MAAM,uBAAuB,YAAY,QAAQ,QAAQ,OAAO;AAChE,aAAU,kBAAkB,qBAAqB;;AAGnD,MAAI,QACF,WAAU,2BAA2B,QAAQ;AAG/C,YAAU;AACV,SAAO;UACA,QAAQ;AACf,SAAO;;;AAIX,SAAgB,UAAiG;CAC/G,MAAM,EAAE,SAAS,WAIb;CAEJ,MAAM,SAAS,KAAK,OAAO;CAC3B,MAAM,oBAAoB,KAAK,OAAO;CAEtC,MAAM,SACJ,KAAK,OAAO,SACX;AAEH,QAAO;EACL,QAAQ,KAAK;EACb,MAAM,KAAK;EACX;EACA,kBAAkB,aAAa,sBAAsB,KAAK,OAAO,gBAAgB,KAAK,KAAK,QAAQ,WAAW;EAC9G,UAAU,EAAE,aAAa,mBAAmB,GAAG,WAAW,KAAK,OAAO,QAAQ,KAAK,KAAK,QAAQ;GAAE;GAAY,GAAG;GAAM,CAAC;EACxH,cAAc,EAAE,aAAa,mBAAmB,GAAG,WAAW,KAAK,OAAO,YAAY,KAAK,KAAK,QAAQ;GAAE;GAAY,GAAG;GAAM,CAAC;EAChI,cAAc,EAAE,aAAa,mBAAmB,GAAG,WAAW,KAAK,OAAO,YAAY,KAAK,KAAK,QAAQ;GAAE;GAAY,GAAG;GAAM,CAAC;EAChI,gBAAgB,SAAmB;AACjC,OAAI,OAAO,QAAQ,WAAW,WAC5B,QAAO,OAAO,OAAO,KAAK;AAE5B,OAAI,OAAO,QAAQ,WAAW,SAC5B,QAAO,OAAO;AAEhB,UAAO,mBAAmB,EAAE,QAAQ,CAAC;;EAEvC,gBAAgB,SAAmB;AACjC,OAAI,OAAO,QAAQ,WAAW,WAC5B,QAAO,OAAO,OAAO,KAAK;AAE5B,OAAI,OAAO,QAAQ,WAAW,SAC5B,QAAO,OAAO;;EAInB;;;;;;;AClIH,SAAgB,UAAyB;CACvC,MAAM,EAAE,SAAS,WAAoC;AAErD,QAAO,KAAK;;;;;;;ACHd,SAAgB,YAA4F;CAC1G,MAAM,EAAE,SAAS,WAAyC;AAE1D,QAAO,KAAK;;;;;;;ACHd,SAAgB,kBAAgC;CAC9C,MAAM,EAAE,SAAS,WAAqC;AAEtD,QAAO,KAAK"}
|
package/src/PackageManager.ts
DELETED
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
import mod from 'node:module'
|
|
2
|
-
import os from 'node:os'
|
|
3
|
-
import { pathToFileURL } from 'node:url'
|
|
4
|
-
import { read, readSync } from '@internals/utils'
|
|
5
|
-
import * as pkg from 'empathic/package'
|
|
6
|
-
import { coerce, satisfies } from 'semver'
|
|
7
|
-
import { PATH_SEPARATORS } from './constants.ts'
|
|
8
|
-
|
|
9
|
-
type PackageJSON = {
|
|
10
|
-
dependencies?: Record<string, string>
|
|
11
|
-
devDependencies?: Record<string, string>
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
type DependencyName = string
|
|
15
|
-
|
|
16
|
-
type DependencyVersion = string
|
|
17
|
-
|
|
18
|
-
export class PackageManager {
|
|
19
|
-
static #cache: Record<DependencyName, DependencyVersion> = {}
|
|
20
|
-
|
|
21
|
-
#cwd?: string
|
|
22
|
-
|
|
23
|
-
constructor(workspace?: string) {
|
|
24
|
-
if (workspace) {
|
|
25
|
-
this.#cwd = workspace
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
set workspace(workspace: string) {
|
|
30
|
-
this.#cwd = workspace
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
get workspace(): string | undefined {
|
|
34
|
-
return this.#cwd
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
normalizeDirectory(directory: string): string {
|
|
38
|
-
const lastChar = directory[directory.length - 1]
|
|
39
|
-
if (lastChar && !(PATH_SEPARATORS as readonly string[]).includes(lastChar)) {
|
|
40
|
-
return `${directory}/`
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return directory
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
getLocation(path: string): string {
|
|
47
|
-
let location = path
|
|
48
|
-
|
|
49
|
-
if (this.#cwd) {
|
|
50
|
-
const require = mod.createRequire(this.normalizeDirectory(this.#cwd))
|
|
51
|
-
location = require.resolve(path)
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return location
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
async import(path: string): Promise<unknown> {
|
|
58
|
-
let location = this.getLocation(path)
|
|
59
|
-
|
|
60
|
-
if (os.platform() === 'win32') {
|
|
61
|
-
location = pathToFileURL(location).href
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
const module = await import(location)
|
|
65
|
-
|
|
66
|
-
return module?.default ?? module
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
async getPackageJSON(): Promise<PackageJSON | undefined> {
|
|
70
|
-
const pkgPath = pkg.up({
|
|
71
|
-
cwd: this.#cwd,
|
|
72
|
-
})
|
|
73
|
-
if (!pkgPath) {
|
|
74
|
-
return undefined
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
const json = await read(pkgPath)
|
|
78
|
-
|
|
79
|
-
return JSON.parse(json) as PackageJSON
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
getPackageJSONSync(): PackageJSON | undefined {
|
|
83
|
-
const pkgPath = pkg.up({
|
|
84
|
-
cwd: this.#cwd,
|
|
85
|
-
})
|
|
86
|
-
if (!pkgPath) {
|
|
87
|
-
return undefined
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
const json = readSync(pkgPath)
|
|
91
|
-
|
|
92
|
-
return JSON.parse(json) as PackageJSON
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
static setVersion(dependency: DependencyName, version: DependencyVersion): void {
|
|
96
|
-
PackageManager.#cache[dependency] = version
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
#match(packageJSON: PackageJSON, dependency: DependencyName | RegExp): string | undefined {
|
|
100
|
-
const dependencies = {
|
|
101
|
-
...(packageJSON.dependencies || {}),
|
|
102
|
-
...(packageJSON.devDependencies || {}),
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
if (typeof dependency === 'string' && dependencies[dependency]) {
|
|
106
|
-
return dependencies[dependency]
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
const matchedDependency = Object.keys(dependencies).find((dep) => dep.match(dependency))
|
|
110
|
-
|
|
111
|
-
return matchedDependency ? dependencies[matchedDependency] : undefined
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
async getVersion(dependency: DependencyName | RegExp): Promise<DependencyVersion | undefined> {
|
|
115
|
-
if (typeof dependency === 'string' && PackageManager.#cache[dependency]) {
|
|
116
|
-
return PackageManager.#cache[dependency]
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
const packageJSON = await this.getPackageJSON()
|
|
120
|
-
|
|
121
|
-
if (!packageJSON) {
|
|
122
|
-
return undefined
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
return this.#match(packageJSON, dependency)
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
getVersionSync(dependency: DependencyName | RegExp): DependencyVersion | undefined {
|
|
129
|
-
if (typeof dependency === 'string' && PackageManager.#cache[dependency]) {
|
|
130
|
-
return PackageManager.#cache[dependency]
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
const packageJSON = this.getPackageJSONSync()
|
|
134
|
-
|
|
135
|
-
if (!packageJSON) {
|
|
136
|
-
return undefined
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
return this.#match(packageJSON, dependency)
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
async isValid(dependency: DependencyName | RegExp, version: DependencyVersion): Promise<boolean> {
|
|
143
|
-
const packageVersion = await this.getVersion(dependency)
|
|
144
|
-
|
|
145
|
-
if (!packageVersion) {
|
|
146
|
-
return false
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
if (packageVersion === version) {
|
|
150
|
-
return true
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
const semVer = coerce(packageVersion)
|
|
154
|
-
|
|
155
|
-
if (!semVer) {
|
|
156
|
-
return false
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
return satisfies(semVer, version)
|
|
160
|
-
}
|
|
161
|
-
isValidSync(dependency: DependencyName | RegExp, version: DependencyVersion): boolean {
|
|
162
|
-
const packageVersion = this.getVersionSync(dependency)
|
|
163
|
-
|
|
164
|
-
if (!packageVersion) {
|
|
165
|
-
return false
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
if (packageVersion === version) {
|
|
169
|
-
return true
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
const semVer = coerce(packageVersion)
|
|
173
|
-
|
|
174
|
-
if (!semVer) {
|
|
175
|
-
return false
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
return satisfies(semVer, version)
|
|
179
|
-
}
|
|
180
|
-
}
|