@qodalis/cli-guid 1.0.5 → 1.0.6

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.
@@ -1,3 +1,4 @@
1
+ import { generateGUID, validateGUID } from '../utilities';
1
2
  /**
2
3
  * A command processor for generating and validating GUIDs.
3
4
  */
@@ -22,13 +23,27 @@ export class CliGuidCommandProcessor {
22
23
  required: false,
23
24
  type: 'boolean',
24
25
  },
26
+ {
27
+ name: 'count',
28
+ description: 'Number of GUIDs to generate, default is 1',
29
+ defaultValue: '1',
30
+ required: false,
31
+ type: 'number',
32
+ },
25
33
  ],
26
34
  processCommand: async (command, context) => {
35
+ const count = command.args['count']
36
+ ? parseInt(command.args['count'])
37
+ : 1;
27
38
  const copyToClipboard = command.args['copy'] || command.args['c'];
28
- const guid = CliGuidCommandProcessor.generateGUID();
29
- context.writer.writeln(guid);
39
+ const items = [];
40
+ for (let i = 0; i < count; i++) {
41
+ const guid = generateGUID();
42
+ context.writer.writeln(guid);
43
+ items.push(guid);
44
+ }
30
45
  if (copyToClipboard) {
31
- await context.clipboard.write(guid);
46
+ await context.clipboard.write(items.join('\n'));
32
47
  context.writer.writeInfo('The GUID has been copied to the clipboard');
33
48
  }
34
49
  },
@@ -42,7 +57,7 @@ export class CliGuidCommandProcessor {
42
57
  context.writer.writeError('Please specify a GUID to validate');
43
58
  return;
44
59
  }
45
- const isValid = CliGuidCommandProcessor.validateGUID(command.value);
60
+ const isValid = validateGUID(command.value);
46
61
  if (isValid) {
47
62
  context.writer.writeSuccess('Yes, that is GUID!');
48
63
  }
@@ -64,18 +79,5 @@ export class CliGuidCommandProcessor {
64
79
  context.writer.writeln(' guid new --copy');
65
80
  context.writer.writeln(' guid validate 123e4567-e89b-12d3-a456-426614174000');
66
81
  }
