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,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.kyBaseServiceTemplate = kyBaseServiceTemplate;
4
+ function kyBaseServiceTemplate() {
5
+ return `import ky, { type KyInstance, type Options } from 'ky';
6
+
7
+ export interface BaseResponse<T> {
8
+ data: T;
9
+ status: number;
10
+ message?: string;
11
+ }
12
+
13
+ export type RequestConfig = Options;
14
+
15
+ export abstract class BaseService {
16
+ protected readonly client: KyInstance;
17
+
18
+ constructor(baseURL?: string) {
19
+ this.client = ky.create({
20
+ prefixUrl: baseURL || '',
21
+ timeout: 30000,
22
+ headers: {
23
+ 'Content-Type': 'application/json',
24
+ Accept: 'application/json',
25
+ },
26
+ hooks: {
27
+ beforeRequest: [
28
+ (request) => {
29
+ // TODO: Add auth token logic here
30
+ // const token = getToken();
31
+ // if (token) request.headers.set('Authorization', \`Bearer \${token}\`);
32
+ },
33
+ ],
34
+ afterResponse: [
35
+ async (request, options, response) => {
36
+ // TODO: Add response handling logic here
37
+ return response;
38
+ },
39
+ ],
40
+ },
41
+ });
42
+ }
43
+
44
+ protected async get<T>(endpoint: string, options?: Options): Promise<BaseResponse<T>> {
45
+ const response = await this.client.get(endpoint, options);
46
+ const data = await response.json<T>();
47
+ return { data, status: response.status };
48
+ }
49
+
50
+ protected async post<T>(endpoint: string, data?: unknown, options?: Options): Promise<BaseResponse<T>> {
51
+ const response = await this.client.post(endpoint, {
52
+ json: data,
53
+ ...options,
54
+ });
55
+ const responseData = await response.json<T>();
56
+ return { data: responseData, status: response.status };
57
+ }
58
+
59
+ protected async put<T>(endpoint: string, data?: unknown, options?: Options): Promise<BaseResponse<T>> {
60
+ const response = await this.client.put(endpoint, {
61
+ json: data,
62
+ ...options,
63
+ });
64
+ const responseData = await response.json<T>();
65
+ return { data: responseData, status: response.status };
66
+ }
67
+
68
+ protected async patch<T>(endpoint: string, data?: unknown, options?: Options): Promise<BaseResponse<T>> {
69
+ const response = await this.client.patch(endpoint, {
70
+ json: data,
71
+ ...options,
72
+ });
73
+ const responseData = await response.json<T>();
74
+ return { data: responseData, status: response.status };
75
+ }
76
+
77
+ protected async delete<T>(endpoint: string, options?: Options): Promise<BaseResponse<T>> {
78
+ const response = await this.client.delete(endpoint, options);
79
+ const data = await response.json<T>();
80
+ return { data, status: response.status };
81
+ }
82
+ }
83
+ `;
84
+ }
85
+ //# sourceMappingURL=base-service-ky.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-service-ky.js","sourceRoot":"","sources":["../../../src/templates/services/base-service-ky.ts"],"names":[],"mappings":";;AAAA,sDAgFC;AAhFD,SAAgB,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8ER,CAAC;AACF,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function baseServiceTemplate(): string;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.baseServiceTemplate = baseServiceTemplate;
4
+ function baseServiceTemplate() {
5
+ return `import axios, { type AxiosInstance, type AxiosRequestConfig } from 'axios';
6
+
7
+ export interface BaseResponse<T> {
8
+ data: T;
9
+ status: number;
10
+ message?: string;
11
+ }
12
+
13
+ export interface ErrorContext {
14
+ functionName: string;
15
+ method: string;
16
+ filePath: string;
17
+ }
18
+
19
+ // Configure your base URL here
20
+ const BASE_URL = process.env.API_BASE_URL || 'http://localhost:3000';
21
+
22
+ export abstract class BaseService {
23
+ protected readonly axios: AxiosInstance;
24
+
25
+ constructor() {
26
+ this.axios = axios.create({
27
+ baseURL: BASE_URL,
28
+ timeout: 30000,
29
+ headers: {
30
+ 'Content-Type': 'application/json',
31
+ Accept: 'application/json',
32
+ },
33
+ });
34
+ this.setupInterceptors();
35
+ }
36
+
37
+ private setupInterceptors(): void {
38
+ this.axios.interceptors.request.use(
39
+ (config) => {
40
+ // TODO: Add auth token logic here
41
+ // const token = getToken();
42
+ // if (token) config.headers.Authorization = \`Bearer \${token}\`;
43
+ return config;
44
+ },
45
+ (error) => Promise.reject(error)
46
+ );
47
+
48
+ this.axios.interceptors.response.use(
49
+ (response) => response,
50
+ (error) => {
51
+ // TODO: Add error handling logic here
52
+ return Promise.reject(error);
53
+ }
54
+ );
55
+ }
56
+
57
+ protected getErrorContext(functionName: string, method: string): ErrorContext {
58
+ return {
59
+ functionName,
60
+ method,
61
+ filePath: this.constructor.name,
62
+ };
63
+ }
64
+
65
+ async get<T>(endpoint: string, functionName: string, config?: AxiosRequestConfig): Promise<BaseResponse<T>> {
66
+ const response = await this.axios.get<T>(endpoint, config);
67
+ return { data: response.data, status: response.status };
68
+ }
69
+
70
+ async post<T>(endpoint: string, functionName: string, data?: unknown, config?: AxiosRequestConfig): Promise<BaseResponse<T>> {
71
+ const response = await this.axios.post<T>(endpoint, data, config);
72
+ return { data: response.data, status: response.status };
73
+ }
74
+
75
+ async put<T>(endpoint: string, functionName: string, data?: unknown, config?: AxiosRequestConfig): Promise<BaseResponse<T>> {
76
+ const response = await this.axios.put<T>(endpoint, data, config);
77
+ return { data: response.data, status: response.status };
78
+ }
79
+
80
+ async patch<T>(endpoint: string, functionName: string, data?: unknown, config?: AxiosRequestConfig): Promise<BaseResponse<T>> {
81
+ const response = await this.axios.patch<T>(endpoint, data, config);
82
+ return { data: response.data, status: response.status };
83
+ }
84
+
85
+ async delete<T>(endpoint: string, functionName: string, config?: AxiosRequestConfig): Promise<BaseResponse<T>> {
86
+ const response = await this.axios.delete<T>(endpoint, config);
87
+ return { data: response.data, status: response.status };
88
+ }
89
+ }
90
+ `;
91
+ }
92
+ //# sourceMappingURL=base-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-service.js","sourceRoot":"","sources":["../../../src/templates/services/base-service.ts"],"names":[],"mappings":";;AAAA,kDAuFC;AAvFD,SAAgB,mBAAmB;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqFR,CAAC;AACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { HttpClient } from '../../cli';
2
+ export declare function domainServiceTemplate(name: string, httpClient?: HttpClient): string;
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.domainServiceTemplate = domainServiceTemplate;
4
+ const naming_1 = require("../../utils/naming");
5
+ function getConfigImport(httpClient) {
6
+ switch (httpClient) {
7
+ case 'axios':
8
+ return `import type { AxiosRequestConfig } from 'axios';`;
9
+ case 'ky':
10
+ return `import type { Options as KyOptions } from 'ky';`;
11
+ case 'fetch':
12
+ return ``;
13
+ }
14
+ }
15
+ function getConfigTypeName(httpClient) {
16
+ switch (httpClient) {
17
+ case 'axios':
18
+ return 'AxiosRequestConfig';
19
+ case 'ky':
20
+ return 'KyOptions';
21
+ case 'fetch':
22
+ return 'RequestConfig';
23
+ }
24
+ }
25
+ function domainServiceTemplate(name, httpClient = 'axios') {
26
+ const pascalName = (0, naming_1.toPascalCase)(name);
27
+ const configImport = getConfigImport(httpClient);
28
+ const configType = getConfigTypeName(httpClient);
29
+ const baseServiceImport = httpClient === 'fetch'
30
+ ? `import { BaseService, type BaseResponse, type RequestConfig } from '../../../infrastructure/BaseService';`
31
+ : `import { BaseService, type BaseResponse } from '../../../infrastructure/BaseService';`;
32
+ return `// ${pascalName} Service
33
+
34
+ ${configImport}
35
+ ${baseServiceImport}
36
+ import { generateUrl, type UrlParams, type QueryParams } from '../../../infrastructure/generateURL';
37
+
38
+ export class ${pascalName}Service extends BaseService {
39
+ /**
40
+ * GET request with URL parameter substitution
41
+ */
42
+ async get<T>(
43
+ endpoint: string,
44
+ params?: UrlParams,
45
+ query?: QueryParams,
46
+ config?: ${configType}
47
+ ): Promise<BaseResponse<T>> {
48
+ const url = generateUrl(endpoint, params, query);
49
+ return super.get<T>(url, config);
50
+ }
51
+
52
+ /**
53
+ * POST request with URL parameter substitution
54
+ */
55
+ async post<T>(
56
+ endpoint: string,
57
+ data?: unknown,
58
+ params?: UrlParams,
59
+ query?: QueryParams,
60
+ config?: ${configType}
61
+ ): Promise<BaseResponse<T>> {
62
+ const url = generateUrl(endpoint, params, query);
63
+ return super.post<T>(url, data, config);
64
+ }
65
+
66
+ /**
67
+ * PUT request with URL parameter substitution
68
+ */
69
+ async put<T>(
70
+ endpoint: string,
71
+ data?: unknown,
72
+ params?: UrlParams,
73
+ query?: QueryParams,
74
+ config?: ${configType}
75
+ ): Promise<BaseResponse<T>> {
76
+ const url = generateUrl(endpoint, params, query);
77
+ return super.put<T>(url, data, config);
78
+ }
79
+
80
+ /**
81
+ * DELETE request with URL parameter substitution
82
+ */
83
+ async delete<T>(
84
+ endpoint: string,
85
+ params?: UrlParams,
86
+ query?: QueryParams,
87
+ config?: ${configType}
88
+ ): Promise<BaseResponse<T>> {
89
+ const url = generateUrl(endpoint, params, query);
90
+ return super.delete<T>(url, config);
91
+ }
92
+ }
93
+ `;
94
+ }
95
+ //# sourceMappingURL=domain-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-service.js","sourceRoot":"","sources":["../../../src/templates/services/domain-service.ts"],"names":[],"mappings":";;AAyBA,sDAwEC;AAjGD,+CAAkD;AAGlD,SAAS,eAAe,CAAC,UAAsB;IAC7C,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,OAAO;YACV,OAAO,kDAAkD,CAAC;QAC5D,KAAK,IAAI;YACP,OAAO,iDAAiD,CAAC;QAC3D,KAAK,OAAO;YACV,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAsB;IAC/C,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,OAAO;YACV,OAAO,oBAAoB,CAAC;QAC9B,KAAK,IAAI;YACP,OAAO,WAAW,CAAC;QACrB,KAAK,OAAO;YACV,OAAO,eAAe,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAgB,qBAAqB,CAAC,IAAY,EAAE,aAAyB,OAAO;IAClF,MAAM,UAAU,GAAG,IAAA,qBAAY,EAAC,IAAI,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAEjD,MAAM,iBAAiB,GACrB,UAAU,KAAK,OAAO;QACpB,CAAC,CAAC,2GAA2G;QAC7G,CAAC,CAAC,uFAAuF,CAAC;IAE9F,OAAO,MAAM,UAAU;;EAEvB,YAAY;EACZ,iBAAiB;;;eAGJ,UAAU;;;;;;;;eAQV,UAAU;;;;;;;;;;;;;;eAcV,UAAU;;;;;;;;;;;;;;eAcV,UAAU;;;;;;;;;;;;;eAaV,UAAU;;;;;;CAMxB,CAAC;AACF,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { axiosBaseServiceTemplate } from './base-service-axios';
2
+ export { fetchBaseServiceTemplate } from './base-service-fetch';
3
+ export { kyBaseServiceTemplate } from './base-service-ky';
4
+ export { domainServiceTemplate } from './domain-service';
5
+ export { serviceFactoryTemplate, getServiceImport, getServiceOverload, getServiceCase, } from './service-factory';
6
+ export { baseServiceTemplate } from './base-service';
7
+ export declare function servicesTemplate(name: string): string;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.baseServiceTemplate = exports.getServiceCase = exports.getServiceOverload = exports.getServiceImport = exports.serviceFactoryTemplate = exports.domainServiceTemplate = exports.kyBaseServiceTemplate = exports.fetchBaseServiceTemplate = exports.axiosBaseServiceTemplate = void 0;
4
+ exports.servicesTemplate = servicesTemplate;
5
+ var base_service_axios_1 = require("./base-service-axios");
6
+ Object.defineProperty(exports, "axiosBaseServiceTemplate", { enumerable: true, get: function () { return base_service_axios_1.axiosBaseServiceTemplate; } });
7
+ var base_service_fetch_1 = require("./base-service-fetch");
8
+ Object.defineProperty(exports, "fetchBaseServiceTemplate", { enumerable: true, get: function () { return base_service_fetch_1.fetchBaseServiceTemplate; } });
9
+ var base_service_ky_1 = require("./base-service-ky");
10
+ Object.defineProperty(exports, "kyBaseServiceTemplate", { enumerable: true, get: function () { return base_service_ky_1.kyBaseServiceTemplate; } });
11
+ var domain_service_1 = require("./domain-service");
12
+ Object.defineProperty(exports, "domainServiceTemplate", { enumerable: true, get: function () { return domain_service_1.domainServiceTemplate; } });
13
+ var service_factory_1 = require("./service-factory");
14
+ Object.defineProperty(exports, "serviceFactoryTemplate", { enumerable: true, get: function () { return service_factory_1.serviceFactoryTemplate; } });
15
+ Object.defineProperty(exports, "getServiceImport", { enumerable: true, get: function () { return service_factory_1.getServiceImport; } });
16
+ Object.defineProperty(exports, "getServiceOverload", { enumerable: true, get: function () { return service_factory_1.getServiceOverload; } });
17
+ Object.defineProperty(exports, "getServiceCase", { enumerable: true, get: function () { return service_factory_1.getServiceCase; } });
18
+ var base_service_1 = require("./base-service");
19
+ Object.defineProperty(exports, "baseServiceTemplate", { enumerable: true, get: function () { return base_service_1.baseServiceTemplate; } });
20
+ function servicesTemplate(name) {
21
+ return `// ${name} API and external services\nexport {};\n`;
22
+ }
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/services/index.ts"],"names":[],"mappings":";;;AAeA,4CAEC;AAjBD,2DAAgE;AAAvD,8HAAA,wBAAwB,OAAA;AACjC,2DAAgE;AAAvD,8HAAA,wBAAwB,OAAA;AACjC,qDAA0D;AAAjD,wHAAA,qBAAqB,OAAA;AAE9B,mDAAyD;AAAhD,uHAAA,qBAAqB,OAAA;AAE9B,qDAK2B;AAJzB,yHAAA,sBAAsB,OAAA;AACtB,mHAAA,gBAAgB,OAAA;AAChB,qHAAA,kBAAkB,OAAA;AAClB,iHAAA,cAAc,OAAA;AAGhB,+CAAqD;AAA5C,mHAAA,mBAAmB,OAAA;AAE5B,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,OAAO,MAAM,IAAI,0CAA0C,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function serviceFactoryTemplate(domainName: string, servicePath: string): string;
2
+ export declare function getServiceImport(domainName: string, servicePath: string): string;
3
+ export declare function getServiceOverload(domainName: string): string;
4
+ export declare function getServiceCase(domainName: string): string;
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serviceFactoryTemplate = serviceFactoryTemplate;
4
+ exports.getServiceImport = getServiceImport;
5
+ exports.getServiceOverload = getServiceOverload;
6
+ exports.getServiceCase = getServiceCase;
7
+ const naming_1 = require("../../utils/naming");
8
+ function serviceFactoryTemplate(domainName, servicePath) {
9
+ const pascalName = (0, naming_1.toPascalCase)(domainName);
10
+ const upperName = domainName.replace(/-/g, '').toUpperCase();
11
+ return `// Domain Service Imports
12
+ import { ${pascalName}Service } from '${servicePath}';
13
+
14
+ // Type Imports
15
+ import type { BaseService } from './BaseService';
16
+
17
+ /**
18
+ * Supported service types - auto-updated when new domains are created
19
+ */
20
+ type ServiceType = "${upperName}";
21
+
22
+ /**
23
+ * ServiceFactory - Creates service instances per domain
24
+ */
25
+ export class ServiceFactory {
26
+ /**
27
+ * ${pascalName} Service
28
+ */
29
+ static create(type: "${upperName}"): ${pascalName}Service;
30
+
31
+ /**
32
+ * Implementation
33
+ */
34
+ static create(type: ServiceType): BaseService {
35
+ return this.createService(type);
36
+ }
37
+
38
+ private static createService(type: ServiceType): BaseService {
39
+ switch (type) {
40
+ case "${upperName}":
41
+ return new ${pascalName}Service();
42
+
43
+ default:
44
+ throw new Error(\`Unknown service type: \${type}\`);
45
+ }
46
+ }
47
+ }
48
+ `;
49
+ }
50
+ function getServiceImport(domainName, servicePath) {
51
+ const pascalName = (0, naming_1.toPascalCase)(domainName);
52
+ return `import { ${pascalName}Service } from '${servicePath}';`;
53
+ }
54
+ function getServiceOverload(domainName) {
55
+ const pascalName = (0, naming_1.toPascalCase)(domainName);
56
+ const upperName = domainName.replace(/-/g, '').toUpperCase();
57
+ return ` /**
58
+ * ${pascalName} Service
59
+ */
60
+ static create(type: "${upperName}"): ${pascalName}Service;`;
61
+ }
62
+ function getServiceCase(domainName) {
63
+ const pascalName = (0, naming_1.toPascalCase)(domainName);
64
+ const upperName = domainName.replace(/-/g, '').toUpperCase();
65
+ return ` case "${upperName}":
66
+ return new ${pascalName}Service();`;
67
+ }
68
+ //# sourceMappingURL=service-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-factory.js","sourceRoot":"","sources":["../../../src/templates/services/service-factory.ts"],"names":[],"mappings":";;AAEA,wDA0CC;AAED,4CAGC;AAED,gDAOC;AAED,wCAKC;AAjED,+CAAkD;AAElD,SAAgB,sBAAsB,CAAC,UAAkB,EAAE,WAAmB;IAC5E,MAAM,UAAU,GAAG,IAAA,qBAAY,EAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAE7D,OAAO;WACE,UAAU,mBAAmB,WAAW;;;;;;;;sBAQ7B,SAAS;;;;;;;OAOxB,UAAU;;yBAEQ,SAAS,OAAO,UAAU;;;;;;;;;;;cAWrC,SAAS;qBACF,UAAU;;;;;;;CAO9B,CAAC;AACF,CAAC;AAED,SAAgB,gBAAgB,CAAC,UAAkB,EAAE,WAAmB;IACtE,MAAM,UAAU,GAAG,IAAA,qBAAY,EAAC,UAAU,CAAC,CAAC;IAC5C,OAAO,YAAY,UAAU,mBAAmB,WAAW,IAAI,CAAC;AAClE,CAAC;AAED,SAAgB,kBAAkB,CAAC,UAAkB;IACnD,MAAM,UAAU,GAAG,IAAA,qBAAY,EAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7D,OAAO;OACF,UAAU;;yBAEQ,SAAS,OAAO,UAAU,UAAU,CAAC;AAC9D,CAAC;AAED,SAAgB,cAAc,CAAC,UAAkB;IAC/C,MAAM,UAAU,GAAG,IAAA,qBAAY,EAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7D,OAAO,eAAe,SAAS;qBACZ,UAAU,YAAY,CAAC;AAC5C,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function typesTemplate(name: string): string;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.typesTemplate = typesTemplate;
4
+ function typesTemplate(name) {
5
+ return `// ${name} types\n\nexport {}\n`;
6
+ }
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/types/index.ts"],"names":[],"mappings":";;AAAA,sCAEC;AAFD,SAAgB,aAAa,CAAC,IAAY;IACxC,OAAO,MAAM,IAAI,uBAAuB,CAAC;AAC3C,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function buildUrlTemplate(): string;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildUrlTemplate = buildUrlTemplate;
4
+ function buildUrlTemplate() {
5
+ return `/**
6
+ * URL Builder Utility
7
+ * Constructs URLs with route parameters and query strings
8
+ */
9
+
10
+ export interface UrlParams {
11
+ [key: string]: string | number;
12
+ }
13
+
14
+ export interface QueryParams {
15
+ [key: string]: string | number | boolean | undefined | null;
16
+ }
17
+
18
+ /**
19
+ * Builds a complete URL from a route template, path parameters, and query parameters
20
+ *
21
+ * @param route - The route template (e.g., '/users/:id/posts')
22
+ * @param params - Path parameters to substitute (e.g., { id: '123' })
23
+ * @param query - Query parameters to append (e.g., { page: 1, limit: 10 })
24
+ * @returns The constructed URL string
25
+ *
26
+ * @example
27
+ * buildUrl('/users/:id', { id: '123' })
28
+ * // => '/users/123'
29
+ *
30
+ * @example
31
+ * buildUrl('/users/:id/posts', { id: '123' }, { page: 1, limit: 10 })
32
+ * // => '/users/123/posts?page=1&limit=10'
33
+ *
34
+ * @example
35
+ * buildUrl('/search', undefined, { q: 'hello', filter: 'active' })
36
+ * // => '/search?q=hello&filter=active'
37
+ */
38
+ export function buildUrl(
39
+ route: string,
40
+ params?: UrlParams,
41
+ query?: QueryParams
42
+ ): string {
43
+ let url = route;
44
+
45
+ // Substitute path parameters
46
+ if (params) {
47
+ Object.entries(params).forEach(([key, value]) => {
48
+ url = url.replace(\`:$\{key}\`, String(value));
49
+ });
50
+ }
51
+
52
+ // Append query parameters
53
+ if (query) {
54
+ const searchParams = new URLSearchParams();
55
+
56
+ Object.entries(query).forEach(([key, value]) => {
57
+ if (value !== undefined && value !== null) {
58
+ searchParams.append(key, String(value));
59
+ }
60
+ });
61
+
62
+ const queryString = searchParams.toString();
63
+ if (queryString) {
64
+ url += \`?$\{queryString}\`;
65
+ }
66
+ }
67
+
68
+ return url;
69
+ }
70
+ `;
71
+ }
72
+ //# sourceMappingURL=build-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-url.js","sourceRoot":"","sources":["../../../src/templates/utils/build-url.ts"],"names":[],"mappings":";;AAAA,4CAmEC;AAnED,SAAgB,gBAAgB;IAC9B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiER,CAAC;AACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function endpointsTemplate(name: string): string;
2
+ export declare function endpointEntryTemplate(key: string, path: string): string;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.endpointsTemplate = endpointsTemplate;
4
+ exports.endpointEntryTemplate = endpointEntryTemplate;
5
+ const naming_1 = require("../../utils/naming");
6
+ function endpointsTemplate(name) {
7
+ const upperName = name.replace(/-/g, '_').toUpperCase();
8
+ const pascalName = (0, naming_1.toPascalCase)(name);
9
+ return `// ${pascalName} Endpoints
10
+
11
+ export const ${upperName}_ENDPOINTS = {
12
+ GET_${upperName}_LIST: '/${name}',
13
+ GET_${upperName}_BY_ID: '/${name}/:id',
14
+ CREATE_${upperName}: '/${name}',
15
+ UPDATE_${upperName}: '/${name}/:id',
16
+ DELETE_${upperName}: '/${name}/:id',
17
+ } as const;
18
+ `;
19
+ }
20
+ function endpointEntryTemplate(key, path) {
21
+ return ` ${key}: '${path}',`;
22
+ }
23
+ //# sourceMappingURL=endpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../../../src/templates/utils/endpoints.ts"],"names":[],"mappings":";;AAEA,8CAcC;AAED,sDAEC;AApBD,+CAAkD;AAElD,SAAgB,iBAAiB,CAAC,IAAY;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IACxD,MAAM,UAAU,GAAG,IAAA,qBAAY,EAAC,IAAI,CAAC,CAAC;IAEtC,OAAO,MAAM,UAAU;;eAEV,SAAS;QAChB,SAAS,YAAY,IAAI;QACzB,SAAS,aAAa,IAAI;WACvB,SAAS,OAAO,IAAI;WACpB,SAAS,OAAO,IAAI;WACpB,SAAS,OAAO,IAAI;;CAE9B,CAAC;AACF,CAAC;AAED,SAAgB,qBAAqB,CAAC,GAAW,EAAE,IAAY;IAC7D,OAAO,KAAK,GAAG,MAAM,IAAI,IAAI,CAAC;AAChC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function generateUrlTemplate(): string;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateUrlTemplate = generateUrlTemplate;
4
+ function generateUrlTemplate() {
5
+ return `// URL Generator Utility
6
+
7
+ export type UrlParams = Record<string, string | number>;
8
+ export type QueryParams = Record<string, string | number | boolean | undefined | null>;
9
+
10
+ export function generateUrl(
11
+ route: string,
12
+ params?: UrlParams,
13
+ query?: QueryParams
14
+ ): string {
15
+ let url = route;
16
+
17
+ if (params) {
18
+ Object.entries(params).forEach(([key, value]) => {
19
+ url = url.replace(\`:$\{key}\`, encodeURIComponent(String(value)));
20
+ });
21
+ }
22
+
23
+ if (query) {
24
+ const searchParams = new URLSearchParams();
25
+ Object.entries(query).forEach(([key, value]) => {
26
+ if (value !== undefined && value !== null) {
27
+ searchParams.append(key, String(value));
28
+ }
29
+ });
30
+ const queryString = searchParams.toString();
31
+ if (queryString) {
32
+ url += \`?$\{queryString}\`;
33
+ }
34
+ }
35
+
36
+ return url;
37
+ }
38
+ `;
39
+ }
40
+ //# sourceMappingURL=generateURL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateURL.js","sourceRoot":"","sources":["../../../src/templates/utils/generateURL.ts"],"names":[],"mappings":";;AAAA,kDAmCC;AAnCD,SAAgB,mBAAmB;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCR,CAAC;AACF,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function utilsTemplate(name: string): string;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.utilsTemplate = utilsTemplate;
4
+ function utilsTemplate(name) {
5
+ return `// ${name} utility functions\nexport {};\n`;
6
+ }
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/utils/index.ts"],"names":[],"mappings":";;AAAA,sCAEC;AAFD,SAAgB,aAAa,CAAC,IAAY;IACxC,OAAO,MAAM,IAAI,kCAAkC,CAAC;AACtD,CAAC"}