@seamapi/nextlove-sdk-generator 1.13.1 → 1.13.3
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/lib/generate-python-sdk/generate-python-sdk.d.ts +1 -0
- package/lib/generate-python-sdk/generate-python-sdk.js +16 -7
- package/lib/generate-python-sdk/generate-python-sdk.js.map +1 -1
- package/lib/generate-python-sdk/templates/routes.py.template.js +3 -2
- package/lib/generate-python-sdk/templates/routes.py.template.js.map +1 -1
- package/lib/generate-ruby-sdk/generate-ruby-sdk.js +18 -6
- package/lib/generate-ruby-sdk/generate-ruby-sdk.js.map +1 -1
- package/lib/generate-ruby-sdk/lib/get-entity-imports-template.d.ts +1 -0
- package/lib/generate-ruby-sdk/lib/get-entity-imports-template.js +17 -0
- package/lib/generate-ruby-sdk/lib/get-entity-imports-template.js.map +1 -0
- package/package.json +1 -1
- package/src/lib/generate-python-sdk/generate-python-sdk.ts +19 -7
- package/src/lib/generate-python-sdk/templates/routes.py.template.ts +8 -2
- package/src/lib/generate-ruby-sdk/generate-ruby-sdk.ts +24 -6
- package/src/lib/generate-ruby-sdk/lib/get-entity-imports-template.ts +20 -0
|
@@ -26,7 +26,8 @@ export const generatePythonSDK = async (options = {}) => {
|
|
|
26
26
|
namespace: child_resource,
|
|
27
27
|
}));
|
|
28
28
|
const pascal_resource_name = pascalCase(resource_name);
|
|
29
|
-
|
|
29
|
+
const class_name = pascalCase(convertCustomResourceNamespace(resource_name));
|
|
30
|
+
class_map[pascal_resource_name] = new ClassFile(class_name, resource_name, child_class_identifiers);
|
|
30
31
|
};
|
|
31
32
|
for (const route of routes) {
|
|
32
33
|
if (!route.post)
|
|
@@ -102,7 +103,7 @@ export const generatePythonSDK = async (options = {}) => {
|
|
|
102
103
|
"",
|
|
103
104
|
...Object.entries(openapi.components.schemas)
|
|
104
105
|
.map(([schema_name, schema]) => [schema_name, flattenObjSchema(schema)])
|
|
105
|
-
.map(([schema_name, schema]) => resourceDataclassTemplate(pascalCase(schema_name), Object.entries(schema.properties).map(([name, property_schema]) => ({
|
|
106
|
+
.map(([schema_name, schema]) => resourceDataclassTemplate(pascalCase(convertCustomResourceName(schema_name)), Object.entries(schema.properties).map(([name, property_schema]) => ({
|
|
106
107
|
name,
|
|
107
108
|
type: mapPythonType(property_schema),
|
|
108
109
|
})))),
|
|
@@ -124,12 +125,20 @@ function determineReturnResource({ route_path, response_arr_type, response_obj_t
|
|
|
124
125
|
if (endpoints_returning_deprecated_action_attempt.includes(route_path)) {
|
|
125
126
|
return "None";
|
|
126
127
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
return
|
|
128
|
+
const response_type = response_obj_type || response_arr_type;
|
|
129
|
+
if (response_type) {
|
|
130
|
+
const converted_response_type = convertCustomResourceName(response_type);
|
|
131
|
+
const formatted_response_type = pascalCase(converted_response_type);
|
|
132
|
+
return response_obj_type
|
|
133
|
+
? formatted_response_type
|
|
134
|
+
: `List[${formatted_response_type}]`;
|
|
132
135
|
}
|
|
133
136
|
return "None";
|
|
134
137
|
}
|
|
138
|
+
export function convertCustomResourceNamespace(resource_name) {
|
|
139
|
+
return resource_name === "events" ? "seam_events" : resource_name;
|
|
140
|
+
}
|
|
141
|
+
function convertCustomResourceName(response_type) {
|
|
142
|
+
return response_type === "event" ? "seam_event" : response_type;
|
|
143
|
+
}
|
|
135
144
|
//# sourceMappingURL=generate-python-sdk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-python-sdk.js","sourceRoot":"","sources":["../../src/lib/generate-python-sdk/generate-python-sdk.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,gBAAgB,MAAM,mCAAmC,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,sBAAsB,MAAM,yCAAyC,CAAA;AAC5E,OAAO,yBAAyB,MAAM,4CAA4C,CAAA;AAClF,OAAO,EAAE,6BAA6B,EAAE,MAAM,kDAAkD,CAAA;AAChG,OAAO,yBAAyB,MAAM,gDAAgD,CAAA;AACtF,OAAO,EAAE,8BAA8B,EAAE,MAAM,qEAAqE,CAAA;AACpH,OAAO,EACL,6CAA6C,EAC7C,sBAAsB,GACvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,kBAAkB,MAAM,qCAAqC,CAAA;AAEpE,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,UAA+B,EAAE,EAAE,EAAE;IAC3E,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAA;IACjD,MAAM,MAAM,GAAY,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxE,IAAI;QACJ,GAAG,CAAC;KACL,CAAC,CAAC,CAAA;IAEH,MAAM,EAAE,GAA2B,EAAE,CAAA;IACrC,MAAM,SAAS,GAA8B,EAAE,CAAA;IAC/C,MAAM,UAAU,GAAe,EAAE,CAAA;IACjC,MAAM,6BAA6B,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAEvE,MAAM,YAAY,GAAG,CAAC,aAAqB,EAAE,EAAE;QAC7C,MAAM,uBAAuB,GAAG,CAC9B,6BAA6B,CAAC,aAAa,CAAC,IAAI,EAAE,CACnD,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YACzB,UAAU,EAAE,UAAU,CAAC,GAAG,aAAa,IAAI,cAAc,EAAE,CAAC;YAC5D,SAAS,EAAE,cAAc;SAC1B,CAAC,CAAC,CAAA;QACH,MAAM,oBAAoB,GAAG,UAAU,CAAC,aAAa,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"generate-python-sdk.js","sourceRoot":"","sources":["../../src/lib/generate-python-sdk/generate-python-sdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { pascalCase } from "change-case";
|
|
2
|
+
import { convertCustomResourceNamespace } from "../generate-python-sdk.js";
|
|
2
3
|
export default (namespaces) => [
|
|
3
4
|
`from typing import Any, Dict`,
|
|
4
5
|
`from ..client import SeamHttpClient`,
|
|
5
6
|
`from .models import AbstractRoutes`,
|
|
6
|
-
...namespaces.map((ns) => `from .${ns} import ${pascalCase(ns)}`),
|
|
7
|
+
...namespaces.map((ns) => `from .${ns} import ${pascalCase(convertCustomResourceNamespace(ns))}`),
|
|
7
8
|
``,
|
|
8
9
|
`class Routes(AbstractRoutes):`,
|
|
9
10
|
` def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]):`,
|
|
10
|
-
...namespaces.map((ns) => ` self.${ns} = ${pascalCase(ns)}(client=client, defaults=defaults)`),
|
|
11
|
+
...namespaces.map((ns) => ` self.${ns} = ${pascalCase(convertCustomResourceNamespace(ns))}(client=client, defaults=defaults)`),
|
|
11
12
|
].join("\n");
|
|
12
13
|
//# sourceMappingURL=routes.py.template.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.py.template.js","sourceRoot":"","sources":["../../../src/lib/generate-python-sdk/templates/routes.py.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,eAAe,CAAC,UAAoB,EAAE,EAAE,CACtC;IACE,8BAA8B;IAC9B,qCAAqC;IACrC,oCAAoC;IACpC,GAAG,UAAU,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"routes.py.template.js","sourceRoot":"","sources":["../../../src/lib/generate-python-sdk/templates/routes.py.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAA;AAC1E,eAAe,CAAC,UAAoB,EAAE,EAAE,CACtC;IACE,8BAA8B;IAC9B,qCAAqC;IACrC,oCAAoC;IACpC,GAAG,UAAU,CAAC,GAAG,CACf,CAAC,EAAE,EAAE,EAAE,CACL,SAAS,EAAE,WAAW,UAAU,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,EAAE,CACzE;IACD,EAAE;IACF,+BAA+B;IAC/B,yEAAyE;IACzE,GAAG,UAAU,CAAC,GAAG,CACf,CAAC,EAAE,EAAE,EAAE,CACL,YAAY,EAAE,MAAM,UAAU,CAC5B,8BAA8B,CAAC,EAAE,CAAC,CACnC,oCAAoC,CACxC;CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA"}
|
|
@@ -10,6 +10,7 @@ import resource_warnings_supportRbTemplate from "./templates/resource_warnings_s
|
|
|
10
10
|
import mapParentToChildResources from "../../lib/openapi/map-parent-to-children-resource.js";
|
|
11
11
|
import { ignored_endpoint_paths } from "../../lib/endpoint-rules.js";
|
|
12
12
|
import resolveOpenapiSpec from "../../lib/openapi/resolve-openapi-spec.js";
|
|
13
|
+
import { generateEntityImportsTemplate } from "./lib/get-entity-imports-template.js";
|
|
13
14
|
export const generateRubySDK = async (options = {}) => {
|
|
14
15
|
const openapi = await resolveOpenapiSpec(options);
|
|
15
16
|
const routes = Object.entries(openapi.paths).map(([path, v]) => ({
|
|
@@ -17,12 +18,16 @@ export const generateRubySDK = async (options = {}) => {
|
|
|
17
18
|
...v,
|
|
18
19
|
}));
|
|
19
20
|
const fs = {};
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
const lib_routes_path = "lib/seam/routes";
|
|
22
|
+
const lib_route_resources_path = `${lib_routes_path}/resources`;
|
|
23
|
+
const lib_route_clients_path = `${lib_routes_path}/clients`;
|
|
24
|
+
fs[`${lib_route_resources_path}/resource_error.rb`] =
|
|
25
|
+
resource_errorRbTemplate();
|
|
26
|
+
fs[`${lib_route_resources_path}/resource_warning.rb`] =
|
|
22
27
|
resource_warningRbTemplate();
|
|
23
|
-
fs[
|
|
28
|
+
fs[`${lib_route_resources_path}/resource_errors_support.rb`] =
|
|
24
29
|
resource_errors_supportRbTemplate();
|
|
25
|
-
fs[
|
|
30
|
+
fs[`${lib_route_resources_path}/resource_warnings_support.rb`] =
|
|
26
31
|
resource_warnings_supportRbTemplate();
|
|
27
32
|
const resources = Object.entries(openapi.components.schemas).map(([schema_name, schema]) => [schema_name, flattenObjSchema(schema)]);
|
|
28
33
|
for (const [snake_name, schema] of resources) {
|
|
@@ -30,7 +35,7 @@ export const generateRubySDK = async (options = {}) => {
|
|
|
30
35
|
name,
|
|
31
36
|
is_date_time: "format" in property_schema && property_schema.format === "date-time",
|
|
32
37
|
}));
|
|
33
|
-
fs[
|
|
38
|
+
fs[`${lib_route_resources_path}/${snake_name}.rb`] = resourceRbTemplate({
|
|
34
39
|
pascal_name: pascalCase(snake_name),
|
|
35
40
|
attrs: params.filter((p) => !p.is_date_time).map((p) => p.name),
|
|
36
41
|
date_attrs: params.filter((p) => p.is_date_time).map((p) => p.name),
|
|
@@ -95,8 +100,15 @@ export const generateRubySDK = async (options = {}) => {
|
|
|
95
100
|
});
|
|
96
101
|
}
|
|
97
102
|
for (const client of Object.values(clients)) {
|
|
98
|
-
fs[
|
|
103
|
+
fs[`${lib_route_clients_path}/${client.snake_name}.rb`] = client.serialize();
|
|
99
104
|
}
|
|
105
|
+
const resource_file_paths = Object.keys(fs).filter((f) => f.startsWith(lib_route_resources_path));
|
|
106
|
+
const client_file_paths = Object.keys(fs).filter((f) => f.startsWith(lib_route_clients_path));
|
|
107
|
+
const imports_file_name = "index";
|
|
108
|
+
fs[`${lib_route_resources_path}/${imports_file_name}.rb`] =
|
|
109
|
+
generateEntityImportsTemplate(resource_file_paths);
|
|
110
|
+
fs[`${lib_route_clients_path}/${imports_file_name}.rb`] =
|
|
111
|
+
generateEntityImportsTemplate(client_file_paths);
|
|
100
112
|
return fs;
|
|
101
113
|
};
|
|
102
114
|
//# sourceMappingURL=generate-ruby-sdk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-ruby-sdk.js","sourceRoot":"","sources":["../../src/lib/generate-ruby-sdk/generate-ruby-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C,OAAO,kBAAkB,MAAM,8CAA8C,CAAA;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,6BAA6B,EAAE,MAAM,kDAAkD,CAAA;AAChG,OAAO,wBAAwB,MAAM,2CAA2C,CAAA;AAChF,OAAO,0BAA0B,MAAM,6CAA6C,CAAA;AACpF,OAAO,iCAAiC,MAAM,oDAAoD,CAAA;AAClG,OAAO,mCAAmC,MAAM,sDAAsD,CAAA;AACtG,OAAO,yBAAyB,MAAM,gDAAgD,CAAA;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,kBAAkB,MAAM,qCAAqC,CAAA;
|
|
1
|
+
{"version":3,"file":"generate-ruby-sdk.js","sourceRoot":"","sources":["../../src/lib/generate-ruby-sdk/generate-ruby-sdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const generateEntityImportsTemplate: (entity_file_paths: string[]) => string;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const generateEntityImportsTemplate = (entity_file_paths) => {
|
|
2
|
+
const entity_names = extractEntityNamesFromFilePaths(entity_file_paths);
|
|
3
|
+
const imports_template = generateImportStatements(entity_names);
|
|
4
|
+
return imports_template;
|
|
5
|
+
};
|
|
6
|
+
const extractEntityNamesFromFilePaths = (entity_file_paths) => {
|
|
7
|
+
return entity_file_paths.map((file_path) => {
|
|
8
|
+
const parts = file_path.split("/");
|
|
9
|
+
const file_name = parts.pop();
|
|
10
|
+
return file_name ? file_name.replace(".rb", "") : "";
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
const generateImportStatements = (entity_names) => {
|
|
14
|
+
return `# frozen_string_literal: true\n
|
|
15
|
+
${entity_names.map((n) => `require_relative '${n}'`).join("\n")}`;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=get-entity-imports-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-entity-imports-template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/lib/get-entity-imports-template.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,iBAA2B,EAAE,EAAE;IAC3E,MAAM,YAAY,GAAG,+BAA+B,CAAC,iBAAiB,CAAC,CAAA;IACvE,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,YAAY,CAAC,CAAA;IAE/D,OAAO,gBAAgB,CAAA;AACzB,CAAC,CAAA;AAED,MAAM,+BAA+B,GAAG,CAAC,iBAA2B,EAAE,EAAE;IACtE,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACzC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,CAAA;QAE7B,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACtD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,wBAAwB,GAAG,CAAC,YAAsB,EAAE,EAAE;IAC1D,OAAO;IACL,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;AACnE,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -35,9 +35,10 @@ export const generatePythonSDK = async (options: SdkGeneratorOptions = {}) => {
|
|
|
35
35
|
namespace: child_resource,
|
|
36
36
|
}))
|
|
37
37
|
const pascal_resource_name = pascalCase(resource_name)
|
|
38
|
+
const class_name = pascalCase(convertCustomResourceNamespace(resource_name))
|
|
38
39
|
|
|
39
40
|
class_map[pascal_resource_name] = new ClassFile(
|
|
40
|
-
|
|
41
|
+
class_name,
|
|
41
42
|
resource_name,
|
|
42
43
|
child_class_identifiers
|
|
43
44
|
)
|
|
@@ -139,7 +140,7 @@ export const generatePythonSDK = async (options: SdkGeneratorOptions = {}) => {
|
|
|
139
140
|
)
|
|
140
141
|
.map(([schema_name, schema]) =>
|
|
141
142
|
resourceDataclassTemplate(
|
|
142
|
-
pascalCase(schema_name),
|
|
143
|
+
pascalCase(convertCustomResourceName(schema_name)),
|
|
143
144
|
Object.entries(schema.properties).map(([name, property_schema]) => ({
|
|
144
145
|
name,
|
|
145
146
|
type: mapPythonType(property_schema as any),
|
|
@@ -178,13 +179,24 @@ function determineReturnResource({
|
|
|
178
179
|
return "None"
|
|
179
180
|
}
|
|
180
181
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
182
|
+
const response_type = response_obj_type || response_arr_type
|
|
183
|
+
|
|
184
|
+
if (response_type) {
|
|
185
|
+
const converted_response_type = convertCustomResourceName(response_type)
|
|
186
|
+
const formatted_response_type = pascalCase(converted_response_type)
|
|
184
187
|
|
|
185
|
-
|
|
186
|
-
|
|
188
|
+
return response_obj_type
|
|
189
|
+
? formatted_response_type
|
|
190
|
+
: `List[${formatted_response_type}]`
|
|
187
191
|
}
|
|
188
192
|
|
|
189
193
|
return "None"
|
|
190
194
|
}
|
|
195
|
+
|
|
196
|
+
export function convertCustomResourceNamespace(resource_name: string): string {
|
|
197
|
+
return resource_name === "events" ? "seam_events" : resource_name
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
function convertCustomResourceName(response_type: string): string {
|
|
201
|
+
return response_type === "event" ? "seam_event" : response_type
|
|
202
|
+
}
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import { pascalCase } from "change-case"
|
|
2
|
+
import { convertCustomResourceNamespace } from "../generate-python-sdk.js"
|
|
2
3
|
export default (namespaces: string[]) =>
|
|
3
4
|
[
|
|
4
5
|
`from typing import Any, Dict`,
|
|
5
6
|
`from ..client import SeamHttpClient`,
|
|
6
7
|
`from .models import AbstractRoutes`,
|
|
7
|
-
...namespaces.map(
|
|
8
|
+
...namespaces.map(
|
|
9
|
+
(ns) =>
|
|
10
|
+
`from .${ns} import ${pascalCase(convertCustomResourceNamespace(ns))}`
|
|
11
|
+
),
|
|
8
12
|
``,
|
|
9
13
|
`class Routes(AbstractRoutes):`,
|
|
10
14
|
` def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]):`,
|
|
11
15
|
...namespaces.map(
|
|
12
16
|
(ns) =>
|
|
13
|
-
` self.${ns} = ${pascalCase(
|
|
17
|
+
` self.${ns} = ${pascalCase(
|
|
18
|
+
convertCustomResourceNamespace(ns)
|
|
19
|
+
)}(client=client, defaults=defaults)`
|
|
14
20
|
),
|
|
15
21
|
].join("\n")
|
|
@@ -11,6 +11,7 @@ import resource_warnings_supportRbTemplate from "./templates/resource_warnings_s
|
|
|
11
11
|
import mapParentToChildResources from "lib/openapi/map-parent-to-children-resource.js"
|
|
12
12
|
import { ignored_endpoint_paths } from "lib/endpoint-rules.js"
|
|
13
13
|
import resolveOpenapiSpec from "lib/openapi/resolve-openapi-spec.js"
|
|
14
|
+
import { generateEntityImportsTemplate } from "./lib/get-entity-imports-template.js"
|
|
14
15
|
|
|
15
16
|
export const generateRubySDK = async (options: SdkGeneratorOptions = {}) => {
|
|
16
17
|
const openapi = await resolveOpenapiSpec(options)
|
|
@@ -20,13 +21,17 @@ export const generateRubySDK = async (options: SdkGeneratorOptions = {}) => {
|
|
|
20
21
|
}))
|
|
21
22
|
|
|
22
23
|
const fs: Record<string, string> = {}
|
|
24
|
+
const lib_routes_path = "lib/seam/routes"
|
|
25
|
+
const lib_route_resources_path = `${lib_routes_path}/resources`
|
|
26
|
+
const lib_route_clients_path = `${lib_routes_path}/clients`
|
|
23
27
|
|
|
24
|
-
fs[
|
|
25
|
-
|
|
28
|
+
fs[`${lib_route_resources_path}/resource_error.rb`] =
|
|
29
|
+
resource_errorRbTemplate()
|
|
30
|
+
fs[`${lib_route_resources_path}/resource_warning.rb`] =
|
|
26
31
|
resource_warningRbTemplate()
|
|
27
|
-
fs[
|
|
32
|
+
fs[`${lib_route_resources_path}/resource_errors_support.rb`] =
|
|
28
33
|
resource_errors_supportRbTemplate()
|
|
29
|
-
fs[
|
|
34
|
+
fs[`${lib_route_resources_path}/resource_warnings_support.rb`] =
|
|
30
35
|
resource_warnings_supportRbTemplate()
|
|
31
36
|
|
|
32
37
|
const resources = Object.entries(openapi.components.schemas).map(
|
|
@@ -42,7 +47,7 @@ export const generateRubySDK = async (options: SdkGeneratorOptions = {}) => {
|
|
|
42
47
|
})
|
|
43
48
|
)
|
|
44
49
|
|
|
45
|
-
fs[
|
|
50
|
+
fs[`${lib_route_resources_path}/${snake_name}.rb`] = resourceRbTemplate({
|
|
46
51
|
pascal_name: pascalCase(snake_name),
|
|
47
52
|
attrs: params.filter((p) => !p.is_date_time).map((p) => p.name),
|
|
48
53
|
date_attrs: params.filter((p) => p.is_date_time).map((p) => p.name),
|
|
@@ -124,8 +129,21 @@ export const generateRubySDK = async (options: SdkGeneratorOptions = {}) => {
|
|
|
124
129
|
}
|
|
125
130
|
|
|
126
131
|
for (const client of Object.values(clients)) {
|
|
127
|
-
fs[
|
|
132
|
+
fs[`${lib_route_clients_path}/${client.snake_name}.rb`] = client.serialize()
|
|
128
133
|
}
|
|
129
134
|
|
|
135
|
+
const resource_file_paths = Object.keys(fs).filter((f) =>
|
|
136
|
+
f.startsWith(lib_route_resources_path)
|
|
137
|
+
)
|
|
138
|
+
const client_file_paths = Object.keys(fs).filter((f) =>
|
|
139
|
+
f.startsWith(lib_route_clients_path)
|
|
140
|
+
)
|
|
141
|
+
const imports_file_name = "index"
|
|
142
|
+
|
|
143
|
+
fs[`${lib_route_resources_path}/${imports_file_name}.rb`] =
|
|
144
|
+
generateEntityImportsTemplate(resource_file_paths)
|
|
145
|
+
fs[`${lib_route_clients_path}/${imports_file_name}.rb`] =
|
|
146
|
+
generateEntityImportsTemplate(client_file_paths)
|
|
147
|
+
|
|
130
148
|
return fs
|
|
131
149
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const generateEntityImportsTemplate = (entity_file_paths: string[]) => {
|
|
2
|
+
const entity_names = extractEntityNamesFromFilePaths(entity_file_paths)
|
|
3
|
+
const imports_template = generateImportStatements(entity_names)
|
|
4
|
+
|
|
5
|
+
return imports_template
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const extractEntityNamesFromFilePaths = (entity_file_paths: string[]) => {
|
|
9
|
+
return entity_file_paths.map((file_path) => {
|
|
10
|
+
const parts = file_path.split("/")
|
|
11
|
+
const file_name = parts.pop()
|
|
12
|
+
|
|
13
|
+
return file_name ? file_name.replace(".rb", "") : ""
|
|
14
|
+
})
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const generateImportStatements = (entity_names: string[]) => {
|
|
18
|
+
return `# frozen_string_literal: true\n
|
|
19
|
+
${entity_names.map((n) => `require_relative '${n}'`).join("\n")}`
|
|
20
|
+
}
|