67
- static generateGUID() {
68
- // Generate a GUID in the format of xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
69
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {
70
- const random = (Math.random() * 16) | 0; // Random integer between 0 and 15
71
- const value = char === 'x' ? random : (random & 0x3) | 0x8; // Ensure 'y' starts with 8, 9, A, or B
72
- return value.toString(16); // Convert to hexadecimal
73
- });
74
- }
75
- static validateGUID(guid) {
76
- // Regular expression to match a valid GUID format
77
- const guidRegex = /^[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}$/;
78
- return guidRegex.test(guid);
79
- }
80
82
  }
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWd1aWQtY29tbWFuZC1wcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWlkL3NyYy9saWIvcHJvY2Vzc29ycy9jbGktZ3VpZC1jb21tYW5kLXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQTs7R0FFRztBQUNILE1BQU0sT0FBTyx1QkFBdUI7SUFVaEM7UUFUQSxZQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsNkJBQTZCLENBQUM7UUFDNUMsV0FBTSxHQUFHO1lBQ0wsSUFBSSxFQUFFLGVBQWU7WUFDckIsS0FBSyxFQUFFLDJCQUEyQjtTQUNyQyxDQUFDO1FBRUYsZUFBVSxHQUF3QyxFQUFFLENBQUM7UUFHakQsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNkO2dCQUNJLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFdBQVcsRUFBRSxxQkFBcUI7Z0JBQ2xDLFVBQVUsRUFBRTtvQkFDUjt3QkFDSSxJQUFJLEVBQUUsTUFBTTt3QkFDWixPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUM7d0JBQ2QsV0FBVyxFQUFFLGdDQUFnQzt3QkFDN0MsUUFBUSxFQUFFLEtBQUs7d0JBQ2YsSUFBSSxFQUFFLFNBQVM7cUJBQ2xCO2lCQUNKO2dCQUNELGNBQWMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO29CQUN2QyxNQUFNLGVBQWUsR0FDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUM5QyxNQUFNLElBQUksR0FBRyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDcEQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBRTdCLElBQUksZUFBZSxFQUFFO3dCQUNqQixNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNwQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FDcEIsMkNBQTJDLENBQzlDLENBQUM7cUJBQ0w7Z0JBQ0wsQ0FBQzthQUNKO1lBQ0Q7Z0JBQ0ksT0FBTyxFQUFFLFVBQVU7Z0JBQ25CLHFCQUFxQixFQUFFLElBQUk7Z0JBQzNCLFdBQVcsRUFBRSxpQkFBaUI7Z0JBQzlCLGNBQWMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO29CQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTt3QkFDaEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQ3JCLG1DQUFtQyxDQUN0QyxDQUFDO3dCQUNGLE9BQU87cUJBQ1Y7b0JBRUQsTUFBTSxPQUFPLEdBQUcsdUJBQXVCLENBQUMsWUFBWSxDQUNoRCxPQUFPLENBQUMsS0FBSyxDQUNoQixDQUFDO29CQUVGLElBQUksT0FBTyxFQUFFO3dCQUNULE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUM7cUJBQ3JEO3lCQUFNO3dCQUNILE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUNyQixhQUFhLE9BQU8sQ0FBQyxLQUFLLGdCQUFnQixDQUM3QyxDQUFDO3FCQUNMO2dCQUNMLENBQUM7YUFDSjtTQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWMsQ0FDaEIsT0FBMEIsRUFDMUIsT0FBNkI7UUFFN0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBNkI7UUFDMUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLFVBQVU7UUFDVixPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNyQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUNsQixzREFBc0QsQ0FDekQsQ0FBQztJQUNOLENBQUM7SUFFTSxNQUFNLENBQUMsWUFBWTtRQUN0Qix3RUFBd0U7UUFDeEUsT0FBTyxzQ0FBc0MsQ0FBQyxPQUFPLENBQ2pELE9BQU8sRUFDUCxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ0wsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsa0NBQWtDO1lBQzNFLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsdUNBQXVDO1lBQ25HLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtRQUN4RCxDQUFDLENBQ0osQ0FBQztJQUNOLENBQUM7SUFFTSxNQUFNLENBQUMsWUFBWSxDQUFDLElBQVk7UUFDbkMsa0RBQWtEO1FBQ2xELE1BQU0sU0FBUyxHQUNYLHdGQUF3RixDQUFDO1FBQzdGLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENsaVByb2Nlc3NDb21tYW5kLFxuICAgIElDbGlDb21tYW5kUHJvY2Vzc29yLFxuICAgIElDbGlFeGVjdXRpb25Db250ZXh0LFxufSBmcm9tICdAcW9kYWxpcy9jbGktY29yZSc7XG5cbi8qKlxuICogQSBjb21tYW5kIHByb2Nlc3NvciBmb3IgZ2VuZXJhdGluZyBhbmQgdmFsaWRhdGluZyBHVUlEcy5cbiAqL1xuZXhwb3J0IGNsYXNzIENsaUd1aWRDb21tYW5kUHJvY2Vzc29yIGltcGxlbWVudHMgSUNsaUNvbW1hbmRQcm9jZXNzb3Ige1xuICAgIGNvbW1hbmQgPSAnZ3VpZCc7XG4gICAgZGVzY3JpcHRpb24gPSAnR2VuZXJhdGUgYW5kIHZhbGlkYXRlIEdVSURzJztcbiAgICBhdXRob3IgPSB7XG4gICAgICAgIG5hbWU6ICdOaWNvbGFlIEx1cGVpJyxcbiAgICAgICAgZW1haWw6ICduaWNvbGFlLmx1cGVpQHFvZGFsaXMuY29tJyxcbiAgICB9O1xuXG4gICAgcHJvY2Vzc29ycz86IElDbGlDb21tYW5kUHJvY2Vzc29yW10gfCB1bmRlZmluZWQgPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnByb2Nlc3NvcnMgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29tbWFuZDogJ25ldycsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdHZW5lcmF0ZSBhIG5ldyBHVUlEJyxcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb3B5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsaWFzZXM6IFsnYyddLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdDb3B5IHRoZSBHVUlEIHRvIHRoZSBjbGlwYm9hcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgcHJvY2Vzc0NvbW1hbmQ6IGFzeW5jIChjb21tYW5kLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvcHlUb0NsaXBib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kLmFyZ3NbJ2NvcHknXSB8fCBjb21tYW5kLmFyZ3NbJ2MnXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3VpZCA9IENsaUd1aWRDb21tYW5kUHJvY2Vzc29yLmdlbmVyYXRlR1VJRCgpO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZWxuKGd1aWQpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb3B5VG9DbGlwYm9hcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGNvbnRleHQuY2xpcGJvYXJkLndyaXRlKGd1aWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgR1VJRCBoYXMgYmVlbiBjb3BpZWQgdG8gdGhlIGNsaXBib2FyZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29tbWFuZDogJ3ZhbGlkYXRlJyxcbiAgICAgICAgICAgICAgICBhbGxvd1VubGlzdGVkQ29tbWFuZHM6IHRydWUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdWYWxpZGF0ZSBhIEdVSUQnLFxuICAgICAgICAgICAgICAgIHByb2Nlc3NDb21tYW5kOiBhc3luYyAoY29tbWFuZCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbW1hbmQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBzcGVjaWZ5IGEgR1VJRCB0byB2YWxpZGF0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IENsaUd1aWRDb21tYW5kUHJvY2Vzc29yLnZhbGlkYXRlR1VJRChcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlU3VjY2VzcygnWWVzLCB0aGF0IGlzIEdVSUQhJyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBUaGUgR1VJRCA8JHtjb21tYW5kLnZhbHVlfT4gaXMgbm90IHZhbGlkYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBhc3luYyBwcm9jZXNzQ29tbWFuZChcbiAgICAgICAgY29tbWFuZDogQ2xpUHJvY2Vzc0NvbW1hbmQsXG4gICAgICAgIGNvbnRleHQ6IElDbGlFeGVjdXRpb25Db250ZXh0LFxuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZWxuKCdQbGVhc2Ugc3BlY2lmeSBhIHN1YmNvbW1hbmQnKTtcbiAgICB9XG5cbiAgICB3cml0ZURlc2NyaXB0aW9uKGNvbnRleHQ6IElDbGlFeGVjdXRpb25Db250ZXh0KTogdm9pZCB7XG4gICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlbG4odGhpcy5kZXNjcmlwdGlvbik7XG4gICAgICAgIC8vZXhhbXBsZXNcbiAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVsbignRXhhbXBsZXM6Jyk7XG4gICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlbG4oJyAgZ3VpZCBuZXcnKTtcbiAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVsbignICBndWlkIG5ldyAtLWNvcHknKTtcbiAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVsbihcbiAgICAgICAgICAgICcgIGd1aWQgdmFsaWRhdGUgMTIzZTQ1NjctZTg5Yi0xMmQzLWE0NTYtNDI2NjE0MTc0MDAwJyxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdlbmVyYXRlR1VJRCgpOiBzdHJpbmcge1xuICAgICAgICAvLyBHZW5lcmF0ZSBhIEdVSUQgaW4gdGhlIGZvcm1hdCBvZiB4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHhcbiAgICAgICAgcmV0dXJuICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoXG4gICAgICAgICAgICAvW3h5XS9nLFxuICAgICAgICAgICAgKGNoYXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByYW5kb20gPSAoTWF0aC5yYW5kb20oKSAqIDE2KSB8IDA7IC8vIFJhbmRvbSBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMTVcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNoYXIgPT09ICd4JyA/IHJhbmRvbSA6IChyYW5kb20gJiAweDMpIHwgMHg4OyAvLyBFbnN1cmUgJ3knIHN0YXJ0cyB3aXRoIDgsIDksIEEsIG9yIEJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoMTYpOyAvLyBDb252ZXJ0IHRvIGhleGFkZWNpbWFsXG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgdmFsaWRhdGVHVUlEKGd1aWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBSZWd1bGFyIGV4cHJlc3Npb24gdG8gbWF0Y2ggYSB2YWxpZCBHVUlEIGZvcm1hdFxuICAgICAgICBjb25zdCBndWlkUmVnZXggPVxuICAgICAgICAgICAgL15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS00WzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn0kLztcbiAgICAgICAgcmV0dXJuIGd1aWRSZWdleC50ZXN0KGd1aWQpO1xuICAgIH1cbn1cbiJdfQ==
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWd1aWQtY29tbWFuZC1wcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWlkL3NyYy9saWIvcHJvY2Vzc29ycy9jbGktZ3VpZC1jb21tYW5kLXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUxRDs7R0FFRztBQUNILE1BQU0sT0FBTyx1QkFBdUI7SUFVaEM7UUFUQSxZQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsNkJBQTZCLENBQUM7UUFDNUMsV0FBTSxHQUFHO1lBQ0wsSUFBSSxFQUFFLGVBQWU7WUFDckIsS0FBSyxFQUFFLDJCQUEyQjtTQUNyQyxDQUFDO1FBRUYsZUFBVSxHQUF3QyxFQUFFLENBQUM7UUFHakQsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNkO2dCQUNJLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFdBQVcsRUFBRSxxQkFBcUI7Z0JBQ2xDLFVBQVUsRUFBRTtvQkFDUjt3QkFDSSxJQUFJLEVBQUUsTUFBTTt3QkFDWixPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUM7d0JBQ2QsV0FBVyxFQUFFLGdDQUFnQzt3QkFDN0MsUUFBUSxFQUFFLEtBQUs7d0JBQ2YsSUFBSSxFQUFFLFNBQVM7cUJBQ2xCO29CQUNEO3dCQUNJLElBQUksRUFBRSxPQUFPO3dCQUNiLFdBQVcsRUFDUCwyQ0FBMkM7d0JBQy9DLFlBQVksRUFBRSxHQUFHO3dCQUNqQixRQUFRLEVBQUUsS0FBSzt3QkFDZixJQUFJLEVBQUUsUUFBUTtxQkFDakI7aUJBQ0o7Z0JBQ0QsY0FBYyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUU7b0JBQ3ZDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO3dCQUMvQixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQ2pDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBRVIsTUFBTSxlQUFlLEdBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFFOUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO29CQUVqQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO3dCQUM1QixNQUFNLElBQUksR0FBRyxZQUFZLEVBQUUsQ0FBQzt3QkFDNUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBRTdCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ3BCO29CQUVELElBQUksZUFBZSxFQUFFO3dCQUNqQixNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDaEQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQ3BCLDJDQUEyQyxDQUM5QyxDQUFDO3FCQUNMO2dCQUNMLENBQUM7YUFDSjtZQUNEO2dCQUNJLE9BQU8sRUFBRSxVQUFVO2dCQUNuQixxQkFBcUIsRUFBRSxJQUFJO2dCQUMzQixXQUFXLEVBQUUsaUJBQWlCO2dCQUM5QixjQUFjLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtvQkFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7d0JBQ2hCLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUNyQixtQ0FBbUMsQ0FDdEMsQ0FBQzt3QkFDRixPQUFPO3FCQUNWO29CQUVELE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBRTVDLElBQUksT0FBTyxFQUFFO3dCQUNULE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUM7cUJBQ3JEO3lCQUFNO3dCQUNILE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUNyQixhQUFhLE9BQU8sQ0FBQyxLQUFLLGdCQUFnQixDQUM3QyxDQUFDO3FCQUNMO2dCQUNMLENBQUM7YUFDSjtTQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWMsQ0FDaEIsT0FBMEIsRUFDMUIsT0FBNkI7UUFFN0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBNkI7UUFDMUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLFVBQVU7UUFDVixPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNyQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUNsQixzREFBc0QsQ0FDekQsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2xpUHJvY2Vzc0NvbW1hbmQsXG4gICAgSUNsaUNvbW1hbmRQcm9jZXNzb3IsXG4gICAgSUNsaUV4ZWN1dGlvbkNvbnRleHQsXG59IGZyb20gJ0Bxb2RhbGlzL2NsaS1jb3JlJztcbmltcG9ydCB7IGdlbmVyYXRlR1VJRCwgdmFsaWRhdGVHVUlEIH0gZnJvbSAnLi4vdXRpbGl0aWVzJztcblxuLyoqXG4gKiBBIGNvbW1hbmQgcHJvY2Vzc29yIGZvciBnZW5lcmF0aW5nIGFuZCB2YWxpZGF0aW5nIEdVSURzLlxuICovXG5leHBvcnQgY2xhc3MgQ2xpR3VpZENvbW1hbmRQcm9jZXNzb3IgaW1wbGVtZW50cyBJQ2xpQ29tbWFuZFByb2Nlc3NvciB7XG4gICAgY29tbWFuZCA9ICdndWlkJztcbiAgICBkZXNjcmlwdGlvbiA9ICdHZW5lcmF0ZSBhbmQgdmFsaWRhdGUgR1VJRHMnO1xuICAgIGF1dGhvciA9IHtcbiAgICAgICAgbmFtZTogJ05pY29sYWUgTHVwZWknLFxuICAgICAgICBlbWFpbDogJ25pY29sYWUubHVwZWlAcW9kYWxpcy5jb20nLFxuICAgIH07XG5cbiAgICBwcm9jZXNzb3JzPzogSUNsaUNvbW1hbmRQcm9jZXNzb3JbXSB8IHVuZGVmaW5lZCA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc29ycyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAnbmV3JyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0dlbmVyYXRlIGEgbmV3IEdVSUQnLFxuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvcHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxpYXNlczogWydjJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0NvcHkgdGhlIEdVSUQgdG8gdGhlIGNsaXBib2FyZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb3VudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTnVtYmVyIG9mIEdVSURzIHRvIGdlbmVyYXRlLCBkZWZhdWx0IGlzIDEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiAnMScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHByb2Nlc3NDb21tYW5kOiBhc3luYyAoY29tbWFuZCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb3VudCA9IGNvbW1hbmQuYXJnc1snY291bnQnXVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwYXJzZUludChjb21tYW5kLmFyZ3NbJ2NvdW50J10pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IDE7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29weVRvQ2xpcGJvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuYXJnc1snY29weSddIHx8IGNvbW1hbmQuYXJnc1snYyddO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gW107XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBndWlkID0gZ2VuZXJhdGVHVUlEKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZWxuKGd1aWQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKGd1aWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvcHlUb0NsaXBib2FyZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgY29udGV4dC5jbGlwYm9hcmQud3JpdGUoaXRlbXMuam9pbignXFxuJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgR1VJRCBoYXMgYmVlbiBjb3BpZWQgdG8gdGhlIGNsaXBib2FyZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29tbWFuZDogJ3ZhbGlkYXRlJyxcbiAgICAgICAgICAgICAgICBhbGxvd1VubGlzdGVkQ29tbWFuZHM6IHRydWUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdWYWxpZGF0ZSBhIEdVSUQnLFxuICAgICAgICAgICAgICAgIHByb2Nlc3NDb21tYW5kOiBhc3luYyAoY29tbWFuZCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbW1hbmQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBzcGVjaWZ5IGEgR1VJRCB0byB2YWxpZGF0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IHZhbGlkYXRlR1VJRChjb21tYW5kLnZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVTdWNjZXNzKCdZZXMsIHRoYXQgaXMgR1VJRCEnKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYFRoZSBHVUlEIDwke2NvbW1hbmQudmFsdWV9PiBpcyBub3QgdmFsaWRgLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGFzeW5jIHByb2Nlc3NDb21tYW5kKFxuICAgICAgICBjb21tYW5kOiBDbGlQcm9jZXNzQ29tbWFuZCxcbiAgICAgICAgY29udGV4dDogSUNsaUV4ZWN1dGlvbkNvbnRleHQsXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlbG4oJ1BsZWFzZSBzcGVjaWZ5IGEgc3ViY29tbWFuZCcpO1xuICAgIH1cblxuICAgIHdyaXRlRGVzY3JpcHRpb24oY29udGV4dDogSUNsaUV4ZWN1dGlvbkNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVsbih0aGlzLmRlc2NyaXB0aW9uKTtcbiAgICAgICAgLy9leGFtcGxlc1xuICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZWxuKCdFeGFtcGxlczonKTtcbiAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVsbignICBndWlkIG5ldycpO1xuICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZWxuKCcgIGd1aWQgbmV3IC0tY29weScpO1xuICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZWxuKFxuICAgICAgICAgICAgJyAgZ3VpZCB2YWxpZGF0ZSAxMjNlNDU2Ny1lODliLTEyZDMtYTQ1Ni00MjY2MTQxNzQwMDAnLFxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,14 @@
1
+ export const generateGUID = () => {
2
+ // Generate a GUID in the format of xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
3
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {
4
+ const random = (Math.random() * 16) | 0; // Random integer between 0 and 15
5
+ const value = char === 'x' ? random : (random & 0x3) | 0x8; // Ensure 'y' starts with 8, 9, A, or B
6
+ return value.toString(16); // Convert to hexadecimal
7
+ });
8
+ };
9
+ export const validateGUID = (guid) => {
10
+ // Regular expression to match a valid GUID format
11
+ const guidRegex = /^[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}$/;
12
+ return guidRegex.test(guid);
13
+ };
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWlkL3NyYy9saWIvdXRpbGl0aWVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxHQUFXLEVBQUU7SUFDckMsd0VBQXdFO0lBQ3hFLE9BQU8sc0NBQXNDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ3BFLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGtDQUFrQztRQUMzRSxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLHVDQUF1QztRQUNuRyxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx5QkFBeUI7SUFDeEQsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFZLEVBQVcsRUFBRTtJQUNsRCxrREFBa0Q7SUFDbEQsTUFBTSxTQUFTLEdBQ1gsd0ZBQXdGLENBQUM7SUFDN0YsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBnZW5lcmF0ZUdVSUQgPSAoKTogc3RyaW5nID0+IHtcbiAgICAvLyBHZW5lcmF0ZSBhIEdVSUQgaW4gdGhlIGZvcm1hdCBvZiB4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHhcbiAgICByZXR1cm4gJ3h4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCcucmVwbGFjZSgvW3h5XS9nLCAoY2hhcikgPT4ge1xuICAgICAgICBjb25zdCByYW5kb20gPSAoTWF0aC5yYW5kb20oKSAqIDE2KSB8IDA7IC8vIFJhbmRvbSBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMTVcbiAgICAgICAgY29uc3QgdmFsdWUgPSBjaGFyID09PSAneCcgPyByYW5kb20gOiAocmFuZG9tICYgMHgzKSB8IDB4ODsgLy8gRW5zdXJlICd5JyBzdGFydHMgd2l0aCA4LCA5LCBBLCBvciBCXG4gICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygxNik7IC8vIENvbnZlcnQgdG8gaGV4YWRlY2ltYWxcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUdVSUQgPSAoZ3VpZDogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgLy8gUmVndWxhciBleHByZXNzaW9uIHRvIG1hdGNoIGEgdmFsaWQgR1VJRCBmb3JtYXRcbiAgICBjb25zdCBndWlkUmVnZXggPVxuICAgICAgICAvXlswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LTRbMC05YS1mQS1GXXszfS1bODlhYkFCXVswLTlhLWZBLUZdezN9LVswLTlhLWZBLUZdezEyfSQvO1xuICAgIHJldHVybiBndWlkUmVnZXgudGVzdChndWlkKTtcbn07XG4iXX0=
@@ -2,6 +2,20 @@ import * as i0 from '@angular/core';
2
2
  import { NgModule } from '@angular/core';
