02-rbor 0.1.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 (154) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +429 -0
  3. package/bin/rbor.js +3 -0
  4. package/dist/analyzers/file-categorizer.d.ts +5 -0
  5. package/dist/analyzers/file-categorizer.js +269 -0
  6. package/dist/analyzers/file-categorizer.js.map +1 -0
  7. package/dist/analyzers/file-categorizer.test.d.ts +1 -0
  8. package/dist/analyzers/file-categorizer.test.js +155 -0
  9. package/dist/analyzers/file-categorizer.test.js.map +1 -0
  10. package/dist/analyzers/graph-builder.d.ts +4 -0
  11. package/dist/analyzers/graph-builder.js +509 -0
  12. package/dist/analyzers/graph-builder.js.map +1 -0
  13. package/dist/analyzers/import-parser.d.ts +8 -0
  14. package/dist/analyzers/import-parser.js +285 -0
  15. package/dist/analyzers/import-parser.js.map +1 -0
  16. package/dist/analyzers/import-parser.test.d.ts +1 -0
  17. package/dist/analyzers/import-parser.test.js +177 -0
  18. package/dist/analyzers/import-parser.test.js.map +1 -0
  19. package/dist/analyzers/index.d.ts +4 -0
  20. package/dist/analyzers/index.js +28 -0
  21. package/dist/analyzers/index.js.map +1 -0
  22. package/dist/analyzers/output-formatters.d.ts +11 -0
  23. package/dist/analyzers/output-formatters.js +451 -0
  24. package/dist/analyzers/output-formatters.js.map +1 -0
  25. package/dist/analyzers/yo.d.ts +1 -0
  26. package/dist/analyzers/yo.js +10 -0
  27. package/dist/analyzers/yo.js.map +1 -0
  28. package/dist/app/App.d.ts +1 -0
  29. package/dist/app/App.js +6 -0
  30. package/dist/app/App.js.map +1 -0
  31. package/dist/cli.d.ts +5 -0
  32. package/dist/cli.js +167 -0
  33. package/dist/cli.js.map +1 -0
  34. package/dist/commands/analyze-deps.d.ts +12 -0
  35. package/dist/commands/analyze-deps.js +136 -0
  36. package/dist/commands/analyze-deps.js.map +1 -0
  37. package/dist/commands/generate-constant.d.ts +1 -0
  38. package/dist/commands/generate-constant.js +148 -0
  39. package/dist/commands/generate-constant.js.map +1 -0
  40. package/dist/commands/generate-domain.d.ts +2 -0
  41. package/dist/commands/generate-domain.js +87 -0
  42. package/dist/commands/generate-domain.js.map +1 -0
  43. package/dist/commands/generate-endpoint.d.ts +1 -0
  44. package/dist/commands/generate-endpoint.js +124 -0
  45. package/dist/commands/generate-endpoint.js.map +1 -0
  46. package/dist/commands/init.d.ts +8 -0
  47. package/dist/commands/init.js +32 -0
  48. package/dist/commands/init.js.map +1 -0
  49. package/dist/commands/list-domains.d.ts +1 -0
  50. package/dist/commands/list-domains.js +122 -0
  51. package/dist/commands/list-domains.js.map +1 -0
  52. package/dist/commands/validate.d.ts +4 -0
  53. package/dist/commands/validate.js +255 -0
  54. package/dist/commands/validate.js.map +1 -0
  55. package/dist/layouts/MainLayout.d.ts +1 -0
  56. package/dist/layouts/MainLayout.js +6 -0
  57. package/dist/layouts/MainLayout.js.map +1 -0
  58. package/dist/pages/HomePage.d.ts +1 -0
  59. package/dist/pages/HomePage.js +6 -0
  60. package/dist/pages/HomePage.js.map +1 -0
  61. package/dist/templates/barrel/index.d.ts +1 -0
  62. package/dist/templates/barrel/index.js +14 -0
  63. package/dist/templates/barrel/index.js.map +1 -0
  64. package/dist/templates/component/index.d.ts +1 -0
  65. package/dist/templates/component/index.js +6 -0
  66. package/dist/templates/component/index.js.map +1 -0
  67. package/dist/templates/component/main.d.ts +1 -0
  68. package/dist/templates/component/main.js +8 -0
  69. package/dist/templates/component/main.js.map +1 -0
  70. package/dist/templates/hooks/action.d.ts +1 -0
  71. package/dist/templates/hooks/action.js +49 -0
  72. package/dist/templates/hooks/action.js.map +1 -0
  73. package/dist/templates/hooks/controller.d.ts +1 -0
  74. package/dist/templates/hooks/controller.js +41 -0
  75. package/dist/templates/hooks/controller.js.map +1 -0
  76. package/dist/templates/hooks/data.d.ts +1 -0
  77. package/dist/templates/hooks/data.js +38 -0
  78. package/dist/templates/hooks/data.js.map +1 -0
  79. package/dist/templates/hooks/index.d.ts +3 -0
  80. package/dist/templates/hooks/index.js +10 -0
  81. package/dist/templates/hooks/index.js.map +1 -0
  82. package/dist/templates/index.d.ts +10 -0
  83. package/dist/templates/index.js +33 -0
  84. package/dist/templates/index.js.map +1 -0
  85. package/dist/templates/methods/index.d.ts +1 -0
  86. package/dist/templates/methods/index.js +85 -0
  87. package/dist/templates/methods/index.js.map +1 -0
  88. package/dist/templates/schema/index.d.ts +1 -0
  89. package/dist/templates/schema/index.js +40 -0
  90. package/dist/templates/schema/index.js.map +1 -0
  91. package/dist/templates/services/base-service-axios.d.ts +1 -0
  92. package/dist/templates/services/base-service-axios.js +77 -0
  93. package/dist/templates/services/base-service-axios.js.map +1 -0
  94. package/dist/templates/services/base-service-fetch.d.ts +1 -0
  95. package/dist/templates/services/base-service-fetch.js +113 -0
  96. package/dist/templates/services/base-service-fetch.js.map +1 -0
  97. package/dist/templates/services/base-service-ky.d.ts +1 -0
  98. package/dist/templates/services/base-service-ky.js +85 -0
  99. package/dist/templates/services/base-service-ky.js.map +1 -0
  100. package/dist/templates/services/base-service.d.ts +1 -0
  101. package/dist/templates/services/base-service.js +92 -0
  102. package/dist/templates/services/base-service.js.map +1 -0
  103. package/dist/templates/services/domain-service.d.ts +2 -0
  104. package/dist/templates/services/domain-service.js +95 -0
  105. package/dist/templates/services/domain-service.js.map +1 -0
  106. package/dist/templates/services/index.d.ts +7 -0
  107. package/dist/templates/services/index.js +23 -0
  108. package/dist/templates/services/index.js.map +1 -0
  109. package/dist/templates/services/service-factory.d.ts +4 -0
  110. package/dist/templates/services/service-factory.js +68 -0
  111. package/dist/templates/services/service-factory.js.map +1 -0
  112. package/dist/templates/types/index.d.ts +1 -0
  113. package/dist/templates/types/index.js +7 -0
  114. package/dist/templates/types/index.js.map +1 -0
  115. package/dist/templates/utils/build-url.d.ts +1 -0
  116. package/dist/templates/utils/build-url.js +72 -0
  117. package/dist/templates/utils/build-url.js.map +1 -0
  118. package/dist/templates/utils/endpoints.d.ts +2 -0
  119. package/dist/templates/utils/endpoints.js +23 -0
  120. package/dist/templates/utils/endpoints.js.map +1 -0
  121. package/dist/templates/utils/generateURL.d.ts +1 -0
  122. package/dist/templates/utils/generateURL.js +40 -0
  123. package/dist/templates/utils/generateURL.js.map +1 -0
  124. package/dist/templates/utils/index.d.ts +1 -0
  125. package/dist/templates/utils/index.js +7 -0
  126. package/dist/templates/utils/index.js.map +1 -0
  127. package/dist/types/dependency-graph.d.ts +95 -0
  128. package/dist/types/dependency-graph.js +13 -0
  129. package/dist/types/dependency-graph.js.map +1 -0
  130. package/dist/types/index.d.ts +2 -0
  131. package/dist/types/index.js +6 -0
  132. package/dist/types/index.js.map +1 -0
  133. package/dist/utils/config.d.ts +16 -0
  134. package/dist/utils/config.js +145 -0
  135. package/dist/utils/config.js.map +1 -0
  136. package/dist/utils/create-file.d.ts +13 -0
  137. package/dist/utils/create-file.js +159 -0
  138. package/dist/utils/create-file.js.map +1 -0
  139. package/dist/utils/dependency-installer.d.ts +5 -0
  140. package/dist/utils/dependency-installer.js +95 -0
  141. package/dist/utils/dependency-installer.js.map +1 -0
  142. package/dist/utils/file-finder.d.ts +6 -0
  143. package/dist/utils/file-finder.js +80 -0
  144. package/dist/utils/file-finder.js.map +1 -0
  145. package/dist/utils/naming.d.ts +11 -0
  146. package/dist/utils/naming.js +46 -0
  147. package/dist/utils/naming.js.map +1 -0
  148. package/dist/utils/naming.test.d.ts +1 -0
  149. package/dist/utils/naming.test.js +106 -0
  150. package/dist/utils/naming.test.js.map +1 -0
  151. package/dist/utils/service-factory-updater.d.ts +2 -0
  152. package/dist/utils/service-factory-updater.js +87 -0
  153. package/dist/utils/service-factory-updater.js.map +1 -0
  154. package/package.json +95 -0
