@qodalis/cli-guid 2.0.0-beta.2 → 2.0.0-beta.21

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qodalis/cli-guid",
3
- "version": "2.0.0-beta.2",
3
+ "version": "2.0.0-beta.21",
4
4
  "description": "@qodalis/cli extension for generating and validating GUIDs.",
5
5
  "author": "Nicolae Lupei, Qodalis Solutions",
6
6
  "license": "MIT",
@@ -20,7 +20,7 @@
20
20
  "umd": "./umd/index.global.js",
21
21
  "unpkg": "./umd/index.global.js",
22
22
  "dependencies": {
23
- "@qodalis/cli-core": "2.0.0-beta.2"
23
+ "@qodalis/cli-core": "2.0.0-beta.21"
24
24
  },
25
25
  "sideEffects": false,
26
26
  "main": "./public-api.js",
package/public-api.d.mts CHANGED
@@ -1,5 +1,4 @@
1
- import * as _qodalis_cli_core from '@qodalis/cli-core';
2
- import { ICliCommandProcessor, CliProcessorMetadata, CliProcessCommand, ICliExecutionContext, ICliModule } from '@qodalis/cli-core';
1
+ import { ICliCommandProcessor, CliProcessorMetadata, ICliConfigurationOption, CliProcessCommand, ICliExecutionContext, ICliModule } from '@qodalis/cli-core';
3
2
 