3
3
  import { resolveCommandProcessorProvider } from '@qodalis/angular-cli';
4
4
 
5
+ const generateGUID = () => {
6
+ // Generate a GUID in the format of xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
7
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {
8
+ const random = (Math.random() * 16) | 0; // Random integer between 0 and 15
9
+ const value = char === 'x' ? random : (random & 0x3) | 0x8; // Ensure 'y' starts with 8, 9, A, or B
10
+ return value.toString(16); // Convert to hexadecimal
11
+ });
12
+ };
13
+ const validateGUID = (guid) => {
14
+ // Regular expression to match a valid GUID format
15
+ const guidRegex = /^[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}$/;
16
+ return guidRegex.test(guid);
17
+ };
18
+
5
19
  /**
6
20
  * A command processor for generating and validating GUIDs.
7
21
  */
@@ -26,13 +40,27 @@ class CliGuidCommandProcessor {
26
40
  required: false,
27
41
  type: 'boolean',
28
42
  },
43
+ {
44
+ name: 'count',
45
+ description: 'Number of GUIDs to generate, default is 1',
46
+ defaultValue: '1',
47
+ required: false,
48
+ type: 'number',
49
+ },
29
50
  ],
30
51
  processCommand: async (command, context) => {
52
+ const count = command.args['count']
53
+ ? parseInt(command.args['count'])
54
+ : 1;
31
55
  const copyToClipboard = command.args['copy'] || command.args['c'];
32
- const guid = CliGuidCommandProcessor.generateGUID();
33
- context.writer.writeln(guid);
56
+ const items = [];
57
+ for (let i = 0; i < count; i++) {
58
+ const guid = generateGUID();
59
+ context.writer.writeln(guid);
60
+ items.push(guid);
61
+ }
34
62
  if (copyToClipboard) {
35
- await context.clipboard.write(guid);
63
+ await context.clipboard.write(items.join('\n'));
36
64
  context.writer.writeInfo('The GUID has been copied to the clipboard');
37
65
  }
38
66
  },
