@seamapi/nextlove-sdk-generator 1.13.1 → 1.13.2
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-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-ruby-sdk/generate-ruby-sdk.ts +24 -6
- package/src/lib/generate-ruby-sdk/lib/get-entity-imports-template.ts +20 -0
|
@@ -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
|
@@ -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
|
+
}
|