clerc 0.39.0 → 0.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2022 Ray <https://github.com/so1ve>
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2022 Ray <https://github.com/so1ve>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,9 @@
1
+ # Clerc
2
+
3
+ [![NPM version](https://img.shields.io/npm/v/clerc?color=a1b858&label=)](https://www.npmjs.com/package/clerc)
4
+
5
+ See [Clerc](https://github.com/so1ve/clerc) for documentation.
6
+
7
+ ## 📝 License
8
+
9
+ [MIT](../../LICENSE). Made with ❤️ by [Ray](https://github.com/so1ve)
package/dist/index.d.ts CHANGED
@@ -1,754 +1,7 @@
1
- type Equals<X, Y> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2) ? true : false;
2
- type Dict<T> = Record<string, T>;
3
- type MaybeArray$1<T> = T | T[];
4
- type AlphabetLowercase = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z";
5
- type Numeric = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
6
- type AlphaNumeric = AlphabetLowercase | Uppercase<AlphabetLowercase> | Numeric;
7
- type CamelCase<Word extends string> = Word extends `${infer FirstCharacter}${infer Rest}` ? (FirstCharacter extends AlphaNumeric ? `${FirstCharacter}${CamelCase<Rest>}` : Capitalize<CamelCase<Rest>>) : Word;
8
-
9
- /**
10
- Matches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive).
11
-
12
- @category Type
13
- */
14
- type Primitive =
15
- | null
16
- | undefined
17
- | string
18
- | number
19
- | boolean
20
- | symbol
21
- | bigint;
22
-
23
- declare global {
24
- // eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- It has to be an `interface` so that it can be merged.
25
- interface SymbolConstructor {
26
- readonly observable: symbol;
27
- }
28
- }
29
-
30
- /**
31
- Useful to flatten the type output to improve type hints shown in editors. And also to transform an interface into a type to aide with assignability.
32
-
33
- @example
34
- ```
35
- import type {Simplify} from 'type-fest';
36
-
37
- type PositionProps = {
38
- top: number;
39
- left: number;
40
- };
41
-
42
- type SizeProps = {
43
- width: number;
44
- height: number;
45
- };
46
-
47
- // In your editor, hovering over `Props` will show a flattened object with all the properties.
48
- type Props = Simplify<PositionProps & SizeProps>;
49
- ```
50
-
51
- Sometimes it is desired to pass a value as a function argument that has a different type. At first inspection it may seem assignable, and then you discover it is not because the `value`'s type definition was defined as an interface. In the following example, `fn` requires an argument of type `Record<string, unknown>`. If the value is defined as a literal, then it is assignable. And if the `value` is defined as type using the `Simplify` utility the value is assignable. But if the `value` is defined as an interface, it is not assignable because the interface is not sealed and elsewhere a non-string property could be added to the interface.
52
-
53
- If the type definition must be an interface (perhaps it was defined in a third-party npm package), then the `value` can be defined as `const value: Simplify<SomeInterface> = ...`. Then `value` will be assignable to the `fn` argument. Or the `value` can be cast as `Simplify<SomeInterface>` if you can't re-declare the `value`.
54
-
55
- @example
56
- ```
57
- import type {Simplify} from 'type-fest';
58
-
59
- interface SomeInterface {
60
- foo: number;
61
- bar?: string;
62
- baz: number | undefined;
63
- }
64
-
65
- type SomeType = {
66
- foo: number;
67
- bar?: string;
68
- baz: number | undefined;
69
- };
70
-
71
- const literal = {foo: 123, bar: 'hello', baz: 456};
72
- const someType: SomeType = literal;
73
- const someInterface: SomeInterface = literal;
74
-
75
- function fn(object: Record<string, unknown>): void {}
76
-
77
- fn(literal); // Good: literal object type is sealed
78
- fn(someType); // Good: type is sealed
79
- fn(someInterface); // Error: Index signature for type 'string' is missing in type 'someInterface'. Because `interface` can be re-opened
80
- fn(someInterface as Simplify<SomeInterface>); // Good: transform an `interface` into a `type`
81
- ```
82
-
83
- @link https://github.com/microsoft/TypeScript/issues/15300
84
-
85
- @category Object
86
- */
87
- type Simplify<T> = {[KeyType in keyof T]: T[KeyType]} & {};
88
-
89
- /**
90
- Omit any index signatures from the given object type, leaving only explicitly defined properties.
91
-
92
- This is the counterpart of `PickIndexSignature`.
93
-
94
- Use-cases:
95
- - Remove overly permissive signatures from third-party types.
96
-
97
- This type was taken from this [StackOverflow answer](https://stackoverflow.com/a/68261113/420747).
98
-
99
- It relies on the fact that an empty object (`{}`) is assignable to an object with just an index signature, like `Record<string, unknown>`, but not to an object with explicitly defined keys, like `Record<'foo' | 'bar', unknown>`.
100
-
101
- (The actual value type, `unknown`, is irrelevant and could be any type. Only the key type matters.)
102
-
103
- ```
104
- const indexed: Record<string, unknown> = {}; // Allowed
105
-
106
- const keyed: Record<'foo', unknown> = {}; // Error
107
- // => TS2739: Type '{}' is missing the following properties from type 'Record<"foo" | "bar", unknown>': foo, bar
108
- ```
109
-
110
- Instead of causing a type error like the above, you can also use a [conditional type](https://www.typescriptlang.org/docs/handbook/2/conditional-types.html) to test whether a type is assignable to another:
111
-
112
- ```
113
- type Indexed = {} extends Record<string, unknown>
114
- ? '✅ `{}` is assignable to `Record<string, unknown>`'
115
- : '❌ `{}` is NOT assignable to `Record<string, unknown>`';
116
- // => '✅ `{}` is assignable to `Record<string, unknown>`'
117
-
118
- type Keyed = {} extends Record<'foo' | 'bar', unknown>
119
- ? "✅ `{}` is assignable to `Record<'foo' | 'bar', unknown>`"
120
- : "❌ `{}` is NOT assignable to `Record<'foo' | 'bar', unknown>`";
121
- // => "❌ `{}` is NOT assignable to `Record<'foo' | 'bar', unknown>`"
122
- ```
123
-
124
- Using a [mapped type](https://www.typescriptlang.org/docs/handbook/2/mapped-types.html#further-exploration), you can then check for each `KeyType` of `ObjectType`...
125
-
126
- ```
127
- import type {OmitIndexSignature} from 'type-fest';
128
-
129
- type OmitIndexSignature<ObjectType> = {
130
- [KeyType in keyof ObjectType // Map each key of `ObjectType`...
131
- ]: ObjectType[KeyType]; // ...to its original value, i.e. `OmitIndexSignature<Foo> == Foo`.
132
- };
133
- ```
134
-
135
- ...whether an empty object (`{}`) would be assignable to an object with that `KeyType` (`Record<KeyType, unknown>`)...
136
-
137
- ```
138
- import type {OmitIndexSignature} from 'type-fest';
139
-
140
- type OmitIndexSignature<ObjectType> = {
141
- [KeyType in keyof ObjectType
142
- // Is `{}` assignable to `Record<KeyType, unknown>`?
143
- as {} extends Record<KeyType, unknown>
144
- ? ... // ✅ `{}` is assignable to `Record<KeyType, unknown>`
145
- : ... // ❌ `{}` is NOT assignable to `Record<KeyType, unknown>`
146
- ]: ObjectType[KeyType];
147
- };
148
- ```
149
-
150
- If `{}` is assignable, it means that `KeyType` is an index signature and we want to remove it. If it is not assignable, `KeyType` is a "real" key and we want to keep it.
151
-
152
- ```
153
- import type {OmitIndexSignature} from 'type-fest';
154
-
155
- type OmitIndexSignature<ObjectType> = {
156
- [KeyType in keyof ObjectType
157
- as {} extends Record<KeyType, unknown>
158
- ? never // => Remove this `KeyType`.
159
- : KeyType // => Keep this `KeyType` as it is.
160
- ]: ObjectType[KeyType];
161
- };
162
- ```
163
-
164
- @example
165
- ```
166
- import type {OmitIndexSignature} from 'type-fest';
167
-
168
- interface Example {
169
- // These index signatures will be removed.
170
- [x: string]: any
171
- [x: number]: any
172
- [x: symbol]: any
173
- [x: `head-${string}`]: string
174
- [x: `${string}-tail`]: string
175
- [x: `head-${string}-tail`]: string
176
- [x: `${bigint}`]: string
177
- [x: `embedded-${number}`]: string
178
-
179
- // These explicitly defined keys will remain.
180
- foo: 'bar';
181
- qux?: 'baz';
182
- }
183
-
184
- type ExampleWithoutIndexSignatures = OmitIndexSignature<Example>;
185
- // => { foo: 'bar'; qux?: 'baz' | undefined; }
186
- ```
187
-
188
- @see PickIndexSignature
189
- @category Object
190
- */
191
- type OmitIndexSignature<ObjectType> = {
192
- [KeyType in keyof ObjectType as {} extends Record<KeyType, unknown>
193
- ? never
194
- : KeyType]: ObjectType[KeyType];
195
- };
196
-
197
- /**
198
- Allows creating a union type by combining primitive types and literal types without sacrificing auto-completion in IDEs for the literal type part of the union.
199
-
200
- Currently, when a union type of a primitive type is combined with literal types, TypeScript loses all information about the combined literals. Thus, when such type is used in an IDE with autocompletion, no suggestions are made for the declared literals.
201
-
202
- This type is a workaround for [Microsoft/TypeScript#29729](https://github.com/Microsoft/TypeScript/issues/29729). It will be removed as soon as it's not needed anymore.
203
-
204
- @example
205
- ```
206
- import type {LiteralUnion} from 'type-fest';
207
-
208
- // Before
209
-
210
- type Pet = 'dog' | 'cat' | string;
211
-
212
- const pet: Pet = '';
213
- // Start typing in your TypeScript-enabled IDE.
214
- // You **will not** get auto-completion for `dog` and `cat` literals.
215
-
216
- // After
217
-
218
- type Pet2 = LiteralUnion<'dog' | 'cat', string>;
219
-
220
- const pet: Pet2 = '';
221
- // You **will** get auto-completion for `dog` and `cat` literals.
222
- ```
223
-
224
- @category Type
225
- */
226
- type LiteralUnion<
227
- LiteralType,
228
- BaseType extends Primitive,
229
- > = LiteralType | (BaseType & Record<never, never>);
230
-
231
- declare const DOUBLE_DASH = "--";
232
- type TypeFunction<ReturnType = any> = (value: any) => ReturnType;
233
- type TypeFunctionArray<ReturnType> = readonly [TypeFunction<ReturnType>];
234
- type FlagType<ReturnType = any> = TypeFunction<ReturnType> | TypeFunctionArray<ReturnType>;
235
- type FlagSchemaBase<TF> = {
236
- /**
237
- Type of the flag as a function that parses the argv string and returns the parsed value.
238
-
239
- @example
240
- ```
241
- type: String
242
- ```
243
- @example Wrap in an array to accept multiple values.
244
- ```
245
- type: [Boolean]
246
- ```
247
- @example Custom function type that uses moment.js to parse string as date.
248
- ```
249
- type: function CustomDate(value: string) {
250
- return moment(value).toDate();
251
- }
252
- ```
253
- */
254
- type: TF;
255
- /**
256
- A single-character alias for the flag.
257
-
258
- @example
259
- ```
260
- alias: 's'
261
- ```
262
- */
263
- alias?: string;
264
- } & Record<PropertyKey, unknown>;
265
- type FlagSchemaDefault<TF, DefaultType = any> = FlagSchemaBase<TF> & {
266
- /**
267
- Default value of the flag. Also accepts a function that returns the default value.
268
- [Default: undefined]
269
-
270
- @example
271
- ```
272
- default: 'hello'
273
- ```
274
- @example
275
- ```
276
- default: () => [1, 2, 3]
277
- ```
278
- */
279
- default: DefaultType | (() => DefaultType);
280
- };
281
- type FlagSchema<TF = FlagType> = FlagSchemaBase<TF> | FlagSchemaDefault<TF>;
282
- type FlagTypeOrSchema<ExtraOptions = Record<string, unknown>> = FlagType | (FlagSchema & ExtraOptions);
283
- type Flags$1<ExtraOptions = Record<string, unknown>> = Record<string, FlagTypeOrSchema<ExtraOptions>>;
284
- type InferFlagType<Flag extends FlagTypeOrSchema> = Flag extends (TypeFunctionArray<infer T> | FlagSchema<TypeFunctionArray<infer T>>) ? (Flag extends FlagSchemaDefault<TypeFunctionArray<T>, infer D> ? T[] | D : T[]) : (Flag extends TypeFunction<infer T> | FlagSchema<TypeFunction<infer T>> ? (Flag extends FlagSchemaDefault<TypeFunction<T>, infer D> ? T | D : T | undefined) : never);
285
- interface ParsedFlags<Schemas = Record<string, unknown>> {
286
- flags: Schemas;
287
- unknownFlags: Record<string, (string | boolean)[]>;
288
- _: string[] & {
289
- [DOUBLE_DASH]: string[];
290
- };
291
- }
292
- type TypeFlag<Schemas extends Flags$1> = ParsedFlags<{
293
- [flag in keyof Schemas]: InferFlagType<Schemas[flag]>;
294
- }>;
295
-
296
- type StripBrackets<Parameter extends string> = Parameter extends `<${infer ParameterName}>` | `[${infer ParameterName}]` ? (ParameterName extends `${infer SpreadName}...` ? SpreadName : ParameterName) : never;
297
- type ParameterType<Parameter extends string> = Parameter extends `<${infer _ParameterName}...>` | `[${infer _ParameterName}...]` ? string[] : Parameter extends `<${infer _ParameterName}>` ? string : Parameter extends `[${infer _ParameterName}]` ? string | undefined : never;
298
- type NonNullableParameters<T extends string[] | undefined> = T extends undefined ? [] : NonNullable<T>;
299
- type TransformParameters<C extends Command> = {
300
- [Parameter in NonNullableParameters<C["parameters"]>[number] as CamelCase<StripBrackets<Parameter>>]: ParameterType<Parameter>;
301
- };
302
- type MakeEventMap<T extends Commands> = {
303
- [K in keyof T]: [InspectorContext];
304
- };
305
- type FallbackFlags<F extends Flags | undefined> = Equals<NonNullableFlag<F>["flags"], {}> extends true ? Dict<any> : NonNullableFlag<F>["flags"];
306
- type NonNullableFlag<F extends Flags | undefined> = TypeFlag<NonNullable<F>>;
307
- type ParseFlag<C extends Commands, N extends keyof C, GF extends GlobalFlagOptions = {}> = N extends keyof C ? OmitIndexSignature<NonNullableFlag<C[N]["flags"] & GF>["flags"]> : FallbackFlags<C[N]["flags"] & GF>["flags"];
308
- type ParseRaw<C extends Command, GF extends GlobalFlagOptions = {}> = NonNullableFlag<C["flags"] & GF> & {
309
- flags: FallbackFlags<C["flags"] & GF>;
310
- parameters: string[];
311
- mergedFlags: FallbackFlags<C["flags"] & GF> & NonNullableFlag<C["flags"] & GF>["unknownFlags"];
312
- };
313
- type ParseParameters<C extends Commands = Commands, N extends keyof C = keyof C> = Equals<TransformParameters<C[N]>, {}> extends true ? N extends keyof C ? TransformParameters<C[N]> : Dict<string | string[] | undefined> : TransformParameters<C[N]>;
314
-
315
- type Locales = Dict<Dict<string>>;
316
- type TranslateFn = (name: string, ...args: string[]) => string | undefined;
317
- interface I18N {
318
- add: (locales: Locales) => void;
319
- t: TranslateFn;
320
- }
321
-
322
- interface Plugin<T extends Clerc = Clerc, U extends Clerc = Clerc> {
323
- setup: (cli: T) => U;
324
- }
325
-
326
- type CommandType = RootType | string;
327
- type FlagOptions = FlagSchema & {
328
- description: string;
329
- };
330
- type Flag = FlagOptions & {
331
- name: string;
332
- };
333
- type GlobalFlagOption = FlagSchema;
334
- type Flags = Dict<FlagOptions>;
335
- type GlobalFlagOptions = Dict<GlobalFlagOption>;
336
- declare interface CommandCustomProperties {
337
- }
338
- interface CommandOptions<P extends string[] = string[], A extends MaybeArray$1<string | RootType> = MaybeArray$1<string | RootType>, F extends Flags = Flags> extends CommandCustomProperties {
339
- alias?: A;
340
- parameters?: P;
341
- flags?: F;
342
- }
343
- type Command<N extends string | RootType = string, O extends CommandOptions = CommandOptions> = O & {
344
- name: N;
345
- description: string;
346
- };
347
- type CommandAlias<N extends string | RootType = string, O extends CommandOptions = CommandOptions> = Command<N, O> & {
348
- __isAlias?: true;
349
- };
350
- type CommandWithHandler<N extends string | RootType = string, O extends CommandOptions = CommandOptions> = Command<N, O> & {
351
- handler?: HandlerInCommand<HandlerContext<Record<N, Command<N, O>> & Record<never, never>, N>>;
352
- };
353
- type Commands = Dict<Command> & {
354
- [Root]?: Command;
355
- };
356
- interface ParseOptions {
357
- argv?: string[];
358
- run?: boolean;
359
- }
360
- interface HandlerContext<C extends Commands = Commands, N extends keyof C = keyof C, GF extends GlobalFlagOptions = {}> {
361
- name?: LiteralUnion<N, string>;
362
- called?: string | RootType;
363
- resolved: boolean;
364
- hasRootOrAlias: boolean;
365
- hasRoot: boolean;
366
- raw: Simplify<ParseRaw<C[N], GF>>;
367
- parameters: Simplify<ParseParameters<C, N>>;
368
- unknownFlags: ParsedFlags["unknownFlags"];
369
- flags: Simplify<ParseFlag<C, N, GF> & Record<string, any>>;
370
- cli: Clerc<C, GF>;
371
- }
372
- type Handler<C extends Commands = Commands, K extends keyof C = keyof C, GF extends GlobalFlagOptions = {}> = (ctx: HandlerContext<C, K, GF>) => void;
373
- type HandlerInCommand<C extends HandlerContext> = (ctx: {
374
- [K in keyof C]: C[K];
375
- }) => void;
376
- type FallbackType<T, U> = {} extends T ? U : T;
377
- type InspectorContext<C extends Commands = Commands> = HandlerContext<C> & {
378
- flags: FallbackType<TypeFlag<NonNullable<C[keyof C]["flags"]>>["flags"], Dict<any>>;
379
- };
380
- type Inspector<C extends Commands = Commands> = InspectorFn<C> | InspectorObject<C>;
381
- type InspectorFn<C extends Commands = Commands> = (ctx: InspectorContext<C>, next: () => void) => void;
382
- interface InspectorObject<C extends Commands = Commands> {
383
- enforce?: "pre" | "post";
384
- fn: InspectorFn<C>;
385
- }
386
-
387
- declare const Root: unique symbol;
388
- type RootType = typeof Root;
389
- declare class Clerc<C extends Commands = {}, GF extends GlobalFlagOptions = {}> {
390
- #private;
391
- i18n: I18N;
392
- private constructor();
393
- get _name(): string;
394
- get _description(): string;
395
- get _version(): string;
396
- get _inspectors(): Inspector[];
397
- get _commands(): C;
398
- get _flags(): GF;
399
- /**
400
- * Create a new cli
401
- *
402
- * @param name
403
- * @param description
404
- * @param version
405
- * @returns
406
- * @example
407
- * ```ts
408
- * const cli = Clerc.create()
409
- * ```
410
- */
411
- static create(name?: string, description?: string, version?: string): Clerc<{}, {}>;
412
- /**
413
- * Set the name of the cli
414
- *
415
- * @param name
416
- * @returns
417
- * @example
418
- * ```ts
419
- * Clerc.create()
420
- * .name("test")
421
- * ```
422
- */
423
- name(name: string): this;
424
- /**
425
- * Set the description of the cli
426
- *
427
- * @param description
428
- * @returns
429
- * @example
430
- * ```ts
431
- * Clerc.create()
432
- * .description("test cli")
433
- * ```
434
- */
435
- description(description: string): this;
436
- /**
437
- * Set the version of the cli
438
- *
439
- * @param version
440
- * @returns
441
- * @example
442
- * ```ts
443
- * Clerc.create()
444
- * .version("1.0.0")
445
- * ```
446
- */
447
- version(version: string): this;
448
- /**
449
- * Set the Locale
450
- * You must call this method once after you created the Clerc instance.
451
- *
452
- * @param locale
453
- * @returns
454
- * @example
455
- * ```ts
456
- * Clerc.create()
457
- * .locale("en")
458
- * .command(...)
459
- * ```
460
- */
461
- locale(locale: string): this;
462
- /**
463
- * Set the fallback Locale
464
- * You must call this method once after you created the Clerc instance.
465
- *
466
- * @param fallbackLocale
467
- * @returns
468
- * @example
469
- * ```ts
470
- * Clerc.create()
471
- * .fallbackLocale("en")
472
- * .command(...)
473
- * ```
474
- */
475
- fallbackLocale(fallbackLocale: string): this;
476
- /**
477
- * Register a error handler
478
- *
479
- * @param handler
480
- * @returns
481
- * @example
482
- * ```ts
483
- * Clerc.create()
484
- * .errorHandler((err) => { console.log(err); })
485
- * ```
486
- */
487
- errorHandler(handler: (err: any) => void): this;
488
- /**
489
- * Register a command
490
- *
491
- * @param name
492
- * @param description
493
- * @param options
494
- * @returns
495
- * @example
496
- * ```ts
497
- * Clerc.create()
498
- * .command("test", "test command", {
499
- * alias: "t",
500
- * flags: {
501
- * foo: {
502
- * alias: "f",
503
- * description: "foo flag",
504
- * }
505
- * }
506
- * })
507
- * ```
508
- * @example
509
- * ```ts
510
- * Clerc.create()
511
- * .command("", "root", {
512
- * flags: {
513
- * foo: {
514
- * alias: "f",
515
- * description: "foo flag",
516
- * }
517
- * }
518
- * })
519
- * ```
520
- */
521
- command<N extends string | RootType, O extends CommandOptions<[...P], A, F>, P extends string[] = string[], A extends MaybeArray$1<string | RootType> = MaybeArray$1<string | RootType>, F extends Flags = Flags>(c: CommandWithHandler<N, O & CommandOptions<[...P], A, F>>): this & Clerc<C & Record<N, Command<N, O>>, GF>;
522
- command<N extends string | RootType, O extends CommandOptions<[...P], A, F>, P extends string[] = string[], A extends MaybeArray$1<string | RootType> = MaybeArray$1<string | RootType>, F extends Flags = Flags>(name: N, description: string, options?: O & CommandOptions<[...P], A, F>): this & Clerc<C & Record<N, Command<N, O>>, GF>;
523
- /**
524
- * Register a global flag
525
- *
526
- * @param name
527
- * @param description
528
- * @param options
529
- * @returns
530
- * @example
531
- * ```ts
532
- * Clerc.create()
533
- * .flag("help", "help", {
534
- * alias: "h",
535
- * type: Boolean,
536
- * })
537
- * ```
538
- */
539
- flag<N extends string, O extends GlobalFlagOption>(name: N, description: string, options: O): this & Clerc<C, GF & Record<N, O>>;
540
- /**
541
- * Register a handler
542
- *
543
- * @param name
544
- * @param handler
545
- * @returns
546
- * @example
547
- * ```ts
548
- * Clerc.create()
549
- * .command("test", "test command")
550
- * .on("test", (ctx) => {
551
- * console.log(ctx);
552
- * })
553
- * ```
554
- */
555
- on<K extends LiteralUnion<keyof CM, string | RootType>, CM extends this["_commands"] = this["_commands"]>(name: K, handler: Handler<CM, K, this["_flags"]>): this;
556
- /**
557
- * Use a plugin
558
- *
559
- * @param plugin
560
- * @returns
561
- * @example
562
- * ```ts
563
- * Clerc.create()
564
- * .use(plugin)
565
- * ```
566
- */
567
- use<T extends Clerc, U extends Clerc>(plugin: Plugin<T, U>): this & Clerc<C & U["_commands"]> & U;
568
- /**
569
- * Register a inspector
570
- *
571
- * @param inspector
572
- * @returns
573
- * @example
574
- * ```ts
575
- * Clerc.create()
576
- * .inspector((ctx, next) => {
577
- * console.log(ctx);
578
- * next();
579
- * })
580
- * ```
581
- */
582
- inspector(inspector: Inspector): this;
583
- /**
584
- * Parse the command line arguments
585
- *
586
- * @param args
587
- * @param optionsOrArgv
588
- * @returns
589
- * @example
590
- * ```ts
591
- * Clerc.create()
592
- * .parse(process.argv.slice(2)) // Optional
593
- * ```
594
- */
595
- parse(optionsOrArgv?: string[] | ParseOptions): this;
596
- /**
597
- * Run matched command
598
- *
599
- * @returns
600
- * @example
601
- * ```ts
602
- * Clerc.create()
603
- * .parse({ run: false })
604
- * .runMatchedCommand()
605
- * ```
606
- */
607
- runMatchedCommand(): this;
608
- }
609
-
610
- declare class CommandExistsError extends Error {
611
- commandName: string;
612
- constructor(commandName: string, t: TranslateFn);
613
- }
614
- declare class NoSuchCommandError extends Error {
615
- commandName: string;
616
- constructor(commandName: string, t: TranslateFn);
617
- }
618
- declare class NoCommandGivenError extends Error {
619
- constructor(t: TranslateFn);
620
- }
621
- declare class CommandNameConflictError extends Error {
622
- n1: string;
623
- n2: string;
624
- constructor(n1: string, n2: string, t: TranslateFn);
625
- }
626
- declare class NameNotSetError extends Error {
627
- constructor(t: TranslateFn);
628
- }
629
- declare class DescriptionNotSetError extends Error {
630
- constructor(t: TranslateFn);
631
- }
632
- declare class VersionNotSetError extends Error {
633
- constructor(t: TranslateFn);
634
- }
635
- declare class InvalidCommandNameError extends Error {
636
- commandName: string;
637
- constructor(commandName: string, t: TranslateFn);
638
- }
639
- declare class LocaleNotCalledFirstError extends Error {
640
- constructor(t: TranslateFn);
641
- }
642
-
643
- type MaybeArray<T> = T | T[];
644
-
645
- declare const definePlugin: <T extends Clerc<{}, {}>, U extends Clerc<{}, {}>>(p: Plugin<T, U>) => Plugin<T, U>;
646
- declare const defineHandler: <C extends Clerc<{}, {}>, K extends keyof C["_commands"]>(_cli: C, _key: K, handler: Handler<C["_commands"], K>) => Handler<C["_commands"], K>;
647
- declare const defineInspector: <C extends Clerc<{}, {}>>(_cli: C, inspector: Inspector<C["_commands"]>) => Inspector<C["_commands"]>;
648
- declare const defineCommand: <N extends string | typeof Root, O extends CommandOptions<[...P], MaybeArray<string | typeof Root>, Flags>, P extends string[]>(command: Command<N, O & CommandOptions<[...P], MaybeArray<string | typeof Root>, Flags>>, handler?: HandlerInCommand<HandlerContext<Record<N, Command<N, O>> & Record<never, never>, N, {}>> | undefined) => CommandWithHandler<N, O & CommandOptions<[...P], MaybeArray<string | typeof Root>, Flags>>;
649
-
650
- declare function resolveFlattenCommands(commands: Commands, t: TranslateFn): Map<string[] | typeof Root, CommandAlias>;
651
- declare function resolveCommand(commands: Commands, argv: string[], t: TranslateFn): [Command<string | RootType> | undefined, string[] | RootType | undefined];
652
- declare const resolveArgv: () => string[];
653
- declare function compose(inspectors: Inspector[]): (ctx: InspectorContext) => void;
654
- declare const isValidName: (name: CommandType) => boolean;
655
- declare const withBrackets: (s: string, isOptional?: boolean) => string;
656
- declare const formatCommandName: (name: string | string[] | RootType) => string;
657
- declare const detectLocale: () => string;
658
- declare const stripFlags: (argv: string[]) => string[];
659
-
660
- interface CompletionsPluginOptions {
661
- command?: boolean;
662
- }
663
- declare const completionsPlugin: (options?: CompletionsPluginOptions) => Plugin<Clerc<{}, {}>, Clerc<{}, {}>>;
664
-
665
- declare const friendlyErrorPlugin: () => Plugin<Clerc<{}, {}>, Clerc<{}, {}>>;
666
-
667
- interface BlockSection {
668
- type?: "block";
669
- title: string;
670
- body: string[];
671
- }
672
- interface InlineSection {
673
- type: "inline";
674
- items: {
675
- title: string;
676
- body: string;
677
- }[];
678
- }
679
- type Section = BlockSection | InlineSection;
680
- interface Renderers {
681
- renderSections?: (sections: Section[]) => Section[];
682
- renderFlagName?: (name: string) => string;
683
- renderType?: (type: any, hasDefault: boolean) => string;
684
- renderDefault?: (default_: any) => string;
685
- }
686
-
687
- declare module "@clerc/core" {
688
- interface CommandCustomProperties {
689
- help?: {
690
- renderers?: Renderers;
691
- examples?: [string, string][];
692
- notes?: string[];
693
- };
694
- }
695
- }
696
- interface HelpPluginOptions {
697
- /**
698
- * Whether to register the help command.
699
- *
700
- * @default true
701
- */
702
- command?: boolean;
703
- /**
704
- * Whether to register the global help flag.
705
- *
706
- * @default true
707
- */
708
- flag?: boolean;
709
- /**
710
- * Whether to show help when no command is specified.
711
- *
712
- * @default true
713
- */
714
- showHelpWhenNoCommand?: boolean;
715
- /**
716
- * Global notes.
717
- */
718
- notes?: string[];
719
- /**
720
- * Global examples.
721
- */
722
- examples?: [string, string][];
723
- /**
724
- * Banner.
725
- */
726
- banner?: string;
727
- /**
728
- * Renderers.
729
- */
730
- renderers?: Renderers;
731
- }
732
- declare const helpPlugin: ({ command, flag, showHelpWhenNoCommand, notes, examples, banner, renderers, }?: HelpPluginOptions) => Plugin<Clerc<{}, {}>, Clerc<{}, {}>>;
733
-
734
- declare const notFoundPlugin: () => Plugin<Clerc<{}, {}>, Clerc<{}, {}>>;
735
-
736
- declare const strictFlagsPlugin: () => Plugin<Clerc<{}, {}>, Clerc<{}, {}>>;
737
-
738
- interface VersionPluginOptions {
739
- /**
740
- * Whether to register the help command.
741
- *
742
- * @default true
743
- */
744
- command?: boolean;
745
- /**
746
- * Whether to register the global help flag.
747
- *
748
- * @default true
749
- */
750
- flag?: boolean;
751
- }
752
- declare const versionPlugin: ({ command, flag, }?: VersionPluginOptions) => Plugin<Clerc<{}, {}>, Clerc<{}, {}>>;
753
-
754
- export { Clerc, Command, CommandAlias, CommandCustomProperties, CommandExistsError, CommandNameConflictError, CommandOptions, CommandType, CommandWithHandler, Commands, CompletionsPluginOptions, DescriptionNotSetError, FallbackType, Flag, FlagOptions, Flags, GlobalFlagOption, GlobalFlagOptions, Handler, HandlerContext, HandlerInCommand, HelpPluginOptions, I18N, Inspector, InspectorContext, InspectorFn, InspectorObject, InvalidCommandNameError, LocaleNotCalledFirstError, Locales, MakeEventMap, NameNotSetError, NoCommandGivenError, NoSuchCommandError, ParseOptions, Plugin, Root, RootType, TranslateFn, VersionNotSetError, completionsPlugin, compose, defineCommand, defineHandler, defineInspector, definePlugin, detectLocale, formatCommandName, friendlyErrorPlugin, helpPlugin, isValidName, notFoundPlugin, resolveArgv, resolveCommand, resolveFlattenCommands, strictFlagsPlugin, stripFlags, versionPlugin, withBrackets };
1
+ export * from '@clerc/core';
2
+ export * from '@clerc/plugin-completions';
3
+ export * from '@clerc/plugin-friendly-error';
4
+ export * from '@clerc/plugin-help';
5
+ export * from '@clerc/plugin-not-found';
6
+ export * from '@clerc/plugin-strict-flags';
7
+ export * from '@clerc/plugin-version';
package/dist/index.js CHANGED
@@ -1,76 +1,7 @@
1
- import{format as Wu}from"node:util";import WD from"tty";import Pu from"node:tty";const Hu=D=>Array.isArray(D)?D:[D],PD=D=>D.replace(/[\W_]([a-z\d])?/gi,(e,t)=>t?t.toUpperCase():""),HD=(D,e)=>e.length!==D.length?!1:D.every((t,n)=>t===e[n]),UD=(D,e)=>e.length>D.length?!1:HD(D.slice(0,e.length),e);function Eu(D){return D!==null&&typeof D=="object"}function hu(D,e,t=".",n){if(!Eu(e))return hu(D,{},t,n);const s=Object.assign({},e);for(const r in D){if(r==="__proto__"||r==="constructor")continue;const u=D[r];u!=null&&(n&&n(s,r,u,t)||(Array.isArray(u)&&Array.isArray(s[r])?s[r]=[...u,...s[r]]:Eu(u)&&Eu(s[r])?s[r]=hu(u,s[r],(t?`${t}.`:"")+r.toString(),n):s[r]=u))}return s}function zD(D){return(...e)=>e.reduce((t,n)=>hu(t,n,"",D),{})}const qD=zD();class YD{constructor(){this.listenerMap={},this.wildcardListeners=new Set}on(e,t){return e==="*"?(this.wildcardListeners.add(t),this):(this.listenerMap[e]||(this.listenerMap[e]=new Set),this.listenerMap[e].add(t),this)}emit(e,...t){return this.listenerMap[e]&&(this.wildcardListeners.forEach(n=>n.apply(null,[e,...t])),this.listenerMap[e].forEach(n=>n(...t))),this}off(e,t){var n,s;return e===void 0?(this.listenerMap={},this.wildcardListeners.clear(),this):e==="*"?(t?this.wildcardListeners.delete(t):this.wildcardListeners.clear(),this):(t?(n=this.listenerMap[e])==null||n.delete(t):(s=this.listenerMap[e])==null||s.clear(),this)}}const GD="known-flag",ZD="unknown-flag",VD="argument",{stringify:q}=JSON,JD=/\B([A-Z])/g,KD=D=>D.replace(JD,"-$1").toLowerCase(),{hasOwnProperty:QD}=Object.prototype,Y=(D,e)=>QD.call(D,e),XD=D=>Array.isArray(D),Uu=D=>typeof D=="function"?[D,!1]:XD(D)?[D[0],!0]:Uu(D.type),ue=(D,e)=>D===Boolean?e!=="false":e,De=(D,e)=>typeof e=="boolean"?e:D===Number&&e===""?Number.NaN:D(e),ee=/[\s.:=]/,te=D=>{const e=`Flag name ${q(D)}`;if(D.length===0)throw new Error(`${e} cannot be empty`);if(D.length===1)throw new Error(`${e} must be longer than a character`);const t=D.match(ee);if(t)throw new Error(`${e} cannot contain ${q(t==null?void 0:t[0])}`)},ne=D=>{const e={},t=(n,s)=>{if(Y(e,n))throw new Error(`Duplicate flags named ${q(n)}`);e[n]=s};for(const n in D){if(!Y(D,n))continue;te(n);const s=D[n],r=[[],...Uu(s),s];t(n,r);const u=KD(n);if(n!==u&&t(u,r),"alias"in s&&typeof s.alias=="string"){const{alias:o}=s,F=`Flag alias ${q(o)} for flag ${q(n)}`;if(o.length===0)throw new Error(`${F} cannot be empty`);if(o.length>1)throw new Error(`${F} must be a single character`);t(o,r)}}return e},re=(D,e)=>{const t={};for(const n in D){if(!Y(D,n))continue;const[s,,r,u]=e[n];if(s.length===0&&"default"in u){let{default:o}=u;typeof o=="function"&&(o=o()),t[n]=o}else t[n]=r?s:s.pop()}return t},ru="--",se=/[.:=]/,oe=/^-{1,2}\w/,Fe=D=>{if(!oe.test(D))return;const e=!D.startsWith(ru);let t=D.slice(e?1:2),n;const s=t.match(se);if(s){const{index:r}=s;n=t.slice(r+1),t=t.slice(0,r)}return[t,n,e]},ae=(D,{onFlag:e,onArgument:t})=>{let n;const s=(r,u)=>{if(typeof n!="function")return!0;n(r,u),n=void 0};for(let r=0;r<D.length;r+=1){const u=D[r];if(u===ru){s();const F=D.slice(r+1);t==null||t(F,[r],!0);break}const o=Fe(u);if(o){if(s(),!e)continue;const[F,i,C]=o;if(C)for(let a=0;a<F.length;a+=1){s();const l=a===F.length-1;n=e(F[a],l?i:void 0,[r,a+1,l])}else n=e(F,i,[r])}else s(u,[r])&&(t==null||t([u],[r]))}s()},ie=(D,e)=>{for(const[t,n,s]of e.reverse()){if(n){const r=D[t];let u=r.slice(0,n);if(s||(u+=r.slice(n+1)),u!=="-"){D[t]=u;continue}}D.splice(t,1)}},zu=(D,e=process.argv.slice(2),{ignore:t}={})=>{const n=[],s=ne(D),r={},u=[];return u[ru]=[],ae(e,{onFlag(o,F,i){const C=Y(s,o);if(!(t!=null&&t(C?GD:ZD,o,F))){if(C){const[a,l]=s[o],c=ue(l,F),E=(m,p)=>{n.push(i),p&&n.push(p),a.push(De(l,m||""))};return c===void 0?E:E(c)}Y(r,o)||(r[o]=[]),r[o].push(F===void 0?!0:F),n.push(i)}},onArgument(o,F,i){t!=null&&t(VD,e[F[0]])||(u.push(...o),i?(u[ru]=o,e.splice(F[0])):n.push(F))}}),ie(e,n),{flags:re(D,s),unknownFlags:r,_:u}},G=JSON.stringify;class qu extends Error{constructor(e,t){super(t("core.commandExists",G(e))),this.commandName=e}}class su extends Error{constructor(e,t){super(t("core.noSuchCommand",G(e))),this.commandName=e}}class ou extends Error{constructor(e){super(e("core.noCommandGiven"))}}class Yu extends Error{constructor(e,t,n){super(n("core.commandNameConflict",G(e),G(t))),this.n1=e,this.n2=t}}class Gu extends Error{constructor(e){super(e("core.nameNotSet"))}}class Zu extends Error{constructor(e){super(e("core.descriptionNotSet"))}}class Vu extends Error{constructor(e){super(e("core.versionNotSet"))}}class Ju extends Error{constructor(e,t){super(t("core.badNameFormat",G(e))),this.commandName=e}}class mu extends Error{constructor(e){super(e("core.localeMustBeCalledFirst"))}}const Ce={en:{"core.commandExists":'Command "%s" exists.',"core.noSuchCommand":"No such command: %s.","core.noCommandGiven":"No command given.","core.commandNameConflict":"Command name %s conflicts with %s. Maybe caused by alias.","core.nameNotSet":"Name not set.","core.descriptionNotSet":"Description not set.","core.versionNotSet":"Version not set.","core.badNameFormat":"Bad name format: %s.","core.localeMustBeCalledFirst":"locale() or fallbackLocale() must be called at first.","core.cliParseMustBeCalled":"cli.parse() must be called.","core.spreadParameterMustBeLast":"Invalid Parameter: Spread parameter %s must be last.","core.requiredParameterCannotComeAfterOptionalParameter":"Invalid Parameter: Required parameter %s cannot come after optional parameter %s.","core.parameterMustBeWrappedInBrackets":"Invalid Parameter: Parameter %s must be wrapped in <> (required parameter) or [] (optional parameter).","core.parameterIsUsedMoreThanOnce":"Invalid Parameter: Parameter %s is used more than once.","core.missingRequiredParameter":"Missing required parameter %s."},"zh-CN":{"core.commandExists":'\u547D\u4EE4 "%s" \u5DF2\u5B58\u5728\u3002',"core.noSuchCommand":"\u627E\u4E0D\u5230\u547D\u4EE4: %s\u3002","core.noCommandGiven":"\u6CA1\u6709\u8F93\u5165\u547D\u4EE4\u3002","core.commandNameConflict":"\u547D\u4EE4\u540D\u79F0 %s \u548C %s \u51B2\u7A81\u3002 \u53EF\u80FD\u662F\u7531\u4E8E\u522B\u540D\u5BFC\u81F4\u7684\u3002","core.nameNotSet":"\u672A\u8BBE\u7F6ECLI\u540D\u79F0\u3002","core.descriptionNotSet":"\u672A\u8BBE\u7F6ECLI\u63CF\u8FF0\u3002","core.versionNotSet":"\u672A\u8BBE\u7F6ECLI\u7248\u672C\u3002","core.badNameFormat":"\u9519\u8BEF\u7684\u547D\u4EE4\u540D\u5B57\u683C\u5F0F: %s\u3002","core.localeMustBeCalledFirst":"locale() \u6216 fallbackLocale() \u5FC5\u987B\u5728\u6700\u5F00\u59CB\u8C03\u7528\u3002","core.cliParseMustBeCalled":"cli.parse() \u5FC5\u987B\u88AB\u8C03\u7528\u3002","core.spreadParameterMustBeLast":"\u4E0D\u5408\u6CD5\u7684\u53C2\u6570: \u5C55\u5F00\u53C2\u6570 %s \u5FC5\u987B\u5728\u6700\u540E\u3002","core.requiredParameterCannotComeAfterOptionalParameter":"\u4E0D\u5408\u6CD5\u7684\u53C2\u6570: \u5FC5\u586B\u53C2\u6570 %s \u4E0D\u80FD\u5728\u53EF\u9009\u53C2\u6570 %s \u4E4B\u540E\u3002","core.parameterMustBeWrappedInBrackets":"\u4E0D\u5408\u6CD5\u7684\u53C2\u6570: \u53C2\u6570 %s \u5FC5\u987B\u88AB <> (\u5FC5\u586B\u53C2\u6570) \u6216 [] (\u53EF\u9009\u53C2\u6570) \u5305\u88F9\u3002","core.parameterIsUsedMoreThanOnce":"\u4E0D\u5408\u6CD5\u7684\u53C2\u6570: \u53C2\u6570 %s \u88AB\u4F7F\u7528\u4E86\u591A\u6B21\u3002","core.missingRequiredParameter":"\u7F3A\u5C11\u5FC5\u586B\u53C2\u6570 %s\u3002"}},{stringify:P}=JSON;function pu(D,e){const t=[];let n,s;for(const r of D){if(s)throw new Error(e("core.spreadParameterMustBeLast",P(s)));const u=r[0],o=r[r.length-1];let F;if(u==="<"&&o===">"&&(F=!0,n))throw new Error(e("core.requiredParameterMustBeBeforeOptional",P(r),P(n)));if(u==="["&&o==="]"&&(F=!1,n=r),F===void 0)throw new Error(e("core.parameterMustBeWrappedInBrackets",P(r)));let i=r.slice(1,-1);const C=i.slice(-3)==="...";C&&(s=r,i=i.slice(0,-3)),t.push({name:i,required:F,spread:C})}return t}function du(D,e,t,n){for(let s=0;s<e.length;s+=1){const{name:r,required:u,spread:o}=e[s],F=PD(r);if(F in D)throw new Error(n("core.parameterIsUsedMoreThanOnce",P(r)));const i=o?t.slice(s):t[s];if(o&&(s=e.length),u&&(!i||o&&i.length===0))throw new Error(n("core.missingRequiredParameter",P(r)));D[F]=i}}const Ku=typeof Deno!="undefined",le=typeof process!="undefined"&&!Ku,ce=process.versions.electron&&!process.defaultApp;function Qu(D,e,t,n){if(t.alias){const s=Hu(t.alias);for(const r of s){if(r in e)throw new Yu(e[r].name,t.name,n);D.set(typeof r=="symbol"?r:r.split(" "),{...t,__isAlias:!0})}}}function Bu(D,e){const t=new Map;D[B]&&(t.set(B,D[B]),Qu(t,D,D[B],e));for(const n of Object.values(D))Qu(t,D,n,e),t.set(n.name.split(" "),n);return t}function Xu(D,e,t){var n;const s=Bu(D,t);for(const[r,u]of s.entries()){const o=zu((n=u==null?void 0:u.flags)!=null?n:{},[...e]),{_:F}=o;if(r!==B&&UD(F,r))return[u,r]}return s.has(B)?[s.get(B),B]:[void 0,void 0]}const fu=()=>le?process.argv.slice(ce?1:2):Ku?Deno.args:[];function uD(D){const e={pre:[],normal:[],post:[]};for(const n of D){const s=typeof n=="object"?n:{fn:n},{enforce:r,fn:u}=s;r==="post"||r==="pre"?e[r].push(u):e.normal.push(u)}const t=[...e.pre,...e.normal,...e.post];return n=>{return s(0);function s(r){const u=t[r];return u(n,s.bind(null,r+1))}}}const Ee=/\s\s+/,DD=D=>D===B?!0:!(D.startsWith(" ")||D.endsWith(" "))&&!Ee.test(D),eD=(D,e)=>e?`[${D}]`:`<${D}>`,he="<Root>",H=D=>Array.isArray(D)?D.join(" "):typeof D=="string"?D:he,tD=()=>process.env.CLERC_LOCALE?process.env.CLERC_LOCALE:Intl.DateTimeFormat().resolvedOptions().locale,nD=D=>D.filter(e=>!e.startsWith("-"));var Au=(D,e,t)=>{if(!e.has(D))throw TypeError("Cannot "+t)},h=(D,e,t)=>(Au(D,e,"read from private field"),t?t.call(D):e.get(D)),A=(D,e,t)=>{if(e.has(D))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(D):e.set(D,t)},w=(D,e,t,n)=>(Au(D,e,"write to private field"),n?n.call(D,t):e.set(D,t),t),g=(D,e,t)=>(Au(D,e,"access private method"),t),O,N,T,Z,V,Fu,J,U,K,Q,X,uu,Du,L,gu,rD,$u,sD,wu,oD,b,_,yu,FD,Su,aD,vu,iD,au,bu,xu,CD;const B=Symbol.for("Clerc.Root"),lD=class{constructor(D,e,t){A(this,gu),A(this,$u),A(this,wu),A(this,b),A(this,yu),A(this,Su),A(this,vu),A(this,au),A(this,xu),A(this,O,""),A(this,N,""),A(this,T,""),A(this,Z,[]),A(this,V,{}),A(this,Fu,new YD),A(this,J,{}),A(this,U,new Set),A(this,K,void 0),A(this,Q,[]),A(this,X,!1),A(this,uu,"en"),A(this,Du,"en"),A(this,L,{}),this.i18n={add:n=>{w(this,L,qD(h(this,L),n))},t:(n,...s)=>{const r=h(this,L)[h(this,Du)]||h(this,L)[h(this,uu)],u=h(this,L)[h(this,uu)];return r[n]?Wu(r[n],...s):u[n]?Wu(u[n],...s):void 0}},w(this,O,D!=null?D:h(this,O)),w(this,N,e!=null?e:h(this,N)),w(this,T,t!=null?t:h(this,T)),w(this,Du,tD()),g(this,wu,oD).call(this)}get _name(){return h(this,O)}get _description(){return h(this,N)}get _version(){return h(this,T)}get _inspectors(){return h(this,Z)}get _commands(){return h(this,V)}get _flags(){return h(this,J)}static create(D,e,t){return new lD(D,e,t)}name(D){return g(this,b,_).call(this),w(this,O,D),this}description(D){return g(this,b,_).call(this),w(this,N,D),this}version(D){return g(this,b,_).call(this),w(this,T,D),this}locale(D){if(h(this,X))throw new mu(this.i18n.t);return w(this,Du,D),this}fallbackLocale(D){if(h(this,X))throw new mu(this.i18n.t);return w(this,uu,D),this}errorHandler(D){return h(this,Q).push(D),this}command(D,e,t={}){return g(this,au,bu).call(this,()=>g(this,yu,FD).call(this,D,e,t)),this}flag(D,e,t){return h(this,J)[D]={description:e,...t},this}on(D,e){return h(this,Fu).on(D,e),this}use(D){return g(this,b,_).call(this),D.setup(this)}inspector(D){return g(this,b,_).call(this),h(this,Z).push(D),this}parse(D=fu()){g(this,b,_).call(this);const{argv:e,run:t}=Array.isArray(D)?{argv:D,run:!0}:{argv:fu(),...D};return w(this,K,[...e]),g(this,Su,aD).call(this),t&&this.runMatchedCommand(),this}runMatchedCommand(){return g(this,au,bu).call(this,()=>g(this,xu,CD).call(this)),process.title=h(this,O),this}};let me=lD;O=new WeakMap,N=new WeakMap,T=new WeakMap,Z=new WeakMap,V=new WeakMap,Fu=new WeakMap,J=new WeakMap,U=new WeakMap,K=new WeakMap,Q=new WeakMap,X=new WeakMap,uu=new WeakMap,Du=new WeakMap,L=new WeakMap,gu=new WeakSet,rD=function(){return h(this,U).has(B)},$u=new WeakSet,sD=function(){return Object.prototype.hasOwnProperty.call(this._commands,B)},wu=new WeakSet,oD=function(){this.i18n.add(Ce)},b=new WeakSet,_=function(){w(this,X,!0)},yu=new WeakSet,FD=function(D,e,t={}){g(this,b,_).call(this);const{t:n}=this.i18n,s=(C=>!(typeof C=="string"||C===B))(D),r=s?D.name:D;if(!DD(r))throw new Ju(r,n);const{handler:u=void 0,...o}=s?D:{name:r,description:e,...t},F=[o.name],i=o.alias?Hu(o.alias):[];o.alias&&F.push(...i);for(const C of F)if(h(this,U).has(C))throw new qu(H(C),n);return h(this,V)[r]=o,h(this,U).add(o.name),i.forEach(C=>h(this,U).add(C)),s&&u&&this.on(D.name,u),this},Su=new WeakSet,aD=function(){const{t:D}=this.i18n;if(!h(this,O))throw new Gu(D);if(!h(this,N))throw new Zu(D);if(!h(this,T))throw new Vu(D)},vu=new WeakSet,iD=function(D){var e;const t=h(this,K),{t:n}=this.i18n,[s,r]=D(),u=!!s,o={...h(this,J),...s==null?void 0:s.flags},F=zu(o,[...t]),{_:i,flags:C,unknownFlags:a}=F;let l=!u||s.name===B?i:i.slice(s.name.split(" ").length),c=(e=s==null?void 0:s.parameters)!=null?e:[];const E=c.indexOf("--"),m=c.slice(E+1)||[],p=Object.create(null);if(E>-1&&m.length>0){c=c.slice(0,E);const d=i["--"];l=l.slice(0,-d.length||void 0),du(p,pu(c,n),l,n),du(p,pu(m,n),d,n)}else du(p,pu(c,n),l,n);const y={...C,...a};return{name:s==null?void 0:s.name,called:Array.isArray(r)?r.join(" "):r,resolved:u,hasRootOrAlias:h(this,gu,rD),hasRoot:h(this,$u,sD),raw:{...F,parameters:l,mergedFlags:y},parameters:p,flags:C,unknownFlags:a,cli:this}},au=new WeakSet,bu=function(D){try{D()}catch(e){if(h(this,Q).length>0)h(this,Q).forEach(t=>t(e));else throw e}},xu=new WeakSet,CD=function(){g(this,b,_).call(this);const{t:D}=this.i18n,e=h(this,K);if(!e)throw new Error(D("core.cliParseMustBeCalled"));const t=()=>Xu(h(this,V),e,D),n=()=>g(this,vu,iD).call(this,t),s={enforce:"post",fn:u=>{const[o]=t(),F=nD(e).join(" ");if(!o)throw F?new su(F,D):new ou(D);h(this,Fu).emit(o.name,u)}},r=[...h(this,Z),s];uD(r)(n())};const I=D=>D,pe=(D,e,t)=>t,de=(D,e)=>e,Be=(D,e)=>({...D,handler:e}),fe=D=>`
2
- ${D})
3
- cmd+="__${D}"
4
- ;;`,Ae=D=>{const{cli:e}=D,{_name:t,_commands:n}=e;return`_${t}() {
5
- local i cur prev opts cmds
6
- COMPREPLY=()
7
- cur="\${COMP_WORDS[COMP_CWORD]}"
8
- prev="\${COMP_WORDS[COMP_CWORD-1]}"
9
- cmd=""
10
- opts=""
11
-
12
- for i in \${COMP_WORDS[@]}
13
- do
14
- case "\${i}" in
15
- "$1")
16
- cmd="${t}"
17
- ;;
18
- ${Object.keys(n).map(fe).join("")}
19
- *)
20
- ;;
21
- esac
22
- done
23
- }
24
-
25
- complete -F _${t} -o bashdefault -o default ${t}
26
- `},cD=D=>D.replace(/([A-Z])/g,(e,t)=>`-${t.toLowerCase()}`),ED=D=>D.length<=1?`-${D}`:`--${cD(D)}`,hD="(No Description)",ge=D=>`[CompletionResult]::new('${D.name}', '${D.name}', [CompletionResultType]::ParameterValue, '${D.description}')`,$e=D=>{var e;return Object.entries((e=D.flags)!=null?e:{}).map(([t,n])=>{const s=[`[CompletionResult]::new('${ED(t)}', '${cD(t)}', [CompletionResultType]::ParameterName, '${D.flags[t].description||hD}')`];return n!=null&&n.alias&&s.push(`[CompletionResult]::new('${ED(n.alias)}', '${n.alias}', [CompletionResultType]::ParameterName, '${D.flags[t].description||hD}')`),s.join(`
27
- `)}).join(`
28
- `)},we=D=>{const{cli:e}=D,{_name:t,_commands:n}=e;return`using namespace System.Management.Automation
29
- using namespace System.Management.Automation.Language
30
-
31
- Register-ArgumentCompleter -Native -CommandName '${t}' -ScriptBlock {
32
- param($wordToComplete, $commandAst, $cursorPosition)
33
-
34
- $commandElements = $commandAst.CommandElements
35
- $command = @(
36
- '${t}'
37
- for ($i = 1; $i -lt $commandElements.Count; $i++) {
38
- $element = $commandElements[$i]
39
- if ($element -isnot [StringConstantExpressionAst] -or
40
- $element.StringConstantType -ne [StringConstantType]::BareWord -or
41
- $element.Value.StartsWith('-') -or
42
- $element.Value -eq $wordToComplete) {
43
- break
44
- }
45
- $element.Value
46
- }) -join ';'
47
-
48
- $completions = @(switch ($command) {
49
- '${t}' {
50
- ${Object.entries(n).map(([s,r])=>ge(r)).join(`
51
- `)}
52
- break
53
- }
54
- ${Object.entries(n).map(([s,r])=>`'${t};${s.split(" ").join(";")}' {
55
- ${$e(r)}
56
- break
57
- }`).join(`
58
- `)}
59
- })
60
-
61
- $completions.Where{ $_.CompletionText -like "$wordToComplete*" } |
62
- Sort-Object -Property ListItemText
63
- }`},mD={bash:Ae,pwsh:we},ye=(D={})=>I({setup:e=>{const{command:t=!0}=D;return t&&(e=e.command("completions","Print shell completions to stdout",{flags:{shell:{description:"Shell type",type:String,default:""}},parameters:["[shell]"]}).on("completions",n=>{var s;if(!e._name)throw new Error("CLI name is not defined!");const r=String((s=n.parameters.shell)!=null?s:n.flags.shell);if(!r)throw new Error("Missing shell name");if(r in mD)process.stdout.write(mD[r](n));else throw new Error(`No such shell: ${r}`)})),e}});function Se(D){return D&&D.__esModule&&Object.prototype.hasOwnProperty.call(D,"default")?D.default:D}var _u={exports:{}};let ve=WD,be=!("NO_COLOR"in process.env||process.argv.includes("--no-color"))&&("FORCE_COLOR"in process.env||process.argv.includes("--color")||process.platform==="win32"||ve.isatty(1)&&process.env.TERM!=="dumb"||"CI"in process.env),f=(D,e,t=D)=>n=>{let s=""+n,r=s.indexOf(e,D.length);return~r?D+pD(s,e,t,r)+e:D+s+e},pD=(D,e,t,n)=>{let s=D.substring(0,n)+t,r=D.substring(n+e.length),u=r.indexOf(e);return~u?s+pD(r,e,t,u):s+r},dD=(D=be)=>({isColorSupported:D,reset:D?e=>`\x1B[0m${e}\x1B[0m`:String,bold:D?f("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"):String,dim:D?f("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"):String,italic:D?f("\x1B[3m","\x1B[23m"):String,underline:D?f("\x1B[4m","\x1B[24m"):String,inverse:D?f("\x1B[7m","\x1B[27m"):String,hidden:D?f("\x1B[8m","\x1B[28m"):String,strikethrough:D?f("\x1B[9m","\x1B[29m"):String,black:D?f("\x1B[30m","\x1B[39m"):String,red:D?f("\x1B[31m","\x1B[39m"):String,green:D?f("\x1B[32m","\x1B[39m"):String,yellow:D?f("\x1B[33m","\x1B[39m"):String,blue:D?f("\x1B[34m","\x1B[39m"):String,magenta:D?f("\x1B[35m","\x1B[39m"):String,cyan:D?f("\x1B[36m","\x1B[39m"):String,white:D?f("\x1B[37m","\x1B[39m"):String,gray:D?f("\x1B[90m","\x1B[39m"):String,bgBlack:D?f("\x1B[40m","\x1B[49m"):String,bgRed:D?f("\x1B[41m","\x1B[49m"):String,bgGreen:D?f("\x1B[42m","\x1B[49m"):String,bgYellow:D?f("\x1B[43m","\x1B[49m"):String,bgBlue:D?f("\x1B[44m","\x1B[49m"):String,bgMagenta:D?f("\x1B[45m","\x1B[49m"):String,bgCyan:D?f("\x1B[46m","\x1B[49m"):String,bgWhite:D?f("\x1B[47m","\x1B[49m"):String});_u.exports=dD(),_u.exports.createColors=dD;var xe=_u.exports,k=Se(xe);function _e(D){return D.split(`
64
- `).splice(1).map(e=>e.trim().replace("file://",""))}function Me(D){return`
65
- ${_e(D).map(e=>` ${e.replace(/^at ([\s\S]+) \((.+)\)/,(t,n,s)=>k.gray(`at ${n} (${k.cyan(s)})`))}`).join(`
66
- `)}`}const Oe=/\r?\n/g;function Ne(D){return D.map(e=>typeof(e==null?void 0:e.stack)=="string"?[e.message,Me(e.stack)]:typeof e=="string"?e.split(Oe):e).flat()}function Te(D,e){const t=D.toUpperCase(),n=k[e];return k.bold(k.inverse(n(` ${t} `)))}function eu(D,e,{target:t=console.log,textColor:n,newline:s=!0}={}){const r=k[e],u=n?k[n]:r;return(...o)=>{const F=Ne(o),i=Te(D,e);for(const C of F)t(`${i} ${u(C)}${s?`
67
- `:""}}`)}}eu("log","gray"),eu("info","blue",{target:console.info}),eu("warn","yellow",{target:console.warn}),eu("success","green");const Le=eu("error","red",{target:console.error}),Ie=()=>I({setup:D=>D.errorHandler(e=>{Le(e.message),process.exit(1)})}),BD=D=>Array.isArray(D)?D:[D],ke=D=>D.replace(/([A-Z])/g,(e,t)=>`-${t.toLowerCase()}`),fD=D=>D.length<=1?`-${D}`:`--${ke(D)}`,Re=(D,e)=>e.length!==D.length?!1:D.every((t,n)=>t===e[n]);function je(D,e,t){if(e===B)return[D[B],B];const n=BD(e),s=Bu(D,t);let r,u;return s.forEach((o,F)=>{F===B||u===B||Re(n,F)&&(r=o,u=F)}),[r,u]}const We=Pu.WriteStream.prototype.hasColors(),R=(D,e)=>We?t=>"\x1B["+D+"m"+t+"\x1B["+e+"m":t=>t,AD=R(1,22),Pe=R(31,39),He=R(32,39),gD=R(33,39),Ue=R(34,39),$D=R(35,39),ze=R(36,39),qe={en:{"help.name":"Name:","help.version":"Version:","help.subcommand":"Subcommand:","help.commands":"Commands:","help.globalFlags":"Global Flags:","help.flags":"Flags:","help.description":"Description:","help.usage":"Usage:","help.examples":"Examples:","help.notes":"Notes:","help.noDescription":"(No description)","help.notes.1":"If no command is specified, show help for the CLI.","help.notes.2":"If a command is specified, show help for the command.","help.notes.3":"-h is an alias for --help.","help.examples.1":"Show help","help.examples.2":"Show help for a specific command","help.commandDescription":"Show help","help.default":"Default: %s"},"zh-CN":{"help.name":"\u540D\u79F0:","help.version":"\u7248\u672C:","help.subcommand":"\u5B50\u547D\u4EE4:","help.commands":"\u547D\u4EE4:","help.globalFlags":"\u5168\u5C40\u6807\u5FD7:","help.flags":"\u6807\u5FD7:","help.description":"\u63CF\u8FF0:","help.usage":"\u4F7F\u7528:","help.examples":"\u793A\u4F8B:","help.notes":"\u5907\u6CE8:","help.noDescription":"(\u65E0\u63CF\u8FF0)","help.notes.1":"\u5982\u679C\u6CA1\u6709\u6307\u5B9A\u5C55\u793A\u54EA\u4E2A\u547D\u4EE4\u7684\u5E2E\u52A9\u4FE1\u606F\uFF0C\u9ED8\u8BA4\u5C55\u793ACLI\u7684\u3002","help.notes.2":"\u5982\u679C\u6307\u5B9A\u4E86\u5219\u5C55\u793A\u8BE5\u547D\u4EE4\u5E2E\u52A9\u4FE1\u606F\u3002","help.notes.3":"-h \u662F --help \u7684\u4E00\u4E2A\u522B\u540D\u3002","help.examples.1":"\u5C55\u793A CLI \u7684\u5E2E\u52A9\u4FE1\u606F","help.examples.2":"\u5C55\u793A\u6307\u5B9A\u547D\u4EE4\u7684\u5E2E\u52A9\u4FE1\u606F","help.commandDescription":"\u5C55\u793A\u5E2E\u52A9\u4FE1\u606F","help.default":"\u9ED8\u8BA4\u503C: %s"}};function Ye({onlyFirst:D=!1}={}){const e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,D?void 0:"g")}function Ge(D){if(typeof D!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof D}\``);return D.replace(Ye(),"")}function Mu(D){return D&&D.__esModule&&Object.prototype.hasOwnProperty.call(D,"default")?D.default:D}var Ou={exports:{}};Ou.exports,function(D){var e={};D.exports=e,e.eastAsianWidth=function(n){var s=n.charCodeAt(0),r=n.length==2?n.charCodeAt(1):0,u=s;return 55296<=s&&s<=56319&&56320<=r&&r<=57343&&(s&=1023,r&=1023,u=s<<10|r,u+=65536),u==12288||65281<=u&&u<=65376||65504<=u&&u<=65510?"F":u==8361||65377<=u&&u<=65470||65474<=u&&u<=65479||65482<=u&&u<=65487||65490<=u&&u<=65495||65498<=u&&u<=65500||65512<=u&&u<=65518?"H":4352<=u&&u<=4447||4515<=u&&u<=4519||4602<=u&&u<=4607||9001<=u&&u<=9002||11904<=u&&u<=11929||11931<=u&&u<=12019||12032<=u&&u<=12245||12272<=u&&u<=12283||12289<=u&&u<=12350||12353<=u&&u<=12438||12441<=u&&u<=12543||12549<=u&&u<=12589||12593<=u&&u<=12686||12688<=u&&u<=12730||12736<=u&&u<=12771||12784<=u&&u<=12830||12832<=u&&u<=12871||12880<=u&&u<=13054||13056<=u&&u<=19903||19968<=u&&u<=42124||42128<=u&&u<=42182||43360<=u&&u<=43388||44032<=u&&u<=55203||55216<=u&&u<=55238||55243<=u&&u<=55291||63744<=u&&u<=64255||65040<=u&&u<=65049||65072<=u&&u<=65106||65108<=u&&u<=65126||65128<=u&&u<=65131||110592<=u&&u<=110593||127488<=u&&u<=127490||127504<=u&&u<=127546||127552<=u&&u<=127560||127568<=u&&u<=127569||131072<=u&&u<=194367||177984<=u&&u<=196605||196608<=u&&u<=262141?"W":32<=u&&u<=126||162<=u&&u<=163||165<=u&&u<=166||u==172||u==175||10214<=u&&u<=10221||10629<=u&&u<=10630?"Na":u==161||u==164||167<=u&&u<=168||u==170||173<=u&&u<=174||176<=u&&u<=180||182<=u&&u<=186||188<=u&&u<=191||u==198||u==208||215<=u&&u<=216||222<=u&&u<=225||u==230||232<=u&&u<=234||236<=u&&u<=237||u==240||242<=u&&u<=243||247<=u&&u<=250||u==252||u==254||u==257||u==273||u==275||u==283||294<=u&&u<=295||u==299||305<=u&&u<=307||u==312||319<=u&&u<=322||u==324||328<=u&&u<=331||u==333||338<=u&&u<=339||358<=u&&u<=359||u==363||u==462||u==464||u==466||u==468||u==470||u==472||u==474||u==476||u==593||u==609||u==708||u==711||713<=u&&u<=715||u==717||u==720||728<=u&&u<=731||u==733||u==735||768<=u&&u<=879||913<=u&&u<=929||931<=u&&u<=937||945<=u&&u<=961||963<=u&&u<=969||u==1025||1040<=u&&u<=1103||u==1105||u==8208||8211<=u&&u<=8214||8216<=u&&u<=8217||8220<=u&&u<=8221||8224<=u&&u<=8226||8228<=u&&u<=8231||u==8240||8242<=u&&u<=8243||u==8245||u==8251||u==8254||u==8308||u==8319||8321<=u&&u<=8324||u==8364||u==8451||u==8453||u==8457||u==8467||u==8470||8481<=u&&u<=8482||u==8486||u==8491||8531<=u&&u<=8532||8539<=u&&u<=8542||8544<=u&&u<=8555||8560<=u&&u<=8569||u==8585||8592<=u&&u<=8601||8632<=u&&u<=8633||u==8658||u==8660||u==8679||u==8704||8706<=u&&u<=8707||8711<=u&&u<=8712||u==8715||u==8719||u==8721||u==8725||u==8730||8733<=u&&u<=8736||u==8739||u==8741||8743<=u&&u<=8748||u==8750||8756<=u&&u<=8759||8764<=u&&u<=8765||u==8776||u==8780||u==8786||8800<=u&&u<=8801||8804<=u&&u<=8807||8810<=u&&u<=8811||8814<=u&&u<=8815||8834<=u&&u<=8835||8838<=u&&u<=8839||u==8853||u==8857||u==8869||u==8895||u==8978||9312<=u&&u<=9449||9451<=u&&u<=9547||9552<=u&&u<=9587||9600<=u&&u<=9615||9618<=u&&u<=9621||9632<=u&&u<=9633||9635<=u&&u<=9641||9650<=u&&u<=9651||9654<=u&&u<=9655||9660<=u&&u<=9661||9664<=u&&u<=9665||9670<=u&&u<=9672||u==9675||9678<=u&&u<=9681||9698<=u&&u<=9701||u==9711||9733<=u&&u<=9734||u==9737||9742<=u&&u<=9743||9748<=u&&u<=9749||u==9756||u==9758||u==9792||u==9794||9824<=u&&u<=9825||9827<=u&&u<=9829||9831<=u&&u<=9834||9836<=u&&u<=9837||u==9839||9886<=u&&u<=9887||9918<=u&&u<=9919||9924<=u&&u<=9933||9935<=u&&u<=9953||u==9955||9960<=u&&u<=9983||u==10045||u==10071||10102<=u&&u<=10111||11093<=u&&u<=11097||12872<=u&&u<=12879||57344<=u&&u<=63743||65024<=u&&u<=65039||u==65533||127232<=u&&u<=127242||127248<=u&&u<=127277||127280<=u&&u<=127337||127344<=u&&u<=127386||917760<=u&&u<=917999||983040<=u&&u<=1048573||1048576<=u&&u<=1114109?"A":"N"},e.characterLength=function(n){var s=this.eastAsianWidth(n);return s=="F"||s=="W"||s=="A"?2:1};function t(n){return n.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}e.length=function(n){for(var s=t(n),r=0,u=0;u<s.length;u++)r=r+this.characterLength(s[u]);return r},e.slice=function(n,s,r){textLen=e.length(n),s=s||0,r=r||1,s<0&&(s=textLen+s),r<0&&(r=textLen+r);for(var u="",o=0,F=t(n),i=0;i<F.length;i++){var C=F[i],a=e.length(C);if(o>=s-(a==2?1:0))if(o+a<=r)u+=C;else break;o+=a}return u}}(Ou);var Ze=Ou.exports,Ve=Mu(Ze),Je=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},Ke=Mu(Je);function Qe(D,e={}){if(typeof D!="string"||D.length===0||(e={ambiguousIsNarrow:!0,...e},D=Ge(D),D.length===0))return 0;D=D.replace(Ke()," ");const t=e.ambiguousIsNarrow?1:2;let n=0;for(const s of D){const r=s.codePointAt(0);if(!(r<=31||r>=127&&r<=159||r>=768&&r<=879))switch(Ve.eastAsianWidth(s)){case"F":case"W":n+=2;break;case"A":n+=t;break;default:n+=1}}return n}var Xe=function(D,e){e||(e={});var t=e.hsep===void 0?" ":e.hsep,n=e.align||[],s=e.stringLength||function(F){return String(F).length},r=yD(D,function(F,i){return SD(i,function(C,a){var l=wD(C);(!F[a]||l>F[a])&&(F[a]=l)}),F},[]),u=iu(D,function(F){return iu(F,function(i,C){var a=String(i);if(n[C]==="."){var l=wD(a),c=r[C]+(/\./.test(a)?1:2)-(s(a)-l);return a+Array(c).join(" ")}else return a})}),o=yD(u,function(F,i){return SD(i,function(C,a){var l=s(C);(!F[a]||l>F[a])&&(F[a]=l)}),F},[]);return iu(u,function(F){return iu(F,function(i,C){var a=o[C]-s(i)||0,l=Array(Math.max(a+1,1)).join(" ");return n[C]==="r"||n[C]==="."?l+i:n[C]==="c"?Array(Math.ceil(a/2+1)).join(" ")+i+Array(Math.floor(a/2+1)).join(" "):i+l}).join(t).replace(/\s+$/,"")}).join(`
68
- `)};function wD(D){var e=/\.[^.]*$/.exec(D);return e?e.index+1:D.length}function yD(D,e,t){if(D.reduce)return D.reduce(e,t);for(var n=0,s=arguments.length>=3?t:D[n++];n<D.length;n++)e(s,D[n],n);return s}function SD(D,e){if(D.forEach)return D.forEach(e);for(var t=0;t<D.length;t++)e.call(D,D[t],t)}function iu(D,e){if(D.map)return D.map(e);for(var t=[],n=0;n<D.length;n++)t.push(e.call(D,D[n],n));return t}var ut=Mu(Xe);const Nu=D=>ut(D,{stringLength:Qe}),tu=D=>Nu(D).split(`
69
- `),vD=new Map([[Boolean,void 0],[String,"string"],[Number,"number"]]),Dt=(D,e=!1)=>{const t=vD.has(D)?vD.get(D):"value";return t?e?`[${t}]`:`<${t}>`:""},et=(D,e)=>D===B?-1:e===B?1:D.length-e.length,Tu=gD("-"),bD=D=>{process.stdout.write(D)},Lu=(D,e,t)=>{var n;const{t:s}=e.i18n,r=[{title:s("help.name"),body:Pe(e._name)},{title:s("help.version"),body:gD(e._version)}];t&&r.push({title:s("help.subcommand"),body:He(`${e._name} ${H(t.name)}`)}),D.push({type:"inline",items:r}),D.push({title:s("help.description"),body:[(n=t==null?void 0:t.description)!=null?n:e._description]})},xD=(D,e,t)=>{const n=e.map(([s,r])=>[s,Tu,r]);D.push({title:t("help.examples"),body:tu(n)})},Iu=(D,e,t)=>Object.entries(D).map(([n,s])=>{const r=s.default!==void 0;let u=[fD(n)];s.alias&&u.push(fD(s.alias)),u=u.map(t.renderFlagName);const o=[Ue(u.join(", ")),t.renderType(s.type,r)];return o.push(Tu,s.description||e("help.noDescription")),r&&o.push(`(${e("help.default",t.renderDefault(s.default))})`),o}),j=D=>{const e=[];for(const t of D){if(t.type==="block"||!t.type){const n=" ",s=t.body.map(u=>n+u);s.unshift("");const r=s.join(`
70
- `);e.push(Nu([[AD(`${t.title}`)],[r]]).toString())}else if(t.type==="inline"){const n=t.items.map(r=>[AD(`${r.title}`),r.body]),s=Nu(n);e.push(s.toString())}e.push("")}return e.join(`
71
- `)},_D={renderFlagName:D=>D,renderSections:D=>D,renderType:(D,e)=>Dt(D,e),renderDefault:D=>JSON.stringify(D)},Cu=(D,e,t,n,s)=>{const{cli:r}=e,{t:u}=r.i18n;let o=[];const F=Object.assign({},_D,s);Lu(o,r),o.push({title:u("help.usage"),body:[$D(`$ ${r._name} ${eD("command",e.hasRootOrAlias)} [flags]`)]});const i=[...e.hasRoot?[r._commands[B]]:[],...Object.values(r._commands)].map(a=>{var l;const c=[typeof a.name=="symbol"?"":a.name,...BD((l=a.alias)!=null?l:[])].sort(et).map(E=>E===""||typeof E=="symbol"?`${r._name}`:`${r._name} ${E}`).join(", ");return[ze(c),Tu,a.description]});i.length&&o.push({title:u("help.commands"),body:tu(i)});const C=Iu(r._flags,u,F);return C.length&&o.push({title:u("help.globalFlags"),body:tu(C)}),t&&o.push({title:u("help.notes"),body:t}),n&&xD(o,n,u),o=F.renderSections(o),D(o)},ku=(D,e,t)=>{var n,s,r,u,o,F;const{cli:i}=e,{t:C}=i.i18n,[a]=je(i._commands,t,C);if(!a)throw new su(H(t),C);const l=Object.assign({},_D,(n=a.help)==null?void 0:n.renderers);let c=[];t===B?Lu(c,i):Lu(c,i,{...a,name:H(t)});const E=(r=(s=a.parameters)==null?void 0:s.join(" "))!=null?r:void 0,m=t===B?"":` ${H(t)}`,p=E?` ${E}`:"",y=a.flags?" [flags]":"";c.push({title:C("help.usage"),body:[$D(`$ ${i._name}${m}${p}${y}`)]});const d=Iu(i._flags,C,l);return d.length&&c.push({title:C("help.globalFlags"),body:tu(d)}),a.flags&&c.push({title:C("help.flags"),body:tu(Iu(a.flags,C,l))}),(u=a==null?void 0:a.help)!=null&&u.notes&&c.push({title:C("help.notes"),body:a.help.notes}),(o=a==null?void 0:a.help)!=null&&o.examples&&xD(c,(F=a==null?void 0:a.help)==null?void 0:F.examples,C),c=l.renderSections(c),D(c)},tt=({command:D=!0,flag:e=!0,showHelpWhenNoCommand:t=!0,notes:n,examples:s,banner:r,renderers:u}={})=>I({setup:o=>{const{add:F,t:i}=o.i18n;F(qe);const C=a=>{r&&bD(`${r}
72
- `),bD(a)};return D&&(o=o.command("help",i("help.commandDescription"),{parameters:["[command...]"],help:{notes:[i("help.notes.1"),i("help.notes.2"),i("help.notes.3")],examples:[[`$ ${o._name} help`,i("help.examples.1")],[`$ ${o._name} help <command>`,i("help.examples.2")],[`$ ${o._name} <command> --help`,i("help.examples.2")]]}}).on("help",a=>{a.parameters.command.length?C(ku(j,a,a.parameters.command)):C(Cu(j,a,n,s,u))})),e&&(o=o.flag("help",i("help.commandDescription"),{alias:"h",type:Boolean,default:!1})),o.inspector((a,l)=>{const c=a.flags.help;if(!a.hasRootOrAlias&&!a.raw._.length&&t&&!c){let E=`${i("core.noCommandGiven")}
73
-
74
- `;E+=Cu(j,a,n,s,u),E+=`
75
- `,C(E),process.exit(1)}else c?a.raw._.length?a.called!==B&&a.name===B?C(Cu(j,a,n,s,u)):C(ku(j,a,a.raw._)):a.hasRootOrAlias?C(ku(j,a,B)):C(Cu(j,a,n,s,u)):l()}),o}}),nt={en:{"utils.and":"%s and %s"},"zh-CN":{"utils.and":"%s \u548C %s"}},rt=(D,{add:e,t})=>(e(nt),D.length<=1?D[0]:t("utils.and",D.slice(0,-1).join(", "),D[D.length-1])),M=new Uint32Array(65536),st=(D,e)=>{const t=D.length,n=e.length,s=1<<t-1;let r=-1,u=0,o=t,F=t;for(;F--;)M[D.charCodeAt(F)]|=1<<F;for(F=0;F<n;F++){let i=M[e.charCodeAt(F)];const C=i|u;i|=(i&r)+r^r,u|=~(i|r),r&=i,u&s&&o++,r&s&&o--,u=u<<1|1,r=r<<1|~(C|u),u&=C}for(F=t;F--;)M[D.charCodeAt(F)]=0;return o},ot=(D,e)=>{const t=e.length,n=D.length,s=[],r=[],u=Math.ceil(t/32),o=Math.ceil(n/32);for(let E=0;E<u;E++)r[E]=-1,s[E]=0;let F=0;for(;F<o-1;F++){let E=0,m=-1;const p=F*32,y=Math.min(32,n)+p;for(let d=p;d<y;d++)M[D.charCodeAt(d)]|=1<<d;for(let d=0;d<t;d++){const W=M[e.charCodeAt(d)],x=r[d/32|0]>>>d&1,v=s[d/32|0]>>>d&1,Ru=W|E,ju=((W|v)&m)+m^m|W|v;let z=E|~(ju|m),nu=m&ju;z>>>31^x&&(r[d/32|0]^=1<<d),nu>>>31^v&&(s[d/32|0]^=1<<d),z=z<<1|x,nu=nu<<1|v,m=nu|~(Ru|z),E=z&Ru}for(let d=p;d<y;d++)M[D.charCodeAt(d)]=0}let i=0,C=-1;const a=F*32,l=Math.min(32,n-a)+a;for(let E=a;E<l;E++)M[D.charCodeAt(E)]|=1<<E;let c=n;for(let E=0;E<t;E++){const m=M[e.charCodeAt(E)],p=r[E/32|0]>>>E&1,y=s[E/32|0]>>>E&1,d=m|i,W=((m|y)&C)+C^C|m|y;let x=i|~(W|C),v=C&W;c+=x>>>n-1&1,c-=v>>>n-1&1,x>>>31^p&&(r[E/32|0]^=1<<E),v>>>31^y&&(s[E/32|0]^=1<<E),x=x<<1|p,v=v<<1|y,C=v|~(d|x),i=x&d}for(let E=a;E<l;E++)M[D.charCodeAt(E)]=0;return c},MD=(D,e)=>{if(D.length<e.length){const t=e;e=D,D=t}return e.length===0?D.length:D.length<=32?st(D,e):ot(D,e)};var lu=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function Ft(D){return D&&D.__esModule&&Object.prototype.hasOwnProperty.call(D,"default")?D.default:D}var at=1/0,it="[object Symbol]",Ct=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,lt="\\u0300-\\u036f\\ufe20-\\ufe23",ct="\\u20d0-\\u20f0",Et="["+lt+ct+"]",ht=RegExp(Et,"g"),mt={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"ss"},pt=typeof lu=="object"&&lu&&lu.Object===Object&&lu,dt=typeof self=="object"&&self&&self.Object===Object&&self,Bt=pt||dt||Function("return this")();function ft(D){return function(e){return D==null?void 0:D[e]}}var At=ft(mt),gt=Object.prototype,$t=gt.toString,OD=Bt.Symbol,ND=OD?OD.prototype:void 0,TD=ND?ND.toString:void 0;function wt(D){if(typeof D=="string")return D;if(St(D))return TD?TD.call(D):"";var e=D+"";return e=="0"&&1/D==-at?"-0":e}function yt(D){return!!D&&typeof D=="object"}function St(D){return typeof D=="symbol"||yt(D)&&$t.call(D)==it}function vt(D){return D==null?"":wt(D)}function bt(D){return D=vt(D),D&&D.replace(Ct,At).replace(ht,"")}var xt=bt,_t=Ft(xt);let $,S;(function(D){D.ALL_CLOSEST_MATCHES="all-closest-matches",D.ALL_MATCHES="all-matches",D.ALL_SORTED_MATCHES="all-sorted-matches",D.FIRST_CLOSEST_MATCH="first-closest-match",D.FIRST_MATCH="first-match"})($||($={})),function(D){D.EDIT_DISTANCE="edit-distance",D.SIMILARITY="similarity"}(S||(S={}));const LD=new Error("unknown returnType"),cu=new Error("unknown thresholdType"),ID=(D,e)=>{let t=D;return e.trimSpaces&&(t=t.trim().replace(/\s+/g," ")),e.deburr&&(t=_t(t)),e.caseSensitive||(t=t.toLowerCase()),t},kD=(D,e)=>{const{matchPath:t}=e,n=((s,r)=>{const u=r.length>0?r.reduce((o,F)=>o==null?void 0:o[F],s):s;return typeof u!="string"?"":u})(D,t);return ID(n,e)};function Mt(D,e,t){const n=(l=>{const c={caseSensitive:!1,deburr:!0,matchPath:[],returnType:$.FIRST_CLOSEST_MATCH,thresholdType:S.SIMILARITY,trimSpaces:!0,...l};switch(c.thresholdType){case S.EDIT_DISTANCE:return{threshold:20,...c};case S.SIMILARITY:return{threshold:.4,...c};default:throw cu}})(t),{returnType:s,threshold:r,thresholdType:u}=n,o=ID(D,n);let F,i;switch(u){case S.EDIT_DISTANCE:F=l=>l<=r,i=l=>MD(o,kD(l,n));break;case S.SIMILARITY:F=l=>l>=r,i=l=>((c,E)=>{if(!c||!E)return 0;if(c===E)return 1;const m=MD(c,E),p=Math.max(c.length,E.length);return(p-m)/p})(o,kD(l,n));break;default:throw cu}const C=[],a=e.length;switch(s){case $.ALL_CLOSEST_MATCHES:case $.FIRST_CLOSEST_MATCH:{const l=[];let c;switch(u){case S.EDIT_DISTANCE:c=1/0;for(let m=0;m<a;m+=1){const p=i(e[m]);c>p&&(c=p),l.push(p)}break;case S.SIMILARITY:c=0;for(let m=0;m<a;m+=1){const p=i(e[m]);c<p&&(c=p),l.push(p)}break;default:throw cu}const E=l.length;for(let m=0;m<E;m+=1){const p=l[m];F(p)&&p===c&&C.push(m)}break}case $.ALL_MATCHES:for(let l=0;l<a;l+=1)F(i(e[l]))&&C.push(l);break;case $.ALL_SORTED_MATCHES:{const l=[];for(let c=0;c<a;c+=1){const E=i(e[c]);F(E)&&l.push({score:E,index:c})}switch(u){case S.EDIT_DISTANCE:l.sort((c,E)=>c.score-E.score);break;case S.SIMILARITY:l.sort((c,E)=>E.score-c.score);break;default:throw cu}for(const c of l)C.push(c.index);break}case $.FIRST_MATCH:for(let l=0;l<a;l+=1)if(F(i(e[l]))){C.push(l);break}break;default:throw LD}return((l,c,E)=>{switch(E){case $.ALL_CLOSEST_MATCHES:case $.ALL_MATCHES:case $.ALL_SORTED_MATCHES:return c.map(m=>l[m]);case $.FIRST_CLOSEST_MATCH:case $.FIRST_MATCH:return c.length?l[c[0]]:null;default:throw LD}})(e,C,s)}const Ot=Pu.WriteStream.prototype.hasColors(),RD=(D,e)=>Ot?t=>"\x1B["+D+"m"+t+"\x1B["+e+"m":t=>t,Nt=RD(1,22),Tt=RD(9,29),Lt={en:{"notFound.possibleCommands":"Possible commands: %s.","notFound.commandNotFound":'Command "%s" not found.',"notFound.didyoumean":'Did you mean "%s"?',"notFound.commandNotRegisteredNote":"NOTE: You haven't register any command yet."},"zh-CN":{"notFound.possibleCommands":"\u53EF\u80FD\u7684\u547D\u4EE4: %s\u3002","notFound.commandNotFound":'\u672A\u627E\u5230\u547D\u4EE4 "%s"\u3002',"notFound.didyoumean":'\u4F60\u662F\u4E0D\u662F\u6307 "%s"\uFF1F',"notFound.commandNotRegisteredNote":"\u63D0\u793A: \u4F60\u8FD8\u6CA1\u6709\u6CE8\u518C\u4EFB\u4F55\u547D\u4EE4\u3002"}},It=()=>I({setup:D=>{const{t:e,add:t}=D.i18n;return t(Lt),D.inspector({enforce:"pre",fn:(n,s)=>{const r=Object.keys(D._commands),u=!!r.length;try{s()}catch(o){if(!(o instanceof su||o instanceof ou))throw o;if(n.raw._.length===0||o instanceof ou){console.error(e("core.noCommandGiven")),u&&console.error(e("notFound.possibleCommands",rt(r,D.i18n)));return}const F=o.commandName,i=Mt(F,r);console.error(e("notFound.commandNotFound",Tt(F))),u&&i?console.error(e("notFound.didyoumean",Nt(i))):u||console.error(e("notFound.commandNotRegisteredNote")),process.stderr.write(`
76
- `),process.exit(2)}}})}}),kt={en:{"utils.and":"%s and %s"},"zh-CN":{"utils.and":"%s \u548C %s"}},jD=(D,{add:e,t})=>(e(kt),D.length<=1?D[0]:t("utils.and",D.slice(0,-1).join(", "),D[D.length-1])),Rt={en:{"strictFlags.unexpectedSingle":"Unexpected flag: %s.","strictFlags.unexpectedMore":"Unexpected flags: %s.","strictFlags.and":"%s and %s"},"zh-CN":{"strictFlags.unexpectedSingle":"\u9884\u671F\u4E4B\u5916\u7684\u6807\u5FD7: %s\u3002","strictFlags.unexpectedMore":"\u9884\u671F\u4E4B\u5916\u7684\u6807\u5FD7: %s\u3002","strictFlags.and":"%s \u548C %s"}},jt=()=>I({setup:D=>{const{add:e,t}=D.i18n;return e(Rt),D.inspector((n,s)=>{const r=Object.keys(n.unknownFlags);if(!n.resolved||r.length===0)s();else throw r.length>1?new Error(t("strictFlags.unexpectedMore",jD(r,D.i18n))):new Error(t("strictFlags.unexpectedSingle",jD(r,D.i18n)))})}}),Wt=D=>D.length===0?"":D.startsWith("v")?D:`v${D}`,Pt={en:{"version.description":"Show CLI version","version.notes.1":'The version string begins with a "v".'},"zh-CN":{"version.description":"\u5C55\u793A CLI \u7248\u672C","version.notes.1":'\u7248\u672C\u53F7\u5F00\u5934\u5E26\u6709 "v"\u3002'}},Ht=({command:D=!0,flag:e=!0}={})=>I({setup:t=>{const{add:n,t:s}=t.i18n;n(Pt);const r=Wt(t._version);return D&&(t=t.command("version",s("version.description"),{help:{notes:[s("version.notes.1")]}}).on("version",()=>{process.stdout.write(r)})),e&&(t=t.flag("version",s("version.description"),{alias:"V",type:Boolean,default:!1}),t.inspector({enforce:"pre",fn:(u,o)=>{u.flags.version?process.stdout.write(r):o()}})),t}});export{me as Clerc,qu as CommandExistsError,Yu as CommandNameConflictError,Zu as DescriptionNotSetError,Ju as InvalidCommandNameError,mu as LocaleNotCalledFirstError,Gu as NameNotSetError,ou as NoCommandGivenError,su as NoSuchCommandError,B as Root,Vu as VersionNotSetError,ye as completionsPlugin,uD as compose,Be as defineCommand,pe as defineHandler,de as defineInspector,I as definePlugin,tD as detectLocale,H as formatCommandName,Ie as friendlyErrorPlugin,tt as helpPlugin,DD as isValidName,It as notFoundPlugin,fu as resolveArgv,Xu as resolveCommand,Bu as resolveFlattenCommands,jt as strictFlagsPlugin,nD as stripFlags,Ht as versionPlugin,eD as withBrackets};
1
+ export * from '@clerc/core';
2
+ export * from '@clerc/plugin-completions';
3
+ export * from '@clerc/plugin-friendly-error';
4
+ export * from '@clerc/plugin-help';
5
+ export * from '@clerc/plugin-not-found';
6
+ export * from '@clerc/plugin-strict-flags';
7
+ export * from '@clerc/plugin-version';
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "clerc",
3
- "version": "0.39.0",
3
+ "version": "0.41.0",
4
4
  "author": "Ray <i@mk1.io> (https://github.com/so1ve)",
