@radkode/neo 0.6.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/commands/alias/setup/index.d.ts.map +1 -1
  2. package/dist/commands/alias/setup/index.js +13 -1
  3. package/dist/commands/alias/setup/index.js.map +1 -1
  4. package/dist/commands/config/index.d.ts.map +1 -1
  5. package/dist/commands/config/index.js +33 -32
  6. package/dist/commands/config/index.js.map +1 -1
  7. package/dist/commands/git/branch/index.d.ts +3 -0
  8. package/dist/commands/git/branch/index.d.ts.map +1 -0
  9. package/dist/commands/git/branch/index.js +447 -0
  10. package/dist/commands/git/branch/index.js.map +1 -0
  11. package/dist/commands/git/index.d.ts.map +1 -1
  12. package/dist/commands/git/index.js +3 -1
  13. package/dist/commands/git/index.js.map +1 -1
  14. package/dist/commands/git/pull/index.d.ts.map +1 -1
  15. package/dist/commands/git/pull/index.js +161 -12
  16. package/dist/commands/git/pull/index.js.map +1 -1
  17. package/dist/commands/git/push/index.d.ts.map +1 -1
  18. package/dist/commands/git/push/index.js +23 -11
  19. package/dist/commands/git/push/index.js.map +1 -1
  20. package/dist/commands/init/index.d.ts.map +1 -1
  21. package/dist/commands/init/index.js +14 -2
  22. package/dist/commands/init/index.js.map +1 -1
  23. package/dist/commands/update/index.d.ts.map +1 -1
  24. package/dist/commands/update/index.js +18 -6
  25. package/dist/commands/update/index.js.map +1 -1
  26. package/dist/types/schemas.d.ts +95 -0
  27. package/dist/types/schemas.d.ts.map +1 -0
  28. package/dist/types/schemas.js +60 -0
  29. package/dist/types/schemas.js.map +1 -0
  30. package/dist/utils/validation.d.ts +16 -0
  31. package/dist/utils/validation.d.ts.map +1 -0
  32. package/dist/utils/validation.js +65 -0
  33. package/dist/utils/validation.js.map +1 -0
  34. package/package.json +3 -2