@@ -46,7 +74,7 @@ class CliGuidCommandProcessor {
46
74
  context.writer.writeError('Please specify a GUID to validate');
47
75
  return;
48
76
  }
49
- const isValid = CliGuidCommandProcessor.validateGUID(command.value);
77
+ const isValid = validateGUID(command.value);
50
78
  if (isValid) {
51
79
  context.writer.writeSuccess('Yes, that is GUID!');
52
80
  }
@@ -68,19 +96,6 @@ class CliGuidCommandProcessor {
68
96
  context.writer.writeln(' guid new --copy');
69
97
  context.writer.writeln(' guid validate 123e4567-e89b-12d3-a456-426614174000');
70
98
  }
71
- static generateGUID() {
72
- // Generate a GUID in the format of xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
73
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {
74
- const random = (Math.random() * 16) | 0; // Random integer between 0 and 15
75
- const value = char === 'x' ? random : (random & 0x3) | 0x8; // Ensure 'y' starts with 8, 9, A, or B
76
- return value.toString(16); // Convert to hexadecimal
77
- });
78
- }
79
- static validateGUID(guid) {
80
- // Regular expression to match a valid GUID format
81
- const guidRegex = /^[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}$/;
82
- return guidRegex.test(guid);
83
- }
84
99
  }
