@socketsecurity/lib 5.19.0 → 5.19.1
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 +14 -0
- package/dist/constants/socket.js +1 -1
- package/dist/external/@inquirer/checkbox.js +5 -0
- package/dist/external/@inquirer/confirm.js +5 -0
- package/dist/external/@inquirer/input.js +5 -0
- package/dist/external/@inquirer/password.js +5 -0
- package/dist/external/@inquirer/search.js +5 -0
- package/dist/external/@inquirer/select.js +5 -0
- package/dist/external/@npmcli/package-json.js +3968 -9
- package/dist/external/debug.js +328 -162
- package/dist/external/external-pack.js +2749 -28
- package/dist/external/npm-pack.js +44319 -24912
- package/dist/external/zod.js +7558 -160
- package/dist/stdio/clear.d.ts +163 -0
- package/dist/stdio/clear.js +96 -0
- package/dist/stdio/progress.d.ts +152 -0
- package/dist/stdio/progress.js +217 -0
- package/dist/stdio/prompts.d.ts +196 -0
- package/dist/stdio/prompts.js +177 -0
- package/package.json +20 -2
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview User prompt utilities for interactive scripts.
|
|
3
|
+
* Provides inquirer.js integration with spinner support, context handling, and theming.
|
|
4
|
+
*/
|
|
5
|
+
import checkboxRaw from '../external/@inquirer/checkbox';
|
|
6
|
+
import confirmRaw from '../external/@inquirer/confirm';
|
|
7
|
+
import inputRaw from '../external/@inquirer/input';
|
|
8
|
+
import passwordRaw from '../external/@inquirer/password';
|
|
9
|
+
import { type ThemeName } from '../themes/themes';
|
|
10
|
+
import type { Theme } from '../themes/types';
|
|
11
|
+
declare const searchRaw: any;
|
|
12
|
+
declare const selectRaw: any;
|
|
13
|
+
declare const ActualSeparator: any;
|
|
14
|
+
/**
|
|
15
|
+
* Choice option for select and search prompts.
|
|
16
|
+
*
|
|
17
|
+
* @template Value - Type of the choice value
|
|
18
|
+
*/
|
|
19
|
+
export interface Choice<Value = unknown> {
|
|
20
|
+
/** The value returned when this choice is selected */
|
|
21
|
+
value: Value;
|
|
22
|
+
/** Display name for the choice (defaults to value.toString()) */
|
|
23
|
+
name?: string | undefined;
|
|
24
|
+
/** Additional description text shown below the choice */
|
|
25
|
+
description?: string | undefined;
|
|
26
|
+
/** Short text shown after selection (defaults to name) */
|
|
27
|
+
short?: string | undefined;
|
|
28
|
+
/** Whether this choice is disabled, or a reason string */
|
|
29
|
+
disabled?: boolean | string | undefined;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Context for inquirer prompts.
|
|
33
|
+
* Minimal context interface used by Inquirer prompts.
|
|
34
|
+
* Duplicated from `@inquirer/type` - InquirerContext.
|
|
35
|
+
*/
|
|
36
|
+
interface InquirerContext {
|
|
37
|
+
/** Abort signal for cancelling the prompt */
|
|
38
|
+
signal?: AbortSignal | undefined;
|
|
39
|
+
/** Input stream (defaults to process.stdin) */
|
|
40
|
+
input?: NodeJS.ReadableStream | undefined;
|
|
41
|
+
/** Output stream (defaults to process.stdout) */
|
|
42
|
+
output?: NodeJS.WritableStream | undefined;
|
|
43
|
+
/** Clear the prompt from terminal when done */
|
|
44
|
+
clearPromptOnDone?: boolean | undefined;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Extended context with spinner support.
|
|
48
|
+
* Allows passing a spinner instance to be managed during prompts.
|
|
49
|
+
*/
|
|
50
|
+
export type Context = import('../objects').Remap<InquirerContext & {
|
|
51
|
+
/** Optional spinner to stop/start during prompt display */
|
|
52
|
+
spinner?: import('../spinner').Spinner | undefined;
|
|
53
|
+
}>;
|
|
54
|
+
/**
|
|
55
|
+
* Separator for visual grouping in select/checkbox prompts.
|
|
56
|
+
* Creates a non-selectable visual separator line.
|
|
57
|
+
* Duplicated from `@inquirer/select` - Separator.
|
|
58
|
+
* This type definition ensures the Separator type is available in published packages.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* import { Separator } from './prompts'
|
|
62
|
+
*
|
|
63
|
+
* const choices = [
|
|
64
|
+
* { name: 'Option 1', value: 1 },
|
|
65
|
+
* new Separator(),
|
|
66
|
+
* { name: 'Option 2', value: 2 }
|
|
67
|
+
* ]
|
|
68
|
+
*/
|
|
69
|
+
declare class SeparatorType {
|
|
70
|
+
readonly separator: string;
|
|
71
|
+
readonly type: 'separator';
|
|
72
|
+
constructor(separator?: string);
|
|
73
|
+
}
|
|
74
|
+
export type Separator = SeparatorType;
|
|
75
|
+
/**
|
|
76
|
+
* Convert Socket theme to @inquirer theme format.
|
|
77
|
+
* Maps our theme colors to inquirer's style functions.
|
|
78
|
+
* Handles theme names, Theme objects, and passes through @inquirer themes.
|
|
79
|
+
*
|
|
80
|
+
* @param theme - Socket theme name, Theme object, or @inquirer theme
|
|
81
|
+
* @returns @inquirer theme object
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```ts
|
|
85
|
+
* // Socket theme name
|
|
86
|
+
* createInquirerTheme('sunset')
|
|
87
|
+
*
|
|
88
|
+
* // Socket Theme object
|
|
89
|
+
* createInquirerTheme(SUNSET_THEME)
|
|
90
|
+
*
|
|
91
|
+
* // @inquirer theme (passes through)
|
|
92
|
+
* createInquirerTheme({ style: {...}, icon: {...} })
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
export declare function createInquirerTheme(theme: Theme | ThemeName | unknown): Record<string, unknown>;
|
|
96
|
+
/**
|
|
97
|
+
* Create a separator for select prompts.
|
|
98
|
+
* Creates a visual separator line in choice lists.
|
|
99
|
+
*
|
|
100
|
+
* @param text - Optional separator text (defaults to '───────')
|
|
101
|
+
* @returns Separator instance
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* import { select, createSeparator } from '@socketsecurity/lib/stdio/prompts'
|
|
105
|
+
*
|
|
106
|
+
* const choice = await select({
|
|
107
|
+
* message: 'Choose an option:',
|
|
108
|
+
* choices: [
|
|
109
|
+
* { name: 'Option 1', value: 1 },
|
|
110
|
+
* createSeparator(),
|
|
111
|
+
* { name: 'Option 2', value: 2 }
|
|
112
|
+
* ]
|
|
113
|
+
* })
|
|
114
|
+
*/
|
|
115
|
+
export declare function createSeparator(text?: string): InstanceType<typeof ActualSeparator>;
|
|
116
|
+
/**
|
|
117
|
+
* Wrap an inquirer prompt with spinner handling, theme injection, and signal injection.
|
|
118
|
+
* Automatically stops/starts spinners during prompt display, injects the current theme,
|
|
119
|
+
* and injects abort signals. Trims string results and handles cancellation gracefully.
|
|
120
|
+
*
|
|
121
|
+
* @template T - Type of the prompt result
|
|
122
|
+
* @param inquirerPrompt - The inquirer prompt function to wrap
|
|
123
|
+
* @returns Wrapped prompt function with spinner, theme, and signal handling
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* const myPrompt = wrapPrompt(rawInquirerPrompt)
|
|
127
|
+
* const result = await myPrompt({ message: 'Enter name:' })
|
|
128
|
+
*/
|
|
129
|
+
export declare function wrapPrompt<T = unknown>(inquirerPrompt: (...args: unknown[]) => Promise<T>): (...args: unknown[]) => Promise<T | undefined>;
|
|
130
|
+
/**
|
|
131
|
+
* Prompt to select multiple items from a list of choices.
|
|
132
|
+
* Wrapped with spinner handling and abort signal support.
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* const choices = await checkbox({
|
|
136
|
+
* message: 'Select options:',
|
|
137
|
+
* choices: [
|
|
138
|
+
* { name: 'Option 1', value: 'opt1' },
|
|
139
|
+
* { name: 'Option 2', value: 'opt2' },
|
|
140
|
+
* { name: 'Option 3', value: 'opt3' }
|
|
141
|
+
* ]
|
|
142
|
+
* })
|
|
143
|
+
*/
|
|
144
|
+
export declare const checkbox: typeof checkboxRaw;
|
|
145
|
+
/**
|
|
146
|
+
* Prompt for a yes/no confirmation.
|
|
147
|
+
* Wrapped with spinner handling and abort signal support.
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* const answer = await confirm({ message: 'Continue?' })
|
|
151
|
+
* if (answer) { // user confirmed }
|
|
152
|
+
*/
|
|
153
|
+
export declare const confirm: typeof confirmRaw;
|
|
154
|
+
/**
|
|
155
|
+
* Prompt for text input.
|
|
156
|
+
* Wrapped with spinner handling and abort signal support.
|
|
157
|
+
* Result is automatically trimmed.
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* const name = await input({ message: 'Enter your name:' })
|
|
161
|
+
*/
|
|
162
|
+
export declare const input: typeof inputRaw;
|
|
163
|
+
/**
|
|
164
|
+
* Prompt for password input (hidden characters).
|
|
165
|
+
* Wrapped with spinner handling and abort signal support.
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* const token = await password({ message: 'Enter API token:' })
|
|
169
|
+
*/
|
|
170
|
+
export declare const password: typeof passwordRaw;
|
|
171
|
+
/**
|
|
172
|
+
* Prompt with searchable/filterable choices.
|
|
173
|
+
* Wrapped with spinner handling and abort signal support.
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* const result = await search({
|
|
177
|
+
* message: 'Select a package:',
|
|
178
|
+
* source: async (input) => fetchPackages(input)
|
|
179
|
+
* })
|
|
180
|
+
*/
|
|
181
|
+
export declare const search: typeof searchRaw;
|
|
182
|
+
/**
|
|
183
|
+
* Prompt to select from a list of choices.
|
|
184
|
+
* Wrapped with spinner handling and abort signal support.
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* const choice = await select({
|
|
188
|
+
* message: 'Choose an option:',
|
|
189
|
+
* choices: [
|
|
190
|
+
* { name: 'Option 1', value: 'opt1' },
|
|
191
|
+
* { name: 'Option 2', value: 'opt2' }
|
|
192
|
+
* ]
|
|
193
|
+
* })
|
|
194
|
+
*/
|
|
195
|
+
export declare const select: typeof selectRaw;
|
|
196
|
+
export { ActualSeparator as Separator };
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* Socket Lib - Built with esbuild */
|
|
3
|
+
"use strict";
|
|
4
|
+
var __create = Object.create;
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
9
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
+
var __export = (target, all) => {
|
|
11
|
+
for (var name in all)
|
|
12
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
13
|
+
};
|
|
14
|
+
var __copyProps = (to, from, except, desc) => {
|
|
15
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
+
for (let key of __getOwnPropNames(from))
|
|
17
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
18
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
28
|
+
mod
|
|
29
|
+
));
|
|
30
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
31
|
+
var prompts_exports = {};
|
|
32
|
+
__export(prompts_exports, {
|
|
33
|
+
Separator: () => ActualSeparator,
|
|
34
|
+
checkbox: () => checkbox,
|
|
35
|
+
confirm: () => confirm,
|
|
36
|
+
createInquirerTheme: () => createInquirerTheme,
|
|
37
|
+
createSeparator: () => createSeparator,
|
|
38
|
+
input: () => input,
|
|
39
|
+
password: () => password,
|
|
40
|
+
search: () => search,
|
|
41
|
+
select: () => select,
|
|
42
|
+
wrapPrompt: () => wrapPrompt
|
|
43
|
+
});
|
|
44
|
+
module.exports = __toCommonJS(prompts_exports);
|
|
45
|
+
var import_process = require("../constants/process");
|
|
46
|
+
var import_checkbox = __toESM(require("../external/@inquirer/checkbox"));
|
|
47
|
+
var import_confirm = __toESM(require("../external/@inquirer/confirm"));
|
|
48
|
+
var import_input = __toESM(require("../external/@inquirer/input"));
|
|
49
|
+
var import_password = __toESM(require("../external/@inquirer/password"));
|
|
50
|
+
var searchModule = __toESM(require("../external/@inquirer/search"));
|
|
51
|
+
var selectModuleImport = __toESM(require("../external/@inquirer/select"));
|
|
52
|
+
var import_yoctocolors_cjs = __toESM(require("../external/yoctocolors-cjs"));
|
|
53
|
+
var import_spinner = require("../spinner");
|
|
54
|
+
var import_context = require("../themes/context");
|
|
55
|
+
var import_themes = require("../themes/themes");
|
|
56
|
+
var import_utils = require("../themes/utils");
|
|
57
|
+
const abortSignal = (0, import_process.getAbortSignal)();
|
|
58
|
+
const spinner = (0, import_spinner.getDefaultSpinner)();
|
|
59
|
+
const searchRaw = searchModule.default;
|
|
60
|
+
const selectModule = selectModuleImport;
|
|
61
|
+
const selectRaw = selectModule.default;
|
|
62
|
+
const ActualSeparator = selectModule.Separator;
|
|
63
|
+
function applyColor(text, color) {
|
|
64
|
+
if (typeof color === "string") {
|
|
65
|
+
return import_yoctocolors_cjs.default[color](text);
|
|
66
|
+
}
|
|
67
|
+
const { 0: r, 1: g, 2: b } = color;
|
|
68
|
+
return `\x1B[38;2;${r};${g};${b}m${text}\x1B[39m`;
|
|
69
|
+
}
|
|
70
|
+
function isSocketTheme(value) {
|
|
71
|
+
return typeof value === "object" && value !== null && "name" in value && "colors" in value;
|
|
72
|
+
}
|
|
73
|
+
function resolveTheme(theme) {
|
|
74
|
+
return typeof theme === "string" ? import_themes.THEMES[theme] ?? import_themes.THEMES.socket : theme;
|
|
75
|
+
}
|
|
76
|
+
function createInquirerTheme(theme) {
|
|
77
|
+
if (typeof theme === "string" || isSocketTheme(theme)) {
|
|
78
|
+
const socketTheme = resolveTheme(theme);
|
|
79
|
+
const promptColor = (0, import_utils.resolveColor)(
|
|
80
|
+
socketTheme.colors.prompt,
|
|
81
|
+
socketTheme.colors
|
|
82
|
+
);
|
|
83
|
+
const textDimColor = (0, import_utils.resolveColor)(
|
|
84
|
+
socketTheme.colors.textDim,
|
|
85
|
+
socketTheme.colors
|
|
86
|
+
);
|
|
87
|
+
const errorColor = socketTheme.colors.error;
|
|
88
|
+
const successColor = socketTheme.colors.success;
|
|
89
|
+
const primaryColor = socketTheme.colors.primary;
|
|
90
|
+
return {
|
|
91
|
+
style: {
|
|
92
|
+
// Message text (uses colors.prompt)
|
|
93
|
+
message: (text) => applyColor(text, promptColor),
|
|
94
|
+
// Answer text (uses primary color)
|
|
95
|
+
answer: (text) => applyColor(text, primaryColor),
|
|
96
|
+
// Help text / descriptions (uses textDim)
|
|
97
|
+
help: (text) => applyColor(text, textDimColor),
|
|
98
|
+
description: (text) => applyColor(text, textDimColor),
|
|
99
|
+
// Disabled items (uses textDim)
|
|
100
|
+
disabled: (text) => applyColor(text, textDimColor),
|
|
101
|
+
// Error messages (uses error color)
|
|
102
|
+
error: (text) => applyColor(text, errorColor),
|
|
103
|
+
// Highlight/active (uses primary color)
|
|
104
|
+
highlight: (text) => applyColor(text, primaryColor)
|
|
105
|
+
},
|
|
106
|
+
icon: {
|
|
107
|
+
// Use success color for confirmed items
|
|
108
|
+
checked: applyColor("\u2713", successColor),
|
|
109
|
+
unchecked: " ",
|
|
110
|
+
// Cursor uses primary color
|
|
111
|
+
cursor: applyColor("\u276F", primaryColor)
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
return theme;
|
|
116
|
+
}
|
|
117
|
+
function createSeparator(text) {
|
|
118
|
+
return new ActualSeparator(text);
|
|
119
|
+
}
|
|
120
|
+
// @__NO_SIDE_EFFECTS__
|
|
121
|
+
function wrapPrompt(inquirerPrompt) {
|
|
122
|
+
return async (...args) => {
|
|
123
|
+
const origContext = args.length > 1 ? args[1] : void 0;
|
|
124
|
+
const { spinner: contextSpinner, ...contextWithoutSpinner } = origContext ?? {};
|
|
125
|
+
const spinnerInstance = contextSpinner !== void 0 ? contextSpinner : spinner;
|
|
126
|
+
const signal = abortSignal;
|
|
127
|
+
const config = args[0];
|
|
128
|
+
if (config && typeof config === "object") {
|
|
129
|
+
if (!config["theme"]) {
|
|
130
|
+
config["theme"] = createInquirerTheme((0, import_context.getTheme)());
|
|
131
|
+
} else {
|
|
132
|
+
config["theme"] = createInquirerTheme(config["theme"]);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (origContext) {
|
|
136
|
+
args[1] = {
|
|
137
|
+
signal,
|
|
138
|
+
...contextWithoutSpinner
|
|
139
|
+
};
|
|
140
|
+
} else {
|
|
141
|
+
args[1] = { signal };
|
|
142
|
+
}
|
|
143
|
+
const wasSpinning = !!spinnerInstance?.isSpinning;
|
|
144
|
+
spinnerInstance?.stop();
|
|
145
|
+
let result;
|
|
146
|
+
try {
|
|
147
|
+
result = await inquirerPrompt(...args);
|
|
148
|
+
} catch (e) {
|
|
149
|
+
if (e instanceof TypeError) {
|
|
150
|
+
throw e;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (wasSpinning) {
|
|
154
|
+
spinnerInstance.start();
|
|
155
|
+
}
|
|
156
|
+
return typeof result === "string" ? result.trim() : result;
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
const checkbox = /* @__PURE__ */ wrapPrompt(import_checkbox.default);
|
|
160
|
+
const confirm = /* @__PURE__ */ wrapPrompt(import_confirm.default);
|
|
161
|
+
const input = /* @__PURE__ */ wrapPrompt(import_input.default);
|
|
162
|
+
const password = /* @__PURE__ */ wrapPrompt(import_password.default);
|
|
163
|
+
const search = /* @__PURE__ */ wrapPrompt(searchRaw);
|
|
164
|
+
const select = /* @__PURE__ */ wrapPrompt(selectRaw);
|
|
165
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
166
|
+
0 && (module.exports = {
|
|
167
|
+
Separator,
|
|
168
|
+
checkbox,
|
|
169
|
+
confirm,
|
|
170
|
+
createInquirerTheme,
|
|
171
|
+
createSeparator,
|
|
172
|
+
input,
|
|
173
|
+
password,
|
|
174
|
+
search,
|
|
175
|
+
select,
|
|
176
|
+
wrapPrompt
|
|
177
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@socketsecurity/lib",
|
|
3
|
-
"version": "5.19.
|
|
3
|
+
"version": "5.19.1",
|
|
4
4
|
"packageManager": "pnpm@11.0.0-rc.2",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Core utilities and infrastructure for Socket.dev security tools",
|
|
@@ -575,6 +575,10 @@
|
|
|
575
575
|
"types": "./dist/ssri.d.ts",
|
|
576
576
|
"default": "./dist/ssri.js"
|
|
577
577
|
},
|
|
578
|
+
"./stdio/clear": {
|
|
579
|
+
"types": "./dist/stdio/clear.d.ts",
|
|
580
|
+
"default": "./dist/stdio/clear.js"
|
|
581
|
+
},
|
|
578
582
|
"./stdio/divider": {
|
|
579
583
|
"types": "./dist/stdio/divider.d.ts",
|
|
580
584
|
"default": "./dist/stdio/divider.js"
|
|
@@ -587,6 +591,14 @@
|
|
|
587
591
|
"types": "./dist/stdio/header.d.ts",
|
|
588
592
|
"default": "./dist/stdio/header.js"
|
|
589
593
|
},
|
|
594
|
+
"./stdio/progress": {
|
|
595
|
+
"types": "./dist/stdio/progress.d.ts",
|
|
596
|
+
"default": "./dist/stdio/progress.js"
|
|
597
|
+
},
|
|
598
|
+
"./stdio/prompts": {
|
|
599
|
+
"types": "./dist/stdio/prompts.d.ts",
|
|
600
|
+
"default": "./dist/stdio/prompts.js"
|
|
601
|
+
},
|
|
590
602
|
"./stdio/stderr": {
|
|
591
603
|
"types": "./dist/stdio/stderr.d.ts",
|
|
592
604
|
"default": "./dist/stdio/stderr.js"
|
|
@@ -699,13 +711,19 @@
|
|
|
699
711
|
"@babel/parser": "7.28.4",
|
|
700
712
|
"@babel/traverse": "7.28.4",
|
|
701
713
|
"@babel/types": "7.28.4",
|
|
714
|
+
"@inquirer/checkbox": "5.1.3",
|
|
715
|
+
"@inquirer/confirm": "6.0.11",
|
|
716
|
+
"@inquirer/input": "5.0.11",
|
|
717
|
+
"@inquirer/password": "5.0.11",
|
|
718
|
+
"@inquirer/search": "4.1.7",
|
|
719
|
+
"@inquirer/select": "5.1.3",
|
|
702
720
|
"@npmcli/arborist": "9.1.4",
|
|
703
721
|
"@npmcli/package-json": "7.0.0",
|
|
704
722
|
"@npmcli/promise-spawn": "8.0.3",
|
|
705
723
|
"@socketregistry/is-unicode-supported": "1.0.5",
|
|
706
724
|
"@socketregistry/packageurl-js": "1.4.2",
|
|
707
725
|
"@socketregistry/yocto-spinner": "1.0.25",
|
|
708
|
-
"@socketsecurity/lib-stable": "npm:@socketsecurity/lib@5.
|
|
726
|
+
"@socketsecurity/lib-stable": "npm:@socketsecurity/lib@5.19.0",
|
|
709
727
|
"@types/node": "24.9.2",
|
|
710
728
|
"@typescript/native-preview": "7.0.0-dev.20260415.1",
|
|
711
729
|
"@vitest/coverage-v8": "4.0.3",
|