@qodalis/cli-guid 2.0.0-beta.17 → 2.0.0-beta.19
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 +2 -2
- package/public-api.d.mts +3 -3
- package/public-api.d.ts +3 -3
- package/public-api.js +7 -8
- package/public-api.js.map +1 -1
- package/public-api.mjs +8 -9
- package/public-api.mjs.map +1 -1
- package/umd/index.global.js +212 -73
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qodalis/cli-guid",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.19",
|
|
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.
|
|
23
|
+
"@qodalis/cli-core": "2.0.0-beta.19"
|
|
24
24
|
},
|
|
25
25
|
"sideEffects": false,
|
|
26
26
|
"main": "./public-api.js",
|
package/public-api.d.mts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as _qodalis_cli_core from '@qodalis/cli-core';
|
|
2
1
|
import { ICliCommandProcessor, CliProcessorMetadata, ICliConfigurationOption, CliProcessCommand, ICliExecutionContext, ICliModule } from '@qodalis/cli-core';
|
|
3
2
|
|
|
4
3
|
/**
|
|
@@ -31,7 +30,7 @@ declare class CliGuidCommandProcessor implements ICliCommandProcessor {
|
|
|
31
30
|
command: string;
|
|
32
31
|
aliases: string[];
|
|
33
32
|
description: string;
|
|
34
|
-
author:
|
|
33
|
+
author: any;
|
|
35
34
|
version: string;
|
|
36
35
|
processors?: ICliCommandProcessor[];
|
|
37
36
|
metadata?: CliProcessorMetadata;
|
|
@@ -43,4 +42,5 @@ declare class CliGuidCommandProcessor implements ICliCommandProcessor {
|
|
|
43
42
|
|
|
44
43
|
declare const guidModule: ICliModule;
|
|
45
44
|
|
|
46
|
-
export { CliGuidCommandProcessor,
|
|
45
|
+
export { CliGuidCommandProcessor, NIL_GUID, detectGUIDVersion, formatGUID, generateGUID, guidModule, validateAnyGUID, validateGUID };
|
|
46
|
+
export type { GuidFormat };
|
package/public-api.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as _qodalis_cli_core from '@qodalis/cli-core';
|
|
2
1
|
import { ICliCommandProcessor, CliProcessorMetadata, ICliConfigurationOption, CliProcessCommand, ICliExecutionContext, ICliModule } from '@qodalis/cli-core';
|
|
3
2
|
|
|
4
3
|
/**
|
|
@@ -31,7 +30,7 @@ declare class CliGuidCommandProcessor implements ICliCommandProcessor {
|
|
|
31
30
|
command: string;
|
|
32
31
|
aliases: string[];
|
|
33
32
|
description: string;
|
|
34
|
-
author:
|
|
33
|
+
author: any;
|
|
35
34
|
version: string;
|
|
36
35
|
processors?: ICliCommandProcessor[];
|
|
37
36
|
metadata?: CliProcessorMetadata;
|
|
@@ -43,4 +42,5 @@ declare class CliGuidCommandProcessor implements ICliCommandProcessor {
|
|
|
43
42
|
|
|
44
43
|
declare const guidModule: ICliModule;
|
|
45
44
|
|
|
46
|
-
export { CliGuidCommandProcessor,
|
|
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.
|
|
71
|
+
var LIBRARY_VERSION = "2.0.0-beta.19";
|
|
72
72
|
var API_VERSION = 2;
|
|
73
73
|
|
|
74
74
|
// src/lib/processors/cli-guid-command-processor.ts
|
|
@@ -216,7 +216,7 @@ var CliGuidCommandProcessor = class {
|
|
|
216
216
|
}
|
|
217
217
|
],
|
|
218
218
|
processCommand: async (command, context) => {
|
|
219
|
-
const input = command.value;
|
|
219
|
+
const input = cliCore.joinShellWords(command.value ?? "");
|
|
220
220
|
const strict = command.args["strict"];
|
|
221
221
|
const isValid = strict ? validateGUID(input) : validateAnyGUID(input);
|
|
222
222
|
if (isValid) {
|
|
@@ -274,7 +274,7 @@ var CliGuidCommandProcessor = class {
|
|
|
274
274
|
}
|
|
275
275
|
],
|
|
276
276
|
processCommand: async (command, context) => {
|
|
277
|
-
const input = command.value;
|
|
277
|
+
const input = cliCore.joinShellWords(command.value ?? "");
|
|
278
278
|
const clean = input.replace(/[-{}()urn:uuid ]/g, "");
|
|
279
279
|
if (!/^[0-9a-fA-F]{32}$/.test(clean)) {
|
|
280
280
|
context.writer.writeError(
|
|
@@ -331,7 +331,7 @@ var CliGuidCommandProcessor = class {
|
|
|
331
331
|
acceptsRawInput: true,
|
|
332
332
|
valueRequired: true,
|
|
333
333
|
processCommand: async (command, context) => {
|
|
334
|
-
const input = command.value;
|
|
334
|
+
const input = cliCore.joinShellWords(command.value ?? "");
|
|
335
335
|
const { writer } = context;
|
|
336
336
|
if (!validateAnyGUID(input)) {
|
|
337
337
|
writer.writeError(`Invalid UUID: ${input}`);
|
|
@@ -432,8 +432,7 @@ var CliGuidCommandProcessor = class {
|
|
|
432
432
|
description: "Check if two UUIDs are equal (case/format insensitive)",
|
|
433
433
|
acceptsRawInput: true,
|
|
434
434
|
processCommand: async (command, context) => {
|
|
435
|
-
const
|
|
436
|
-
const parts = raw.split(/\s+/);
|
|
435
|
+
const parts = command.positionals ?? [];
|
|
437
436
|
if (parts.length !== 2) {
|
|
438
437
|
context.writer.writeError(
|
|
439
438
|
"Provide exactly two UUIDs to compare"
|
|
@@ -445,8 +444,8 @@ var CliGuidCommandProcessor = class {
|
|
|
445
444
|
return;
|
|
446
445
|
}
|
|
447
446
|
const [a, b] = parts;
|
|
448
|
-
const cleanA = a.replace(/[-{}()
|
|
449
|
-
const cleanB = b.replace(/[-{}()
|
|
447
|
+
const cleanA = a.replace(/^urn:uuid:/i, "").replace(/[-{}() ]/g, "").toLowerCase();
|
|
448
|
+
const cleanB = b.replace(/^urn:uuid:/i, "").replace(/[-{}() ]/g, "").toLowerCase();
|
|
450
449
|
if (!/^[0-9a-f]{32}$/.test(cleanA) || !/^[0-9a-f]{32}$/.test(cleanB)) {
|
|
451
450
|
context.writer.writeError(
|
|
452
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","getPluginConfigValue","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.17';\nexport const API_VERSION = 2;\n ","import {\n CliForegroundColor,\n CliProcessCommand,\n CliProcessorMetadata,\n DefaultLibraryAuthor,\n ICliCommandProcessor,\n ICliConfigurationOption,\n ICliExecutionContext,\n getPluginConfigValue,\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 = 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.19';\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, getPluginConfigValue } 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.
|
|
69
|
+
var LIBRARY_VERSION = "2.0.0-beta.19";
|
|
70
70
|
var API_VERSION = 2;
|
|
71
71
|
|
|
72
72
|
// src/lib/processors/cli-guid-command-processor.ts
|
|
@@ -214,7 +214,7 @@ var CliGuidCommandProcessor = class {
|
|
|
214
214
|
}
|
|
215
215
|
],
|
|
216
216
|
processCommand: async (command, context) => {
|
|
217
|
-
const input = command.value;
|
|
217
|
+
const input = joinShellWords(command.value ?? "");
|
|
218
218
|
const strict = command.args["strict"];
|
|
219
219
|
const isValid = strict ? validateGUID(input) : validateAnyGUID(input);
|
|
220
220
|
if (isValid) {
|
|
@@ -272,7 +272,7 @@ var CliGuidCommandProcessor = class {
|
|
|
272
272
|
}
|
|
273
273
|
],
|
|
274
274
|
processCommand: async (command, context) => {
|
|
275
|
-
const input = command.value;
|
|
275
|
+
const input = joinShellWords(command.value ?? "");
|
|
276
276
|
const clean = input.replace(/[-{}()urn:uuid ]/g, "");
|
|
277
277
|
if (!/^[0-9a-fA-F]{32}$/.test(clean)) {
|
|
278
278
|
context.writer.writeError(
|
|
@@ -329,7 +329,7 @@ var CliGuidCommandProcessor = class {
|
|
|
329
329
|
acceptsRawInput: true,
|
|
330
330
|
valueRequired: true,
|
|
331
331
|
processCommand: async (command, context) => {
|
|
332
|
-
const input = command.value;
|
|
332
|
+
const input = joinShellWords(command.value ?? "");
|
|
333
333
|
const { writer } = context;
|
|
334
334
|
if (!validateAnyGUID(input)) {
|
|
335
335
|
writer.writeError(`Invalid UUID: ${input}`);
|
|
@@ -430,8 +430,7 @@ var CliGuidCommandProcessor = class {
|
|
|
430
430
|
description: "Check if two UUIDs are equal (case/format insensitive)",
|
|
431
431
|
acceptsRawInput: true,
|
|
432
432
|
processCommand: async (command, context) => {
|
|
433
|
-
const
|
|
434
|
-
const parts = raw.split(/\s+/);
|
|
433
|
+
const parts = command.positionals ?? [];
|
|
435
434
|
if (parts.length !== 2) {
|
|
436
435
|
context.writer.writeError(
|
|
437
436
|
"Provide exactly two UUIDs to compare"
|
|
@@ -443,8 +442,8 @@ var CliGuidCommandProcessor = class {
|
|
|
443
442
|
return;
|
|
444
443
|
}
|
|
445
444
|
const [a, b] = parts;
|
|
446
|
-
const cleanA = a.replace(/[-{}()
|
|
447
|
-
const cleanB = b.replace(/[-{}()
|
|
445
|
+
const cleanA = a.replace(/^urn:uuid:/i, "").replace(/[-{}() ]/g, "").toLowerCase();
|
|
446
|
+
const cleanB = b.replace(/^urn:uuid:/i, "").replace(/[-{}() ]/g, "").toLowerCase();
|
|
448
447
|
if (!/^[0-9a-f]{32}$/.test(cleanA) || !/^[0-9a-f]{32}$/.test(cleanB)) {
|
|
449
448
|
context.writer.writeError(
|
|
450
449
|
"One or both inputs are not valid UUIDs"
|