85
100
 
86
101
  class CliGuidModule {
@@ -1 +1 @@
1
- {"version":3,"file":"qodalis-cli-guid.mjs","sources":["../../../projects/guid/src/lib/processors/cli-guid-command-processor.ts","../../../projects/guid/src/lib/cli-guid.module.ts","../../../projects/guid/src/public-api.ts","../../../projects/guid/src/qodalis-cli-guid.ts"],"sourcesContent":["import {\n CliProcessCommand,\n ICliCommandProcessor,\n ICliExecutionContext,\n} from '@qodalis/cli-core';\n\n/**\n * A command processor for generating and validating GUIDs.\n */\nexport class CliGuidCommandProcessor implements ICliCommandProcessor {\n command = 'guid';\n description = 'Generate and validate GUIDs';\n author = {\n name: 'Nicolae Lupei',\n email: 'nicolae.lupei@qodalis.com',\n };\n\n processors?: ICliCommandProcessor[] | undefined = [];\n\n constructor() {\n this.processors = [\n {\n command: 'new',\n description: 'Generate a new GUID',\n parameters: [\n {\n name: 'copy',\n aliases: ['c'],\n description: 'Copy the GUID to the clipboard',\n required: false,\n type: 'boolean',\n },\n ],\n processCommand: async (command, context) => {\n const copyToClipboard =\n command.args['copy'] || command.args['c'];\n const guid = CliGuidCommandProcessor.generateGUID();\n context.writer.writeln(guid);\n\n if (copyToClipboard) {\n await context.clipboard.write(guid);\n context.writer.writeInfo(\n 'The GUID has been copied to the clipboard',\n );\n }\n },\n },\n {\n command: 'validate',\n allowUnlistedCommands: true,\n description: 'Validate a GUID',\n processCommand: async (command, context) => {\n if (!command.value) {\n context.writer.writeError(\n 'Please specify a GUID to validate',\n );\n return;\n }\n\n const isValid = CliGuidCommandProcessor.validateGUID(\n command.value,\n );\n\n if (isValid) {\n context.writer.writeSuccess('Yes, that is GUID!');\n } else {\n context.writer.writeError(\n `The GUID <${command.value}> is not valid`,\n );\n }\n },\n },\n ];\n }\n\n async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n context.writer.writeln('Please specify a subcommand');\n }\n\n writeDescription(context: ICliExecutionContext): void {\n context.writer.writeln(this.description);\n //examples\n context.writer.writeln('Examples:');\n context.writer.writeln(' guid new');\n context.writer.writeln(' guid new --copy');\n context.writer.writeln(\n ' guid validate 123e4567-e89b-12d3-a456-426614174000',\n );\n }\n\n public static generateGUID(): string {\n // Generate a GUID in the format of xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\n /[xy]/g,\n (char) => {\n const random = (Math.random() * 16) | 0; // Random integer between 0 and 15\n const value = char === 'x' ? random : (random & 0x3) | 0x8; // Ensure 'y' starts with 8, 9, A, or B\n return value.toString(16); // Convert to hexadecimal\n },\n );\n }\n\n public static validateGUID(guid: string): boolean {\n // Regular expression to match a valid GUID format\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","import { NgModule } from '@angular/core';\nimport { CliGuidCommandProcessor } from './processors/cli-guid-command-processor';\nimport { resolveCommandProcessorProvider } from '@qodalis/angular-cli';\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: [],\n providers: [resolveCommandProcessorProvider(CliGuidCommandProcessor)],\n})\nexport class CliGuidModule {}\n","/*\n * Public API Surface of guid\n */\n\nexport * from './lib/cli-guid.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qodalis-cli-guid.mjs","sources":["../../../projects/guid/src/lib/utilities/index.ts","../../../projects/guid/src/lib/processors/cli-guid-command-processor.ts","../../../projects/guid/src/lib/cli-guid.module.ts","../../../projects/guid/src/public-api.ts","../../../projects/guid/src/qodalis-cli-guid.ts"],"sourcesContent":["export const generateGUID = (): string => {\n // Generate a GUID in the format of xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {\n const random = (Math.random() * 16) | 0; // Random integer between 0 and 15\n const value = char === 'x' ? random : (random & 0x3) | 0x8; // Ensure 'y' starts with 8, 9, A, or B\n return value.toString(16); // Convert to hexadecimal\n });\n};\n\nexport const validateGUID = (guid: string): boolean => {\n // Regular expression to match a valid GUID format\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","import {\n CliProcessCommand,\n ICliCommandProcessor,\n ICliExecutionContext,\n} from '@qodalis/cli-core';\nimport { generateGUID, validateGUID } from '../utilities';\n\n/**\n * A command processor for generating and validating GUIDs.\n */\nexport class CliGuidCommandProcessor implements ICliCommandProcessor {\n command = 'guid';\n description = 'Generate and validate GUIDs';\n author = {\n name: 'Nicolae Lupei',\n email: 'nicolae.lupei@qodalis.com',\n };\n\n processors?: ICliCommandProcessor[] | undefined = [];\n\n constructor() {\n this.processors = [\n {\n command: 'new',\n description: 'Generate a new GUID',\n parameters: [\n {\n name: 'copy',\n aliases: ['c'],\n description: 'Copy the GUID to the clipboard',\n required: false,\n type: 'boolean',\n },\n {\n name: 'count',\n description:\n 'Number of GUIDs to generate, default is 1',\n defaultValue: '1',\n required: false,\n type: 'number',\n },\n ],\n processCommand: async (command, context) => {\n const count = command.args['count']\n ? parseInt(command.args['count'])\n : 1;\n\n const copyToClipboard =\n command.args['copy'] || command.args['c'];\n\n const items = [];\n\n for (let i = 0; i < count; i++) {\n const guid = generateGUID();\n context.writer.writeln(guid);\n\n items.push(guid);\n }\n\n if (copyToClipboard) {\n await context.clipboard.write(items.join('\\n'));\n context.writer.writeInfo(\n 'The GUID has been copied to the clipboard',\n );\n }\n },\n },\n {\n command: 'validate',\n allowUnlistedCommands: true,\n description: 'Validate a GUID',\n processCommand: async (command, context) => {\n if (!command.value) {\n context.writer.writeError(\n 'Please specify a GUID to validate',\n );\n return;\n }\n\n const isValid = validateGUID(command.value);\n\n if (isValid) {\n context.writer.writeSuccess('Yes, that is GUID!');\n } else {\n context.writer.writeError(\n `The GUID <${command.value}> is not valid`,\n );\n }\n },\n },\n ];\n }\n\n async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n context.writer.writeln('Please specify a subcommand');\n }\n\n writeDescription(context: ICliExecutionContext): void {\n context.writer.writeln(this.description);\n //examples\n context.writer.writeln('Examples:');\n context.writer.writeln(' guid new');\n context.writer.writeln(' guid new --copy');\n context.writer.writeln(\n ' guid validate 123e4567-e89b-12d3-a456-426614174000',\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CliGuidCommandProcessor } from './processors/cli-guid-command-processor';\nimport { resolveCommandProcessorProvider } from '@qodalis/angular-cli';\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: [],\n providers: [resolveCommandProcessorProvider(CliGuidCommandProcessor)],\n})\nexport class CliGuidModule {}\n","/*\n * Public API Surface of guid\n */\n\nexport * from './lib/cli-guid.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -13,6 +13,4 @@ export declare class CliGuidCommandProcessor implements ICliCommandProcessor {
13
13
  constructor();
14
14
  processCommand(command: CliProcessCommand, context: ICliExecutionContext): Promise<void>;
15
15
  writeDescription(context: ICliExecutionContext): void;
16
- static generateGUID(): string;
17
- static validateGUID(guid: string): boolean;
18
16
  }
@@ -0,0 +1,2 @@
1
+ export declare const generateGUID: () => string;
2
+ export declare const validateGUID: (guid: string) => boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qodalis/cli-guid",
3
- "version": "1.0.5",
3
+ "version": "1.0.6",
4
4
  "description": "An Angular CLI extension for generating and validating GUIDs.",
5
5
  "author": "Nicolae Lupei, Qodalis Solutions",
6
6
  "license": "MIT",
@@ -13,7 +13,8 @@
13
13
  "angular",
14
14
  "cli",
15
15
  "qodalis",
16
- "terminal"
16
+ "terminal",
17
+ "guid"
17
18
  ],
18
19
  "umd": "./umd/index.js",
19
20
  "unpkg": "./umd/index.js",
package/umd/index.js CHANGED
@@ -4,6 +4,20 @@
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.cliCore));
5
5
  })(this, (function (cliCore) { 'use strict';
6
6
 
7
+ const generateGUID = () => {
8
+ // Generate a GUID in the format of xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
9
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {
10
+ const random = (Math.random() * 16) | 0; // Random integer between 0 and 15
11
+ const value = char === 'x' ? random : (random & 0x3) | 0x8; // Ensure 'y' starts with 8, 9, A, or B
12
+ return value.toString(16); // Convert to hexadecimal
13
+ });
14
+ };
15
+ const validateGUID = (guid) => {
16
+ // Regular expression to match a valid GUID format
17
+ const guidRegex = /^[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}$/;
18
+ return guidRegex.test(guid);
19
+ };
20
+
7
21
  /**
8
22
  * A command processor for generating and validating GUIDs.
9
23
  */
@@ -28,13 +42,27 @@
28
42
  required: false,
29
43
  type: 'boolean',
30
44
  },
45
+ {
46
+ name: 'count',
47
+ description: 'Number of GUIDs to generate, default is 1',
48
+ defaultValue: '1',
49
+ required: false,
50
+ type: 'number',
51
+ },
31
52
  ],
