@seamapi/nextlove-sdk-generator 1.13.0 → 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.
Files changed (68) hide show
  1. package/lib/generate-ruby-sdk/generate-ruby-sdk.js +19 -60
  2. package/lib/generate-ruby-sdk/generate-ruby-sdk.js.map +1 -1
  3. package/lib/generate-ruby-sdk/lib/get-entity-imports-template.d.ts +1 -0
  4. package/lib/generate-ruby-sdk/lib/get-entity-imports-template.js +17 -0
  5. package/lib/generate-ruby-sdk/lib/get-entity-imports-template.js.map +1 -0
  6. package/package.json +1 -1
  7. package/src/lib/generate-ruby-sdk/generate-ruby-sdk.ts +23 -63
  8. package/src/lib/generate-ruby-sdk/lib/get-entity-imports-template.ts +20 -0
  9. package/lib/generate-ruby-sdk/templates/.rspec.template.d.ts +0 -2
  10. package/lib/generate-ruby-sdk/templates/.rspec.template.js +0 -4
  11. package/lib/generate-ruby-sdk/templates/.rspec.template.js.map +0 -1
  12. package/lib/generate-ruby-sdk/templates/.ruby-version.template.d.ts +0 -2
  13. package/lib/generate-ruby-sdk/templates/.ruby-version.template.js +0 -2
  14. package/lib/generate-ruby-sdk/templates/.ruby-version.template.js.map +0 -1
  15. package/lib/generate-ruby-sdk/templates/base_client.rb.template.d.ts +0 -2
  16. package/lib/generate-ruby-sdk/templates/base_client.rb.template.js +0 -22
  17. package/lib/generate-ruby-sdk/templates/base_client.rb.template.js.map +0 -1
  18. package/lib/generate-ruby-sdk/templates/base_resource.rb.template.d.ts +0 -2
  19. package/lib/generate-ruby-sdk/templates/base_resource.rb.template.js +0 -59
  20. package/lib/generate-ruby-sdk/templates/base_resource.rb.template.js.map +0 -1
  21. package/lib/generate-ruby-sdk/templates/client.rb.template.d.ts +0 -2
  22. package/lib/generate-ruby-sdk/templates/client.rb.template.js +0 -79
  23. package/lib/generate-ruby-sdk/templates/client.rb.template.js.map +0 -1
  24. package/lib/generate-ruby-sdk/templates/gemfile.template.d.ts +0 -2
  25. package/lib/generate-ruby-sdk/templates/gemfile.template.js +0 -7
  26. package/lib/generate-ruby-sdk/templates/gemfile.template.js.map +0 -1
  27. package/lib/generate-ruby-sdk/templates/logger.rb.template.d.ts +0 -2
  28. package/lib/generate-ruby-sdk/templates/logger.rb.template.js +0 -13
  29. package/lib/generate-ruby-sdk/templates/logger.rb.template.js.map +0 -1
  30. package/lib/generate-ruby-sdk/templates/lts_version.rb.template.d.ts +0 -2
  31. package/lib/generate-ruby-sdk/templates/lts_version.rb.template.js +0 -6
  32. package/lib/generate-ruby-sdk/templates/lts_version.rb.template.js.map +0 -1
  33. package/lib/generate-ruby-sdk/templates/rakefile.template.d.ts +0 -2
  34. package/lib/generate-ruby-sdk/templates/rakefile.template.js +0 -23
  35. package/lib/generate-ruby-sdk/templates/rakefile.template.js.map +0 -1
  36. package/lib/generate-ruby-sdk/templates/readme.md.template.d.ts +0 -2
  37. package/lib/generate-ruby-sdk/templates/readme.md.template.js +0 -184
  38. package/lib/generate-ruby-sdk/templates/readme.md.template.js.map +0 -1
  39. package/lib/generate-ruby-sdk/templates/request.rb.template.d.ts +0 -2
  40. package/lib/generate-ruby-sdk/templates/request.rb.template.js +0 -74
  41. package/lib/generate-ruby-sdk/templates/request.rb.template.js.map +0 -1
  42. package/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.d.ts +0 -2
  43. package/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.js +0 -41
  44. package/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.js.map +0 -1
  45. package/lib/generate-ruby-sdk/templates/spec_helper.rb.template.d.ts +0 -2
  46. package/lib/generate-ruby-sdk/templates/spec_helper.rb.template.js +0 -29
  47. package/lib/generate-ruby-sdk/templates/spec_helper.rb.template.js.map +0 -1
  48. package/lib/generate-ruby-sdk/templates/support-helpers.rb.template.d.ts +0 -2
  49. package/lib/generate-ruby-sdk/templates/support-helpers.rb.template.js +0 -12
  50. package/lib/generate-ruby-sdk/templates/support-helpers.rb.template.js.map +0 -1
  51. package/lib/generate-ruby-sdk/templates/version.rb.template.d.ts +0 -2
  52. package/lib/generate-ruby-sdk/templates/version.rb.template.js +0 -6
  53. package/lib/generate-ruby-sdk/templates/version.rb.template.js.map +0 -1
  54. package/src/lib/generate-ruby-sdk/templates/.rspec.template.ts +0 -3
  55. package/src/lib/generate-ruby-sdk/templates/.ruby-version.template.ts +0 -1
  56. package/src/lib/generate-ruby-sdk/templates/base_client.rb.template.ts +0 -21
  57. package/src/lib/generate-ruby-sdk/templates/base_resource.rb.template.ts +0 -58
  58. package/src/lib/generate-ruby-sdk/templates/client.rb.template.ts +0 -80
  59. package/src/lib/generate-ruby-sdk/templates/gemfile.template.ts +0 -6
  60. package/src/lib/generate-ruby-sdk/templates/logger.rb.template.ts +0 -12
  61. package/src/lib/generate-ruby-sdk/templates/lts_version.rb.template.ts +0 -5
  62. package/src/lib/generate-ruby-sdk/templates/rakefile.template.ts +0 -22
  63. package/src/lib/generate-ruby-sdk/templates/readme.md.template.ts +0 -183
  64. package/src/lib/generate-ruby-sdk/templates/request.rb.template.ts +0 -73
  65. package/src/lib/generate-ruby-sdk/templates/seamapi.gemspec.template.ts +0 -40
  66. package/src/lib/generate-ruby-sdk/templates/spec_helper.rb.template.ts +0 -28
  67. package/src/lib/generate-ruby-sdk/templates/support-helpers.rb.template.ts +0 -11
  68. package/src/lib/generate-ruby-sdk/templates/version.rb.template.ts +0 -5