4
3
  /**
5
4
  * Generates a v4 UUID using crypto.getRandomValues when available,
@@ -31,10 +30,11 @@ declare class CliGuidCommandProcessor implements ICliCommandProcessor {
31
30
  command: string;
32
31
  aliases: string[];
33
32
  description: string;
34
- author: _qodalis_cli_core.ICliCommandAuthor;
33
+ author: any;
35
34
  version: string;
36
35
  processors?: ICliCommandProcessor[];
37
36
  metadata?: CliProcessorMetadata;
37
+ configurationOptions?: ICliConfigurationOption[];
38
38
  constructor();
39
39
  processCommand(command: CliProcessCommand, context: ICliExecutionContext): Promise<void>;
40
40
  writeDescription(context: ICliExecutionContext): void;
@@ -42,4 +42,5 @@ declare class CliGuidCommandProcessor implements ICliCommandProcessor {
42
42
 
43
43
  declare const guidModule: ICliModule;
44
44
 
45
- export { CliGuidCommandProcessor, type GuidFormat, NIL_GUID, detectGUIDVersion, formatGUID, generateGUID, guidModule, validateAnyGUID, validateGUID };
45
+ export { CliGuidCommandProcessor, NIL_GUID, detectGUIDVersion, formatGUID, generateGUID, guidModule, validateAnyGUID, validateGUID };
46
+ export type { GuidFormat };
package/public-api.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- import * as _qodalis_cli_core from '@qodalis/cli-core';
2
- import { ICliCommandProcessor, CliProcessorMetadata, CliProcessCommand, ICliExecutionContext, ICliModule } from '@qodalis/cli-core';
1
+ import { ICliCommandProcessor, CliProcessorMetadata, ICliConfigurationOption, CliProcessCommand, ICliExecutionContext, ICliModule } from '@qodalis/cli-core';
3
2
 
4
3
  /**
5
4
  * Generates a v4 UUID using crypto.getRandomValues when available,
@@ -31,10 +30,11 @@ declare class CliGuidCommandProcessor implements ICliCommandProcessor {
31
30
  command: string;
32
31
  aliases: string[];
33
32
  description: string;
34
- author: _qodalis_cli_core.ICliCommandAuthor;
33
+ author: any;
35
34
  version: string;
36
35
  processors?: ICliCommandProcessor[];
37
36
  metadata?: CliProcessorMetadata;
37
+ configurationOptions?: ICliConfigurationOption[];
38
38
  constructor();
39
39
  processCommand(command: CliProcessCommand, context: ICliExecutionContext): Promise<void>;
40
40
  writeDescription(context: ICliExecutionContext): void;
@@ -42,4 +42,5 @@ declare class CliGuidCommandProcessor implements ICliCommandProcessor {
42
42
 
43
43
  declare const guidModule: ICliModule;
44
44
 
45
- export { CliGuidCommandProcessor, type GuidFormat, NIL_GUID, detectGUIDVersion, formatGUID, generateGUID, guidModule, validateAnyGUID, validateGUID };
45
+ export { CliGuidCommandProcessor, NIL_GUID, detectGUIDVersion, formatGUID, generateGUID, guidModule, validateAnyGUID, validateGUID };
46
+ export type { GuidFormat };
package/public-api.js CHANGED
@@ -68,7 +68,7 @@ var formatGUID = (guid, format) => {
68
68
  };
69
69
 
70
70
  // src/lib/version.ts
71
- var LIBRARY_VERSION = "2.0.0-beta.2";
71
+ var LIBRARY_VERSION = "2.0.0-beta.21";
72
72
  var API_VERSION = 2;
73
73
 
74
74
  // src/lib/processors/cli-guid-command-processor.ts
@@ -92,6 +92,23 @@ var CliGuidCommandProcessor = class {
92
92
  icon: "\u{1F194}",
93
93
  module: "guid"
94
94
  };
95
+ this.configurationOptions = [
96
+ {
97
+ key: "defaultFormat",
98
+ label: "Default Format",
99
+ description: "Default output format for generated UUIDs",
100
+ type: "select",
101
+ defaultValue: "default",
102
+ options: GUID_FORMATS.map((f) => ({ label: f, value: f }))
103
+ },
104
+ {
105
+ key: "autoCopy",
106
+ label: "Auto-Copy to Clipboard",
107
+ description: "Automatically copy generated UUIDs to clipboard",
108
+ type: "boolean",
109
+ defaultValue: false
110
+ }
111
+ ];
95
112
  this.processors = [
96
113
  // --- new ---
97
114
  {
@@ -131,14 +148,16 @@ var CliGuidCommandProcessor = class {
131
148
  );
132
149
  return;
133
150
  }
134
- const format = command.args["format"] || "default";
151
+ const cfgFormat = cliCore.getPluginConfigValue(context, "guid", "defaultFormat", "default");
152
+ const cfgAutoCopy = cliCore.getPluginConfigValue(context, "guid", "autoCopy", false);
153
+ const format = command.args["format"] || cfgFormat;
135
154
  if (!GUID_FORMATS.includes(format)) {
136
155
  context.writer.writeError(
137
156
  `Unknown format "${format}". Available: ${GUID_FORMATS.join(", ")}`
138
157
  );
139
158
  return;
140
159
  }
141
- const copyToClipboard = command.args["copy"] || command.args["c"];
160
+ const copyToClipboard = command.args["copy"] != null ? !!command.args["copy"] : command.args["c"] != null ? !!command.args["c"] : cfgAutoCopy;
142
161
  const items = [];
143
162
  for (let i = 0; i < count; i++) {
144
163
  const guid = formatGUID(generateGUID(), format);
@@ -197,7 +216,7 @@ var CliGuidCommandProcessor = class {
197
216
  }
198
217
  ],
199
218
  processCommand: async (command, context) => {
200
- const input = command.value;
219
+ const input = cliCore.joinShellWords(command.value ?? "");
201
220
  const strict = command.args["strict"];
202
221
  const isValid = strict ? validateGUID(input) : validateAnyGUID(input);
203
222
  if (isValid) {
@@ -255,7 +274,7 @@ var CliGuidCommandProcessor = class {
255
274
  }
256
275
  ],
257
276
  processCommand: async (command, context) => {
258
- const input = command.value;
277
+ const input = cliCore.joinShellWords(command.value ?? "");
259
278
  const clean = input.replace(/[-{}()urn:uuid ]/g, "");
260
279
  if (!/^[0-9a-fA-F]{32}$/.test(clean)) {
261
280
  context.writer.writeError(
@@ -312,7 +331,7 @@ var CliGuidCommandProcessor = class {
312
331
  acceptsRawInput: true,
313
332
  valueRequired: true,
314
333
  processCommand: async (command, context) => {
315
- const input = command.value;
334
+ const input = cliCore.joinShellWords(command.value ?? "");
316
335
  const { writer } = context;
317
336
  if (!validateAnyGUID(input)) {
318
337
  writer.writeError(`Invalid UUID: ${input}`);
@@ -413,8 +432,7 @@ var CliGuidCommandProcessor = class {
413
432
  description: "Check if two UUIDs are equal (case/format insensitive)",
414
433
  acceptsRawInput: true,
415
434
  processCommand: async (command, context) => {
416
- const raw = (command.value || "").trim();
417
- const parts = raw.split(/\s+/);
435
+ const parts = command.positionals ?? [];
418
436
  if (parts.length !== 2) {
419
437
  context.writer.writeError(
420
438
  "Provide exactly two UUIDs to compare"
@@ -426,8 +444,8 @@ var CliGuidCommandProcessor = class {
426
444
  return;
427
445
  }
428
446
  const [a, b] = parts;
429
- const cleanA = a.replace(/[-{}()urn:uuid ]/g, "").toLowerCase();
430
- const cleanB = b.replace(/[-{}()urn:uuid ]/g, "").toLowerCase();
447
+ const cleanA = a.replace(/^urn:uuid:/i, "").replace(/[-{}() ]/g, "").toLowerCase();
448
+ const cleanB = b.replace(/^urn:uuid:/i, "").replace(/[-{}() ]/g, "").toLowerCase();
431
449
  if (!/^[0-9a-f]{32}$/.test(cleanA) || !/^[0-9a-f]{32}$/.test(cleanB)) {
432
450
  context.writer.writeError(
433
451
  "One or both inputs are not valid UUIDs"
package/public-api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../packages/plugins/guid/src/lib/utilities/index.ts","../../packages/plugins/guid/src/lib/version.ts","../../packages/plugins/guid/src/lib/processors/cli-guid-command-processor.ts","../../packages/plugins/guid/src/public-api.ts"],"names":["DefaultLibraryAuthor","CliForegroundColor"],"mappings":"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","file":"public-api.js","sourcesContent":["/**\n * Generates a v4 UUID using crypto.getRandomValues when available,\n * falling back to Math.random.\n */\nexport const generateGUID = (): string => {\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n const bytes = new Uint8Array(16);\n crypto.getRandomValues(bytes);\n bytes[6] = (bytes[6] & 0x0f) | 0x40; // version 4\n bytes[8] = (bytes[8] & 0x3f) | 0x80; // variant 10\n const hex = Array.from(bytes, (b) =>\n b.toString(16).padStart(2, '0'),\n ).join('');\n return [\n hex.slice(0, 8),\n hex.slice(8, 12),\n hex.slice(12, 16),\n hex.slice(16, 20),\n hex.slice(20, 32),\n ].join('-');\n }\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {\n const random = (Math.random() * 16) | 0;\n const value = char === 'x' ? random : (random & 0x3) | 0x8;\n return value.toString(16);\n });\n};\n\n/**\n * Validates a UUID v4 string.\n */\nexport const validateGUID = (guid: string): boolean => {\n const guidRegex =\n /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/;\n return guidRegex.test(guid);\n};\n\n/**\n * Validates any UUID version (v1-v5, nil).\n */\nexport const validateAnyGUID = (guid: string): boolean => {\n const guidRegex =\n /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;\n return guidRegex.test(guid);\n};\n\n/** The nil UUID (all zeros). */\nexport const NIL_GUID = '00000000-0000-0000-0000-000000000000';\n\n/**\n * Detects the version of a UUID string.\n * Returns the version number (1-5) or 0 for nil, or null if invalid.\n */\nexport const detectGUIDVersion = (guid: string): number | null => {\n if (!validateAnyGUID(guid)) {\n return null;\n }\n if (guid === NIL_GUID) {\n return 0;\n }\n const versionChar = guid.charAt(14);\n const version = parseInt(versionChar, 16);\n return version >= 1 && version <= 5 ? version : null;\n};\n\nexport type GuidFormat = 'default' | 'uppercase' | 'braces' | 'parentheses' | 'digits' | 'urn';\n\n/**\n * Formats a UUID string into different representations.\n */\nexport const formatGUID = (guid: string, format: GuidFormat): string => {\n const clean = guid.replace(/[-{}() ]/g, '').toLowerCase();\n const d = `${clean.slice(0, 8)}-${clean.slice(8, 12)}-${clean.slice(12, 16)}-${clean.slice(16, 20)}-${clean.slice(20, 32)}`;\n\n switch (format) {\n case 'uppercase':\n return d.toUpperCase();\n case 'braces':\n return `{${d}}`;\n case 'parentheses':\n return `(${d})`;\n case 'digits':\n return clean;\n case 'urn':\n return `urn:uuid:${d}`;\n case 'default':\n default:\n return d;\n }\n};\n","\n// Automatically generated during build\nexport const LIBRARY_VERSION = '2.0.0-beta.2';\nexport const API_VERSION = 2;\n ","import {\n CliForegroundColor,\n CliProcessCommand,\n CliProcessorMetadata,\n DefaultLibraryAuthor,\n ICliCommandProcessor,\n ICliExecutionContext,\n} from '@qodalis/cli-core';\nimport {\n generateGUID,\n validateGUID,\n validateAnyGUID,\n detectGUIDVersion,\n formatGUID,\n NIL_GUID,\n GuidFormat,\n} from '../utilities';\nimport { LIBRARY_VERSION } from '../version';\n\nconst GUID_FORMATS: GuidFormat[] = [\n 'default',\n 'uppercase',\n 'braces',\n 'parentheses',\n 'digits',\n 'urn',\n];\n\nexport class CliGuidCommandProcessor implements ICliCommandProcessor {\n command = 'guid';\n\n aliases = ['uuid'];\n\n description = 'Generate, validate, format, and inspect UUIDs';\n\n author = DefaultLibraryAuthor;\n\n version = LIBRARY_VERSION;\n\n processors?: ICliCommandProcessor[] = [];\n\n metadata?: CliProcessorMetadata = {\n icon: '🆔',\n module: 'guid',\n };\n\n constructor() {\n this.processors = [\n // --- new ---\n {\n command: 'new',\n aliases: ['gen', 'generate'],\n description: 'Generate one or more UUIDs',\n parameters: [\n {\n name: 'copy',\n aliases: ['c'],\n description: 'Copy the result to the clipboard',\n required: false,\n type: 'boolean',\n },\n {\n name: 'count',\n aliases: ['n'],\n description: 'Number of UUIDs to generate',\n defaultValue: '1',\n required: false,\n type: 'number',\n },\n {\n name: 'format',\n aliases: ['f'],\n description: `Output format: ${GUID_FORMATS.join(', ')}`,\n defaultValue: 'default',\n required: false,\n type: 'string',\n },\n ],\n processCommand: async (\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n const count = command.args['count']\n ? parseInt(command.args['count'])\n : 1;\n\n if (isNaN(count) || count < 1 || count > 1000) {\n context.writer.writeError(\n 'Count must be a number between 1 and 1000',\n );\n return;\n }\n\n const format = (command.args['format'] ||\n 'default') as GuidFormat;\n\n if (!GUID_FORMATS.includes(format)) {\n context.writer.writeError(\n `Unknown format \"${format}\". Available: ${GUID_FORMATS.join(', ')}`,\n );\n return;\n }\n\n const copyToClipboard =\n command.args['copy'] || command.args['c'];\n\n const items: string[] = [];\n\n for (let i = 0; i < count; i++) {\n const guid = formatGUID(generateGUID(), format);\n context.writer.writeln(guid);\n items.push(guid);\n }\n\n if (copyToClipboard) {\n await context.clipboard.write(items.join('\\n'));\n context.writer.writeInfo(\n items.length === 1\n ? 'Copied to clipboard'\n : `${items.length} UUIDs copied to clipboard`,\n );\n }\n\n context.process.output(\n items.length === 1 ? items[0] : items,\n );\n },\n writeDescription: (context: ICliExecutionContext) => {\n const { writer } = context;\n writer.writeln('Generate one or more UUIDs (v4)');\n writer.writeln();\n writer.writeln('📋 Usage:');\n writer.writeln(\n ` ${writer.wrapInColor('guid new', CliForegroundColor.Cyan)} Generate a single UUID`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid new --count=5', CliForegroundColor.Cyan)} Generate 5 UUIDs`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid new --copy', CliForegroundColor.Cyan)} Generate and copy`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid new --format=uppercase', CliForegroundColor.Cyan)} Uppercase output`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid new --format=braces', CliForegroundColor.Cyan)} {wrapped} format`,\n );\n writer.writeln();\n writer.writeln(\n `Formats: ${writer.wrapInColor(GUID_FORMATS.join(', '), CliForegroundColor.Yellow)}`,\n );\n },\n },\n\n // --- validate ---\n {\n command: 'validate',\n aliases: ['check'],\n description: 'Validate a UUID string',\n acceptsRawInput: true,\n valueRequired: true,\n parameters: [\n {\n name: 'strict',\n description:\n 'Only accept v4 UUIDs (default: accept any version)',\n required: false,\n type: 'boolean',\n },\n ],\n processCommand: async (\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n const input = command.value!;\n const strict = command.args['strict'];\n const isValid = strict\n ? validateGUID(input)\n : validateAnyGUID(input);\n\n if (isValid) {\n const version = detectGUIDVersion(input);\n const versionLabel =\n version === 0\n ? 'nil'\n : version\n ? `v${version}`\n : 'unknown version';\n context.writer.writeSuccess(\n `Valid UUID (${versionLabel})`,\n );\n context.process.output({ valid: true, version });\n } else {\n context.writer.writeError(\n `Invalid UUID: ${input}`,\n );\n context.process.output({\n valid: false,\n version: null,\n });\n }\n },\n writeDescription: (context: ICliExecutionContext) => {\n const { writer } = context;\n writer.writeln('Validate a UUID string and detect its version');\n writer.writeln();\n writer.writeln('📋 Usage:');\n writer.writeln(\n ` ${writer.wrapInColor('guid validate <uuid>', CliForegroundColor.Cyan)} Check any UUID`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid validate <uuid> --strict', CliForegroundColor.Cyan)} Only accept v4`,\n );\n },\n },\n\n // --- format ---\n {\n command: 'format',\n aliases: ['fmt'],\n description: 'Convert a UUID to a different format',\n acceptsRawInput: true,\n valueRequired: true,\n parameters: [\n {\n name: 'to',\n aliases: ['t'],\n description: `Target format: ${GUID_FORMATS.join(', ')}`,\n defaultValue: 'default',\n required: false,\n type: 'string',\n },\n {\n name: 'copy',\n aliases: ['c'],\n description: 'Copy the result to the clipboard',\n required: false,\n type: 'boolean',\n },\n ],\n processCommand: async (\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n const input = command.value!;\n\n const clean = input.replace(/[-{}()urn:uuid ]/g, '');\n if (!/^[0-9a-fA-F]{32}$/.test(clean)) {\n context.writer.writeError(\n `Cannot parse as UUID: ${input}`,\n );\n return;\n }\n\n const format = (command.args['to'] ||\n 'default') as GuidFormat;\n\n if (!GUID_FORMATS.includes(format)) {\n context.writer.writeError(\n `Unknown format \"${format}\". Available: ${GUID_FORMATS.join(', ')}`,\n );\n return;\n }\n\n const normalized = `${clean.slice(0, 8)}-${clean.slice(8, 12)}-${clean.slice(12, 16)}-${clean.slice(16, 20)}-${clean.slice(20, 32)}`.toLowerCase();\n const result = formatGUID(normalized, format);\n\n context.writer.writeln(result);\n\n if (command.args['copy'] || command.args['c']) {\n await context.clipboard.write(result);\n context.writer.writeInfo('Copied to clipboard');\n }\n\n context.process.output(result);\n },\n writeDescription: (context: ICliExecutionContext) => {\n const { writer } = context;\n writer.writeln('Convert a UUID between different formats');\n writer.writeln();\n writer.writeln('📋 Usage:');\n writer.writeln(\n ` ${writer.wrapInColor('guid format <uuid> --to=braces', CliForegroundColor.Cyan)}`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid format <uuid> --to=urn', CliForegroundColor.Cyan)}`,\n );\n writer.writeln();\n writer.writeln(\n `Formats: ${writer.wrapInColor(GUID_FORMATS.join(', '), CliForegroundColor.Yellow)}`,\n );\n writer.writeln();\n writer.writeln('📝 Examples:');\n writer.writeln(\n ` guid format 550e8400-e29b-41d4-a716-446655440000 --to=braces`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('→ {550e8400-e29b-41d4-a716-446655440000}', CliForegroundColor.Green)}`,\n );\n },\n },\n\n // --- inspect ---\n {\n command: 'inspect',\n aliases: ['info', 'parse'],\n description: 'Show detailed information about a UUID',\n acceptsRawInput: true,\n valueRequired: true,\n processCommand: async (\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n const input = command.value!;\n const { writer } = context;\n\n if (!validateAnyGUID(input)) {\n writer.writeError(`Invalid UUID: ${input}`);\n return;\n }\n\n const version = detectGUIDVersion(input);\n const isNil = input === NIL_GUID;\n const lower = input.toLowerCase();\n const variantBits = parseInt(lower.charAt(19), 16);\n\n let variant: string;\n if ((variantBits & 0x8) === 0) {\n variant = 'NCS (reserved)';\n } else if ((variantBits & 0xc) === 0x8) {\n variant = 'RFC 4122';\n } else if ((variantBits & 0xe) === 0xc) {\n variant = 'Microsoft (reserved)';\n } else {\n variant = 'Future (reserved)';\n }\n\n writer.writeln(\n writer.wrapInColor(\n '── UUID Details ──',\n CliForegroundColor.Cyan,\n ),\n );\n writer.writeln();\n writer.writeln(\n ` ${writer.wrapInColor('Input:', CliForegroundColor.Yellow)} ${input}`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('Version:', CliForegroundColor.Yellow)} ${isNil ? 'nil' : version !== null ? `v${version}` : 'unknown'}`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('Variant:', CliForegroundColor.Yellow)} ${variant}`,\n );\n writer.writeln();\n writer.writeln(\n ` ${writer.wrapInColor('Formats:', CliForegroundColor.Yellow)}`,\n );\n\n for (const fmt of GUID_FORMATS) {\n const formatted = formatGUID(lower, fmt);\n writer.writeln(\n ` ${writer.wrapInColor(fmt.padEnd(14), CliForegroundColor.Cyan)} ${formatted}`,\n );\n }\n\n context.process.output({\n input,\n version,\n variant,\n isNil,\n formats: Object.fromEntries(\n GUID_FORMATS.map((fmt) => [\n fmt,\n formatGUID(lower, fmt),\n ]),\n ),\n });\n },\n writeDescription: (context: ICliExecutionContext) => {\n const { writer } = context;\n writer.writeln(\n 'Display version, variant, and all format representations of a UUID',\n );\n writer.writeln();\n writer.writeln('📋 Usage:');\n writer.writeln(\n ` ${writer.wrapInColor('guid inspect <uuid>', CliForegroundColor.Cyan)}`,\n );\n },\n },\n\n // --- nil ---\n {\n command: 'nil',\n aliases: ['empty', 'zero'],\n description: 'Output the nil UUID (all zeros)',\n parameters: [\n {\n name: 'copy',\n aliases: ['c'],\n description: 'Copy to clipboard',\n required: false,\n type: 'boolean',\n },\n ],\n processCommand: async (\n _: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n context.writer.writeln(NIL_GUID);\n\n if (_.args['copy'] || _.args['c']) {\n await context.clipboard.write(NIL_GUID);\n context.writer.writeInfo('Copied to clipboard');\n }\n\n context.process.output(NIL_GUID);\n },\n },\n\n // --- compare ---\n {\n command: 'compare',\n aliases: ['eq', 'equals'],\n description: 'Check if two UUIDs are equal (case/format insensitive)',\n acceptsRawInput: true,\n processCommand: async (\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n const raw = (command.value || '').trim();\n const parts = raw.split(/\\s+/);\n\n if (parts.length !== 2) {\n context.writer.writeError(\n 'Provide exactly two UUIDs to compare',\n );\n context.writer.writeln();\n context.writer.writeln(\n ` Usage: ${context.writer.wrapInColor('guid compare <uuid1> <uuid2>', CliForegroundColor.Cyan)}`,\n );\n return;\n }\n\n const [a, b] = parts;\n const cleanA = a.replace(/[-{}()urn:uuid ]/g, '').toLowerCase();\n const cleanB = b.replace(/[-{}()urn:uuid ]/g, '').toLowerCase();\n\n if (\n !/^[0-9a-f]{32}$/.test(cleanA) ||\n !/^[0-9a-f]{32}$/.test(cleanB)\n ) {\n context.writer.writeError(\n 'One or both inputs are not valid UUIDs',\n );\n return;\n }\n\n const equal = cleanA === cleanB;\n\n if (equal) {\n context.writer.writeSuccess('The UUIDs are equal');\n } else {\n context.writer.writeError('The UUIDs are different');\n }\n\n context.process.output({ equal, a, b });\n },\n writeDescription: (context: ICliExecutionContext) => {\n const { writer } = context;\n writer.writeln(\n 'Compare two UUIDs for equality regardless of case or format',\n );\n writer.writeln();\n writer.writeln('📋 Usage:');\n writer.writeln(\n ` ${writer.wrapInColor('guid compare <uuid1> <uuid2>', CliForegroundColor.Cyan)}`,\n );\n writer.writeln();\n writer.writeln('📝 Examples:');\n writer.writeln(\n ` guid compare 550e8400-e29b-41d4-a716-446655440000 550E8400-E29B-41D4-A716-446655440000`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('→ The UUIDs are equal', CliForegroundColor.Green)}`,\n );\n },\n },\n ];\n }\n\n async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n await context.executor.showHelp(command, context);\n }\n\n writeDescription(context: ICliExecutionContext): void {\n const { writer } = context;\n writer.writeln(this.description);\n writer.writeln();\n writer.writeln('📋 Commands:');\n writer.writeln(\n ` ${writer.wrapInColor('guid new', CliForegroundColor.Cyan)} Generate UUIDs`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid validate <uuid>', CliForegroundColor.Cyan)} Validate and detect version`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid format <uuid> --to=<fmt>', CliForegroundColor.Cyan)} Convert format`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid inspect <uuid>', CliForegroundColor.Cyan)} Show detailed info`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid compare <a> <b>', CliForegroundColor.Cyan)} Compare two UUIDs`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid nil', CliForegroundColor.Cyan)} Output nil UUID`,\n );\n writer.writeln();\n writer.writeln('📝 Examples:');\n writer.writeln(\n ` guid new --count=5 --copy ${writer.wrapInColor('# 5 UUIDs, copied', CliForegroundColor.Green)}`,\n );\n writer.writeln(\n ` guid new --format=uppercase ${writer.wrapInColor('# A1B2C3D4-...', CliForegroundColor.Green)}`,\n );\n writer.writeln(\n ` guid validate 550e8400-e29b-41d4-a716-446655440000 ${writer.wrapInColor('# Valid UUID (v4)', CliForegroundColor.Green)}`,\n );\n writer.writeln(\n ` guid inspect 550e8400-e29b-41d4-a716-446655440000 ${writer.wrapInColor('# Version, variant, formats', CliForegroundColor.Green)}`,\n );\n writer.writeln(\n ` guid format <uuid> --to=urn ${writer.wrapInColor('# urn:uuid:...', CliForegroundColor.Green)}`,\n );\n }\n}\n","/*\n * Public API Surface of guid\n */\n\nexport * from './lib/utilities';\nexport type { GuidFormat } from './lib/utilities';\n\nexport * from './lib/processors/cli-guid-command-processor';\n\nimport { ICliModule } from '@qodalis/cli-core';\nimport { CliGuidCommandProcessor } from './lib/processors/cli-guid-command-processor';\nimport { API_VERSION } from './lib/version';\n\nexport const guidModule: ICliModule = {\n apiVersion: API_VERSION,\n name: '@qodalis/cli-guid',\n processors: [new CliGuidCommandProcessor()],\n translations: {\n es: { 'cli.guid.description': 'Generar, validar, formatear e inspeccionar UUIDs' },\n fr: { 'cli.guid.description': 'Générer, valider, formater et inspecter des UUIDs' },\n de: { 'cli.guid.description': 'UUIDs generieren, validieren, formatieren und inspizieren' },\n pt: { 'cli.guid.description': 'Gerar, validar, formatar e inspecionar UUIDs' },\n it: { 'cli.guid.description': 'Generare, validare, formattare e ispezionare UUID' },\n ja: { 'cli.guid.description': 'UUIDの生成、検証、フォーマット、検査' },\n ko: { 'cli.guid.description': 'UUID 생성, 검증, 포맷 및 검사' },\n zh: { 'cli.guid.description': '生成、验证、格式化和检查 UUID' },\n ru: { 'cli.guid.description': 'Генерация, проверка, форматирование и анализ UUID' },\n ro: { 'cli.guid.description': 'Generare, validare, formatare și inspectare UUID-uri' },\n },\n};\n"]}
1
+ {"version":3,"sources":["../../packages/plugins/guid/src/lib/utilities/index.ts","../../packages/plugins/guid/src/lib/version.ts","../../packages/plugins/guid/src/lib/processors/cli-guid-command-processor.ts","../../packages/plugins/guid/src/public-api.ts"],"names":["DefaultLibraryAuthor","getPluginConfigValue","CliForegroundColor","joinShellWords"],"mappings":"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","file":"public-api.js","sourcesContent":["/**\n * Generates a v4 UUID using crypto.getRandomValues when available,\n * falling back to Math.random.\n */\nexport const generateGUID = (): string => {\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n const bytes = new Uint8Array(16);\n crypto.getRandomValues(bytes);\n bytes[6] = (bytes[6] & 0x0f) | 0x40; // version 4\n bytes[8] = (bytes[8] & 0x3f) | 0x80; // variant 10\n const hex = Array.from(bytes, (b) =>\n b.toString(16).padStart(2, '0'),\n ).join('');\n return [\n hex.slice(0, 8),\n hex.slice(8, 12),\n hex.slice(12, 16),\n hex.slice(16, 20),\n hex.slice(20, 32),\n ].join('-');\n }\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {\n const random = (Math.random() * 16) | 0;\n const value = char === 'x' ? random : (random & 0x3) | 0x8;\n return value.toString(16);\n });\n};\n\n/**\n * Validates a UUID v4 string.\n */\nexport const validateGUID = (guid: string): boolean => {\n const guidRegex =\n /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/;\n return guidRegex.test(guid);\n};\n\n/**\n * Validates any UUID version (v1-v5, nil).\n */\nexport const validateAnyGUID = (guid: string): boolean => {\n const guidRegex =\n /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;\n return guidRegex.test(guid);\n};\n\n/** The nil UUID (all zeros). */\nexport const NIL_GUID = '00000000-0000-0000-0000-000000000000';\n\n/**\n * Detects the version of a UUID string.\n * Returns the version number (1-5) or 0 for nil, or null if invalid.\n */\nexport const detectGUIDVersion = (guid: string): number | null => {\n if (!validateAnyGUID(guid)) {\n return null;\n }\n if (guid === NIL_GUID) {\n return 0;\n }\n const versionChar = guid.charAt(14);\n const version = parseInt(versionChar, 16);\n return version >= 1 && version <= 5 ? version : null;\n};\n\nexport type GuidFormat = 'default' | 'uppercase' | 'braces' | 'parentheses' | 'digits' | 'urn';\n\n/**\n * Formats a UUID string into different representations.\n */\nexport const formatGUID = (guid: string, format: GuidFormat): string => {\n const clean = guid.replace(/[-{}() ]/g, '').toLowerCase();\n const d = `${clean.slice(0, 8)}-${clean.slice(8, 12)}-${clean.slice(12, 16)}-${clean.slice(16, 20)}-${clean.slice(20, 32)}`;\n\n switch (format) {\n case 'uppercase':\n return d.toUpperCase();\n case 'braces':\n return `{${d}}`;\n case 'parentheses':\n return `(${d})`;\n case 'digits':\n return clean;\n case 'urn':\n return `urn:uuid:${d}`;\n case 'default':\n default:\n return d;\n }\n};\n","\n// Automatically generated during build\nexport const LIBRARY_VERSION = '2.0.0-beta.21';\nexport const API_VERSION = 2;\n ","import {\n CliForegroundColor,\n CliProcessCommand,\n CliProcessorMetadata,\n DefaultLibraryAuthor,\n ICliCommandProcessor,\n ICliConfigurationOption,\n ICliExecutionContext,\n getPluginConfigValue,\n joinShellWords,\n} from '@qodalis/cli-core';\nimport {\n generateGUID,\n validateGUID,\n validateAnyGUID,\n detectGUIDVersion,\n formatGUID,\n NIL_GUID,\n GuidFormat,\n} from '../utilities';\nimport { LIBRARY_VERSION } from '../version';\n\nconst GUID_FORMATS: GuidFormat[] = [\n 'default',\n 'uppercase',\n 'braces',\n 'parentheses',\n 'digits',\n 'urn',\n];\n\nexport class CliGuidCommandProcessor implements ICliCommandProcessor {\n command = 'guid';\n\n aliases = ['uuid'];\n\n description = 'Generate, validate, format, and inspect UUIDs';\n\n author = DefaultLibraryAuthor;\n\n version = LIBRARY_VERSION;\n\n processors?: ICliCommandProcessor[] = [];\n\n metadata?: CliProcessorMetadata = {\n icon: '🆔',\n module: 'guid',\n };\n\n configurationOptions?: ICliConfigurationOption[] = [\n {\n key: 'defaultFormat',\n label: 'Default Format',\n description: 'Default output format for generated UUIDs',\n type: 'select',\n defaultValue: 'default',\n options: GUID_FORMATS.map((f) => ({ label: f, value: f })),\n },\n {\n key: 'autoCopy',\n label: 'Auto-Copy to Clipboard',\n description: 'Automatically copy generated UUIDs to clipboard',\n type: 'boolean',\n defaultValue: false,\n },\n ];\n\n constructor() {\n this.processors = [\n // --- new ---\n {\n command: 'new',\n aliases: ['gen', 'generate'],\n description: 'Generate one or more UUIDs',\n parameters: [\n {\n name: 'copy',\n aliases: ['c'],\n description: 'Copy the result to the clipboard',\n required: false,\n type: 'boolean',\n },\n {\n name: 'count',\n aliases: ['n'],\n description: 'Number of UUIDs to generate',\n defaultValue: '1',\n required: false,\n type: 'number',\n },\n {\n name: 'format',\n aliases: ['f'],\n description: `Output format: ${GUID_FORMATS.join(', ')}`,\n defaultValue: 'default',\n required: false,\n type: 'string',\n },\n ],\n processCommand: async (\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n const count = command.args['count']\n ? parseInt(command.args['count'])\n : 1;\n\n if (isNaN(count) || count < 1 || count > 1000) {\n context.writer.writeError(\n 'Count must be a number between 1 and 1000',\n );\n return;\n }\n\n const cfgFormat = getPluginConfigValue(context, 'guid', 'defaultFormat', 'default');\n const cfgAutoCopy = getPluginConfigValue(context, 'guid', 'autoCopy', false);\n\n const format = (command.args['format'] ||\n cfgFormat) as GuidFormat;\n\n if (!GUID_FORMATS.includes(format)) {\n context.writer.writeError(\n `Unknown format \"${format}\". Available: ${GUID_FORMATS.join(', ')}`,\n );\n return;\n }\n\n const copyToClipboard =\n command.args['copy'] != null ? !!command.args['copy']\n : command.args['c'] != null ? !!command.args['c']\n : cfgAutoCopy;\n\n const items: string[] = [];\n\n for (let i = 0; i < count; i++) {\n const guid = formatGUID(generateGUID(), format);\n context.writer.writeln(guid);\n items.push(guid);\n }\n\n if (copyToClipboard) {\n await context.clipboard.write(items.join('\\n'));\n context.writer.writeInfo(\n items.length === 1\n ? 'Copied to clipboard'\n : `${items.length} UUIDs copied to clipboard`,\n );\n }\n\n context.process.output(\n items.length === 1 ? items[0] : items,\n );\n },\n writeDescription: (context: ICliExecutionContext) => {\n const { writer } = context;\n writer.writeln('Generate one or more UUIDs (v4)');\n writer.writeln();\n writer.writeln('📋 Usage:');\n writer.writeln(\n ` ${writer.wrapInColor('guid new', CliForegroundColor.Cyan)} Generate a single UUID`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid new --count=5', CliForegroundColor.Cyan)} Generate 5 UUIDs`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid new --copy', CliForegroundColor.Cyan)} Generate and copy`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid new --format=uppercase', CliForegroundColor.Cyan)} Uppercase output`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid new --format=braces', CliForegroundColor.Cyan)} {wrapped} format`,\n );\n writer.writeln();\n writer.writeln(\n `Formats: ${writer.wrapInColor(GUID_FORMATS.join(', '), CliForegroundColor.Yellow)}`,\n );\n },\n },\n\n // --- validate ---\n {\n command: 'validate',\n aliases: ['check'],\n description: 'Validate a UUID string',\n acceptsRawInput: true,\n valueRequired: true,\n parameters: [\n {\n name: 'strict',\n description:\n 'Only accept v4 UUIDs (default: accept any version)',\n required: false,\n type: 'boolean',\n },\n ],\n processCommand: async (\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n const input = joinShellWords(command.value ?? '');\n const strict = command.args['strict'];\n const isValid = strict\n ? validateGUID(input)\n : validateAnyGUID(input);\n\n if (isValid) {\n const version = detectGUIDVersion(input);\n const versionLabel =\n version === 0\n ? 'nil'\n : version\n ? `v${version}`\n : 'unknown version';\n context.writer.writeSuccess(\n `Valid UUID (${versionLabel})`,\n );\n context.process.output({ valid: true, version });\n } else {\n context.writer.writeError(\n `Invalid UUID: ${input}`,\n );\n context.process.output({\n valid: false,\n version: null,\n });\n }\n },\n writeDescription: (context: ICliExecutionContext) => {\n const { writer } = context;\n writer.writeln('Validate a UUID string and detect its version');\n writer.writeln();\n writer.writeln('📋 Usage:');\n writer.writeln(\n ` ${writer.wrapInColor('guid validate <uuid>', CliForegroundColor.Cyan)} Check any UUID`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid validate <uuid> --strict', CliForegroundColor.Cyan)} Only accept v4`,\n );\n },\n },\n\n // --- format ---\n {\n command: 'format',\n aliases: ['fmt'],\n description: 'Convert a UUID to a different format',\n acceptsRawInput: true,\n valueRequired: true,\n parameters: [\n {\n name: 'to',\n aliases: ['t'],\n description: `Target format: ${GUID_FORMATS.join(', ')}`,\n defaultValue: 'default',\n required: false,\n type: 'string',\n },\n {\n name: 'copy',\n aliases: ['c'],\n description: 'Copy the result to the clipboard',\n required: false,\n type: 'boolean',\n },\n ],\n processCommand: async (\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n const input = joinShellWords(command.value ?? '');\n\n const clean = input.replace(/[-{}()urn:uuid ]/g, '');\n if (!/^[0-9a-fA-F]{32}$/.test(clean)) {\n context.writer.writeError(\n `Cannot parse as UUID: ${input}`,\n );\n return;\n }\n\n const format = (command.args['to'] ||\n 'default') as GuidFormat;\n\n if (!GUID_FORMATS.includes(format)) {\n context.writer.writeError(\n `Unknown format \"${format}\". Available: ${GUID_FORMATS.join(', ')}`,\n );\n return;\n }\n\n const normalized = `${clean.slice(0, 8)}-${clean.slice(8, 12)}-${clean.slice(12, 16)}-${clean.slice(16, 20)}-${clean.slice(20, 32)}`.toLowerCase();\n const result = formatGUID(normalized, format);\n\n context.writer.writeln(result);\n\n if (command.args['copy'] || command.args['c']) {\n await context.clipboard.write(result);\n context.writer.writeInfo('Copied to clipboard');\n }\n\n context.process.output(result);\n },\n writeDescription: (context: ICliExecutionContext) => {\n const { writer } = context;\n writer.writeln('Convert a UUID between different formats');\n writer.writeln();\n writer.writeln('📋 Usage:');\n writer.writeln(\n ` ${writer.wrapInColor('guid format <uuid> --to=braces', CliForegroundColor.Cyan)}`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid format <uuid> --to=urn', CliForegroundColor.Cyan)}`,\n );\n writer.writeln();\n writer.writeln(\n `Formats: ${writer.wrapInColor(GUID_FORMATS.join(', '), CliForegroundColor.Yellow)}`,\n );\n writer.writeln();\n writer.writeln('📝 Examples:');\n writer.writeln(\n ` guid format 550e8400-e29b-41d4-a716-446655440000 --to=braces`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('→ {550e8400-e29b-41d4-a716-446655440000}', CliForegroundColor.Green)}`,\n );\n },\n },\n\n // --- inspect ---\n {\n command: 'inspect',\n aliases: ['info', 'parse'],\n description: 'Show detailed information about a UUID',\n acceptsRawInput: true,\n valueRequired: true,\n processCommand: async (\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n const input = joinShellWords(command.value ?? '');\n const { writer } = context;\n\n if (!validateAnyGUID(input)) {\n writer.writeError(`Invalid UUID: ${input}`);\n return;\n }\n\n const version = detectGUIDVersion(input);\n const isNil = input === NIL_GUID;\n const lower = input.toLowerCase();\n const variantBits = parseInt(lower.charAt(19), 16);\n\n let variant: string;\n if ((variantBits & 0x8) === 0) {\n variant = 'NCS (reserved)';\n } else if ((variantBits & 0xc) === 0x8) {\n variant = 'RFC 4122';\n } else if ((variantBits & 0xe) === 0xc) {\n variant = 'Microsoft (reserved)';\n } else {\n variant = 'Future (reserved)';\n }\n\n writer.writeln(\n writer.wrapInColor(\n '── UUID Details ──',\n CliForegroundColor.Cyan,\n ),\n );\n writer.writeln();\n writer.writeln(\n ` ${writer.wrapInColor('Input:', CliForegroundColor.Yellow)} ${input}`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('Version:', CliForegroundColor.Yellow)} ${isNil ? 'nil' : version !== null ? `v${version}` : 'unknown'}`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('Variant:', CliForegroundColor.Yellow)} ${variant}`,\n );\n writer.writeln();\n writer.writeln(\n ` ${writer.wrapInColor('Formats:', CliForegroundColor.Yellow)}`,\n );\n\n for (const fmt of GUID_FORMATS) {\n const formatted = formatGUID(lower, fmt);\n writer.writeln(\n ` ${writer.wrapInColor(fmt.padEnd(14), CliForegroundColor.Cyan)} ${formatted}`,\n );\n }\n\n context.process.output({\n input,\n version,\n variant,\n isNil,\n formats: Object.fromEntries(\n GUID_FORMATS.map((fmt) => [\n fmt,\n formatGUID(lower, fmt),\n ]),\n ),\n });\n },\n writeDescription: (context: ICliExecutionContext) => {\n const { writer } = context;\n writer.writeln(\n 'Display version, variant, and all format representations of a UUID',\n );\n writer.writeln();\n writer.writeln('📋 Usage:');\n writer.writeln(\n ` ${writer.wrapInColor('guid inspect <uuid>', CliForegroundColor.Cyan)}`,\n );\n },\n },\n\n // --- nil ---\n {\n command: 'nil',\n aliases: ['empty', 'zero'],\n description: 'Output the nil UUID (all zeros)',\n parameters: [\n {\n name: 'copy',\n aliases: ['c'],\n description: 'Copy to clipboard',\n required: false,\n type: 'boolean',\n },\n ],\n processCommand: async (\n _: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n context.writer.writeln(NIL_GUID);\n\n if (_.args['copy'] || _.args['c']) {\n await context.clipboard.write(NIL_GUID);\n context.writer.writeInfo('Copied to clipboard');\n }\n\n context.process.output(NIL_GUID);\n },\n },\n\n // --- compare ---\n {\n command: 'compare',\n aliases: ['eq', 'equals'],\n description: 'Check if two UUIDs are equal (case/format insensitive)',\n acceptsRawInput: true,\n processCommand: async (\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n const parts = command.positionals ?? [];\n\n if (parts.length !== 2) {\n context.writer.writeError(\n 'Provide exactly two UUIDs to compare',\n );\n context.writer.writeln();\n context.writer.writeln(\n ` Usage: ${context.writer.wrapInColor('guid compare <uuid1> <uuid2>', CliForegroundColor.Cyan)}`,\n );\n return;\n }\n\n const [a, b] = parts;\n const cleanA = a.replace(/^urn:uuid:/i, '').replace(/[-{}() ]/g, '').toLowerCase();\n const cleanB = b.replace(/^urn:uuid:/i, '').replace(/[-{}() ]/g, '').toLowerCase();\n\n if (\n !/^[0-9a-f]{32}$/.test(cleanA) ||\n !/^[0-9a-f]{32}$/.test(cleanB)\n ) {\n context.writer.writeError(\n 'One or both inputs are not valid UUIDs',\n );\n return;\n }\n\n const equal = cleanA === cleanB;\n\n if (equal) {\n context.writer.writeSuccess('The UUIDs are equal');\n } else {\n context.writer.writeError('The UUIDs are different');\n }\n\n context.process.output({ equal, a, b });\n },\n writeDescription: (context: ICliExecutionContext) => {\n const { writer } = context;\n writer.writeln(\n 'Compare two UUIDs for equality regardless of case or format',\n );\n writer.writeln();\n writer.writeln('📋 Usage:');\n writer.writeln(\n ` ${writer.wrapInColor('guid compare <uuid1> <uuid2>', CliForegroundColor.Cyan)}`,\n );\n writer.writeln();\n writer.writeln('📝 Examples:');\n writer.writeln(\n ` guid compare 550e8400-e29b-41d4-a716-446655440000 550E8400-E29B-41D4-A716-446655440000`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('→ The UUIDs are equal', CliForegroundColor.Green)}`,\n );\n },\n },\n ];\n }\n\n async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n await context.executor.showHelp(command, context);\n }\n\n writeDescription(context: ICliExecutionContext): void {\n const { writer } = context;\n writer.writeln(this.description);\n writer.writeln();\n writer.writeln('📋 Commands:');\n writer.writeln(\n ` ${writer.wrapInColor('guid new', CliForegroundColor.Cyan)} Generate UUIDs`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid validate <uuid>', CliForegroundColor.Cyan)} Validate and detect version`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid format <uuid> --to=<fmt>', CliForegroundColor.Cyan)} Convert format`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid inspect <uuid>', CliForegroundColor.Cyan)} Show detailed info`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid compare <a> <b>', CliForegroundColor.Cyan)} Compare two UUIDs`,\n );\n writer.writeln(\n ` ${writer.wrapInColor('guid nil', CliForegroundColor.Cyan)} Output nil UUID`,\n );\n writer.writeln();\n writer.writeln('📝 Examples:');\n writer.writeln(\n ` guid new --count=5 --copy ${writer.wrapInColor('# 5 UUIDs, copied', CliForegroundColor.Green)}`,\n );\n writer.writeln(\n ` guid new --format=uppercase ${writer.wrapInColor('# A1B2C3D4-...', CliForegroundColor.Green)}`,\n );\n writer.writeln(\n ` guid validate 550e8400-e29b-41d4-a716-446655440000 ${writer.wrapInColor('# Valid UUID (v4)', CliForegroundColor.Green)}`,\n );\n writer.writeln(\n ` guid inspect 550e8400-e29b-41d4-a716-446655440000 ${writer.wrapInColor('# Version, variant, formats', CliForegroundColor.Green)}`,\n );\n writer.writeln(\n ` guid format <uuid> --to=urn ${writer.wrapInColor('# urn:uuid:...', CliForegroundColor.Green)}`,\n );\n }\n}\n","/*\n * Public API Surface of guid\n */\n\nexport * from './lib/utilities';\nexport type { GuidFormat } from './lib/utilities';\n\nexport * from './lib/processors/cli-guid-command-processor';\n\nimport { ICliModule } from '@qodalis/cli-core';\nimport { CliGuidCommandProcessor } from './lib/processors/cli-guid-command-processor';\nimport { API_VERSION } from './lib/version';\n\nexport const guidModule: ICliModule = {\n apiVersion: API_VERSION,\n name: '@qodalis/cli-guid',\n processors: [new CliGuidCommandProcessor()],\n translations: {\n es: { 'cli.guid.description': 'Generar, validar, formatear e inspeccionar UUIDs' },\n fr: { 'cli.guid.description': 'Générer, valider, formater et inspecter des UUIDs' },\n de: { 'cli.guid.description': 'UUIDs generieren, validieren, formatieren und inspizieren' },\n pt: { 'cli.guid.description': 'Gerar, validar, formatar e inspecionar UUIDs' },\n it: { 'cli.guid.description': 'Generare, validare, formattare e ispezionare UUID' },\n ja: { 'cli.guid.description': 'UUIDの生成、検証、フォーマット、検査' },\n ko: { 'cli.guid.description': 'UUID 생성, 검증, 포맷 및 검사' },\n zh: { 'cli.guid.description': '生成、验证、格式化和检查 UUID' },\n ru: { 'cli.guid.description': 'Генерация, проверка, форматирование и анализ UUID' },\n ro: { 'cli.guid.description': 'Generare, validare, formatare și inspectare UUID-uri' },\n },\n};\n"]}
package/public-api.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { DefaultLibraryAuthor, CliForegroundColor } from '@qodalis/cli-core';
1
+ import { DefaultLibraryAuthor, CliForegroundColor, getPluginConfigValue, joinShellWords } from '@qodalis/cli-core';
2
2
 
3
3
  // src/lib/utilities/index.ts
4
4
  var generateGUID = () => {
@@ -66,7 +66,7 @@ var formatGUID = (guid, format) => {
66
66
  };
67
67
 
68
68
  // src/lib/version.ts
69
- var LIBRARY_VERSION = "2.0.0-beta.2";
69
+ var LIBRARY_VERSION = "2.0.0-beta.21";
70
70
  var API_VERSION = 2;
71
71
 
72
72
  // src/lib/processors/cli-guid-command-processor.ts
@@ -90,6 +90,23 @@ var CliGuidCommandProcessor = class {
90
90
  icon: "\u{1F194}",
91
91
  module: "guid"
92
92
  };
93
+ this.configurationOptions = [
94
+ {
95
+ key: "defaultFormat",
96
+ label: "Default Format",
97
+ description: "Default output format for generated UUIDs",
98
+ type: "select",
99
+ defaultValue: "default",
100
+ options: GUID_FORMATS.map((f) => ({ label: f, value: f }))
101
+ },
102
+ {
103
+ key: "autoCopy",
104
+ label: "Auto-Copy to Clipboard",
105
+ description: "Automatically copy generated UUIDs to clipboard",
106
+ type: "boolean",
107
+ defaultValue: false
108
+ }
109
+ ];
93
110
  this.processors = [
94
111
  // --- new ---
95
112
  {
@@ -129,14 +146,16 @@ var CliGuidCommandProcessor = class {
129
146
  );
130
147
  return;
131
148
  }
132
- const format = command.args["format"] || "default";
149
+ const cfgFormat = getPluginConfigValue(context, "guid", "defaultFormat", "default");
150
+ const cfgAutoCopy = getPluginConfigValue(context, "guid", "autoCopy", false);
151
+ const format = command.args["format"] || cfgFormat;
133
152
  if (!GUID_FORMATS.includes(format)) {
134
153
  context.writer.writeError(
135
154
  `Unknown format "${format}". Available: ${GUID_FORMATS.join(", ")}`
136
155
  );
137
156
  return;
138
157
  }
139
- const copyToClipboard = command.args["copy"] || command.args["c"];
158
+ const copyToClipboard = command.args["copy"] != null ? !!command.args["copy"] : command.args["c"] != null ? !!command.args["c"] : cfgAutoCopy;
140
159
  const items = [];
141
160
  for (let i = 0; i < count; i++) {
142
161
  const guid = formatGUID(generateGUID(), format);
@@ -195,7 +214,7 @@ var CliGuidCommandProcessor = class {
195
214
  }
196
215
  ],
197
216
  processCommand: async (command, context) => {
198
- const input = command.value;
217
+ const input = joinShellWords(command.value ?? "");
199
218
  const strict = command.args["strict"];
200
219
  const isValid = strict ? validateGUID(input) : validateAnyGUID(input);
201
220
  if (isValid) {
@@ -253,7 +272,7 @@ var CliGuidCommandProcessor = class {
253
272
  }
254
273
  ],
255
274
  processCommand: async (command, context) => {
256
- const input = command.value;
275
+ const input = joinShellWords(command.value ?? "");
257
276
  const clean = input.replace(/[-{}()urn:uuid ]/g, "");
258
277
  if (!/^[0-9a-fA-F]{32}$/.test(clean)) {
259
278
  context.writer.writeError(
@@ -310,7 +329,7 @@ var CliGuidCommandProcessor = class {
310
329
  acceptsRawInput: true,
311
330
  valueRequired: true,
312
331
  processCommand: async (command, context) => {
313
- const input = command.value;
332
+ const input = joinShellWords(command.value ?? "");
314
333
  const { writer } = context;
315
334
  if (!validateAnyGUID(input)) {
316
335
  writer.writeError(`Invalid UUID: ${input}`);
@@ -411,8 +430,7 @@ var CliGuidCommandProcessor = class {
411
430
  description: "Check if two UUIDs are equal (case/format insensitive)",
412
431
  acceptsRawInput: true,
413
432
  processCommand: async (command, context) => {
414
- const raw = (command.value || "").trim();
415
- const parts = raw.split(/\s+/);
433
+ const parts = command.positionals ?? [];
416
434
  if (parts.length !== 2) {
417
435
  context.writer.writeError(
418
436
  "Provide exactly two UUIDs to compare"
@@ -424,8 +442,8 @@ var CliGuidCommandProcessor = class {
424
442
  return;
425
443
  }
426
444
  const [a, b] = parts;
427
- const cleanA = a.replace(/[-{}()urn:uuid ]/g, "").toLowerCase();
428
- const cleanB = b.replace(/[-{}()urn:uuid ]/g, "").toLowerCase();
445
+ const cleanA = a.replace(/^urn:uuid:/i, "").replace(/[-{}() ]/g, "").toLowerCase();
446
+ const cleanB = b.replace(/^urn:uuid:/i, "").replace(/[-{}() ]/g, "").toLowerCase();
429
447
  if (!/^[0-9a-f]{32}$/.test(cleanA) || !/^[0-9a-f]{32}$/.test(cleanB)) {
430
448
  context.writer.writeError(
431
449
  "One or both inputs are not valid UUIDs"