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,124 @@
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.generateEndpoint = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const DOMAINS_FOLDER = 'domains';
40
+ function detectDomainContext() {
41
+ const cwd = process.cwd();
42
+ const domainsPath = path.join(cwd, '..', '..').includes(DOMAINS_FOLDER)
43
+ ? path.resolve(cwd, '..', '..')
44
+ : null;
45
+ const parentDir = path.basename(path.dirname(cwd));
46
+ const currentDir = path.basename(cwd);
47
+ if (parentDir === DOMAINS_FOLDER) {
48
+ const domainName = currentDir;
49
+ const domainPath = cwd;
50
+ const endpointsFile = path.join(domainPath, 'utils', 'constant', `${domainName}-endpoints.ts`);
51
+ if (!fs.existsSync(endpointsFile)) {
52
+ return {
53
+ isValid: false,
54
+ domainName,
55
+ domainPath,
56
+ endpointsFile: null,
57
+ error: `Endpoints file not found. Run 'rbor domain ${domainName}' first.`,
58
+ };
59
+ }
60
+ return { isValid: true, domainName, domainPath, endpointsFile };
61
+ }
62
+ const pathParts = cwd.split(path.sep);
63
+ const domainsIndex = pathParts.indexOf(DOMAINS_FOLDER);
64
+ if (domainsIndex !== -1 && pathParts.length > domainsIndex + 1) {
65
+ const domainName = pathParts[domainsIndex + 1];
66
+ const domainPath = pathParts.slice(0, domainsIndex + 2).join(path.sep);
67
+ const endpointsFile = path.join(domainPath, 'utils', 'constant', `${domainName}-endpoints.ts`);
68
+ if (!fs.existsSync(endpointsFile)) {
69
+ return {
70
+ isValid: false,
71
+ domainName,
72
+ domainPath,
73
+ endpointsFile: null,
74
+ error: `Endpoints file not found. Run 'rbor domain ${domainName}' first.`,
75
+ };
76
+ }
77
+ return { isValid: true, domainName, domainPath, endpointsFile };
78
+ }
79
+ return {
80
+ isValid: false,
81
+ domainName: null,
82
+ domainPath: null,
83
+ endpointsFile: null,
84
+ error: `Not inside a domain folder. Navigate to domains/<domain>/ and try again.`,
85
+ };
86
+ }
87
+ function toEndpointKey(endpointPath) {
88
+ return endpointPath
89
+ .replace(/^\//, '')
90
+ .replace(/:/g, '')
91
+ .replace(/[\/\-]/g, '_')
92
+ .toUpperCase();
93
+ }
94
+ function addEndpoint(endpointsFile, domainName, endpointPath) {
95
+ const content = fs.readFileSync(endpointsFile, 'utf-8');
96
+ const upperName = domainName.replace(/-/g, '_').toUpperCase();
97
+ const endpointKey = toEndpointKey(endpointPath);
98
+ const normalizedPath = endpointPath.startsWith('/') ? endpointPath : `/${endpointPath}`;
99
+ if (content.includes(`${endpointKey}:`)) {
100
+ console.log(`⚠️ Endpoint '${endpointKey}' already exists in ${upperName}_ENDPOINTS`);
101
+ return;
102
+ }
103
+ const objectPattern = new RegExp(`(export const ${upperName}_ENDPOINTS = {[\\s\\S]*?)(} as const;)`);
104
+ const match = content.match(objectPattern);
105
+ if (!match) {
106
+ console.error(`❌ Could not find ${upperName}_ENDPOINTS object in file`);
107
+ process.exit(1);
108
+ }
109
+ const newEntry = ` ${endpointKey}: '${normalizedPath}',\n`;
110
+ const updatedContent = content.replace(objectPattern, `$1${newEntry}$2`);
111
+ fs.writeFileSync(endpointsFile, updatedContent);
112
+ console.log(`✅ Added endpoint: ${endpointKey}: '${normalizedPath}'`);
113
+ }
114
+ const generateEndpoint = (endpointPath) => {
115
+ const context = detectDomainContext();
116
+ if (!context.isValid) {
117
+ console.error(`❌ ${context.error}`);
118
+ process.exit(1);
119
+ }
120
+ console.log(`📍 Adding endpoint to ${context.domainName}`);
121
+ addEndpoint(context.endpointsFile, context.domainName, endpointPath);
122
+ };
123
+ exports.generateEndpoint = generateEndpoint;
124
+ //# sourceMappingURL=generate-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-endpoint.js","sourceRoot":"","sources":["../../src/commands/generate-endpoint.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAE7B,MAAM,cAAc,GAAG,SAAS,CAAC;AAUjC,SAAS,mBAAmB;IAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;QACrE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;QAC/B,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,UAAU,CAAC;QAC9B,MAAM,UAAU,GAAG,GAAG,CAAC;QACvB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,UAAU,eAAe,CAAC,CAAC;QAE/F,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAClC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,UAAU;gBACV,UAAU;gBACV,aAAa,EAAE,IAAI;gBACnB,KAAK,EAAE,8CAA8C,UAAU,UAAU;aAC1E,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;IAClE,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAEvD,IAAI,YAAY,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC;QAC/D,MAAM,UAAU,GAAG,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,UAAU,eAAe,CAAC,CAAC;QAE/F,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAClC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,UAAU;gBACV,UAAU;gBACV,aAAa,EAAE,IAAI;gBACnB,KAAK,EAAE,8CAA8C,UAAU,UAAU;aAC1E,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;IAClE,CAAC;IAED,OAAO;QACL,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,IAAI;QACnB,KAAK,EAAE,0EAA0E;KAClF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,YAAoB;IACzC,OAAO,YAAY;SAChB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAClB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAAC,aAAqB,EAAE,UAAkB,EAAE,YAAoB;IAClF,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9D,MAAM,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAEhD,MAAM,cAAc,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC;IAExF,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,iBAAiB,WAAW,uBAAuB,SAAS,YAAY,CAAC,CAAC;QACtF,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,MAAM,CAC9B,iBAAiB,SAAS,wCAAwC,CACnE,CAAC;IACF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAE3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,oBAAoB,SAAS,2BAA2B,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,WAAW,MAAM,cAAc,MAAM,CAAC;IAC5D,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,QAAQ,IAAI,CAAC,CAAC;IAEzE,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,qBAAqB,WAAW,MAAM,cAAc,GAAG,CAAC,CAAC;AACvE,CAAC;AAEM,MAAM,gBAAgB,GAAG,CAAC,YAAoB,EAAQ,EAAE;IAC7D,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IAEtC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3D,WAAW,CAAC,OAAO,CAAC,aAAc,EAAE,OAAO,CAAC,UAAW,EAAE,YAAY,CAAC,CAAC;AACzE,CAAC,CAAC;AAVW,QAAA,gBAAgB,oBAU3B"}
@@ -0,0 +1,8 @@
1
+ import type { HttpClient } from '../cli';
2
+ export interface InitOptions {
3
+ http?: HttpClient;
4
+ domainsPath?: string;
5
+ infrastructurePath?: string;
6
+ force?: boolean;
7
+ }
8
+ export declare function initProject(options: InitOptions): void;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initProject = initProject;
4
+ const config_1 = require("../utils/config");
5
+ function initProject(options) {
6
+ const root = (0, config_1.findProjectRoot)();
7
+ console.log('🔧 Initializing rBOR configuration...');
8
+ console.log(` Project root: ${root}`);
9
+ console.log('');
10
+ if ((0, config_1.configExists)(root) && !options.force) {
11
+ console.log('⚠️ Configuration already exists.');
12
+ console.log(' Use --force to overwrite the existing configuration.');
13
+ return;
14
+ }
15
+ const config = {
16
+ http: options.http ?? config_1.DEFAULT_CONFIG.http,
17
+ domainsPath: options.domainsPath ?? config_1.DEFAULT_CONFIG.domainsPath,
18
+ infrastructurePath: options.infrastructurePath ?? config_1.DEFAULT_CONFIG.infrastructurePath,
19
+ schema: { ...config_1.DEFAULT_CONFIG.schema },
20
+ };
21
+ const configPath = (0, config_1.writeConfig)(config, root);
22
+ console.log('✅ Created .rborrc.json');
23
+ console.log('');
24
+ console.log(' Configuration:');
25
+ console.log(` HTTP client: ${config.http}`);
26
+ console.log(` Domains path: ${config.domainsPath}`);
27
+ console.log(` Infrastructure path: ${config.infrastructurePath}`);
28
+ console.log(` Schema library: ${config.schema.library}`);
29
+ console.log('');
30
+ console.log(` Config file: ${configPath}`);
31
+ }
32
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;AAgBA,kCA8BC;AA9CD,4CAMyB;AAUzB,SAAgB,WAAW,CAAC,OAAoB;IAC9C,MAAM,IAAI,GAAG,IAAA,wBAAe,GAAE,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,IAAA,qBAAY,EAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;QACvE,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAe;QACzB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,uBAAc,CAAC,IAAI;QACzC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,uBAAc,CAAC,WAAW;QAC9D,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,uBAAc,CAAC,kBAAkB;QACnF,MAAM,EAAE,EAAE,GAAG,uBAAc,CAAC,MAAM,EAAE;KACrC,CAAC;IAEF,MAAM,UAAU,GAAG,IAAA,oBAAW,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE7C,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,8BAA8B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,8BAA8B,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,8BAA8B,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,8BAA8B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function listDomains(): void;
@@ -0,0 +1,122 @@
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.listDomains = listDomains;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const config_1 = require("../utils/config");
40
+ function countFiles(dir) {
41
+ let count = 0;
42
+ try {
43
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
44
+ for (const entry of entries) {
45
+ if (entry.isFile()) {
46
+ count++;
47
+ }
48
+ else if (entry.isDirectory()) {
49
+ count += countFiles(path.join(dir, entry.name));
50
+ }
51
+ }
52
+ }
53
+ catch { }
54
+ return count;
55
+ }
56
+ function countEndpoints(domainPath, domainName) {
57
+ const endpointsPath = path.join(domainPath, 'utils', 'constant', `${domainName}-endpoints.ts`);
58
+ if (!fs.existsSync(endpointsPath))
59
+ return 0;
60
+ try {
61
+ const content = fs.readFileSync(endpointsPath, 'utf-8');
62
+ const matches = content.match(/^\s+\w+:\s*'/gm);
63
+ return matches?.length ?? 0;
64
+ }
65
+ catch {
66
+ return 0;
67
+ }
68
+ }
69
+ function getDomainInfo(domainPath, domainName) {
70
+ const folders = [];
71
+ try {
72
+ const entries = fs.readdirSync(domainPath, { withFileTypes: true });
73
+ for (const entry of entries) {
74
+ if (entry.isDirectory()) {
75
+ folders.push(entry.name);
76
+ }
77
+ }
78
+ }
79
+ catch { }
80
+ const servicesDir = path.join(domainPath, 'services');
81
+ const schemaDir = path.join(domainPath, 'schema');
82
+ return {
83
+ name: domainName,
84
+ folders,
85
+ fileCount: countFiles(domainPath),
86
+ hasService: fs.existsSync(servicesDir) && fs.readdirSync(servicesDir).length > 0,
87
+ hasSchema: fs.existsSync(schemaDir) && fs.readdirSync(schemaDir).some(f => f !== '.gitkeep'),
88
+ endpointCount: countEndpoints(domainPath, domainName),
89
+ };
90
+ }
91
+ function listDomains() {
92
+ const config = (0, config_1.loadConfig)();
93
+ const domainsPath = (0, config_1.getDomainsPath)(config);
94
+ console.log('📦 rBOR Domains');
95
+ console.log(` Path: ${config.domainsPath}/`);
96
+ console.log('');
97
+ if (!fs.existsSync(domainsPath)) {
98
+ console.log(' No domains folder found. Run `rbor domain <name>` to create your first domain.');
99
+ return;
100
+ }
101
+ const entries = fs.readdirSync(domainsPath, { withFileTypes: true });
102
+ const domains = entries
103
+ .filter(e => e.isDirectory())
104
+ .map(e => getDomainInfo(path.join(domainsPath, e.name), e.name));
105
+ if (domains.length === 0) {
106
+ console.log(' No domains found. Run `rbor domain <name>` to create your first domain.');
107
+ return;
108
+ }
109
+ // Display table-like output
110
+ console.log('───────────────────────────────────────────────────────────');
111
+ for (const domain of domains) {
112
+ const service = domain.hasService ? '✅' : '❌';
113
+ const schema = domain.hasSchema ? '✅' : '❌';
114
+ console.log(` 📁 ${domain.name}`);
115
+ console.log(` Files: ${domain.fileCount} | Endpoints: ${domain.endpointCount} | Service: ${service} | Schema: ${schema}`);
116
+ console.log(` Folders: ${domain.folders.join(', ')}`);
117
+ console.log('');
118
+ }
119
+ console.log('───────────────────────────────────────────────────────────');
120
+ console.log(` Total: ${domains.length} domain(s)`);
121
+ }
122
+ //# sourceMappingURL=list-domains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-domains.js","sourceRoot":"","sources":["../../src/commands/list-domains.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export interface ValidateOptions {
2
+ strict?: boolean;
3
+ }
4
+ export declare function validate(options: ValidateOptions): void;
@@ -0,0 +1,255 @@
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.validate = validate;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const analyzers_1 = require("../analyzers");
40
+ const config_1 = require("../utils/config");
41
+ const LAYER_ORDER = {
42
+ page: 0,
43
+ component: 1,
44
+ hook: 2,
45
+ method: 3,
46
+ schema: 3,
47
+ service: 4,
48
+ util: 5,
49
+ constant: 5,
50
+ config: 5,
51
+ type: 6,
52
+ };
53
+ const UNRESTRICTED_CATEGORIES = new Set(['type', 'constant', 'config', 'unknown']);
54
+ function checkCrossDomainImports(edges, nodes, domainsRelative) {
55
+ const violations = [];
56
+ const domainPrefix = domainsRelative.replace(/\\/g, '/');
57
+ for (const edge of edges) {
58
+ const sourceNode = nodes.get(edge.source);
59
+ const targetNode = nodes.get(edge.target);
60
+ if (!sourceNode || !targetNode)
61
+ continue;
62
+ if (sourceNode.type !== 'internal' || targetNode.type !== 'internal')
63
+ continue;
64
+ const sourceNorm = edge.source.replace(/\\/g, '/');
65
+ const targetNorm = edge.target.replace(/\\/g, '/');
66
+ // Both must be inside the domains folder
67
+ if (!sourceNorm.startsWith(domainPrefix) || !targetNorm.startsWith(domainPrefix))
68
+ continue;
69
+ const sourceRel = sourceNorm.slice(domainPrefix.length + 1);
70
+ const targetRel = targetNorm.slice(domainPrefix.length + 1);
71
+ const sourceDomain = sourceRel.split('/')[0];
72
+ const targetDomain = targetRel.split('/')[0];
73
+ if (sourceDomain && targetDomain && sourceDomain !== targetDomain) {
74
+ violations.push({
75
+ rule: 'no-cross-domain-import',
76
+ severity: 'error',
77
+ message: `Cross-domain import: "${sourceDomain}" imports from "${targetDomain}"`,
78
+ file: edge.source,
79
+ line: edge.line,
80
+ suggestion: `Move shared code to a shared/ or infrastructure/ layer, or refactor to remove this dependency.`,
81
+ });
82
+ }
83
+ }
84
+ return violations;
85
+ }
86
+ function checkDownwardDependencies(edges, nodes) {
87
+ const violations = [];
88
+ for (const edge of edges) {
89
+ const sourceNode = nodes.get(edge.source);
90
+ const targetNode = nodes.get(edge.target);
91
+ if (!sourceNode || !targetNode)
92
+ continue;
93
+ if (sourceNode.type !== 'internal' || targetNode.type !== 'internal')
94
+ continue;
95
+ const sourceCategory = sourceNode.category;
96
+ const targetCategory = targetNode.category;
97
+ // Skip unrestricted categories
98
+ if (UNRESTRICTED_CATEGORIES.has(targetCategory))
99
+ continue;
100
+ if (UNRESTRICTED_CATEGORIES.has(sourceCategory))
101
+ continue;
102
+ const sourceLevel = LAYER_ORDER[sourceCategory];
103
+ const targetLevel = LAYER_ORDER[targetCategory];
104
+ if (sourceLevel === undefined || targetLevel === undefined)
105
+ continue;
106
+ // Violation: importing from a higher layer (lower number = higher)
107
+ if (targetLevel < sourceLevel) {
108
+ violations.push({
109
+ rule: 'downward-only-deps',
110
+ severity: 'error',
111
+ message: `Upward dependency: ${sourceCategory} ("${sourceNode.label}") imports ${targetCategory} ("${targetNode.label}")`,
112
+ file: edge.source,
113
+ line: edge.line,
114
+ suggestion: `Dependencies should only flow downward: component -> hook -> method -> service -> infrastructure.`,
115
+ });
116
+ }
117
+ }
118
+ return violations;
119
+ }
120
+ function checkNoReactInMethods(edges, nodes) {
121
+ const violations = [];
122
+ const reactPackages = new Set(['react', 'react-dom', 'react/jsx-runtime']);
123
+ for (const edge of edges) {
124
+ const sourceNode = nodes.get(edge.source);
125
+ const targetNode = nodes.get(edge.target);
126
+ if (!sourceNode || !targetNode)
127
+ continue;
128
+ const sourceCategory = sourceNode.category;
129
+ // Methods and schema layers should be React-free
130
+ if (sourceCategory !== 'method' && sourceCategory !== 'schema')
131
+ continue;
132
+ if (targetNode.type === 'external' && reactPackages.has(targetNode.label)) {
133
+ violations.push({
134
+ rule: 'no-react-in-methods',
135
+ severity: 'error',
136
+ message: `React import in ${sourceCategory} layer: "${sourceNode.label}" imports "${targetNode.label}"`,
137
+ file: edge.source,
138
+ line: edge.line,
139
+ suggestion: `The ${sourceCategory} layer must be pure (no React). Move React-dependent code to a hook or component.`,
140
+ });
141
+ }
142
+ }
143
+ return violations;
144
+ }
145
+ function checkBarrelExports(domainsPath) {
146
+ const violations = [];
147
+ if (!fs.existsSync(domainsPath))
148
+ return violations;
149
+ try {
150
+ const domains = fs
151
+ .readdirSync(domainsPath, { withFileTypes: true })
152
+ .filter(e => e.isDirectory());
153
+ for (const domain of domains) {
154
+ const domainDir = path.join(domainsPath, domain.name);
155
+ const indexPath = path.join(domainDir, 'index.tsx');
156
+ const indexTsPath = path.join(domainDir, 'index.ts');
157
+ if (!fs.existsSync(indexPath) && !fs.existsSync(indexTsPath)) {
158
+ violations.push({
159
+ rule: 'barrel-export',
160
+ severity: 'warning',
161
+ message: `Domain "${domain.name}" is missing a barrel index file (index.tsx)`,
162
+ file: domainDir,
163
+ suggestion: `Create an index.tsx that re-exports the domain's public API. Run: rbor domain ${domain.name} (if new) or manually create the file.`,
164
+ });
165
+ }
166
+ }
167
+ }
168
+ catch { }
169
+ return violations;
170
+ }
171
+ function checkCircularDependencies(circularDeps) {
172
+ return circularDeps.map(cycle => ({
173
+ rule: 'no-circular-deps',
174
+ severity: 'warning',
175
+ message: `Circular dependency: ${cycle.join(' -> ')}`,
176
+ suggestion: `Break the cycle by extracting shared logic into a lower-level module.`,
177
+ }));
178
+ }
179
+ function validate(options) {
180
+ const config = (0, config_1.loadConfig)();
181
+ const projectRoot = (0, config_1.findProjectRoot)();
182
+ const domainsPath = (0, config_1.getDomainsPath)(config);
183
+ const domainsRelative = path.relative(projectRoot, domainsPath).replace(/\\/g, '/');
184
+ console.log('🔍 Validating rBOR architecture...');
185
+ console.log(` Domains path: ${config.domainsPath}/`);
186
+ console.log('');
187
+ if (!fs.existsSync(domainsPath)) {
188
+ console.log('⚠️ No domains folder found. Nothing to validate.');
189
+ return;
190
+ }
191
+ // Build the full dependency graph for the domains folder
192
+ const analysisOptions = {
193
+ entry: domainsPath,
194
+ direction: 'forward',
195
+ maxDepth: 15,
196
+ includeNodeModules: true, // Need this to detect React imports in methods
197
+ includeTypeImports: false, // Type imports don't count as architectural violations
198
+ includeTests: false,
199
+ };
200
+ let violations = [];
201
+ try {
202
+ const graph = (0, analyzers_1.buildDependencyGraph)(analysisOptions);
203
+ // Index nodes by ID for fast lookup
204
+ const nodeMap = new Map();
205
+ for (const node of graph.nodes) {
206
+ nodeMap.set(node.id, node);
207
+ }
208
+ // Run all validation rules
209
+ violations = [
210
+ ...checkCrossDomainImports(graph.edges, nodeMap, domainsRelative),
211
+ ...checkDownwardDependencies(graph.edges, nodeMap),
212
+ ...checkNoReactInMethods(graph.edges, nodeMap),
213
+ ...checkBarrelExports(domainsPath),
214
+ ...checkCircularDependencies(graph.metadata.circularDependencies),
215
+ ];
216
+ }
217
+ catch (error) {
218
+ console.error('❌ Failed to build dependency graph:', error instanceof Error ? error.message : String(error));
219
+ process.exit(1);
220
+ }
221
+ // Report results
222
+ const errors = violations.filter(v => v.severity === 'error');
223
+ const warnings = violations.filter(v => v.severity === 'warning');
224
+ if (violations.length === 0) {
225
+ console.log('✅ No architecture violations found!');
226
+ console.log('');
227
+ console.log(' All rBOR rules pass:');
228
+ console.log(' ✓ No cross-domain imports');
229
+ console.log(' ✓ Dependencies flow downward');
230
+ console.log(' ✓ Methods layer is React-free');
231
+ console.log(' ✓ All domains have barrel exports');
232
+ console.log(' ✓ No circular dependencies');
233
+ return;
234
+ }
235
+ // Print violations grouped by rule
236
+ console.log('═══════════════════════════════════════════════════════════');
237
+ for (const v of violations) {
238
+ const icon = v.severity === 'error' ? '❌' : '⚠️';
239
+ console.log(`${icon} [${v.rule}] ${v.message}`);
240
+ if (v.file) {
241
+ console.log(` File: ${v.file}${v.line ? `:${v.line}` : ''}`);
242
+ }
243
+ if (v.suggestion) {
244
+ console.log(` Fix: ${v.suggestion}`);
245
+ }
246
+ console.log('');
247
+ }
248
+ console.log('═══════════════════════════════════════════════════════════');
249
+ console.log(` ${errors.length} error(s), ${warnings.length} warning(s)`);
250
+ console.log('');
251
+ if (errors.length > 0 || (options.strict && warnings.length > 0)) {
252
+ process.exit(1);
253
+ }
254
+ }
255
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function MainLayout(): any;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MainLayout = MainLayout;
4
+ const Checking_1 = require("../../domains/checking/components/Checking");
5
+ function MainLayout() { return <Checking_1.Checking />; }
6
+ //# sourceMappingURL=MainLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MainLayout.js","sourceRoot":"","sources":["../../src/layouts/MainLayout.tsx"],"names":[],"mappings":";;AACA,gCAAqD;AADrD,yEAAsE;AACtE,SAAgB,UAAU,KAAK,OAAO,CAAC,mBAAQ,CAAC,AAAD,EAAG,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function HomePage(): any;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HomePage = HomePage;
4
+ const Checking_1 = require("../../domains/checking/components/Checking");
5
+ function HomePage() { return <Checking_1.Checking />; }
6
+ //# sourceMappingURL=HomePage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HomePage.js","sourceRoot":"","sources":["../../src/pages/HomePage.tsx"],"names":[],"mappings":";;AACA,4BAAmD;AADnD,yEAAsE;AACtE,SAAgB,QAAQ,KAAK,OAAO,CAAC,mBAAQ,CAAC,AAAD,EAAG,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function barrelTemplate(name: string): string;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.barrelTemplate = barrelTemplate;
4
+ const naming_1 = require("../../utils/naming");
5
+ function barrelTemplate(name) {
6
+ const pascalName = (0, naming_1.toPascalCase)(name);
7
+ return `// ${pascalName} Feature - Public Entry Point
8
+ // This file is the ONLY public export for the ${name} domain.
9
+ // All external consumers should import from here.
10
+
11
+ export { ${pascalName} } from './components/${pascalName}';
12
+ `;
13
+ }
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/barrel/index.ts"],"names":[],"mappings":";;AAEA,wCASC;AAXD,+CAAkD;AAElD,SAAgB,cAAc,CAAC,IAAY;IACzC,MAAM,UAAU,GAAG,IAAA,qBAAY,EAAC,IAAI,CAAC,CAAC;IAEtC,OAAO,MAAM,UAAU;iDACwB,IAAI;;;WAG1C,UAAU,yBAAyB,UAAU;CACvD,CAAC;AACF,CAAC"}
@@ -0,0 +1 @@
1
+ export { mainComponentTemplate } from './main';