@@ -3,21 +3,6 @@ import resourceRbTemplate from "./templates/snippets/resource.rb.template.js";
3
3
  import { pascalCase } from "change-case";
4
4
  import { RubyClient } from "./ruby-client.js";
5
5
  import { getParameterAndResponseSchema } from "../../lib/openapi/get-parameter-and-response-schema.js";
6
- import base_clientRbTemplate from "./templates/base_client.rb.template.js";
7
- import readmeMdTemplate from "./templates/readme.md.template.js";
8
- import rakefileTemplate from "./templates/rakefile.template.js";
9
- import versionRbTemplate from "./templates/version.rb.template.js";
10
- import ltsVersionRbTemplate from "./templates/lts_version.rb.template.js";
11
- import requestRbTemplate from "./templates/request.rb.template.js";
12
- import loggerRbTemplate from "./templates/logger.rb.template.js";
13
- import clientRbTemplate from "./templates/client.rb.template.js";
14
- import gemfileTemplate from "./templates/gemfile.template.js";
15
- import seamapiGemspecTemplate from "./templates/seamapi.gemspec.template.js";
16
- import rspecTemplate from "./templates/.rspec.template.js";
17
- import rubyVersionTemplate from "./templates/.ruby-version.template.js";
18
- import supportHelpersTemplate from "./templates/support-helpers.rb.template.js";
19
- import specHelperTemplate from "./templates/spec_helper.rb.template.js";
20
- import base_resourceRbTemplate from "./templates/base_resource.rb.template.js";
21
6
  import resource_errorRbTemplate from "./templates/resource_error.rb.template.js";
22
7
  import resource_warningRbTemplate from "./templates/resource_warning.rb.template.js";
23
8
  import resource_errors_supportRbTemplate from "./templates/resource_errors_support.rb.template.js";
@@ -25,6 +10,7 @@ import resource_warnings_supportRbTemplate from "./templates/resource_warnings_s
25
10
  import mapParentToChildResources from "../../lib/openapi/map-parent-to-children-resource.js";
26
11
  import { ignored_endpoint_paths } from "../../lib/endpoint-rules.js";