@@ -0,0 +1,95 @@
1
+ import { z } from 'zod';
2
+ export declare const baseOptionsSchema: z.ZodObject<{
3
+ verbose: z.ZodOptional<z.ZodBoolean>;
4
+ config: z.ZodOptional<z.ZodString>;
5
+ color: z.ZodOptional<z.ZodBoolean>;
6
+ banner: z.ZodOptional<z.ZodBoolean>;
7
+ }, z.core.$strip>;
8
+ export declare const initOptionsSchema: z.ZodObject<{
9
+ verbose: z.ZodOptional<z.ZodBoolean>;
10
+ config: z.ZodOptional<z.ZodString>;
11
+ color: z.ZodOptional<z.ZodBoolean>;
12
+ banner: z.ZodOptional<z.ZodBoolean>;
13
+ force: z.ZodOptional<z.ZodBoolean>;
14
+ skipInstall: z.ZodOptional<z.ZodBoolean>;
15
+ }, z.core.$strip>;
16
+ export declare const gitPushOptionsSchema: z.ZodObject<{
17
+ verbose: z.ZodOptional<z.ZodBoolean>;
18
+ config: z.ZodOptional<z.ZodString>;
19
+ color: z.ZodOptional<z.ZodBoolean>;
20
+ banner: z.ZodOptional<z.ZodBoolean>;
21
+ dryRun: z.ZodOptional<z.ZodBoolean>;
22
+ force: z.ZodOptional<z.ZodBoolean>;
23
+ setUpstream: z.ZodOptional<z.ZodString>;
24
+ tags: z.ZodOptional<z.ZodBoolean>;
25
+ }, z.core.$strip>;
26
+ export declare const gitPullOptionsSchema: z.ZodObject<{
27
+ verbose: z.ZodOptional<z.ZodBoolean>;
28
+ config: z.ZodOptional<z.ZodString>;
29
+ color: z.ZodOptional<z.ZodBoolean>;
30
+ banner: z.ZodOptional<z.ZodBoolean>;
31
+ rebase: z.ZodOptional<z.ZodBoolean>;
32
+ noRebase: z.ZodOptional<z.ZodBoolean>;
33
+ }, z.core.$strip>;
34
+ export declare const gitBranchOptionsSchema: z.ZodObject<{
35
+ verbose: z.ZodOptional<z.ZodBoolean>;
36
+ config: z.ZodOptional<z.ZodString>;
37
+ color: z.ZodOptional<z.ZodBoolean>;
38
+ banner: z.ZodOptional<z.ZodBoolean>;
39
+ dryRun: z.ZodOptional<z.ZodBoolean>;
40
+ force: z.ZodOptional<z.ZodBoolean>;
41
+ }, z.core.$strip>;
42
+ export declare const deletedBranchActionSchema: z.ZodEnum<{
43
+ switch_main_delete: "switch_main_delete";
44
+ switch_main_keep: "switch_main_keep";
45
+ set_upstream: "set_upstream";
46
+ cancel: "cancel";
47
+ }>;
48
+ export declare const updateOptionsSchema: z.ZodObject<{
49
+ verbose: z.ZodOptional<z.ZodBoolean>;
50
+ config: z.ZodOptional<z.ZodString>;
51
+ color: z.ZodOptional<z.ZodBoolean>;
52
+ banner: z.ZodOptional<z.ZodBoolean>;
53
+ checkOnly: z.ZodOptional<z.ZodBoolean>;
54
+ force: z.ZodOptional<z.ZodBoolean>;
55
+ }, z.core.$strip>;
56
+ export declare const configKeySchema: z.ZodString;
57
+ export declare const configValueSchema: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
58
+ export declare const bannerValueSchema: z.ZodEnum<{
59
+ full: "full";
60
+ compact: "compact";
61
+ none: "none";
62
+ }>;
63
+ export declare const themeValueSchema: z.ZodEnum<{
64
+ dark: "dark";
65
+ light: "light";
66
+ auto: "auto";
67
+ }>;
68
+ export declare const shellTypeSchema: z.ZodEnum<{
69
+ zsh: "zsh";
70
+ bash: "bash";
71
+ fish: "fish";
72
+ }>;
73
+ export declare const aliasSetupOptionsSchema: z.ZodObject<{
74
+ verbose: z.ZodOptional<z.ZodBoolean>;
75
+ config: z.ZodOptional<z.ZodString>;
76
+ color: z.ZodOptional<z.ZodBoolean>;
77
+ banner: z.ZodOptional<z.ZodBoolean>;
78
+ force: z.ZodOptional<z.ZodBoolean>;
79
+ enable: z.ZodOptional<z.ZodBoolean>;
80
+ disable: z.ZodOptional<z.ZodBoolean>;
81
+ }, z.core.$strip>;
82
+ export type BaseOptions = z.infer<typeof baseOptionsSchema>;
83
+ export type InitOptions = z.infer<typeof initOptionsSchema>;
84
+ export type GitPushOptions = z.infer<typeof gitPushOptionsSchema>;
85
+ export type GitPullOptions = z.infer<typeof gitPullOptionsSchema>;
86
+ export type GitBranchOptions = z.infer<typeof gitBranchOptionsSchema>;
87
+ export type UpdateOptions = z.infer<typeof updateOptionsSchema>;
88
+ export type ConfigKey = z.infer<typeof configKeySchema>;
89
+ export type ConfigValue = z.infer<typeof configValueSchema>;
90
+ export type BannerValue = z.infer<typeof bannerValueSchema>;
91
+ export type ThemeValue = z.infer<typeof themeValueSchema>;
92
+ export type ShellType = z.infer<typeof shellTypeSchema>;
93
+ export type AliasSetupOptions = z.infer<typeof aliasSetupOptionsSchema>;
94
+ export type DeletedBranchAction = z.infer<typeof deletedBranchActionSchema>;
95
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/types/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,iBAAiB;;;;;iBAK5B,CAAC;AAKH,eAAO,MAAM,iBAAiB;;;;;;;iBAG5B,CAAC;AAKH,eAAO,MAAM,oBAAoB;;;;;;;;;iBAS/B,CAAC;AAKH,eAAO,MAAM,oBAAoB;;;;;;;iBAG/B,CAAC;AAKH,eAAO,MAAM,sBAAsB;;;;;;;iBAGjC,CAAC;AAKH,eAAO,MAAM,yBAAyB;;;;;EAKrC,CAAC;AAKF,eAAO,MAAM,mBAAmB;;;;;;;iBAG9B,CAAC;AAMH,eAAO,MAAM,eAAe,aAGqC,CAAC;AAMlE,eAAO,MAAM,iBAAiB,+DAI5B,CAAC;AAKH,eAAO,MAAM,iBAAiB;;;;EAE5B,CAAC;AAKH,eAAO,MAAM,gBAAgB;;;;EAE3B,CAAC;AAKH,eAAO,MAAM,eAAe;;;;EAE1B,CAAC;AAKH,eAAO,MAAM,uBAAuB;;;;;;;;iBAIlC,CAAC;AAKH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { z } from 'zod';
2
+ export const baseOptionsSchema = z.object({
3
+ verbose: z.boolean().optional(),
4
+ config: z.string().optional(),
5
+ color: z.boolean().optional(),
6
+ banner: z.boolean().optional(),
7
+ });
8
+ export const initOptionsSchema = baseOptionsSchema.extend({
9
+ force: z.boolean().optional(),
10
+ skipInstall: z.boolean().optional(),
11
+ });
12
+ export const gitPushOptionsSchema = baseOptionsSchema.extend({
13
+ dryRun: z.boolean().optional(),
14
+ force: z.boolean().optional(),
15
+ setUpstream: z
16
+ .string()
17
+ .min(1, 'Branch name cannot be empty')
18
+ .regex(/^[a-zA-Z0-9/._-]+$/, 'Invalid branch name format')
19
+ .optional(),
20
+ tags: z.boolean().optional(),
21
+ });
22
+ export const gitPullOptionsSchema = baseOptionsSchema.extend({
23
+ rebase: z.boolean().optional(),
24
+ noRebase: z.boolean().optional(),
25
+ });
26
+ export const gitBranchOptionsSchema = baseOptionsSchema.extend({
27
+ dryRun: z.boolean().optional(),
28
+ force: z.boolean().optional(),
29
+ });
30
+ export const deletedBranchActionSchema = z.enum(['switch_main_delete', 'switch_main_keep', 'set_upstream', 'cancel'], {
31
+ message: 'Must be one of: switch_main_delete, switch_main_keep, set_upstream, cancel',
32
+ });
33
+ export const updateOptionsSchema = baseOptionsSchema.extend({
34
+ checkOnly: z.boolean().optional(),
35
+ force: z.boolean().optional(),
36
+ });
37
+ export const configKeySchema = z
38
+ .string()
39
+ .min(1, 'Configuration key cannot be empty')
40
+ .regex(/^[a-zA-Z0-9._-]+$/, 'Invalid configuration key format');
41
+ export const configValueSchema = z.union([
42
+ z.string().min(1, 'Configuration value cannot be empty'),
43
+ z.number(),
44
+ z.boolean(),
45
+ ]);
46
+ export const bannerValueSchema = z.enum(['full', 'compact', 'none'], {
47
+ message: 'Banner must be one of: full, compact, none',
48
+ });
49
+ export const themeValueSchema = z.enum(['dark', 'light', 'auto'], {
50
+ message: 'Theme must be one of: dark, light, auto',
51
+ });
52
+ export const shellTypeSchema = z.enum(['zsh', 'bash', 'fish'], {
53
+ message: 'Shell type must be one of: zsh, bash, fish',
54
+ });
55
+ export const aliasSetupOptionsSchema = baseOptionsSchema.extend({
56
+ force: z.boolean().optional(),
57
+ enable: z.boolean().optional(),
58
+ disable: z.boolean().optional(),
59
+ });
60
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/types/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ export declare class ValidationError extends Error {
3
+ readonly errors: Array<{
4
+ path: string;
5
+ message: string;
6
+ }>;
7
+ constructor(message: string, errors: Array<{
8
+ path: string;
9
+ message: string;
10
+ }>);
11
+ }
12
+ export declare function validate<T extends z.ZodTypeAny>(schema: T, data: unknown, context?: string): z.infer<T>;
13
+ export declare function validateArgument<T extends z.ZodTypeAny>(schema: T, value: unknown, name: string): z.infer<T>;
14
+ export declare function validateConfigValue(key: string, value: string): Promise<string | number | boolean>;
15
+ export declare function isValidationError(error: unknown): error is ValidationError;
16
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,qBAAa,eAAgB,SAAQ,KAAK;aAGtB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;gBADhE,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAKnE;AAgBD,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAC7C,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,MAAgB,GACxB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAyBZ;AAgBD,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EACrD,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,GACX,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAYZ;AAgBD,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CA2BpC;AAQD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE1E"}
@@ -0,0 +1,65 @@
1
+ import { ui } from './ui.js';
2
+ export class ValidationError extends Error {
3
+ errors;
4
+ constructor(message, errors) {
5
+ super(message);
6
+ this.errors = errors;
7
+ this.name = 'ValidationError';
8
+ }
9
+ }
10
+ export function validate(schema, data, context = 'input') {
11
+ const result = schema.safeParse(data);
12
+ if (!result.success) {
13
+ const errors = result.error.issues.map((err) => ({
14
+ path: err.path.join('.') || 'value',
15
+ message: err.message,
16
+ }));
17
+ ui.error(`Invalid ${context}`);
18
+ console.log('');
19
+ for (const error of errors) {
20
+ if (error.path === 'value') {
21
+ ui.warn(`✖ ${error.message}`);
22
+ }
23
+ else {
24
+ ui.warn(`✖ ${error.path}: ${error.message}`);
25
+ }
26
+ }
27
+ throw new ValidationError(`Invalid ${context}`, errors);
28
+ }
29
+ return result.data;
30
+ }
31
+ export function validateArgument(schema, value, name) {
32
+ const result = schema.safeParse(value);
33
+ if (!result.success) {
34
+ const error = result.error.issues[0];
35
+ if (error) {
36
+ ui.error(`Invalid ${name}: ${error.message}`);
37
+ throw new ValidationError(`Invalid ${name}`, [{ path: name, message: error.message }]);
38
+ }
39
+ }
40
+ return result.data;
41
+ }
42
+ export async function validateConfigValue(key, value) {
43
+ const { bannerValueSchema, themeValueSchema, shellTypeSchema } = await import('../types/schemas.js');
44
+ if (key === 'preferences.banner') {
45
+ return validateArgument(bannerValueSchema, value, `${key} value`);
46
+ }
47
+ if (key === 'preferences.theme') {
48
+ return validateArgument(themeValueSchema, value, `${key} value`);
49
+ }
50
+ if (key === 'shell.type') {
51
+ return validateArgument(shellTypeSchema, value, `${key} value`);
52
+ }
53
+ if (value === 'true')
54
+ return true;
55
+ if (value === 'false')
56
+ return false;
57
+ const num = Number(value);
58
+ if (!isNaN(num) && value !== '')
59
+ return num;
60
+ return value;
61
+ }
62
+ export function isValidationError(error) {
63
+ return error instanceof ValidationError;
64
+ }
65
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@radkode/neo",
3
- "version": "0.6.1",
3
+ "version": "0.8.0",
4
4
  "description": "Modern CLI toolkit with intelligent git workflows and configuration management",
5
5
  "author": "Jacek Radko",
6
6
  "license": "MIT",
@@ -41,7 +41,8 @@
41
41
  "execa": "^9.6.0",
42
42
  "inquirer": "^12.9.6",
43
43
  "ora": "^9.0.0",
44
- "which": "^5.0.0"
44
+ "which": "^5.0.0",
45
+ "zod": "^4.1.12"
45
46
  },
46
47
  "devDependencies": {
47
48
  "@changesets/changelog-github": "^0.5.1",