@@ -0,0 +1,95 @@
1
+ export type InternalFileCategory = 'page' | 'component' | 'hook' | 'service' | 'util' | 'config' | 'type' | 'schema' | 'method' | 'constant' | 'test' | 'unknown';
2
+ export type ExternalPackageCategory = 'framework' | 'state' | 'networking' | 'ui' | 'utility' | 'testing' | 'build' | 'other';
3
+ export type NodeType = 'internal' | 'external' | 'dynamic' | 'builtin';
4
+ export interface DependencyNode {
5
+ id: string;
6
+ label: string;
7
+ path: string;
8
+ type: NodeType;
9
+ category: InternalFileCategory | ExternalPackageCategory;
10
+ extension?: string;
11
+ isEntry?: boolean;
12
+ metadata?: Record<string, unknown>;
13
+ }
14
+ export type ImportType = 'static' | 'dynamic' | 'require' | 'reexport' | 'side-effect';
15
+ export type ImportKind = 'default' | 'named' | 'namespace' | 'side-effect' | 'type-only';
16
+ export interface DependencyEdge {
17
+ source: string;
18
+ target: string;
19
+ importType: ImportType;
20
+ importKind: ImportKind;
21
+ specifiers: string[];
22
+ rawImport: string;
23
+ line?: number;
24
+ isCircular?: boolean;
25
+ }
26
+ export type GraphDirection = 'forward' | 'reverse' | 'both';
27
+ export interface GraphMetadata {
28
+ direction: GraphDirection;
29
+ entryPoints: string[];
30
+ maxDepth: number;
31
+ actualDepth: number;
32
+ analyzedAt: string;
33
+ projectRoot: string;
34
+ totalFiles: number;
35
+ totalPackages: number;
36
+ circularDependencies: string[][];
37
+ }
38
+ export interface GraphStats {
39
+ nodeCount: number;
40
+ edgeCount: number;
41
+ nodesByType: Record<NodeType, number>;
42
+ edgesByImportType: Record<ImportType, number>;
43
+ mostImported: Array<{
44
+ id: string;
45
+ count: number;
46
+ }>;
47
+ mostImports: Array<{
48
+ id: string;
49
+ count: number;
50
+ }>;
51
+ orphanNodes: string[];
52
+ }
53
+ export interface DependencyGraph {
54
+ nodes: DependencyNode[];
55
+ edges: DependencyEdge[];
56
+ metadata: GraphMetadata;
57
+ stats: GraphStats;
58
+ }
59
+ export interface AnalysisOptions {
60
+ entry: string;
61
+ direction: GraphDirection;
62
+ maxDepth?: number;
63
+ includeNodeModules?: boolean;
64
+ includeTypeImports?: boolean;
65
+ includeTests?: boolean;
66
+ extensions?: string[];
67
+ excludePatterns?: string[];
68
+ aliases?: Record<string, string>;
69
+ }
70
+ export declare const DEFAULT_ANALYSIS_OPTIONS: Required<Omit<AnalysisOptions, 'entry' | 'direction'>>;
71
+ export type OutputFormat = 'json' | 'summary' | 'tree' | 'dot' | 'svg';
72
+ export interface DependencySummary {
73
+ file: string;
74
+ direction: GraphDirection;
75
+ internal: Record<InternalFileCategory, string[]>;
76
+ external: Record<ExternalPackageCategory, string[]>;
77
+ dynamic: string[];
78
+ circular: string[][];
79
+ }
80
+ export interface ParsedImport {
81
+ source: string;
82
+ importType: ImportType;
83
+ importKind: ImportKind;
84
+ specifiers: string[];
85
+ defaultImport?: string;
86
+ namespaceImport?: string;
87
+ line: number;
88
+ raw: string;
89
+ }
90
+ export interface FileParseResult {
91
+ filePath: string;
92
+ imports: ParsedImport[];
93
+ exports: ParsedImport[];
94
+ errors: string[];
95
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_ANALYSIS_OPTIONS = void 0;
4
+ exports.DEFAULT_ANALYSIS_OPTIONS = {
5
+ maxDepth: 10,
6
+ includeNodeModules: false,
7
+ includeTypeImports: true,
8
+ includeTests: false,
9
+ extensions: ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs'],
10
+ excludePatterns: ['node_modules', 'dist', 'build', '.next', '.git', 'coverage'],
11
+ aliases: {},
12
+ };
13
+ //# sourceMappingURL=dependency-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-graph.js","sourceRoot":"","sources":["../../src/types/dependency-graph.ts"],"names":[],"mappings":";;;AA+Fa,QAAA,wBAAwB,GAA2D;IAC9F,QAAQ,EAAE,EAAE;IACZ,kBAAkB,EAAE,KAAK;IACzB,kBAAkB,EAAE,IAAI;IACxB,YAAY,EAAE,KAAK;IACnB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAC1D,eAAe,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC;IAC/E,OAAO,EAAE,EAAE;CACZ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export type { InternalFileCategory, ExternalPackageCategory, NodeType, DependencyNode, ImportType, ImportKind, DependencyEdge, GraphDirection, GraphMetadata, GraphStats, DependencyGraph, AnalysisOptions, OutputFormat, DependencySummary, ParsedImport, FileParseResult, } from './dependency-graph';
2
+ export { DEFAULT_ANALYSIS_OPTIONS } from './dependency-graph';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_ANALYSIS_OPTIONS = void 0;
4
+ var dependency_graph_1 = require("./dependency-graph");
5
+ Object.defineProperty(exports, "DEFAULT_ANALYSIS_OPTIONS", { enumerable: true, get: function () { return dependency_graph_1.DEFAULT_ANALYSIS_OPTIONS; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;AAmBA,uDAA8D;AAArD,4HAAA,wBAAwB,OAAA"}
@@ -0,0 +1,16 @@
1
+ import type { HttpClient } from '../cli';
2
+ export interface RborConfig {
3
+ http: HttpClient;
4
+ domainsPath: string;
5
+ infrastructurePath: string;
6
+ schema: {
7
+ library: 'zod' | 'yup' | 'none';
8
+ };
9
+ }
10
+ export declare const DEFAULT_CONFIG: RborConfig;
11
+ export declare function findProjectRoot(startDir?: string): string;
12
+ export declare function loadConfig(projectRoot?: string): RborConfig;
13
+ export declare function configExists(projectRoot?: string): boolean;
14
+ export declare function writeConfig(config: RborConfig, projectRoot?: string): string;
15
+ export declare function getDomainsPath(config?: RborConfig): string;
16
+ export declare function getInfrastructurePath(config?: RborConfig): string;
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.DEFAULT_CONFIG = void 0;
37
+ exports.findProjectRoot = findProjectRoot;
38
+ exports.loadConfig = loadConfig;
39
+ exports.configExists = configExists;
40
+ exports.writeConfig = writeConfig;
41
+ exports.getDomainsPath = getDomainsPath;
42
+ exports.getInfrastructurePath = getInfrastructurePath;
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ exports.DEFAULT_CONFIG = {
46
+ http: 'axios',
47
+ domainsPath: 'domains',
48
+ infrastructurePath: 'infrastructure',
49
+ schema: {
50
+ library: 'zod',
51
+ },
52
+ };
53
+ const CONFIG_FILE_NAME = '.rborrc.json';
54
+ function findProjectRoot(startDir = process.cwd()) {
55
+ let dir = startDir;
56
+ for (let i = 0; i < 10; i++) {
57
+ if (fs.existsSync(path.join(dir, 'package.json'))) {
58
+ return dir;
59
+ }
60
+ const parent = path.dirname(dir);
61
+ if (parent === dir)
62
+ break;
63
+ dir = parent;
64
+ }
65
+ return startDir;
66
+ }
67
+ function loadConfig(projectRoot) {
68
+ const root = projectRoot ?? findProjectRoot();
69
+ const rcPath = path.join(root, CONFIG_FILE_NAME);
70
+ if (fs.existsSync(rcPath)) {
71
+ try {
72
+ const raw = fs.readFileSync(rcPath, 'utf-8');
73
+ const parsed = JSON.parse(raw);
74
+ return mergeConfig(exports.DEFAULT_CONFIG, parsed);
75
+ }
76
+ catch (e) {
77
+ console.warn(`Warning: Failed to parse ${CONFIG_FILE_NAME}: ${e instanceof Error ? e.message : String(e)}`);
78
+ }
79
+ }
80
+ const pkgPath = path.join(root, 'package.json');
81
+ if (fs.existsSync(pkgPath)) {
82
+ try {
83
+ const raw = fs.readFileSync(pkgPath, 'utf-8');
84
+ const pkg = JSON.parse(raw);
85
+ if (pkg.rbor && typeof pkg.rbor === 'object') {
86
+ return mergeConfig(exports.DEFAULT_CONFIG, pkg.rbor);
87
+ }
88
+ }
89
+ catch { }
90
+ }
91
+ return { ...exports.DEFAULT_CONFIG };
92
+ }
93
+ function configExists(projectRoot) {
94
+ const root = projectRoot ?? findProjectRoot();
95
+ const rcPath = path.join(root, CONFIG_FILE_NAME);
96
+ if (fs.existsSync(rcPath))
97
+ return true;
98
+ const pkgPath = path.join(root, 'package.json');
99
+ if (fs.existsSync(pkgPath)) {
100
+ try {
101
+ const raw = fs.readFileSync(pkgPath, 'utf-8');
102
+ const pkg = JSON.parse(raw);
103
+ return pkg.rbor !== undefined;
104
+ }
105
+ catch {
106
+ return false;
107
+ }
108
+ }
109
+ return false;
110
+ }
111
+ function writeConfig(config, projectRoot) {
112
+ const root = projectRoot ?? findProjectRoot();
113
+ const rcPath = path.join(root, CONFIG_FILE_NAME);
114
+ fs.writeFileSync(rcPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
115
+ return rcPath;
116
+ }
117
+ function getDomainsPath(config) {
118
+ const cfg = config ?? loadConfig();
119
+ return path.resolve(findProjectRoot(), cfg.domainsPath);
120
+ }
121
+ function getInfrastructurePath(config) {
122
+ const cfg = config ?? loadConfig();
123
+ return path.resolve(findProjectRoot(), cfg.infrastructurePath);
124
+ }
125
+ function mergeConfig(base, override) {
126
+ return {
127
+ http: isValidHttpClient(override.http) ? override.http : base.http,
128
+ domainsPath: typeof override.domainsPath === 'string' ? override.domainsPath : base.domainsPath,
129
+ infrastructurePath: typeof override.infrastructurePath === 'string'
130
+ ? override.infrastructurePath
131
+ : base.infrastructurePath,
132
+ schema: {
133
+ library: isValidSchemaLib(override.schema?.library)
134
+ ? override.schema.library
135
+ : base.schema.library,
136
+ },
137
+ };
138
+ }
139
+ function isValidHttpClient(value) {
140
+ return value === 'axios' || value === 'fetch' || value === 'ky';
141
+ }
142
+ function isValidSchemaLib(value) {
143
+ return value === 'zod' || value === 'yup' || value === 'none';
144
+ }
145
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { HttpClient } from '../cli';
2
+ export declare function createBarrel(input: string, targetDir: string): void;
3
+ export declare function createHooks(input: string, targetDir: string): void;
4
+ export declare function createComponent(input: string, targetDir: string): void;
5
+ export declare function createMethods(input: string, targetDir: string): void;
6
+ export declare function ensureInfrastructure(httpClient: HttpClient): string;
7
+ export declare function ensureServiceFactory(input: string, serviceFilePath: string): void;
8
+ export declare function createServices(input: string, targetDir: string, httpClient: HttpClient): void;
9
+ export declare function createTypes(input: string, targetDir: string): void;
10
+ export declare function createUtils(input: string, targetDir: string): void;
11
+ export declare function ensureGenerateUrl(): void;
12
+ export declare function createEndpoints(input: string, targetDir: string): void;
13
+ export declare function createSchema(input: string, targetDir: string): void;
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createBarrel = createBarrel;
37
+ exports.createHooks = createHooks;
38
+ exports.createComponent = createComponent;
39
+ exports.createMethods = createMethods;
40
+ exports.ensureInfrastructure = ensureInfrastructure;
41
+ exports.ensureServiceFactory = ensureServiceFactory;
42
+ exports.createServices = createServices;
43
+ exports.createTypes = createTypes;
44
+ exports.createUtils = createUtils;
45
+ exports.ensureGenerateUrl = ensureGenerateUrl;
46
+ exports.createEndpoints = createEndpoints;
47
+ exports.createSchema = createSchema;
48
+ const fs = __importStar(require("fs"));
49
+ const path = __importStar(require("path"));
50
+ const templates_1 = require("../templates");
51
+ const naming_1 = require("./naming");
52
+ const file_finder_1 = require("./file-finder");
53
+ const dependency_installer_1 = require("./dependency-installer");
54
+ const service_factory_updater_1 = require("./service-factory-updater");
55
+ const HTTP_CLIENT_CONFIG = {
56
+ axios: {
57
+ template: templates_1.axiosBaseServiceTemplate,
58
+ dependency: 'axios',
59
+ },
60
+ fetch: {
61
+ template: templates_1.fetchBaseServiceTemplate,
62
+ dependency: null,
63
+ },
64
+ ky: {
65
+ template: templates_1.kyBaseServiceTemplate,
66
+ dependency: 'ky',
67
+ },
68
+ };
69
+ function createBarrel(input, targetDir) {
70
+ fs.writeFileSync(path.join(targetDir, 'index.tsx'), (0, templates_1.barrelTemplate)(input));
71
+ console.log(` 📋 Created index.tsx (barrel entry point)`);
72
+ }
73
+ function createHooks(input, targetDir) {
74
+ const hookFiles = (0, naming_1.toHooks)(input);
75
+ fs.writeFileSync(path.join(targetDir, 'hooks', hookFiles[0]), (0, templates_1.controllerHookTemplate)(input));
76
+ fs.writeFileSync(path.join(targetDir, 'hooks', hookFiles[1]), (0, templates_1.dataHookTemplate)(input));
77
+ fs.writeFileSync(path.join(targetDir, 'hooks', hookFiles[2]), (0, templates_1.actionHookTemplate)(input));
78
+ }
79
+ function createComponent(input, targetDir) {
80
+ fs.writeFileSync(path.join(targetDir, 'components', (0, naming_1.toComponentFile)(input)), (0, templates_1.mainComponentTemplate)(input));
81
+ }
82
+ function createMethods(input, targetDir) {
83
+ fs.writeFileSync(path.join(targetDir, 'methods', (0, naming_1.toMethodsFile)(input)), (0, templates_1.methodsTemplate)(input));
84
+ }
85
+ function ensureInfrastructure(httpClient) {
86
+ const baseService = (0, file_finder_1.findBaseService)();
87
+ if (baseService.exists && baseService.path) {
88
+ console.log(` ✅ BaseService found at: ${baseService.path}`);
89
+ return baseService.path;
90
+ }
91
+ const config = HTTP_CLIENT_CONFIG[httpClient];
92
+ if (config.dependency) {
93
+ (0, dependency_installer_1.ensureDependency)(config.dependency);
94
+ }
95
+ else {
96
+ console.log(` ✅ Using native fetch (no dependency needed)`);
97
+ }
98
+ const infraDir = path.join(process.cwd(), 'infrastructure');
99
+ const baseServicePath = path.join(infraDir, 'BaseService.ts');
100
+ fs.mkdirSync(infraDir, { recursive: true });
101
+ fs.writeFileSync(baseServicePath, config.template());
102
+ console.log(` 🏗️ Created infrastructure/BaseService.ts (${httpClient})`);
103
+ return baseServicePath;
104
+ }
105
+ function ensureServiceFactory(input, serviceFilePath) {
106
+ const factoryPath = (0, service_factory_updater_1.findServiceFactory)();
107
+ if (factoryPath) {
108
+ (0, service_factory_updater_1.updateServiceFactory)(factoryPath, input, serviceFilePath);
109
+ }
110
+ else {
111
+ const infraDir = path.join(process.cwd(), 'infrastructure');
112
+ const newFactoryPath = path.join(infraDir, 'ServiceFactory.ts');
113
+ const relativePath = (0, file_finder_1.getRelativeImportPath)(newFactoryPath, serviceFilePath);
114
+ fs.writeFileSync(newFactoryPath, (0, templates_1.serviceFactoryTemplate)(input, relativePath));
115
+ console.log(` 🏭 Created infrastructure/ServiceFactory.ts`);
116
+ }
117
+ }
118
+ function createServices(input, targetDir, httpClient) {
119
+ ensureInfrastructure(httpClient);
120
+ const serviceFilePath = path.join(targetDir, 'services', (0, naming_1.toServicesFile)(input));
121
+ fs.writeFileSync(serviceFilePath, (0, templates_1.domainServiceTemplate)(input, httpClient));
122
+ console.log(` 📦 Created ${(0, naming_1.toServicesFile)(input)}`);
123
+ ensureServiceFactory(input, serviceFilePath);
124
+ }
125
+ function createTypes(input, targetDir) {
126
+ fs.writeFileSync(path.join(targetDir, 'types', (0, naming_1.toTypesFile)(input)), (0, templates_1.typesTemplate)(input));
127
+ }
128
+ function createUtils(input, targetDir) {
129
+ const utilFiles = (0, naming_1.toUtilsFiles)(input);
130
+ fs.mkdirSync(path.join(targetDir, 'utils', 'helper'), { recursive: true });
131
+ fs.mkdirSync(path.join(targetDir, 'utils', 'constant'), { recursive: true });
132
+ fs.writeFileSync(path.join(targetDir, 'utils', 'helper', utilFiles.helper), (0, templates_1.utilsTemplate)(input + ' helpers'));
133
+ fs.writeFileSync(path.join(targetDir, 'utils', 'constant', utilFiles.constant), (0, templates_1.utilsTemplate)(input + ' constants'));
134
+ }
135
+ function ensureGenerateUrl() {
136
+ const infraDir = path.join(process.cwd(), 'infrastructure');
137
+ const generateUrlPath = path.join(infraDir, 'generateURL.ts');
138
+ if (fs.existsSync(generateUrlPath)) {
139
+ return;
140
+ }
141
+ fs.mkdirSync(infraDir, { recursive: true });
142
+ fs.writeFileSync(generateUrlPath, (0, templates_1.generateUrlTemplate)());
143
+ console.log(` 🔗 Created infrastructure/generateURL.ts`);
144
+ }
145
+ function createEndpoints(input, targetDir) {
146
+ const endpointsPath = path.join(targetDir, 'utils', 'constant', `${input}-endpoints.ts`);
147
+ fs.writeFileSync(endpointsPath, (0, templates_1.endpointsTemplate)(input));
148
+ console.log(` 📍 Created ${input}-endpoints.ts`);
149
+ }
150
+ function createSchema(input, targetDir) {
151
+ const kebab = input
152
+ .replace(/([a-z])([A-Z])/g, '$1-$2')
153
+ .replace(/[-_\s]+/g, '-')
154
+ .toLowerCase();
155
+ const schemaPath = path.join(targetDir, 'schema', `${kebab}-schema.ts`);
156
+ fs.writeFileSync(schemaPath, (0, templates_1.schemaTemplate)(input));
157
+ console.log(` 📋 Created ${kebab}-schema.ts`);
158
+ }
159
+ //# sourceMappingURL=create-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-file.js","sourceRoot":"","sources":["../../src/utils/create-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export type PackageManager = 'npm' | 'yarn' | 'pnpm';
2
+ export declare function detectPackageManager(): PackageManager;
3
+ export declare function installDependency(packageName: string, isDev?: boolean): void;
4
+ export declare function isDependencyInstalled(packageName: string): boolean;
5
+ export declare function ensureDependency(packageName: string, isDev?: boolean): void;
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.detectPackageManager = detectPackageManager;
37
+ exports.installDependency = installDependency;
38
+ exports.isDependencyInstalled = isDependencyInstalled;
39
+ exports.ensureDependency = ensureDependency;
40
+ const child_process_1 = require("child_process");
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ function detectPackageManager() {
44
+ const cwd = process.cwd();
45
+ if (fs.existsSync(path.join(cwd, 'pnpm-lock.yaml'))) {
46
+ return 'pnpm';
47
+ }
48
+ if (fs.existsSync(path.join(cwd, 'yarn.lock'))) {
49
+ return 'yarn';
50
+ }
51
+ return 'npm';
52
+ }
53
+ function installDependency(packageName, isDev = false) {
54
+ const pm = detectPackageManager();
55
+ let command;
56
+ switch (pm) {
57
+ case 'pnpm':
58
+ command = `pnpm add ${isDev ? '-D' : ''} ${packageName}`;
59
+ break;
60
+ case 'yarn':
61
+ command = `yarn add ${isDev ? '-D' : ''} ${packageName}`;
62
+ break;
63
+ default:
64
+ command = `npm install ${isDev ? '--save-dev' : ''} ${packageName}`;
65
+ }
66
+ console.log(` 📦 Installing ${packageName}...`);
67
+ try {
68
+ (0, child_process_1.execSync)(command, { stdio: 'inherit' });
69
+ console.log(` ✅ Installed ${packageName}`);
70
+ }
71
+ catch (error) {
72
+ console.error(` ❌ Failed to install ${packageName}`);
73
+ throw error;
74
+ }
75
+ }
76
+ function isDependencyInstalled(packageName) {
77
+ try {
78
+ const packageJsonPath = path.join(process.cwd(), 'package.json');
79
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
80
+ const deps = packageJson.dependencies || {};
81
+ const devDeps = packageJson.devDependencies || {};
82
+ return packageName in deps || packageName in devDeps;
83
+ }
84
+ catch {
85
+ return false;
86
+ }
87
+ }
88
+ function ensureDependency(packageName, isDev = false) {
89
+ if (isDependencyInstalled(packageName)) {
90
+ console.log(` ✅ ${packageName} already installed`);
91
+ return;
92
+ }
93
+ installDependency(packageName, isDev);
94
+ }
95
+ //# sourceMappingURL=dependency-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-installer.js","sourceRoot":"","sources":["../../src/utils/dependency-installer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,oDAUC;AAED,8CAyBC;AAED,sDAYC;AAED,4CAOC;AAlED,iDAAyC;AACzC,uCAAyB;AACzB,2CAA6B;AAI7B,SAAgB,oBAAoB;IAClC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;QACpD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QAC/C,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,iBAAiB,CAAC,WAAmB,EAAE,QAAiB,KAAK;IAC3E,MAAM,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAElC,IAAI,OAAe,CAAC;IAEpB,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,MAAM;YACT,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,WAAW,EAAE,CAAC;YACzD,MAAM;QACR,KAAK,MAAM;YACT,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,WAAW,EAAE,CAAC;YACzD,MAAM;QACR;YACE,OAAO,GAAG,eAAe,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,WAAW,EAAE,CAAC;IACxE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,mBAAmB,WAAW,KAAK,CAAC,CAAC;IAEjD,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,iBAAiB,WAAW,EAAE,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,WAAW,EAAE,CAAC,CAAC;QACtD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,qBAAqB,CAAC,WAAmB;IACvD,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;QAE1E,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,WAAW,CAAC,eAAe,IAAI,EAAE,CAAC;QAElD,OAAO,WAAW,IAAI,IAAI,IAAI,WAAW,IAAI,OAAO,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAAC,WAAmB,EAAE,QAAiB,KAAK;IAC1E,IAAI,qBAAqB,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,OAAO,WAAW,oBAAoB,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function findFileInRepo(dir: string, filename: string, maxDepth?: number): string | null;
2
+ export declare function findBaseService(startDir?: string): {
3
+ exists: boolean;
4
+ path: string | null;
5
+ };
6
+ export declare function getRelativeImportPath(from: string, to: string): string;