27
12
  import resolveOpenapiSpec from "../../lib/openapi/resolve-openapi-spec.js";
13
+ import { generateEntityImportsTemplate } from "./lib/get-entity-imports-template.js";
28
14
  export const generateRubySDK = async (options = {}) => {
29
15
  const openapi = await resolveOpenapiSpec(options);
30
16
  const routes = Object.entries(openapi.paths).map(([path, v]) => ({
@@ -32,52 +18,28 @@ export const generateRubySDK = async (options = {}) => {
32
18
  ...v,
33
19
  }));
34
20
  const fs = {};
35
- fs["README.md"] = readmeMdTemplate();
36
- fs["Rakefile"] = rakefileTemplate();
37
- fs["spec/spec_helper.rb"] = specHelperTemplate();
38
- fs["spec/support/helpers.rb"] = supportHelpersTemplate();
39
- fs["spec/smoketest.rb"] = "";
40
- fs["Gemfile"] = gemfileTemplate();
41
- fs["seamapi.gemspec"] = seamapiGemspecTemplate();
42
- fs[".rspec"] = rspecTemplate();
43
- fs[".ruby-version"] = rubyVersionTemplate();
44
- fs["lib/seam/version.rb"] = versionRbTemplate();
45
- fs["lib/seam/lts_version.rb"] = ltsVersionRbTemplate();
46
- fs["lib/seam/request.rb"] = requestRbTemplate();
47
- fs["lib/seam/logger.rb"] = loggerRbTemplate();
48
- fs["lib/seam/clients/base_client.rb"] = base_clientRbTemplate();
49
- fs["lib/seam/resources/base_resource.rb"] = base_resourceRbTemplate();
50
- fs["lib/seam/resources/resource_error.rb"] = resource_errorRbTemplate();
51
- fs["lib/seam/resources/resource_warning.rb"] = resource_warningRbTemplate();
52
- fs["lib/seam/resources/resource_errors_support.rb"] =
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`] =
27
+ resource_warningRbTemplate();
28
+ fs[`${lib_route_resources_path}/resource_errors_support.rb`] =
53
29
  resource_errors_supportRbTemplate();
54
- fs["lib/seam/resources/resource_warnings_support.rb"] =
30
+ fs[`${lib_route_resources_path}/resource_warnings_support.rb`] =
55
31
  resource_warnings_supportRbTemplate();
56
- const seamapi_rb_requires = [
57
- "seam/version",
58
- "seam/lts_version",
59
- "seam/request",
60
- "seam/logger",
61
- "seam/client",
62
- "seam/clients/base_client",
63
- "seam/resources/base_resource",
64
- "seam/resources/resource_error",
65
- "seam/resources/resource_warning",
66
- "seam/resources/resource_errors_support",
67
- "seam/resources/resource_warnings_support",
68
- ];
69
32
  const resources = Object.entries(openapi.components.schemas).map(([schema_name, schema]) => [schema_name, flattenObjSchema(schema)]);
70
33
  for (const [snake_name, schema] of resources) {
71
34
  const params = Object.entries(schema.properties).map(([name, property_schema]) => ({
72
35
  name,
73
36
  is_date_time: "format" in property_schema && property_schema.format === "date-time",
74
37
  }));
75
- fs[`lib/seam/resources/${snake_name}.rb`] = resourceRbTemplate({
38
+ fs[`${lib_route_resources_path}/${snake_name}.rb`] = resourceRbTemplate({
76
39
  pascal_name: pascalCase(snake_name),
77
40
  attrs: params.filter((p) => !p.is_date_time).map((p) => p.name),
78
41
  date_attrs: params.filter((p) => p.is_date_time).map((p) => p.name),
79
42
  });
80
- seamapi_rb_requires.push(`seam/resources/${snake_name}`);
81
43
  }
82
44
  const clients = {};
83
45
  const parent_to_child_resources_map = mapParentToChildResources(routes);
@@ -138,18 +100,15 @@ export const generateRubySDK = async (options = {}) => {
138
100
  });
139
101
  }
140
102
  for (const client of Object.values(clients)) {
141
- fs[`lib/seam/clients/${client.snake_name}.rb`] = client.serialize();
142
- seamapi_rb_requires.push(`seam/clients/${client.snake_name}`);
103
+ fs[`${lib_route_clients_path}/${client.snake_name}.rb`] = client.serialize();
143
104
  }
144
- fs["lib/seam/client.rb"] = clientRbTemplate(Object.keys(parent_to_child_resources_map));
145
- fs["lib/seamapi.rb"] = [
146
- `# frozen_string_literal: true`,
147
- "",
148
- ...seamapi_rb_requires.map((r) => `require_relative "${r}"`),
149
- "",
150
- `module Seam`,
151
- `end\n`,
152
- ].join("\n");
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);
153
112
  return fs;