32
53
  processCommand: async (command, context) => {
54
+ const count = command.args['count']
55
+ ? parseInt(command.args['count'])
56
+ : 1;
33
57
  const copyToClipboard = command.args['copy'] || command.args['c'];
34
- const guid = CliGuidCommandProcessor.generateGUID();
35
- context.writer.writeln(guid);
58
+ const items = [];
59
+ for (let i = 0; i < count; i++) {
60
+ const guid = generateGUID();
61
+ context.writer.writeln(guid);
62
+ items.push(guid);
63
+ }
36
64
  if (copyToClipboard) {
37
- await context.clipboard.write(guid);
65
+ await context.clipboard.write(items.join('\n'));
38
66
  context.writer.writeInfo('The GUID has been copied to the clipboard');
39
67
  }
40
68
  },
@@ -48,7 +76,7 @@
48
76
  context.writer.writeError('Please specify a GUID to validate');
49
77
  return;
50
78
  }
51
- const isValid = CliGuidCommandProcessor.validateGUID(command.value);
79
+ const isValid = validateGUID(command.value);
52
80
  if (isValid) {
53
81
  context.writer.writeSuccess('Yes, that is GUID!');
54
82
  }
@@ -70,19 +98,6 @@
70
98
  context.writer.writeln(' guid new --copy');
71
99
  context.writer.writeln(' guid validate 123e4567-e89b-12d3-a456-426614174000');
72
100
  }
73
- static generateGUID() {
74
- // Generate a GUID in the format of xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
75
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {
76
- const random = (Math.random() * 16) | 0; // Random integer between 0 and 15
77
- const value = char === 'x' ? random : (random & 0x3) | 0x8; // Ensure 'y' starts with 8, 9, A, or B
78
- return value.toString(16); // Convert to hexadecimal
79
- });
80
- }
81
- static validateGUID(guid) {
82
- // Regular expression to match a valid GUID format
83
- const guidRegex = /^[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}$/;
84
- return guidRegex.test(guid);
85
- }
86
101
  }
87
102
 
88
103
  const module = {