5
+ "type": "module",
5
6
  "description": "Clerc: The full-featured cli library.",
6
7
  "keywords": [
7
- "cli",
8
- "clerc",
8
+ "args",
9
9
  "arguments",
10
10
  "argv",
11
- "args",
11
+ "clerc",
12
+ "cli",
12
13
  "terminal"
13
14
  ],
14
- "type": "module",
15
15
  "homepage": "https://github.com/so1ve/clerc/tree/main/packages/clerc#readme",
16
16
  "repository": {
17
17
  "type": "git",
@@ -46,17 +46,17 @@
46
46
  "publishConfig": {
47
47
  "access": "public"
48
48
  },
49
- "devDependencies": {
50
- "@clerc/core": "0.39.0",
51
- "@clerc/plugin-help": "0.39.0",
52
- "@clerc/plugin-completions": "0.39.0",
53
- "@clerc/plugin-not-found": "0.39.0",
54
- "@clerc/plugin-friendly-error": "0.39.0",
55
- "@clerc/plugin-strict-flags": "0.39.0",
56
- "@clerc/plugin-version": "0.39.0"
49
+ "dependencies": {
50
+ "@clerc/core": "0.41.0",
51
+ "@clerc/plugin-friendly-error": "0.41.0",
52
+ "@clerc/plugin-completions": "0.41.0",
53
+ "@clerc/plugin-not-found": "0.41.0",
54
+ "@clerc/plugin-strict-flags": "0.41.0",
55
+ "@clerc/plugin-version": "0.41.0",
56
+ "@clerc/plugin-help": "0.41.0"
57
57
  },
58
58
  "scripts": {
59
- "build": "pkgroll --minify",
59
+ "build": "pkgroll",
60
60
  "watch": "pkgroll --watch"
61
61
  }
62
62
  }