154
113
  };
155
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":"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"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seamapi/nextlove-sdk-generator",
3
- "version": "1.13.0",
3
+ "version": "1.13.2",
4
4
  "description": "Utilities for building NextLove SDK Generators",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -4,21 +4,6 @@ import resourceRbTemplate from "./templates/snippets/resource.rb.template.js"
4
4
  import { pascalCase } from "change-case"
5
5
  import { RubyClient } from "./ruby-client.js"
6
6
  import { getParameterAndResponseSchema } from "lib/openapi/get-parameter-and-response-schema.js"
7
- import base_clientRbTemplate from "./templates/base_client.rb.template.js"
8
- import readmeMdTemplate from "./templates/readme.md.template.js"
9
- import rakefileTemplate from "./templates/rakefile.template.js"
10
- import versionRbTemplate from "./templates/version.rb.template.js"
11
- import ltsVersionRbTemplate from "./templates/lts_version.rb.template.js"
12
- import requestRbTemplate from "./templates/request.rb.template.js"
13
- import loggerRbTemplate from "./templates/logger.rb.template.js"
14
- import clientRbTemplate from "./templates/client.rb.template.js"
15
- import gemfileTemplate from "./templates/gemfile.template.js"
16
- import seamapiGemspecTemplate from "./templates/seamapi.gemspec.template.js"
17
- import rspecTemplate from "./templates/.rspec.template.js"
18
- import rubyVersionTemplate from "./templates/.ruby-version.template.js"
19
- import supportHelpersTemplate from "./templates/support-helpers.rb.template.js"
20
- import specHelperTemplate from "./templates/spec_helper.rb.template.js"
21
- import base_resourceRbTemplate from "./templates/base_resource.rb.template.js"
22
7
  import resource_errorRbTemplate from "./templates/resource_error.rb.template.js"
23
8
  import resource_warningRbTemplate from "./templates/resource_warning.rb.template.js"
24
9
  import resource_errors_supportRbTemplate from "./templates/resource_errors_support.rb.template.js"
@@ -26,6 +11,7 @@ import resource_warnings_supportRbTemplate from "./templates/resource_warnings_s
26
11
  import mapParentToChildResources from "lib/openapi/map-parent-to-children-resource.js"
27
12
  import { ignored_endpoint_paths } from "lib/endpoint-rules.js"
28
13
  import resolveOpenapiSpec from "lib/openapi/resolve-openapi-spec.js"
14
+ import { generateEntityImportsTemplate } from "./lib/get-entity-imports-template.js"
29
15
 
30
16
  export const generateRubySDK = async (options: SdkGeneratorOptions = {}) => {
31
17
  const openapi = await resolveOpenapiSpec(options)
@@ -35,43 +21,19 @@ export const generateRubySDK = async (options: SdkGeneratorOptions = {}) => {
35
21
  }))
36
22
 
37
23
  const fs: Record<string, string> = {}
