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.
- package/LICENSE +21 -0
- package/README.md +429 -0
- package/bin/rbor.js +3 -0
- package/dist/analyzers/file-categorizer.d.ts +5 -0
- package/dist/analyzers/file-categorizer.js +269 -0
- package/dist/analyzers/file-categorizer.js.map +1 -0
- package/dist/analyzers/file-categorizer.test.d.ts +1 -0
- package/dist/analyzers/file-categorizer.test.js +155 -0
- package/dist/analyzers/file-categorizer.test.js.map +1 -0
- package/dist/analyzers/graph-builder.d.ts +4 -0
- package/dist/analyzers/graph-builder.js +509 -0
- package/dist/analyzers/graph-builder.js.map +1 -0
- package/dist/analyzers/import-parser.d.ts +8 -0
- package/dist/analyzers/import-parser.js +285 -0
- package/dist/analyzers/import-parser.js.map +1 -0
- package/dist/analyzers/import-parser.test.d.ts +1 -0
- package/dist/analyzers/import-parser.test.js +177 -0
- package/dist/analyzers/import-parser.test.js.map +1 -0
- package/dist/analyzers/index.d.ts +4 -0
- package/dist/analyzers/index.js +28 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/analyzers/output-formatters.d.ts +11 -0
- package/dist/analyzers/output-formatters.js +451 -0
- package/dist/analyzers/output-formatters.js.map +1 -0
- package/dist/analyzers/yo.d.ts +1 -0
- package/dist/analyzers/yo.js +10 -0
- package/dist/analyzers/yo.js.map +1 -0
- package/dist/app/App.d.ts +1 -0
- package/dist/app/App.js +6 -0
- package/dist/app/App.js.map +1 -0
- package/dist/cli.d.ts +5 -0
- package/dist/cli.js +167 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/analyze-deps.d.ts +12 -0
- package/dist/commands/analyze-deps.js +136 -0
- package/dist/commands/analyze-deps.js.map +1 -0
- package/dist/commands/generate-constant.d.ts +1 -0
- package/dist/commands/generate-constant.js +148 -0
- package/dist/commands/generate-constant.js.map +1 -0
- package/dist/commands/generate-domain.d.ts +2 -0
- package/dist/commands/generate-domain.js +87 -0
- package/dist/commands/generate-domain.js.map +1 -0
- package/dist/commands/generate-endpoint.d.ts +1 -0
- package/dist/commands/generate-endpoint.js +124 -0
- package/dist/commands/generate-endpoint.js.map +1 -0
- package/dist/commands/init.d.ts +8 -0
- package/dist/commands/init.js +32 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list-domains.d.ts +1 -0
- package/dist/commands/list-domains.js +122 -0
- package/dist/commands/list-domains.js.map +1 -0
- package/dist/commands/validate.d.ts +4 -0
- package/dist/commands/validate.js +255 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/layouts/MainLayout.d.ts +1 -0
- package/dist/layouts/MainLayout.js +6 -0
- package/dist/layouts/MainLayout.js.map +1 -0
- package/dist/pages/HomePage.d.ts +1 -0
- package/dist/pages/HomePage.js +6 -0
- package/dist/pages/HomePage.js.map +1 -0
- package/dist/templates/barrel/index.d.ts +1 -0
- package/dist/templates/barrel/index.js +14 -0
- package/dist/templates/barrel/index.js.map +1 -0
- package/dist/templates/component/index.d.ts +1 -0
- package/dist/templates/component/index.js +6 -0
- package/dist/templates/component/index.js.map +1 -0
- package/dist/templates/component/main.d.ts +1 -0
- package/dist/templates/component/main.js +8 -0
- package/dist/templates/component/main.js.map +1 -0
- package/dist/templates/hooks/action.d.ts +1 -0
- package/dist/templates/hooks/action.js +49 -0
- package/dist/templates/hooks/action.js.map +1 -0
- package/dist/templates/hooks/controller.d.ts +1 -0
- package/dist/templates/hooks/controller.js +41 -0
- package/dist/templates/hooks/controller.js.map +1 -0
- package/dist/templates/hooks/data.d.ts +1 -0
- package/dist/templates/hooks/data.js +38 -0
- package/dist/templates/hooks/data.js.map +1 -0
- package/dist/templates/hooks/index.d.ts +3 -0
- package/dist/templates/hooks/index.js +10 -0
- package/dist/templates/hooks/index.js.map +1 -0
- package/dist/templates/index.d.ts +10 -0
- package/dist/templates/index.js +33 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/methods/index.d.ts +1 -0
- package/dist/templates/methods/index.js +85 -0
- package/dist/templates/methods/index.js.map +1 -0
- package/dist/templates/schema/index.d.ts +1 -0
- package/dist/templates/schema/index.js +40 -0
- package/dist/templates/schema/index.js.map +1 -0
- package/dist/templates/services/base-service-axios.d.ts +1 -0
- package/dist/templates/services/base-service-axios.js +77 -0
- package/dist/templates/services/base-service-axios.js.map +1 -0
- package/dist/templates/services/base-service-fetch.d.ts +1 -0
- package/dist/templates/services/base-service-fetch.js +113 -0
- package/dist/templates/services/base-service-fetch.js.map +1 -0
- package/dist/templates/services/base-service-ky.d.ts +1 -0
- package/dist/templates/services/base-service-ky.js +85 -0
- package/dist/templates/services/base-service-ky.js.map +1 -0
- package/dist/templates/services/base-service.d.ts +1 -0
- package/dist/templates/services/base-service.js +92 -0
- package/dist/templates/services/base-service.js.map +1 -0
- package/dist/templates/services/domain-service.d.ts +2 -0
- package/dist/templates/services/domain-service.js +95 -0
- package/dist/templates/services/domain-service.js.map +1 -0
- package/dist/templates/services/index.d.ts +7 -0
- package/dist/templates/services/index.js +23 -0
- package/dist/templates/services/index.js.map +1 -0
- package/dist/templates/services/service-factory.d.ts +4 -0
- package/dist/templates/services/service-factory.js +68 -0
- package/dist/templates/services/service-factory.js.map +1 -0
- package/dist/templates/types/index.d.ts +1 -0
- package/dist/templates/types/index.js +7 -0
- package/dist/templates/types/index.js.map +1 -0
- package/dist/templates/utils/build-url.d.ts +1 -0
- package/dist/templates/utils/build-url.js +72 -0
- package/dist/templates/utils/build-url.js.map +1 -0
- package/dist/templates/utils/endpoints.d.ts +2 -0
- package/dist/templates/utils/endpoints.js +23 -0
- package/dist/templates/utils/endpoints.js.map +1 -0
- package/dist/templates/utils/generateURL.d.ts +1 -0
- package/dist/templates/utils/generateURL.js +40 -0
- package/dist/templates/utils/generateURL.js.map +1 -0
- package/dist/templates/utils/index.d.ts +1 -0
- package/dist/templates/utils/index.js +7 -0
- package/dist/templates/utils/index.js.map +1 -0
- package/dist/types/dependency-graph.d.ts +95 -0
- package/dist/types/dependency-graph.js +13 -0
- package/dist/types/dependency-graph.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/config.d.ts +16 -0
- package/dist/utils/config.js +145 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/create-file.d.ts +13 -0
- package/dist/utils/create-file.js +159 -0
- package/dist/utils/create-file.js.map +1 -0
- package/dist/utils/dependency-installer.d.ts +5 -0
- package/dist/utils/dependency-installer.js +95 -0
- package/dist/utils/dependency-installer.js.map +1 -0
- package/dist/utils/file-finder.d.ts +6 -0
- package/dist/utils/file-finder.js +80 -0
- package/dist/utils/file-finder.js.map +1 -0
- package/dist/utils/naming.d.ts +11 -0
- package/dist/utils/naming.js +46 -0
- package/dist/utils/naming.js.map +1 -0
- package/dist/utils/naming.test.d.ts +1 -0
- package/dist/utils/naming.test.js +106 -0
- package/dist/utils/naming.test.js.map +1 -0
- package/dist/utils/service-factory-updater.d.ts +2 -0
- package/dist/utils/service-factory-updater.js +87 -0
- package/dist/utils/service-factory-updater.js.map +1 -0
- 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,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 @@
|
|
|
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,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 @@
|
|
|
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"}
|