38
-
39
- fs["README.md"] = readmeMdTemplate()
40
- fs["Rakefile"] = rakefileTemplate()
41
- fs["spec/spec_helper.rb"] = specHelperTemplate()
42
- fs["spec/support/helpers.rb"] = supportHelpersTemplate()
43
- fs["spec/smoketest.rb"] = ""
44
- fs["Gemfile"] = gemfileTemplate()
45
- fs["seamapi.gemspec"] = seamapiGemspecTemplate()
46
- fs[".rspec"] = rspecTemplate()
47
- fs[".ruby-version"] = rubyVersionTemplate()
48
- fs["lib/seam/version.rb"] = versionRbTemplate()
49
- fs["lib/seam/lts_version.rb"] = ltsVersionRbTemplate()
50
- fs["lib/seam/request.rb"] = requestRbTemplate()
51
- fs["lib/seam/logger.rb"] = loggerRbTemplate()
52
- fs["lib/seam/clients/base_client.rb"] = base_clientRbTemplate()
53
- fs["lib/seam/resources/base_resource.rb"] = base_resourceRbTemplate()
54
- fs["lib/seam/resources/resource_error.rb"] = resource_errorRbTemplate()
55
- fs["lib/seam/resources/resource_warning.rb"] = resource_warningRbTemplate()
56
- fs["lib/seam/resources/resource_errors_support.rb"] =
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`
27
+
28
+ fs[`${lib_route_resources_path}/resource_error.rb`] =
29
+ resource_errorRbTemplate()
30
+ fs[`${lib_route_resources_path}/resource_warning.rb`] =
31
+ resource_warningRbTemplate()
32
+ fs[`${lib_route_resources_path}/resource_errors_support.rb`] =
57
33
  resource_errors_supportRbTemplate()
58
- fs["lib/seam/resources/resource_warnings_support.rb"] =
34
+ fs[`${lib_route_resources_path}/resource_warnings_support.rb`] =
59
35
  resource_warnings_supportRbTemplate()
60
36
 
61
- const seamapi_rb_requires = [
62
- "seam/version",
63
- "seam/lts_version",
64
- "seam/request",
65
- "seam/logger",
66
- "seam/client",
67
- "seam/clients/base_client",
68
- "seam/resources/base_resource",
69
- "seam/resources/resource_error",
70
- "seam/resources/resource_warning",
71
- "seam/resources/resource_errors_support",
72
- "seam/resources/resource_warnings_support",
73
- ]
74
-
75
37
  const resources = Object.entries(openapi.components.schemas).map(
76
38
  ([schema_name, schema]) =>
77
39
  [schema_name, flattenObjSchema(schema as any)] as [string, ObjSchema]
@@ -85,12 +47,11 @@ export const generateRubySDK = async (options: SdkGeneratorOptions = {}) => {
85
47
  })
86
48
  )
87
49
 
88
- fs[`lib/seam/resources/${snake_name}.rb`] = resourceRbTemplate({
50
+ fs[`${lib_route_resources_path}/${snake_name}.rb`] = resourceRbTemplate({
89
51
  pascal_name: pascalCase(snake_name),
90
52
  attrs: params.filter((p) => !p.is_date_time).map((p) => p.name),
91
53
  date_attrs: params.filter((p) => p.is_date_time).map((p) => p.name),
92
54
  })
93
- seamapi_rb_requires.push(`seam/resources/${snake_name}`)
94
55
  }
95
56
 
96
57
  const clients: Record<string, RubyClient> = {}
@@ -168,22 +129,21 @@ export const generateRubySDK = async (options: SdkGeneratorOptions = {}) => {
168
129
  }
169
130
 
170
131
  for (const client of Object.values(clients)) {
171
- fs[`lib/seam/clients/${client.snake_name}.rb`] = client.serialize()
172
- seamapi_rb_requires.push(`seam/clients/${client.snake_name}`)
132
+ fs[`${lib_route_clients_path}/${client.snake_name}.rb`] = client.serialize()
173
133
  }
174
134
 
175
- fs["lib/seam/client.rb"] = clientRbTemplate(
176
- Object.keys(parent_to_child_resources_map)
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)
177
140
  )
141
+ const imports_file_name = "index"
178
142
 
179
- fs["lib/seamapi.rb"] = [
180
- `# frozen_string_literal: true`,
181
- "",
182
- ...seamapi_rb_requires.map((r) => `require_relative "${r}"`),
183
- "",
184
- `module Seam`,
185
- `end\n`,
186
- ].join("\n")
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)
187
147
 
188
148
  return fs
189
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
+ }
@@ -1,2 +0,0 @@
1
- declare const _default: () => string;
2
- export default _default;
@@ -1,4 +0,0 @@
1
- export default () => `--format documentation
2
- --color
3
- --require spec_helper\n`;
4
- //# sourceMappingURL=.rspec.template.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":".rspec.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/.rspec.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;wBAEG,CAAA"}
@@ -1,2 +0,0 @@
1
- declare const _default: () => string;
2
- export default _default;
@@ -1,2 +0,0 @@
1
- export default () => `3.0.4\n`;
2
- //# sourceMappingURL=.ruby-version.template.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":".ruby-version.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/.ruby-version.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC,SAAS,CAAA"}
@@ -1,2 +0,0 @@
1
- declare const _default: () => string;
2
- export default _default;
@@ -1,22 +0,0 @@
1
- export default () => `# frozen_string_literal: true
2
-
3
- module Seam
4
- module Clients
5
- class BaseClient
6
- attr_accessor :client
7
-
8
- def initialize(client)
9
- @client = client
10
- end
11
-
12
- def request_seam_object(*attrs)
13
- client.request_seam_object(*attrs)
14
- end
15
-
16
- def request_seam(*attrs)
17
- client.request_seam(*attrs)
18
- end
19
- end
20
- end
21
- end\n`;
22
- //# sourceMappingURL=base_client.rb.template.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base_client.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/base_client.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;MAoBf,CAAA"}
@@ -1,2 +0,0 @@
1
- declare const _default: () => string;
2
- export default _default;
@@ -1,59 +0,0 @@
1
- export default () => `# frozen_string_literal: true
2
-
3
- module Seam
4
- class BaseResource
5
- attr_accessor :data, :client
6
-
7
- def initialize(data, client = nil)
8
- @data = data
9
- @client = client
10
-
11
- @data.each do |key, value|
12
- instance_variable_set("@#{key}", value)
13
- end
14
- end
15
-
16
- def update_from_response(data)
17
- @data = data
18
- @data.each do |key, value|
19
- instance_variable_set("@#{key}", value)
20
- end
21
- end
22
-
23
- def self.load_from_response(data, client = nil)
24
- if data.is_a?(Array)
25
- data.map { |d| new(d, client) }
26
- else
27
- new(data, client)
28
- end
29
- end
30
-
31
- def inspect
32
- "<#{self.class.name}:#{"0x00%x" % (object_id << 1)}\\n" + # rubocop:disable Style/StringConcatenation, Style/FormatString
33
- instance_variables
34
- .map { |k| k.to_s.sub("@", "") }
35
- .filter { |k| k != "data" and k != "client" and respond_to? k }
36
- .map { |k| " #{k}=#{send(k).inspect}" }
37
- .join("\\n") + ">"
38
- end
39
-
40
- def self.date_accessor(*attrs)
41
- attrs.each do |attr|
42
- define_method(attr) do
43
- value = instance_variable_get("@#{attr}")
44
-
45
- raise "No value for #{attr} set" if value.nil?
46
-
47
- parse_datetime(value)
48
- end
49
- end
50
- end
51
-
52
- protected
53
-
54
- def parse_datetime(value)
55
- Time.parse(value)
56
- end
57
- end
58
- end\n`;
59
- //# sourceMappingURL=base_resource.rb.template.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base_resource.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/base_resource.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAyDf,CAAA"}
@@ -1,2 +0,0 @@
1
- declare const _default: (resource_client_names: string[]) => string;
2
- export default _default;
@@ -1,79 +0,0 @@
1
- import { pascalCase } from "change-case";
2
- export default (resource_client_names) => {
3
- const resource_client_defs = resource_client_names
4
- .map((client_name) => {
5
- return `
6
- def ${client_name}
7
- @${client_name} ||= Seam::Clients::${pascalCase(client_name)}.new(self)
8
- end\n`;
9
- })
10
- .join("");
11
- return `# frozen_string_literal: true
12
-
13
- module Seam
14
- class Client
15
- attr_accessor :api_key, :base_uri, :debug, :wait_for_action_attempt
16
-
17
- def self.lts_version
18
- Seam::LTS_VERSION
19
- end
20
-
21
- def initialize(api_key: nil, base_uri: nil, wait_for_action_attempt: false, debug: false)
22
- @api_key = api_key || ENV["SEAM_API_KEY"]
23
- @base_uri = base_uri || ENV["SEAM_API_URL"] || ENV["SEAM_ENDPOINT"] || "https://connect.getseam.com"
24
- @debug = debug
25
- @wait_for_action_attempt = wait_for_action_attempt
26
-
27
- raise ArgumentError, "SEAM_API_KEY not found in environment, and api_key not provided" if @api_key.to_s.empty?
28
-
29
- if ENV["SEAM_API_URL"]
30
- warn 'Using the SEAM_API_URL environment variable is deprecated. ' \\
31
- 'Support will be removed in a later major version. Use SEAM_ENDPOINT instead.'
32
- end
33
-
34
- end
35
-
36
- def lts_version
37
- Seam::LTS_VERSION
38
- end
39
- ${resource_client_defs}
40
-
41
- def health
42
- request_seam(:get, "/health")
43
- end
44
-
45
- # @deprecated Please use {#devices.unmanaged} instead.
46
- def unmanaged_devices
47
- warn "[DEPRECATION] 'unmanaged_devices' is deprecated. Please use 'devices.unmanaged' instead."
48
-
49
- @unmanaged_devices ||= Seam::Clients::DevicesUnmanaged.new(self)
50
- end
51
-
52
- # @deprecated Please use {#access_codes.unmanaged} instead.
53
- def unmanaged_access_codes
54
- warn "[DEPRECATION] 'unmanaged_access_codes' is deprecated. Please use 'access_codes.unmanaged' instead."
55
-
56
- @unmanaged_access_codes ||= Seam::Clients::AccessCodesUnmanaged.new(self)
57
- end
58
-
59
- def request_seam_object(method, path, klass, inner_object, config = {})
60
- response = request_seam(method, path, config)
61
-
62
- data = response[inner_object]
63
-
64
- klass.load_from_response(data, self)
65
- end
66
-
67
- def request_seam(method, path, config = {})
68
- Seam::Request.new(
69
- api_key: api_key,
70
- base_uri: base_uri,
71
- debug: debug
72
- ).perform(
73
- method, path, config
74
- )
75
- end
76
- end
77
- end\n`;
78
- };
79
- //# sourceMappingURL=client.rb.template.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/client.rb.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,eAAe,CAAC,qBAA+B,EAAE,EAAE;IACjD,MAAM,oBAAoB,GAAG,qBAAqB;SAC/C,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;QACnB,OAAO;UACH,WAAW;SACZ,WAAW,uBAAuB,UAAU,CAAC,WAAW,CAAC;UACxD,CAAA;IACN,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAA;IAEX,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BP,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAsChB,CAAA;AACN,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- declare const _default: () => string;
2
- export default _default;
@@ -1,7 +0,0 @@
1
- export default () => `# frozen_string_literal: true
2
-
3
- source "https://rubygems.org"
4
-
5
- # Specify your gem's dependencies in seamapi.gemspec.
6
- gemspec\n`;
7
- //# sourceMappingURL=gemfile.template.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemfile.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/gemfile.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;UAKX,CAAA"}
@@ -1,2 +0,0 @@
1
- declare const _default: () => string;
2
- export default _default;
@@ -1,13 +0,0 @@
1
- export default () => `# frozen_string_literal: true
2
-
3
- require "logger"
4
-
5
- module Seam
6
- class Logger
7
- def self.info(message)
8
- logger = ::Logger.new($stdout)
9
- logger.info(message)
10
- end
11
- end
12
- end\n`;
13
- //# sourceMappingURL=logger.rb.template.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/logger.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;;;;;;;;MAWf,CAAA"}
@@ -1,2 +0,0 @@
1
- declare const _default: () => string;
2
- export default _default;
@@ -1,6 +0,0 @@
1
- export default () => `# frozen_string_literal: true
2
-
3
- module Seam
4
- LTS_VERSION = '1.0.0'
5
- end\n`;
6
- //# sourceMappingURL=lts_version.rb.template.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lts_version.rb.template.js","sourceRoot":"","sources":["../../../src/lib/generate-ruby-sdk/templates/lts_version.rb.template.ts"],"names":[],"mappings":"AAAA,eAAe,GAAG,EAAE,CAAC;;;;MAIf,CAAA"}
@@ -1,2 +0,0 @@
1
- declare const _default: () => string;
2
- export default _default;
@@ -1,23 +0,0 @@
1
- export default () => `# frozen_string_literal: true
2
-
3
- require "bundler/gem_tasks"
4
- require "rspec/core/rake_task"
5
- require "standard/rake"
6
-
7
- RSpec::Core::RakeTask.new(:spec)
8
-
9
- task default: %i[lint test]
10
-
11
- task test: "spec"
12
- task lint: "standard"
13
- task format: "standard:fix"
14
-
15
- desc "Open an interactive ruby console"
16
- task :console do
17
- require "irb"
18
- require "bundler/setup"
19
- require "seamapi"
20
- ARGV.clear
21
- IRB.start
22
- end\n`;
23
- //# sourceMappingURL=rakefile.template.js.map